在Chrome的JavaScript控制檯,當我評估以下表達式:爲什麼具有隱式未定義值的數組返回N-1長度?
[,,]
它返回:[undefined × 2]
當我評價:
[,,].length;
它返回2
。
爲什麼它不包含3個未定義的值?這是由Comma Operator評估引起的嗎?
在Chrome的JavaScript控制檯,當我評估以下表達式:爲什麼具有隱式未定義值的數組返回N-1長度?
[,,]
它返回:[undefined × 2]
當我評價:
[,,].length;
它返回2
。
爲什麼它不包含3個未定義的值?這是由Comma Operator評估引起的嗎?
這是因爲當你把逗號,瀏覽器將其解釋爲:
[undefined,undefined,]
兩個逗號意味着有至少兩個值的存在,但由於用戶沒有提供的值,他們會來出來是未定義的,但作爲值存在(最少兩個,因爲有兩個逗號)它會給出長度兩個,因爲存在兩個未定義的值。
請記住,它不是一個空數組..空數組被定義爲[] ..再次,兩個逗號告訴瀏覽器值是未定義的,因此你得到的是輸出。
var arr = [,,];
alert(arr[0]); //undefined
alert(arr[1]); //undefined
arr.push(1);
alert(arr[2]); //1
尾隨逗號是有效的,想到的'[1,2]。length' – elclanrs 2014-10-02 06:40:04
@elclanrs你是在暗示這是旨在簡化解析? – Peter 2014-10-02 07:14:37