JavaScript面試數組index和對象key問題詳解
面試題一:
var arr = [1, 2, 3, 4]
問:arr[1] = ?; arr['1'] = ?
答:arr[1] = 2; arr['1'] = 2
這里可以再分為兩個問題:
1、數組賦值
var arr = [1, 2, 3, 4] arr[1] = 10; // 數字場景 arr['10'] = 1; // 字符串場景 arr['a'] = 1; // 字符串場景 arr[true] = 2; // 布爾值 arr[undefined] = 3; // undefined arr[null] = 4; // null arr[Symbol] = 5; // Symbol arr[new Object()] = 6; // 對象 arr[function(){}] = 7 // 函數
打印結果:
結果說明,修改數組的值的過程中,下標index
如果是數字,那么,就是正常的數組賦值。
如果是非數字,那么會將其轉換為字符串,其實數組也是對象,那么,非數字就相當于給對象arr
的key
鍵定義的value
值。
2、數組取值
通過上述方式先為數組賦值,然后再通過以下方式取值:
console.log(arr[1]); // 10 console.log(arr['10']); // 1 console.log(arr[true]); // 2 console.log(arr[undefined]); //3 console.log(arr[null]); // 4 console.log(arr[Symbol]); // 5 console.log(arr[new Object()]); // 6 console.log(arr[function(){}]); // 7
由打印的結果可以看出,數組在取值時索引是數字,按照數組取值方式獲取。
如果索引位置是非數字,會將其轉換成字符串,通過對象的方式取值。
所以題目中的arr['1']
會轉換成arr[1]
,最終獲取到的值為2
。
面試題二:
var obj = { 0: 1, 1: 2, 2: 3 }
問:obj[1] = ?; obj['1'] = ?
答:obj[1] = 2; obj['1'] = 2
這里也可以再分為兩個問題:
1、對象賦值
var obj = { 0: 1, 1: 2, 2: 3 } obj[1] = 10; // 數字場景 obj['10'] = 1; // 字符串場景 obj['a'] = 1; // 字符串場景 obj[true] = 2; // 布爾值 obj[undefined] = 3; // undefined obj[null] = 4; // null obj[Symbol] = 5; // Symbol obj[new Object()] = 6; // 對象 obj[function () {}] = 7 // 函數
打印結果:
可以看出,對象賦值的時候,如果key值不是字符串,會將其轉換成字符串。
2、對象取值
通過上述方式先為對象賦值,然后再通過以下方式取值:
console.log(arr[1]); // 10 console.log(arr['10']); // 1 console.log(arr[true]); // 2 console.log(arr[undefined]); //3 console.log(arr[null]); // 4 console.log(arr[Symbol]); // 5 console.log(arr[new Object()]); // 6 console.log(arr[function(){}]); // 7
由打印的結果可以看出,對象在取值時,如果當前key值不是字符串,會將其轉換成字符串,再取值。
所以題目中的arr[1]
會轉換成arr['1']
,最終獲取到的值為2
。
總結
對象的下標如果不是字符串,會將其先轉換成字符串,再去求值。數組的下標如果不是數字,先將其嘗試轉成數字去取值;如果轉不成數字,則會利用數組也是對象的特點,將其轉換成字符串,再去取值。
以上就是JavaScript面試數組index和對象key問題詳解的詳細內容,更多關于JavaScript數組index對象key的資料請關注腳本之家其它相關文章!
相關文章
JS前端并發(fā)多個相同的請求控制為只發(fā)一個請求方式
這篇文章主要為大家介紹了JS前端并發(fā)多個相同的請求控制為只發(fā)一個請求方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07一款功能強大的markdown編輯器tui.editor使用示例詳解
這篇文章主要為大家介紹了一款功能強大的markdown編輯器tui.editor使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02Servlet3.0與純javascript通過Ajax交互的實例詳解
Servlet與純javascript通過Ajax交互,對于很多人來說應該很簡單。不過還是寫寫,方便Ajax學習的后來者2018-03-03