当返回语句断行时,JavaScript 函数返回“未定义”
在某些情况下,JavaScript 函数可能因以下原因无法返回预期对象return 语句后的换行符。当对象定义与 return 语句之间通过换行符分隔时,就会出现此问题,如示例代码所示:
function foo1(){ return {msg: "hello1"}; } function foo2(){ return {msg: "hello2"}; } // output = "foo1 = {"msg":"hello1"}" console.log('foo1 = ' , JSON.stringify(foo1())); //output = " foo2 = undefined " console.log('foo2 = ' , JSON.stringify(foo2()));
这些函数之间的主要区别在于 return 语句和 return 语句之间的换行符。 foo2.h 中的对象定义JavaScript 的自动分号插入 (ASI) 机制会在 foo2 中的 return 语句后错误地插入分号,从而有效地结束函数的执行而不返回对象。这会导致在字符串化 foo2() 时输出“undefined”。
要避免此问题,可以采取多种方法:
如果美观考虑或代码可读性超过了 ASI 问题的可能性,开发人员可以选择使用分组运算符对表达式进行分组,如响应中提供的示例所示。然而,这种方法主要是一个偏好问题,不会影响代码的功能。
以上是当 Return 语句断行时,为什么 JavaScript 函数会返回'未定义”?的详细内容。更多信息请关注PHP中文网其他相关文章!