我在网上看到了这个技巧问题,没有任何答案或描述。不确定这里发生了什么:
function identity() {
var name = 'Jack';
alert(name);
return
name
};
var who = identity();
alert(who)
这个剪切的输出,插孔&然后未定义,为什么?
答案 0 :(得分:7)
更改此
return
name
到此:
return name;
return语句是javascript不喜欢空格的少数几个地方之一。编辑。原文中发生的是浏览器在return语句后插入分号,如此
return;
name // this gets ignored
所以返回值是undefined.TehShrike链接到一个非常好的文档,解释了当忽略空格/换行符以及必须插入分号时ECMAAScript环境必须遵循的确切规则。
ECMAScript标准说明了这一点(除此之外)
某些ECMAScript语句(空语句,变量语句, 表达式语句,do-while语句,continue语句,break 必须终止语句,return语句和throw语句 用分号。这样的分号可能总是明确地出现在 源文本。然而,为方便起见,可省略这样的分号 在某些情况下从源文本。这些情况是 描述说分号是自动插入的 这些情况下的源代码令牌流。
答案 1 :(得分:1)
identity
是一个功能。 who
然后声明一个新的实例,我们可以从func中知道它将创建一个局部变量name
并为其分配jack
,然后发出警报。
然后该函数看起来像return
没有(虽然name
在下一行,所以我想你想要返回它,改为return name;
)。