2017-06-01 33 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()预期的输出在控制台上登录。

相关问题