希望有大牛分析以下区别:(function( ){
alert(1);
})()
===================================
(function( ){
alert(1);
}( ))
===============================================
以及以下三个的结果和它们的不同:
function( ){
}( )function( ){
}(1)(function( ){
})(1 )
alert(1);
})()
===================================
(function( ){
alert(1);
}( ))
===============================================
以及以下三个的结果和它们的不同:
function( ){
}( )function( ){
}(1)(function( ){
})(1 )
function(){} //定义一个匿名函数
(function(){})(); //定义一个匿名函数并立即执行他
(function(){})(1); //定义一个匿名函数并立即执行他,后面小括号里是传递的参数
其他的都是错误的语法
function( ){
}(1)没有语法错误,js中;可以省略。所以以上语法是一个函数定义和(1)表达式。
(function( ){
alert(1);
})()函数定义外的()是运算符,返回函数本身,然后后面()表示函数调用。
(function( ){
alert(1);
}( ))里面的()表示函数调用,外面()是强制运算符,返回调用结果。
function( ){
}( )中function( ){
}被作为独立的函数定义,后面()没有办法解释,所以无法通过语法检测。
function( ){
}(1)与上面的解释相似,只是(1)是可以解释成表达式的。所以上面的语句可以解释为
function( ){
};
(1);
(function( ){
})(1 )应该与上面相同,空格应该会被忽略。以上内容是参考《javascript语言精髓与编程实践》p61(ps :挺好的一本书)
}( )
相当于 functin aaa(){} aaa();
function( ){
}(1)
语法错误
(function( ){
})(1 )相当于 function aaa(arg1){} aaa(1);
function( ){
}( )
为什么这里的()
不能看成是调用呢
而是所谓的强运算而这里的第2个括号
(function( ){
})( )
又变成是 调用