JavaScript比较不正确

时间:2018-07-06 09:10:20

标签: javascript

我有一个用JS编写的程序。它比较数字为4的函数的输出。但是,似乎无法正确比较。

var myStringNotValidated =  "3T-4T";

var notValidate = myStringNotValidated.substring(3, 4);

if(notValidate === 4)
{
console.log("Value1");
}
else
{
console.log("null");
}
//OUTPUT IS NULL, WHICH IDEALLY SHOULD BE "Value1"

任何人都可以指导我在哪里犯错吗?

7 个答案:

答案 0 :(得分:2)

您陷入了大多数JS开发人员所犯的相同错误!

JS中===和==之间有区别。 (Difference between == and === in JavaScript)。因此,当您将“ 4”与4进行比较时,它会将(字符串4)与(数值4)进行比较,从而返回else条件。

解决方案:只需将===替换为==

var myStringNotValidated =  "3T-4T";
var notValidate = myStringNotValidated.substring(3, 4);
if(notValidate == 4)
{
console.log("Value1");
}
else
{
console.log("null");
}

https://jsfiddle.net/pfrvn485/

答案 1 :(得分:1)

这取决于您是否要检查notValidate是否为字符串

var myStringNotValidated =  "3T-4T";

var notValidate = myStringNotValidated.substring(3, 4);

if(notValidate === "4") // Change here
{
console.log("Value1");
}
else
{
console.log("null");
}

如果要检查notValidate是否为数字,请使用 parseInt()

var myStringNotValidated =  "3T-4T";

var notValidate = parseInt(myStringNotValidated.substring(3, 4)); // Change here

if(notValidate === 4)
{
console.log("Value1");
}
else
{
console.log("null");
}

答案 2 :(得分:1)

您的条件是否错误,if(notValidate === 4)将4作为字符串检查。您可以使用if(notValidate=='4')或将其转换为数字并检查。

答案 3 :(得分:1)

这是因为===比较值和类型。在您的程序中,noValidate包含一个值为4的值,但其类型为字符串,并且您将其与类型为number的4进行比较。

您可以使用==或键入noValidate进行编号。

var myStringNotValidated =  "3T-4T";

var notValidate = Number(myStringNotValidated.substring(3, 4));
console.log(typeof notValidate);
if(notValidate === 4)
{
console.log("Value1");
}
else
{
console.log("null");
}

答案 4 :(得分:1)

您正在将字符串(“ 4”)与int类型(4)进行比较。比较之前需要将其转换为整数。

var myStringNotValidated =  "3T-4T";

var notValidate = parseInt(myStringNotValidated.substring(3, 4));

if(notValidate === 4)
{
console.log("Value1");
}
else
{
console.log("null");
}

答案 5 :(得分:1)

尝试一下:

var myStringNotValidated =  "3T-4T";

var notValidate = myStringNotValidated.substring(3, 4);

if(notValidate === "4")
{
console.log("Value1");
}
else
{
console.log("null");
}

答案 6 :(得分:0)

由于您正在与Series.addPoint进行严格比较(值和类型),因此必须将其转换为Number。否则,请使用===(仅输入值而不是类型)。

==