这两个函数的区别:
(function($){
console.log($);
}("test"));
(function($){
console.log($);
})("test");
我已经在网页控制台上尝试并按下“运行”按钮。它们返回相同的结果。那么改变括号位置究竟有什么区别呢?
我认为第二个会立即运行,对吗?
这两个函数的区别:
(function($){
console.log($);
}("test"));
(function($){
console.log($);
})("test");
var test;
(test = function(arg) {
console.log(arg)
})('I am the argument!')
这个符合预期:它将 'test' 赋值给函数,然后使用第二组括号中的参数运行该函数一次。这与设置 test 然后使用 test('我是参数!')
运行它相同。
那么另一种方式呢?
var test;
(test = function(arg) {
console.log(arg)
}('I am the argument!'))
test
未定义!为什么?因为当您将括号紧挨着函数放置时,它会在将其分配给变量之前调用该函数。如果您将赋值语句括在括号中然后运行它(示例1),那么一切都会顺利进行。
"test"
进行调用。()
运算符分组,而第二个函数将函数定义与其应用程序分开分组。完全没有区别。
第一种情况下,您在不带作用域的函数中给出“test”值,并且没有任何区别。以两种方式都可以以同样的方式工作。