JavaScript:变量可以有多个值吗?

时间:2013-08-12 18:42:34

标签: javascript variables

我对jQuery以外的JavaScript相当陌生,而且我正在阅读JavaScript数组中的随机化&使用带有随机数的Array.sort方法的缺点。我看到建议改为使用Fisher-Yates shuffle。在查看此方法的JavaScript代码时:

Array.prototype.randomize = function()
{
    var i = this.length, j, temp;
    while ( --i )
    {
        j = Math.floor( Math.random() * (i - 1) );
        temp = this[i];
        this[i] = this[j];
        this[j] = temp;
    }
}

我对这条线感到震惊:

var i = this.length, j, temp;

这里发生了什么?变量是赋予多个值,还是这个简写?

6 个答案:

答案 0 :(得分:5)

变量永远不能同时具有多个值。

您提供的代码是

的简写
var i = this.length;
var j;
var temp;

上述语法在大多数编程语言中都是合法的。

答案 1 :(得分:2)

var i = this.length, j, temp;

与:

相同
var i = this.length;
var j; // here the value is undefined
var temp; // same, temp has a an undefined value

答案 2 :(得分:2)

不,这是以下的简写: var i = this.length; var j; var temp;

答案 3 :(得分:1)

您正在创建三个变量,只有最左边的变量才会生成一个值 - 在这种情况下,无论值this.length是什么。

正如其他人所指出的那样回答你的问题,它与以下内容相同:

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

Java,C#和Visual Basic等其他语言允许您使用类似的语法创建变量。即:

即:

// C# and Java
int i = this.length, j, temp;

// which is the same as:
int i = this.length;
int j, temp;

' Visual Basic
Dim i = this.length as Integer, j as Integer, temp as Integer

' Which is the same as:
Dim i = this.length as Integer
Dim j as Integer, temp as Integer

答案 4 :(得分:1)

它只是在一行中多次声明变量。它等同于:

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

这相当于:

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

答案 5 :(得分:1)

The specification将变量语句定义为var关键字,后跟变量声明的列表,用逗号分隔:

VariableStatement :
    var VariableDeclarationList ;

VariableDeclarationList :
    VariableDeclaration
    VariableDeclarationList , VariableDeclaration

请注意VariableDeclarationList的递归定义。这意味着无限数量的变量声明可以跟随var关键字。

因此

var foo, bar;

相同
var foo;
var bar;

相关问题:What is the advantage of initializing multiple javascript variables with the same var keyword?