繁体   English   中英

为什么这不起作用? JavaScript的

[英]Why does this not work? 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而不是数字...

我怎样才能解决这个问题?

 valarray[i]==inx[i];

这是合乎逻辑的比较,而不是分配。

 valarray[i]=inx[i];

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')

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

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);
for (i=0; i<inx.length; i++) {
    valarray[i]==inx[i];
}

您正在使用比较运算符(==) ,而不是赋值(=)运算符

这只是一个JavaScript错误

您使用过:

valarray[i]==inx[i];

您应该使用:

valarray[i]=inx[i];
    valarray[i]==inx[i];

必须成为

    valarray[i]=inx[i];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM