我知道这可能是一个愚蠢的问题,但我花了很长时间仍然无法弄明白。
为了简洁起见,我创建了一个简单的演示:
$(function() {
alert('hi, jQuery!')
(function() {
console.log('hi, IIFE')
})()
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
alert
按预期工作,但console.log
失败。更奇怪的是,错误消息记录:
Uncaught TypeError: alert(...) is not a function
为什么会发生这种情况,因为alert
语句已经执行了?
这个问题是由于缺乏JS auto semicolon insertion
(a.k.a ASI)如何运作的知识。
有关详细信息,请参阅JavaScript Semicolon Insertion - Everything you need to know。