调试中的一些错误---持续更新

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 后面没有().

你可能感兴趣的:(JS)