这个javascript多变量assignement(不是真正的变量赋值)语法是什么意思?

时间:2017-11-22 09:40:30

标签: javascript while-loop continue

我找到了这个如何改组数组的例子,但是我还没见过javascript签名多个值的变量。我尝试在控制台中执行此操作,但它会产生错误,这不是分配多个值,而是做其他事情吗?该功能似乎工作正常,所以我不确定如何解释这一点。

for(var i = 0; i < newInv.length; i++) {

    while(newInv[i][1] != -1) {

      newInv[i][0] += newInv[i+1][0];
      newInv.push([newInv[i][0], newInv[i][1]]);
      newInv.splice(i,2);

    }

}

2 个答案:

答案 0 :(得分:0)

  

什么???,它只有一个变量

不,它宣布了三个变量:

  • i,初始化为this.length
  • j,它没有初始化
  • temp,它没有初始化

......就像代码一样:

var i = this.length;
var j;
var temp;

var i = this.length, j, temp;与您的let num=3,4,5;varlet除外)之间的区别在于45不是&#39 ; t有效的标识符名称,因此您无法使用这些名称声明变量。

有关MDN的更多信息:var

答案 1 :(得分:0)

  1. 如果您想要将数组分配给变量,则应将其声明为数组:var num=[3,4,5];
  2. var i = this.length, j, temp;此行表示声明变量,其中第一个为已分配的值,而其他则不是
  3. Array.prototype.shuffle = function()脚本的第一行意味着此代码分配给一个类(原型)数组,所以如果你想运行它,你只需要从变量num.shuffle()中调用它
  4. 正确的工作示例:

    var num=[3,4,5]; 
    
    Array.prototype.shuffle = function() {
         var i = this.length, j, temp;
         if ( i == 0 ) return this;
         while ( --i ) {
             j = Math.floor( Math.random() * ( i + 1 ) );
             temp = this[i];
             this[i] = this[j];
             this[j] = temp;
          }
         return this;
     }
     num.shuffle()