真是怪:为什么要用三个等号?看不明白用意啊。下面函数有一个 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); }
}
};
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); }
}
};
做这个判断目的是判断参数是数组还是对象!然后分别用做不同的处理!
如果这样: if ("number" == typeof len) { 即改用等号,那么不管是数组还是对象都会等于真,即大不到即定效果,自然一定要用===来进行区别啦!不用都不行!
如果if ("number" == typeof len) {这种情况!
数组的长度类型是number,而对象的是undefined!