以一个括号开头的 IIFE 不起作用
IIFE beginning with one parenthesis bracket not working
我正在研究 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 的一种风格选择。谁能解释一下?
这与您只使用一个括号无关,这是第一行末尾缺少分号。
看一下没有换行就看出问题了
var sum = 0(function test(n){
sum += n
}(1));
如果您遵循无分号的方法,那么您需要用分号保护以 [
或 (
开头的换行符。
例如:
var sum = 0
;(function test(n){
sum += n
}(1))
我正在研究 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 的一种风格选择。谁能解释一下?
这与您只使用一个括号无关,这是第一行末尾缺少分号。
看一下没有换行就看出问题了
var sum = 0(function test(n){
sum += n
}(1));
如果您遵循无分号的方法,那么您需要用分号保护以 [
或 (
开头的换行符。
例如:
var sum = 0
;(function test(n){
sum += n
}(1))