簡體   English   中英

Javascript'Array'和'Loop'如何“變量[i]”成為一個條件

[英]Javascript ' Array ' and ' Loop ' how can “ variable[i] ” be a CONDITION

在這個腳本中,cars [i]被用作條件,程序如何識別條件是true還是false ,並且程序在進入數組中的第4個變量后正確停止?

所以問題是:程序如何識別條件以及如何將汽車[i]作為一種條件。

var cars = ["BMW", "Volvo", "Saab", "Ford"];
var i = 0;
var text = "";

for (;cars[i];) {
    text += cars[i] + "<br>";
    i++;
}

這里有兩件事情在起作用:

  1. 在JavaScript中,當您使用值作為條件時,它被強制為布爾值。 0""NaNnullundefined強制為false (它們加上false ,稱為“falsey”值); 所有其他人(“真理價值觀”)都強迫歸於true

  2. 如果您嘗試訪問數組中不存在的條目,則會返回undefined

因此,當i達到4cars[i]undefined ,這會強制為false ,並且循環停止。 但依賴於此可能會設置一個陷阱,因為如果cars中的任何條目強制為false (在該示例中沒有,但是......),循環將在處理整個陣列之前停止。


旁注: for (; condition ;)是一種非常奇怪的寫入方式while (condition) 如果您沒有初始化,測試和更新的部分, for可能不是你想要的控制結構。 你說你試圖理解這段代碼,所以我猜你沒有寫它; 請注意質量可能不會那么高。

這是編寫該循環的“正常”方式:

var cars = ["BMW", "Volvo", "Saab", "Ford"];
var i;
var text = "";
for (i = 0; i < cars.length; i++) {
    text += cars[i] + "<br>";
}

或者更現代的東西:

var cars = ["BMW", "Volvo", "Saab", "Ford"];
var text = "";
cars.forEach(function(car) {
    text += car + "<br>";
});

或者更高級的東西,但也許對初學者有所幫助:

var cars = ["BMW", "Volvo", "Saab", "Ford"];
var text = cars.reduce(function(acc, car) {
    return acc + car + "<br>";
}, "");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM