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