1. 问题复现
// 在定义一个函数表达式后,接着定义一个自执行函数,执行会报错
var a = function (c) {
console.log("a")
console.log(c + "");
}
(function () {
console.log("b")
return "c";
})();
// Throw error: TypeError: (intermediate value)(...) is not a function
1.1 解决方式
- 在函数表达式定义和自执行函数中间补上分号“;”即可。
1.2 总结
- 问题出现在函数表达式定义后未用分号对语句进行划分,然后js解释器把后面括号内容作为参数传入且执行该函数,最后将返回结果赋值给了函数表达式所赋值的变量。
相关内容链接:https://bobbyhadz.com/blog/javascript-intermediate-value-is-not-a-function
https://segmentfault.com/a/1190000006813113
https://segmentfault.com/a/1190000016496022