如何使用===检查2种不同类型的东西?

时间:2017-08-18 15:43:54

标签: javascript if-statement

我想检查输入框中的值是否等于变量。当我使用===时,它返回false,但是当我使用==时,如果两者相等,则返回true。

<input id="g1"></input> <button id="b" onclick="myFunction()">Try</button>
function myFunction() {
var d1;
d1 = Math.floor(Math.random()*100)
if( document.getElementById("g1").value ==  d1) {
document.getElementById("d").innerHTML = "Correct";
}

4 个答案:

答案 0 :(得分:2)

这是因为JavaScript ==可以将数字字符串与数字进行比较,而===则不能。{/ p>

同样地,&#34;值&#34;属性your using返回一个与整数进行比较的字符串。您需要先使用parseInt转换值。

parseInt(document.getElementById("g1").value) ===  d1

parseInt要考虑的一些事项:

    当您尝试转换非数字字符串时,
  • parseInt会返回NaN(即转换'bogus'会返回NaN
  • 它会通过删除小数将小数转换为整数。所以parseInt('2.1') == 2 // => true

老实说,根据您的使用案例,使用==是合适的,但我会添加一条评论,解释为何使用它。

答案 1 :(得分:1)

===意味着两个值都必须相等,但其中的数据类型相同,其中==表示它们只需要相等。所以例如,如果d1是一个保持值为2的字符串,并且g1是一个整数,同时使用===保持值2将不起作用,并且将返回false,因为两个数据都是不同的,即使它们具有相同的语法。

<input id="g1"></input> <button id="b" onclick="myFunction()">Try</button>
function myFunction() {
var d1 = 0;
d1 = Math.floor(Math.random()*100)
if( paseint(document.getElementById("g1").value) ===  d1) {
    document.getElementById("d").innerHTML = "Correct";
 }

答案 2 :(得分:0)

==是等于运算符 ===是一个身份运营商

例如,true == 1为true,因为true转换为1然后进行比较。但是,true === 1是假的。这是因为它没有进行类型强制。

除此之外,在您的情况下,我认为您想尝试将您的值转换为整数,然后进行比较。

答案 3 :(得分:0)

var string5 = '5'
var numb5 = 5
if (string5 == numb5) will  return true
if (string5 === numb5) will  return false

第二个变体也比较类型,因为字符串与数字类型不同,它是假的。