我在网上看到了这个技巧问题,没有任何答案或描述.不确定这里发生了什么:
function identity() {
var name = 'Jack';
alert(name);
return
name
};
var who = identity();
alert(who)
Run Code Online (Sandbox Code Playgroud)
这个剪切输出,杰克然后未定义,为什么?
小智 7
改变这个
return
name
Run Code Online (Sandbox Code Playgroud)
对此:
return name;
Run Code Online (Sandbox Code Playgroud)
return语句是javascript不喜欢空格的少数几个地方之一.编辑.原文中发生的是浏览器在return语句后插入分号,就像这样
return;
name // this gets ignored
Run Code Online (Sandbox Code Playgroud)
所以返回值是undefined.TehShrike链接到一个非常好的文档,解释了当忽略空格/换行符和必须插入分号时ECMAAScript环境必须遵循的确切规则.
ECMAScript标准说明了这一点(除此之外)
某些ECMAScript语句(空语句,变量语句,表达式语句,do-while语句,continue语句,break语句,return语句和throw语句)必须以分号结束.此类分号可能始终显式出现在源文本中.然而,为方便起见,在某些情况下可以从源文本中省略这样的分号.这些情况通过说在这些情况下分号自动插入源代码令牌流来描述.
| 归档时间: |
|
| 查看次数: |
177 次 |
| 最近记录: |