正确的执行函数写法如下:
(function func(i) {
console.log(i);
})(j);
(function func(i) {
console.log(i);
}(j));
!(function func(i) {
console.log(i);
})(j);
看看下面这段代码有什么问题?
let testStr = "test string"
(function func(params) {
console.log("liubbc params: ", params);
})(testStr);
大家可以直接复制,执行一下。看到会报这个错误:
聪明的你可能从错误中已经看出错误原因了:把"test string" 当成运算符了,所以会出现这个错误。怎么修改呢?
let testStr = "test string";
(function func(params) {
console.log("liubbc params: ", params);
})(testStr);
在变量定义后面加个分号就可以了。JS 再词法分析的时候,就把定义变量那一行和自执行函数分开了。