数组的奇怪行为 - 无法理解为什么

S1a*_*wek 0 javascript arrays

我是JS的初学者,只是想了解下面代码中发生了什么.可能它是愚蠢的但是 - 好吧,就像我说的,我是初学者;)

首先它只是拆分数组,它是makeFriendlyDates(['2016-07-01', '2016-08-04']);函数的参数.

所以,在这个阶段一切都很好看.然而,当我打电话时function changeToFriendly(arr1);,只有存在的原因是将数字改为月份名称,它也会newArr以某种方式改变.

因此,如果我注释掉这一行://changeToFriendly(newArr);那么newArr应该是什么,但是如果它changeToFriendly(newArr);被调出,它会以某种方式改变,newArr而不仅仅是返回月份名称.

我的问题是如果函数不对数组做任何事情,只是遍历它并检查与月份名称对应的数字,如何changeToFriendly(newArr);改变newArr.

function makeFriendlyDates(arr) {
  var newArr = [];
  var elem;
  for (elem in arr) {
    newArr.push(arr[elem].split('-'));
  }
  document.getElementById('result').innerHTML = newArr;

  function changeToFriendly(arr1) {
    var month = '';
    var elem1;
    for (elem1 in arr1) {
      if (arr1[elem1][1] = '01') {
        month = 'January';
      } else if (arr1[elem1][1] === '02') {
        month = 'February';
      } else if (arr1[elem1][1] === '03') {
        month = 'March';
      } else if (arr1[elem1][1] === '04') {
        month = 'April';
      } else if (arr1[elem1][1] === '05') {
        month = 'May';
      } else if (arr1[elem1][1] === '06') {
        month = 'June';
      } else if (arr1[elem1][1] === '07') {
        month = 'July';
      } else if (arr1[elem1][1] === '08') {
        month = 'August';
      } else if (arr1[elem1][1] === '09') {
        month = 'September';
      } else if (arr1[elem1][1] === '10') {
        month = 'October';
      } else if (arr1[elem1][1] === '11') {
        month = 'November';
      } else if (arr1[elem1][1] === '12') {
        month = 'December';
      }

    }
    document.getElementById('result1').innerHTML = newArr;
    return month;
  }

  changeToFriendly(newArr);
}
makeFriendlyDates(['2016-07-01', '2016-08-04']);
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>Title</title>
</head>

<body>

  <p id="result"></p>
  <p id="result1"></p>

</body>

</html>
Run Code Online (Sandbox Code Playgroud)

Mad*_*aks 5

你的问题可能就在=这里:

for (elem1 in arr1) {
      if (arr1[elem1][1] = '01') {
                        ^^^
Run Code Online (Sandbox Code Playgroud)

...这意味着你if总是评估为真.