为了账号安全,请及时绑定邮箱和手机立即绑定

专业挖坑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 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
870
获赞与收藏
3669

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消