當陣列元素是數字或字串的時候都可以,要是 object 就不行了
js 中物件是引用型別值,兩個物件的比較是引用的記憶體位址的比較。就像下面的程式碼:
var obj1={}; var obj2={}; obj1===obj2 //false
這兩個物件雖然看起來相等,但是引用的是堆記憶體中不同的對象,所以不相等。
inArray 的實作應該是遍歷數組,把數組的每一項與目標值進行比較,如果相等就返回索引值,不相等就返回-1,由於上面的原因,兩個分別聲明的對象引用值並不相等,所以回傳-1。
一般這樣理解,數組是一個對象,但是對像不一定是數組。 inArray作用於陣列
原始碼中isArray: Array.isArray,用的是Array.isArray, 裡面是object也可以啊,但外層必須是[]。
var obj = [{a:1}]; console.log(Array.isArray(obj)) // true
js 中物件是引用型別值,兩個物件的比較是引用的記憶體位址的比較。就像下面的程式碼:
這兩個物件雖然看起來相等,但是引用的是堆記憶體中不同的對象,所以不相等。
inArray 的實作應該是遍歷數組,把數組的每一項與目標值進行比較,如果相等就返回索引值,不相等就返回-1,由於上面的原因,兩個分別聲明的對象引用值並不相等,所以回傳-1。
一般這樣理解,數組是一個對象,但是對像不一定是數組。 inArray作用於陣列
原始碼中isArray: Array.isArray,用的是Array.isArray, 裡面是object也可以啊,但外層必須是[]。