因此,在另一個答案 (How can I create a two dimensional array in JavaScript?) 我看到下面這個JS語法是什麼意思,什麼是'長度'?
function createArray(length) {
var arr = new Array(length || 0),
i = length;
if (arguments.length > 1) {
var args = Array.prototype.slice.call(arguments, 1);
while(i--) arr[length-1 - i] = createArray.apply(this, args);
}
return arr;
}
createArray(); // [] or new Array()
createArray(2); // new Array(2)
createArray(3, 2); // [new Array(2),
// new Array(2),
// new Array(2)]
這是什麼意思:大約是length || 0
跟着逗號的使用
var arr = new Array(length || 0),
i = length;
兩個部分我很困惑由i = length
。 對於length || 0
我做了一些實驗,我很困惑。 這裏是一個JSFiddle,我嘗試使用變量length
,然後與變量blah
完全相同,只在第二個上得到錯誤:https://jsfiddle.net/vrp0uhtL/4/您需要進入調試器。我只在鉻上測試過。
對於,i = length
這只是簡短的聲明i
也是一個var在同一行嗎?
感謝
編輯: 因爲我發現一些奇怪的事情發生,以區分這個問題類似於其他的: 爲什麼說:
var arr = new Array(length || 0)
console.log(arr)
var arr2 = new Array(blah || 0)
console.log(arr2)
將只產生一個錯誤的第二,當其他地方沒有定義長度或等效時,更具體地說,即使我沒有定義長度,爲什麼長度總是爲0(參見上面的JSFiddle)
這意味着創建一個長度爲'length'或長度爲0的數組,如果'length'是虛假的。 falsy意味着表達式被評估爲'false'。此表達式使用稱爲短路的機制 – ftor
['var'語句](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var) – str
您的編輯是一個不同的問題(這是「[爲什麼在我的瀏覽器中定義了一個叫做length的全局變量?](https://developer.mozilla.org/en-US/docs/Web/API/Window/length)」),它只是間接的與「長度||」有關0'問題。 (請注意,在你的原代碼中,'length'是你的函數中的一個局部變量,與這個新問題無關) – Quentin