为什么这不起作用? JavaScript的

时间:2011-03-22 13:11:39

标签: javascript

我在Javascript中有这个:

var inx=[2,3,4,5];
var valarray=[];
for (i=0; i<inx.length; i++) {
    valarray[i]==inx[i];
}
for (i=0; i<inx.length; i++) {
    var posi=inx.indexOf(3);
    var valy=valarray[posi-1]+1;
    valarray[i]=valy;
}
alert(valarray);
valarray不断返回nan,nan,nan,nan而不是数字......

我该如何解决这个问题?

6 个答案:

答案 0 :(得分:3)

 valarray[i]==inx[i];

这是一个逻辑比较,而不是作业。

 valarray[i]=inx[i];

答案 1 :(得分:2)

valarray[i]==inx[i];行没有按照您的预期行事。

在JS中,=是赋值运算符,==是具有强制类型的相等运算符,===是严格相等运算符。

一些例子:

var a;
alert(a = 2);       // 2

alert('2' == '2');  // true
alert(2 == 2);      // true
alert('2' == 2);    // true (because of type coercion, 2 == '2')

alert('2' === '2'); // true
alert(2 === 2.0);   // true
alert('2' === 2);   // false (strict equality: 2 !== '2')

答案 2 :(得分:0)

您正在比较您应该分配的位置,请尝试以下方法:

var inx=[2,3,4,5];
var valarray=[];
for (i=0; i<inx.length; i++) {
valarray[i]=inx[i]; //previously there was a == here
} 
for (i=0; i<inx.length; i++) {
var posi=inx.indexOf(3);
var valy=valarray[posi-1]+1;
valarray[i]=valy;
}
alert(valarray);

答案 3 :(得分:0)

for (i=0; i<inx.length; i++) {
    valarray[i]==inx[i];
}

您使用的是比较运算符(==),而不是此处的作业(=)运算符

答案 4 :(得分:0)

仅限javascript错误

你使用过:

valarray[i]==inx[i];

你应该使用:

valarray[i]=inx[i];

答案 5 :(得分:0)

    valarray[i]==inx[i];

必须成为

    valarray[i]=inx[i];