正确的执行函数写法如下:
(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 再词法分析的时候,就把定义变量那一行和自执行函数分开了。