Console.log与数字的比较

时间:2014-05-25 04:18:19

标签: javascript

我正在使用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;正在使用?

3 个答案:

答案 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以了解详情。