Javascript不运行"else"或"===",但适用于"if"和"else if"



你好,我是javascript的新手,正在尝试运行以下内容

var age = prompt("What is your age");
if (age < 19) {
document.write("You can't drink");
}
else if (age === 19) {
document.write("you can finally drink");
}
else (age > 19) {
document.write("you can already drink");
}

我似乎无法显示任何内容,但是如果我更改代码以删除 else 语句并将===更改为仅==我的代码运行。这就是在我摆脱 else 语句和运算符后运行时的样子===

var age = prompt("What is your age");
if (age < 19) {
document.write("You can't drink");
}    
else if (age == 19) {
document.write("you can finally drink");
}

我正在尝试运行第一个代码块,但无法运行。页面为空,不显示提示。有人请帮忙。

代码中存在一些错误:

1(prompt方法返回string没有number,所以:

使用==而不是===

else if (age == 19) {

PS: (19 == '19'(; 是true但是(19 === '19'(; 是false

age转换为数字:

else if (Number(age) === 19) {

2(你不应该对else使用条件,所以你必须像这样改变else

else { document.write("you can already drink"); }

var age = prompt("What is your age");
if (age < 19) { document.write("You can't drink"); }
else if (Number(age) === 19) { document.write("you can finally drink"); }
else { document.write("you can already drink"); }

你的问题是最后一个 else 语句。你在别的后面放了一个条件,这是行不通的。您只在另一个 if 之后添加条件。您可以通过删除如下所示的条件来解决此问题:

var age = prompt("What is your age");
if (age < 19) {
document.write("You can't drink");
}
else if (age === 19) {
document.write("you can finally drink");
}
else {
document.write("you can already drink");
}

您在最后else语句中似乎遇到了一些逻辑错误。如果前两个条件都不为真,那么从逻辑上讲,最后一个条件必须为真。else不附带任何条件。就先前的条件而言,这只是其他条件。否则,您将不得不再次使用else if(),但如前所述,如果这两个条件都不为真,那么无论在此示例中,最后一个条件都必须是这种情况。因此,"别的"最有意义。

例:

if (age < 19) {
document.write("You can't drink");
}
else if (age === 19) {
document.write("you can finally drink");
}
else {
document.write("you can already drink");
}

就您的运营商而言,另一件事。==的意思是等于,可以用来比较不同的类型。即,您可以将数字类型与字符串类型进行比较,如果它们都具有相同的值,则该语句将为真。但是,===是严格相等的,这意味着要比较的事物必须是相同的值和相同的类型。

例:

var x = 5; //number
var y = '5'; //string
if(x == y) {
//true, because they are equal, both has the value 5
}
if(x === y) {
//false, because even though they are equal in value, they are not the same type
}
var a = 8; //number
var b = 8; //number
if(a === b) {
//true, because they are both equal, and the same type
}

所以,澄清一下,

==检查值是否相等,无论类型如何。

===检查值是否相等类型相同。

有关运算符的更多简单文档,请参见此处。

首先,您需要了解"=="和"==="之间的区别。由此你可以得出结论

JavaScript 既有严格相等比较,也有类型转换相等比较。对于严格相等,要比较的对象必须具有相同的类型,并且: 当两个字符串具有相同的字符序列、相同的长度和相同位置的相同字符时,它们严格相等。 当两个数字在数值上相等(具有相同的数字值(时,它们严格相等。NaN 不等于任何东西,包括 NaN。正零和负零彼此相等。 如果两个布尔操作数都为真或两个都为假,则两个布尔操作数严格相等。 如果两个对象引用同一个对象,则它们严格相等。 空值和未定义类型为 ==(但不是 ===(。[即(Null==Undefined(为真,但(Null===Undefined(为假]

其次,带有条件的"else"总是写成"else if"......否则是块,当上述条件都不为真时运行,即没有一个为真..从此处阅读以获取更多信息

最新更新