$(文件)中的IIFE。已经无法按预期工作

时间:2017-01-23 17:31:05

标签: jquery iife

我知道这可能是一个愚蠢的问题,但我花了很长时间仍然无法弄明白。

为了简洁起见,我创建了一个简单的演示:



$(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;
&#13;
&#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

0 个答案:

没有答案