我意识到在以下JavaScript代码中,我们需要在;
之后添加$('#myButton').click(function() {})
才能让$('.lala').myFunction()
被调用。
$('#myButton').click(function() {})
(function ($) {
$.fn.myFunction = function (opt) {
alert("inside myFunction")
}
})(jQuery);
$('.lala').myFunction()
为什么;
在这里有很大的不同?我认为在大多数情况下,语句之间的;
可以在JavaScript中省略。
答案 0 :(得分:6)
因为函数调用可以返回另一个函数。如果没有分号,IIFE周围的括号将被解释为struct
可能返回的函数的参数列表,因此它被视为您写的:
.click()
完全不再依赖于自动分号插入的习惯,因为结果有时并不明显。如果你总是在你的陈述之后加上分号,你就不会有惊喜,也不必担心像这样的模糊案例。
答案 1 :(得分:3)
这里没有分号会导致解释器认为你试图将第二个函数作为firs的参数传递,然后尝试将第一个函数调用的结果作为函数调用。
它基本上是这样做的:
$('#myButton').click(function() {})(function ($) {
$.fn.myFunction = function (opt) {
alert("inside myFunction")
}
})(jQuery);
第二个功能将失败。这是为什么在你的陈述后总是加分号的优秀做法的经典例子之一,因为它可能会造成非常模糊的情况。没有理由不这样做。