我正在用javascript查看IIFE,据我所知,这只是一种关于你如何编写IIFE的风格选择,下面的两种方法都应该有用。
var sum = 0
(function test(n){
sum += n
}(1));
console.log(sum);
此日志:Uncaught TypeError: 0 is not a function
。
或者,当我用!
开始IIFE时,它可以正常工作
var sum = 0
!function test(n){
sum += n
}(2);
console.log(sum) //logs 2
正如您所看到的,当我使用!
开始使用IIFE时,它可以按预期工作。我现在非常困惑,因为我认为这只是你如何实施IIFE的风格选择。谁能解释一下?
答案 0 :(得分:1)
这与你只使用一个括号的事实无关,它是在第一行末尾缺少分号。
在没有换行符的情况下查看它以查看问题。
var sum = 0(function test(n){
sum += n
}(1));
如果您遵循无分号方法,那么您需要使用分号来保护以[
或(
开头的换行符。
例如:
var sum = 0
;(function test(n){
sum += n
}(1))