搜索

首页  >  问答  >  正文

javascript - 关于一个分号的问题,为什么没有分号就报错了呢?

输出2

当把那个分号去掉,报错

求问那个分号是起了什么作用?为什么去掉会报错呢?

高洛峰高洛峰2754 天前595

全部回复(3)我来回复

  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:44:00

    不是分号的问题,
    而是如果没有;号的阻断, 解释器直接把两条语句合并成:

    var xx = function(){}[1,2,3].aa(22);

    在使用已()和[]为开头的语句时, 要尤其注意, 因为这两个操作符会优先和前面的表达式进行组合, ;号不能省

    在某些的;号则不是必须的, 比如;

    var a = 1, b=2
    a++
    b++

    这并不会报错

    由于 js 并没有明确的对这样的行为做出解释, 而且页容易混乱, 所以推荐的做法一般都是:
    不管需不需要;号隔断, 你最好在后尾都加上一句, 除非你明确知道(想要)导致的结果.
    这种做法称作最佳实践

    回复
    0
  • PHP中文网

    PHP中文网2017-05-16 13:44:00

    function(){}[1,2,3] 返回undefined

    回复
    0
  • 怪我咯

    怪我咯2017-05-16 13:44:00

    这里的分号应该表示的是这一条语句结束吧?

    Array.prototype.aa = function(){console.log(2);};

    我觉得你写成这样就看得出了。

    回复
    0
  • 取消回复