括号

by shengoo

JavaScript

var foo = function(){console.log("foo"); }
foo();//foo
//function(){ /* code */ }();//Unexpected token ( 
var f = function(){ console.log("f"); }();//f
//f();

// 下面这个function在语法上是没问题的,但是依然只是一个语句
// 加上括号()以后依然会报错,因为分组操作符需要包含表达式
//function f1(){ console.log("f1"); }(); // SyntaxError: Unexpected token )

// 但是如果你在括弧()里传入一个表达式,将不会有异常抛出
// 但是foo函数依然不会执行
function f2(){console.log("f2");}( 1 );
 f2(1);
// 因为它完全等价于下面这个代码,一个function声明后面,又声明了一个毫无关系的表达式: 
function f3(){console.log("f3");}
 
( 1 );