为什么我会收到以下错误...
Uncaught TypeError: object is not a function
...在某一JS脚本的下一行?
(function($){
为什么只有在连接JS时才会出现错误? (我正在使用Gulp)
如果我在该行之前添加;
,为什么它会起作用呢?
;(function($){
更新
前一行 - 也就是说,根据运行时错误,在连接脚本上的不是函数的对象是}
,如:
storage = {
//...
}
我以前总是用分号,但不是花括号后。
事实证明,花括号可以分隔语句的结尾,就像在这种情况下一样,然后建议使用分号来避免此错误。 Here是一个很好的解释。
答案 0 :(得分:3)
Javascript忽略缺少的分号并尝试解释它。因此,如果您不输入分号,则使用下一行来查看它是否应该结束该行或将其链接。
允许你使用这样的东西:
String
.split();
它将被解释为:
String.split();
但,这也有效:
String
.split
();
现在,如果你有这样的事情:
var a = 'a';
var b = a
(function(){})
JavaScript无法知道你真正想做什么,所以它会解释它:
var a = 'a';
var b = a(function(){});
给你错误[place object type here] is not a function
底线,总是放下你的分号。
看到你的代码后,在这里解释它:
storage = {/**/}(function($){})(jQuery);
所以Object
({} === Object
)不是function
答案 1 :(得分:1)
连接时,它会认为您正在尝试拨打(function($) {...}
之前的任何内容。
如果您在引用后放置()
,它会尝试调用引用的任何内容。这就是为什么您会在代码之前看到很多JavaScript库只有一个;