我正在使用Codeacademy的Javascript教程编程入门第28/28课。我想创建一个程序,在该程序中输入数量的提示,如果数量是
var numberOfLessons = prompt("How many lessons have you taken?")
if(numberOfLessons===28)
{
console.log("I finished my first course!")
}
else if(numberOfLessons<28)
{
console.log("Do more lessons!")
}
else if(numberOfLessons>28)
{
console.log("Do less lessons D:")
}
当我运行该程序时,如果我输入的数量少于28,那么正确的“做更多课程!”过来。但是,使用===,如果输入28,则console.log不输出任何内容。它完全是空白的。但是,如果我在第3行使用==而不是===,那么在提示中输入“28”将返回正确的“我完成了我的第一道菜!”
var numberOfLessons = prompt("How many lessons have you taken?")
if(numberOfLessons===28)
{
console.log("I finished my first course!")
}
else if(numberOfLessons<28)
{
console.log("Do more lessons!")
}
else if(numberOfLessons>28)
{
console.log("Do less lessons D:")
}
为什么==有效但===不然?我的第一个想法(或者,更确切地说,我朋友的第一个想法)是因为numberOfLessons是一个变量而且===要求被比较的两件事的类型相同,而变量与数字不同。但是,在这种情况下,为什么它适用于“else if”语句,其中&gt;正在使用?
答案 0 :(得分:2)
方法console.prompt()
返回一个字符串。由于===
运算符在值为diffent类型时返回false,因此条件为false,因为您要比较字符串和数字。如果您使用==
,则条件为真,因为它将字符串转换为数字并进行比较。
答案 1 :(得分:1)
标识(===)
运算符的行为与相等(==)
运算符的行为相同,但不进行类型转换,并且类型必须相同才能被视为相等。
我猜你从用户那里得到的输入必须是字符串形式,你要将它与数字进行比较,因此(===)
失败。
为证明我的观点,我将numberOfLessons===28
更改为numberOfLessons==="28"
,返回true。因此证明numberOfLessons是一个字符串,因此类型不相等
JSFIDDLE: http://jsfiddle.net/5VdWW/
答案 2 :(得分:0)
===
比较值和类型,如果您更改为==="28"
,它将有效,因为var numberOfLessons
属于字符串类型。
==
仅比较值,这就是它起作用的原因。
您可以查看this refence以了解详情。