在編碼測試中,我最近遇到了一個問題,要求我查找將在控制檯中打印的內容。問題在下面。我不明白如何理解和執行下面的代碼。數組行爲混淆
需要幫助
var arr = ["a" , "b" , "c" , "d"][1,2,3];
console.log(arr);
是什麼改編的定義甚至是什麼意思?
在編碼測試中,我最近遇到了一個問題,要求我查找將在控制檯中打印的內容。問題在下面。我不明白如何理解和執行下面的代碼。數組行爲混淆
需要幫助
var arr = ["a" , "b" , "c" , "d"][1,2,3];
console.log(arr);
是什麼改編的定義甚至是什麼意思?
JS中的數組是一維的。
所以var arr = ["a" , "b" , "c" , "d"][1,2,3];
這裏[1,2,3]
代表的指標。
並且逗號是前置最少的操作符,因此[1,2,3]
將返回3
(即總是最右邊的元素)。
因此
結果將返回在索引3
這d
Update:
讓我們來看看一些點comma
運營商的價值:
逗號操作者評估它的每個操作數(從左到右) 並返回最後一個操作數的值。
所以,它的意思是:
var a = (10, 18);
a; //18
另外請注意,這是必須提到它們括號內,而分配給一個變量。
如果你嘗試類似:
var a = 1,2,3;
a; // will return 1
所以您在使用()
包起來是很重要的。
您什麼時候使用它,
運算符?
如果要在需要單個表達式的位置包含多個 表達式,則可以使用逗號運算符。該運算符的最常見用法是在for循環中提供多個參數。
for (var i = 0, j = 9; i <= 9; i++, j--)
現在,您已經瞭解關於comma
操作,讓我們來看看幾個例子來測試我們的理解:
1. var a = (1,3)/(2,1);
a // what will be the o/p
2. var a = ["Stack", "OverFlow","is","Awesome"][1,3,2][2,0]
a // What will be the o/p
3. var a = (true,0,1), b, c;
if(b,c,a) {
console.log("Will it execute?");
}
你的榜樣抓住了我offguard。這是另一個說明發生了什麼的例子。基本上,逗號分隔值的列表評估爲最後的值。
if (false, false, true) {
console.log("hello")
}
// --> "hello"
核心概念的簡化 – slebetman 2015-03-25 07:13:23
正確。 OP,至少它看起來不是這樣的:'var wtf =「test」[1,2,3];'這可能更令人困惑;) – 2015-03-25 07:06:02
@DavidTitarenco這是一個很好的:) – mohamedrias 2015-03-25 07:07:52
棒極了!我今天學了些新東西。我不知道逗號令牌在之前的語言中有特殊含義。謝謝 – 2015-03-25 07:14:02