2011-10-05 44 views
1

這裏是什麼行不通的例子:填充陣列功能外不起作用

var array_one = []; 
array_one=['a','b','c']; 

聲明和填充陣列以外的任何功能不起作用,但

var array_one = []; 
function do_something(){ 
    array_one=['a','b','c']; 
} 

確實,因爲它在一個函數內。爲什麼?

+4

你會期望做什麼?如果你打算'array_one = ['a','b','c'];'你只是缺少一個'='。或者你想單獨提及'['a']','['b']'和'['c']',可能將它們改爲'null'? – VoteyDisciple

+0

再次,我的錯誤..在一個真實的代碼...有一個'=',我會糾正這個問題,但這將無效的答案! – menardmam

回答

2

array_one['a','b','b']沒有語法來填充數組 - 我真的不知道它實際上做。

如果你這樣做array_one = ['a','b','c']然後你用一個新的數組替換變量。 (與數組之間的區別在於對前一個數組的其他引用仍舊具有舊值)。

要向數組中添加值,請使用array_one.push('a')

4

你在這裏做的不是初始化,而是成員查找。該表達式被解析爲array_one[<member name>]。在這種情況下,member_name是通過評估'a', 'b', 'c'來實現的。這將使用逗號運算符,以便按順序評估3個表達式,並且表達式的結果是最終表達式:'c'。這意味着你的代碼是切實做好以下

array_one['c']; 

這聽起來像你想要的東西反而

array_one = ['a', 'b', 'c'];