1、细心
var index = 0,
len = imgs.length,
$.preload(imgs,{
order: 'ordered'
});//这行报错,但是错误不一定是这行,报错内容是:Expecting newline or semicolon ,查字典得知需要个分号,所以看前一行有没有错误,果真少了分号!!!
2、
foo; // 'undefined'
foo(); // 出错:TypeError
var foo = function() {};
TypeError是函数未经定义就使用了,相关知识点如下:
var foo = function(){}; 与 function foo(){}的区别
前者在代码编译时仅仅函数foo申明提前,但函数体不会提前;而后者在代码编译时foo申明与foo函数体都提前了,相关验证代码如下:
alert(hereOrThere()); // alerts 'there'
function foo() {
return 'there';
}
虽然 foo函数在alert调用之后申明的,但是编译时已经提前申明赋值了
再看另一个例子:
$(function() {
console.log(foo());
var foo =function() {
return 'there';
}
});
这段代码就报错了:
Uncaught TypeError: foo is not a function
foo没有定义
3、一个容器内若有多个对象或元素时,记得两个对象(元素)之间的连接符号:
Tab.prototype = {
//
triger:function(currentTab){
currentTab.addClass('active');
},
45// //获取配置参数
46// getConfig:function(){
//拿一下tab elem中的data-config
var config = this.tab.attr('data-config');
//確保有配置參數
if(config && config!="")return JSON.parse(config);
else
return null;
}
};
像这个构造函数对象体内有多个构造函数,两个构造函数之间就需要一个连接符号,一般都为“,”
否则就报错:
Uncaught SyntaxError: Unexpected identifier //tab.js: 46
另一种应该想到的解决方法是看到报错在一个对象的开头,就应该想到是否上一个对象没有结束….
这让我想起前几天一个类似的错误,在为sublime添加插件时,需要添加一下插件的快捷键,同样的理解方法,详情:http://blog.csdn.net/ke3863834/article/details/77555779
4、.size is not a function
可能是jq版本问题,这个size在jq1.8版本之后就不再使用了,The .size() method is deprecated as of jQuery 1.8 ,可以换成.length 后面没有().