Javascript代码段解释

时间:2013-09-19 15:31:40

标签: javascript

我在网上看到了这个技巧问题,没有任何答案或描述。不确定这里发生了什么:

function identity() {
    var name = 'Jack';
    alert(name);
    return
    name
};
var who = identity();
alert(who)

这个剪切的输出,插孔&然后未定义,为什么?

2 个答案:

答案 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;)。