两个功能之间的区别:
(function($){
console.log($);
}("test"));
(function($){
console.log($);
})("test");
我已经在网络控制台上尝试了它并按了“运行”。他们回归同样的事情。与括号位置的变化究竟有什么不同?
我假设第二个立即运行,对吧?
答案 0 :(得分:2)
两个片段相同;两个函数都不返回值,并且都将其参数记录到控制台。同样,使用参数"test"
调用两个匿名函数。
唯一的区别在于语法,关于函数定义与其应用程序对其参数的分组。第一个函数将函数定义与()
运算符分组,而第二个函数将函数定义与其应用程序分开。
最终没有语义差异。两个片段都包含一个匿名函数,该函数记录其参数,然后使用参数“test”调用。
答案 1 :(得分:2)
我能想到的唯一区别是,如果将变量分配给第一组括号内的函数,则会得到不同的结果,具体取决于分组。
var test;
(test = function(arg) {
console.log(arg)
})('I am the argument!')
按预期工作:它将'test'分配给函数,然后使用第二组括号中的参数运行一次。它与设置测试相同,然后使用test('I am the argument!')
但另一种方式呢?
var test;
(test = function(arg) {
console.log(arg)
}('I am the argument!'))
test
未定义!为什么?因为当你将括号放在函数旁边时,它会调用函数之前然后将它赋给变量。如果你将作业包装在括号中然后运行它(例1)那么你就可以了。
答案 2 :(得分:1)
绝对没有区别。
在第一种情况下,您可以在没有范围的情况下为您的函数提供“test”值,并且没有任何区别。它会以同样的方式工作。