2017-06-01 52 views
-2

一個奇怪的標題位,讓我解釋一下。爲什麼JavaScript函數在不同的時間工作?

藉此:

let a = ['a', 'b', 'c'] 
function joining(){ 
    console.log(a.join()) 
} 
joining() // a,b,c 
THE ABOVE IS JOINED 

function joining(){ 
    a.join() 
    console.log(a) 
} 
joining() // ['a', 'b', 'c'] 
THE ABOVE IS NOT JOINED 

function pushing(){ 
    a.push('d') 
    console.log(a) 
} 
pushing() // ['a', 'b', 'c', 'd'] 
THE ABOVE IS PUSHED 

第一joining()正確地加入他們,因爲我已經叫.join()陣列上。 但是,我所稱的第二個加入了它,然後嘗試登錄它,但它顯示原始。 但是我做的和push()方法完全一樣,並改變了原來的數組。我怎麼知道哪些方法會改變原始數組,哪些不會或僅僅是學習每種方法的一種情況?

+2

在第二個例子中做'a = a.join()' – gurvinder372

+0

['join()'](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/join ?v = control)不會修改原始值。 – Pyromonk

+0

看到https://stackoverflow.com/questions/9009879/which-javascript-array-functions-are-mutating – georg

回答

1

join()方法將數組的元素連接到一個字符串中,並返回該字符串。

因此,你應該更新成:

a = a.join() 
2

a.join()不輸出二審您預期的結果是因爲你還沒有從方法的調用指定返回值的原因。

a = a.join(); 
console.log(a); 

爲了完整起見,在你的第一個例子,因爲從調用的返回值作爲參數傳遞給console.log()預期的輸出在控制檯上登錄。

相關問題