就javascript的语法而言,如果一条语句是以function关键字开始,那么这段会被判定为
函数定义。而函数定义是不能被立即执行的,这无疑会导致语法的错误(SyntaxError),因此就必须有一个办法,使解析器可以将之识别为函数表达式。
解析器识别函数定义的条件是 以function关键字开始,那么自然,只要在function关键字的前面有 任何其他的元素,就会从函数定义转变为函数表达式,以下方法都是可以的,
解析器识别函数定义的条件是 以function关键字开始,那么自然,只要在function关键字的前面有 任何其他的元素,就会从函数定义转变为函数表达式,以下方法都是可以的,
~function() {}();
!function() {}();
void function() {}();
这几个方法都有一个特点,就是看起来很别扭,所以现在为止,以括号包裹成了比较公认的方案。
回到正题,括号包裹同样有2个方式:(function() {})();和(function(){}());