1. 问题:
下面这两种js的写法有什么区别?有什么理论性的知识点说明的吗?
2.
(function(w){
console.log(w);
}(window));
//匿名自执行函数
(function(w){
console.log(w);
})(window);
下面这两种js的写法有什么区别?有什么理论性的知识点说明的吗?
(function(w){
console.log(w);
}(window));
//匿名自执行函数
(function(w){
console.log(w);
})(window);
没有本质的区别。。。都会调用这个匿名函数。
如果非要说有的话,那就是后一种是正统的函数调用,类似 (fn)(window)
等价于fn(window)
,前一种算是比较hack的写法,类似于 (fn(window))
之所以要额外的括号,是因为 function(w){console.log(w)}(window)
,不是合法的 js 表达式,加个括号就是了。
常见的其他写法还有+function(w){console.log(w)}(window)
等价于 +fn(window)
-function(w){console.log(w)}(window)
等价于 -fn(window)
等。
他们解决的都是上面那个不是合法的表达式的问题。
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答867 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
谁告诉你第一种叫
闭包函数
的?