真是怪:为什么要用三个等号?看不明白用意啊。下面函数有一个 if ("number" === typeof len)表达式, 中间用了三个等号,为什么啊?有什么作用呢?    // 迭代任何对象和数组
    function $each(jn, fn) {
        var len = jn.length;
        // 如果长度有效
        if ("number" === typeof len) {
            // 遍历对象执行回调
            for (var i = 0; i < len; i++) {
                fn(jn[i], i);
            }
        } else {
            for (var k in jn) { fn(jn[k], k); }
        }
    };

解决方案 »

  1.   

    三个等号作用:全等号,只有在无需类型转换运算数就相等的情况下,才返回 true。不需要类型转换做比较的时候使用。JavaScript在两个等号时是内部做类型转换的,如果你不需要这样,就用三个等号。也就是 变量类型 变量值都相等的情况才算相等
      

  2.   

    == equality 等同,=== identity 恒等。 ==, 两边值类型不同的时候,要先进行类型转换,再比较。
      

  3.   

       if ("number" === typeof len) {
     
       做这个判断目的是判断参数是数组还是对象!然后分别用做不同的处理!
      
       如果这样: if ("number" == typeof len) {   即改用等号,那么不管是数组还是对象都会等于真,即大不到即定效果,自然一定要用===来进行区别啦!不用都不行!
      

  4.   

    说错了。不好意思,
    如果if ("number" == typeof len) {这种情况!
    数组的长度类型是number,而对象的是undefined!