专业挖坑500年之小心return语句
标签:
JavaScript
JavaScript引擎有一个在行末自动添加分号的机制,这可能让你栽到return语句的一个大坑:
function foo() {
return { name: 'foo' };
}
foo(); // { name: 'foo' }
如果把return语句拆成两行:
function foo() {
return
{ name: 'foo' };
}
foo(); // undefined
由于JavaScript引擎在行末自动添加分号的机制,上面的代码实际上变成了:
function foo() {
return; // 自动添加了分号,相当于return undefined;
{ name: 'foo' }; // 这行语句已经没法执行到了
}
所以正确的多行写法是:
function foo() {
return { // 这里不会自动加分号,因为{表示语句尚未结束
name: 'foo'
};
}
为了减少掉坑,注意要加{ },特别是循环语句只存在单行语时,虽然是允许并且能运行的,但当再添加一个语句时,就会超出代码块的作用范围了。比如:
if( x > 10 ){
x = 0;
}
else x++; // 当else后面为单独语句,通常是没问题的
if( x > 10 ){
x = 0;
}
else x++;
y++; // 添加一个语句,则此语句会一直执行。y++;语句不属于else后的作用域,加上{}才属于else作用范围
另:在Python2中,代码块由代码缩进(通常4空格)起作用,没有花括号{ }包裹,也容易产生坑,同样需要注意。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦