这个问题的灵感来自the accepted answer here .为什么下面的一段代码会先提示“first”,然后提示“second”,然后出现 TypeError
错误?
(function() {
alert('first');
}())
(function() {
alert('second');
}())
给出的解释是第一个函数的返回值正在尝试被调用。但为什么会这样? 【还有,为什么第一次自执行后分号插入没有加分号?】
最佳答案
如果没有分号,它将评估为:
(function() {
alert('first');
}())(function() {
alert('second');
}())
第一个函数被执行,因为它没有返回任何东西,它进一步计算为:
undefined(function() {
alert('second');
}())
然后执行第二个函数,再次返回undefined
,所以:
undefined(undefined)
这当然不起作用(TypeError
因为 undefined
不是函数)。单独的函数调用应该用分号分隔,实际上每个语句都应该是这样。
关于javascript - 带有两个连续的自执行匿名函数的 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8625220/