JavaScript (age==18) 和 (age===18) 的区别?

Difference between (age==18) and (age===18) in JavaScript?

我正在执行这个程序,但没有得到输出,但是如果我在第二个代码块中输入年龄后输入 18 岁,我得到了输出,为什么会这样?

如果我只使用两个“==”符号,那么我也得到了输出,但如果是“===”,我没有得到输出。

两种代码都在下面给出。

用“===”

var age=prompt("Enter your age");
if(age<18){
  alert("Sorry, You are too young to drive this car Powering off");
}else if(age>18){
  alert("Powering On Enjoy the ride!");
}else if(age===18){
  alert("Congratulation on your first riding Enjoy the ride!");
}

使用类型转换“Number(age)===18”

var age = prompt("What is your age?");
if (Number(age) < 18) {
  alert("Sorry, you are too young to drive this car. Powering off");
} else if (Number(age) > 18) {
  alert("Powering On. Enjoy the ride!");
} else if (Number(age) === 18) {
  alert("Congratulations on your first year of driving. Enjoy the ride!");
}

prompt 总是 return 字符串格式的值。

假设一个字符串和数字具有相同的值(比如 18 和 '18')。这里的值相同,只是类型不同。如果仅比较值,则将字符串值与数字进行比较将 return true,如果还比较类型,则 false

== 比较两个值而不比较类型。 == 被称为 抽象相等比较 ,它只比较值,不比较类型。 == 比较两个事物时会进行类型转换。

console.log(18 == '18'); // Expect true

===通过比较类型来比较两个值。 === 被称为 严格相等比较 这将比较值和类型

console.log(18 === '18'); // Expect false

Number(age) === 18 的情况下,字符串年龄被转换为数字年龄,因此这两个值都是 od 类型数字。因此这将 return true

Read More on == and ===

const age = prompt("Enter your age");
console.log(`Type of Age = ${typeof age}`);
const numbericAge = +age; // String to number conversion, Same as Number(age)
console.log(`Type of Numeric Age = ${typeof numbericAge}`);
if (numbericAge < 18) {
  alert("Sorry, You are too young to drive this car Powering off");
} else if (numbericAge > 18) {
  alert("Powering On Enjoy the ride!");
} else if (numbericAge === 18) {
  alert("Congratulation on your first riding Enjoy the ride!");
}