javascript中的asi机制


<!–markdown–>庆祝自己小站复活,先写个文章压压惊。
在此感谢木工(木木工程师)的技术支持。

什么是Automatic semicolon insertion机制呢。中文一般翻译成自动插入分号,简称asi机制。功能呢,也很简单,就是智能的判断语句是否插入分号,示例如下

function(){
    reutrn  &#39;hehe&#39;
}

<p><!–more–></p>

由于有asi机制的存在,以上代码是合法而合理的。大概javascript的设计师是为了帮助一些粗心的小猴子温馨的加个分号。但是呢,也会发生一些神奇的事情。比如如下示例

function(){
        return
        {
            today:&#39;才周二&#39;
        }
    }

或许,我们希望返回一个对象,但是由于asi机制的存在,这段代码并不能返回我们想要的结果。正确示例应如下

function(){
      return{
          today:&#39;不是周五&#39;
      }
  }

像方括号、逗号、大括号、小括号等这些常用符号并不会被自动加上分号而被断句。
asi机制的规则花样繁多,去记住他们的所有规则有点不大现实,所以大部分情况下我们还是老老实实的在句末加上分号吧。同时,留个小心情,避免发生如上bug。