之间的任何区别
var myfunc = (function () { return function () { ... } }());
和
var myfunc = function () { return function () { ... } }();
这只是风格问题还是第一种形式的 () 周围有更多?
之间的任何区别
var myfunc = (function () { return function () { ... } }());
和
var myfunc = function () { return function () { ... } }();
这只是风格问题还是第一种形式的 () 周围有更多?
没有。或者至少在你的例子中不是。
仅当函数关键字是语句中的第一个标记时,外部括号才有意义。
// cool
var foo = function(){}();
var foo = (function(){}());
// also cool
(function(){}());
// not cool, syntax error
// parsed as function statement, expects function name which is missing
function(){}();
// also not cool, syntax error
// declares a function, but can't be executed immediately
function foo(){}();
当function
是语句中的第一个标记时,它是一个函数声明(想想命名函数),它的行为与所有其他上下文略有不同function
。该领先的括号强制解析将其视为函数表达式(想想匿名函数),从而允许立即执行。
请参阅:JavaScript 中的函数表达式与声明有什么区别?
如果您以其他内容(例如变量声明)开始该行或语句,则从技术上讲根本无关紧要。
没有区别,只是风格问题。两者都是执行函数,它们返回变量中返回的任何内容,并且返回一个函数。看一下这个
没有技术上的区别,它只是一种用于提高可读性的惯用风格,一开始就表明它是一个自调用函数。
目的是为了避免全局作用域,var myfunc =
在前面添加(function (){ return function(){}}());
基本上就达不到目的了
比较两者
(function(){...do something...}());
此函数在括号内的局部范围内运行。
var myfunc = function(){};
此函数在全局范围内运行。为什么不这样,因为您可能会与其他方法var
以及插件的命名发生命名冲突,并且由于保存在全局范围内var
,它可能会阻碍您的应用程序性能。var
我更喜欢
(function() {})();