JQuery 引用问题解析

今天在用到内置的 $.inArray() 函数是,发现 其返回值一直都是 -1 很是不解。

百度了一下 倒是有人倒出了原因,例子如下:

var testarr=[{"a":"0"},{"b":"1"},{"c":"2"}];

alert($.inarray({"a":"0"},testarr));    // 输出 -1

但是不知道作者是怎么想的,给出的解决办法如下:

var obj={'m':'1'};

var arr=[obj,'1',2];

alert($.inarray(obj,arr));

是脑残还是怎样?这是解决办法吗?你这么写,那还用inArray 去判断有什么意义吗?

 

问题是由于 两个object 是不能简单的用 == 判断是否相等的。本身 object 变量 表示的是引用,

必须要 层层递归到最底层的元素 去比较其值是否相等。

 

总之 js 对于变量的类型判断的是很严格的,可能是 用php习惯了 以为 1 == “1” 都是正确的。 真不知道php这样的弱类型语言 对于程序员本身 利弊到底各占多少啊~~~

 

以后 还要多加注意啊!!!

 

posted @ 2014-11-19 15:48  迟来的坚持  阅读(102)  评论(0)    收藏  举报