调用自定义JS函数时出现“Jon未定义”ReferenceError问题排查
错误原因与解决方法
1. 触发报错的直接原因
你调用greeting(Jon, 1, 13)时,Jon没加引号,JavaScript会把它当成变量名去查找,但你根本没定义过叫Jon的变量,所以抛出ReferenceError。
解决方法:把Jon用单引号或双引号包裹,变成字符串字面量:
console.log(greeting("Jon", 1, 13))
2. 代码里的其他潜在问题
除了上述报错,你的代码还有几个得修正的地方:
- 未声明变量
time:time = ((hour+12)*1000)+minutes直接赋值会创建全局变量,建议用let或const声明:const time = ((hour + 12) * 1000) + minutes; - if条件用了赋值运算符而非比较运算符:
if (person = "Count Dooku")是把字符串赋值给person,永远为真,应该用严格相等===(或宽松相等==):if (person === "Count Dooku") - 函数无返回值,外层console.log会输出undefined:你的
greeting函数内部用console.log输出内容,但函数本身没有return语句,所以外层的console.log(greeting(...))会额外输出undefined。如果不需要外层打印,直接调用greeting("Jon", 1, 13)就行。
修正后的完整代码
function greeting(person, hour, minutes) { const time = ((hour + 12) * 1000) + minutes; if (person === "Count Dooku") { console.log("I'm coming for you, Dooku!"); } else { console.log(`Good day, ${person}! It is currently ${time}`); } } // 直接调用即可,无需外层console.log greeting("Jon", 1, 13);
内容的提问来源于stack exchange,提问作者Kurt
相关产品推荐
相关产品推荐

