You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS调用函数传入未加引号值报未定义错误,如何无需提前转字符串实现?

报错原因

你遇到的报错和函数内部是否转字符串没有任何关系,问题出在**函数传参的解析阶段:

  • 当你写Introduction(Mark, bad)时,JavaScript 引擎会先尝试查找名为Mark和bad的变量,读取它们的值再传入函数。你没有提前定义过这两个变量,代码运行到调用这一步就会直接抛出ReferenceError,根本不会执行函数内部的转字符串逻辑。
  • 当你给参数加引号写成"Mark"、"bad"时,这两个值会被解析为字符串字面量,不需要查找变量,因此可以正常运行。

不需要在调用时手动写字符串的实现方案

如果你不想在调用函数时给字符串参数加引号,可以用提前定义变量的方式实现:

// 提前定义对应变量,值为你需要的字符串
const Mark = 'Mark';
const bad = 'bad';

function Introduction(name, adj) {
    return "My name is " + name + " and i am " + adj;
};
// 调用时直接传变量名即可,不需要加引号
console.log(Introduction(Mark, bad));

另外补充:JavaScript 语法规则本身不支持直接将未加引号的标识符自动识别为字符串,所有未加引号的内容都会被引擎优先解析为变量、常量、函数名等标识符,不存在绕过引号的方法,所有不用写引号的方案本质都是提前完成了变量定义。

内容的提问来源于stack exchange,提问作者Sun23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 19:54:01