测验一下,他们的答案是错误的吗?
我在测试中遇到了这个问题。
以下 不正确 的 javascript 代码的输出是什么,错误是什么?
num=0;
if (num > 10);
{
num = num + 10;
}
alert(num);
可能的答案:
a) 输出 10。if 语句
if(num > 10)
b) 输出 0
alert 语句
alert("num");
c) 输出 10。if 语句
if (num > 10)
d) 根本不执行。计算
num = num + 10; 有误。 num == num + 10;
我的答案是:
按原样它不会执行,但如果我们删除 if 语句后的分号,并添加 var,它就会执行。输出将为零。
这是因为 num 不大于 10,因此
if 语句
不执行任何操作。num 仍然 = 0。
IF 语句
后不应有分号。var 应在 num 变量前面使用。
他们的答案是 a)。输出将是 10,并且
if 语句
后不应有分号。
该语句不起作用,但如果我们整理它,答案仍然不会是 10。
这个问题写得不好吗?是他们错了,还是我错了?
不幸的是,
if
条件后的分号
不是
语法错误 - 它只是意味着不使用
if
条件的结果,因为如果结果为真,则不会运行任何语句。
紧随其后的
{
是有效的语法,尽管它与
if
断开连接 - 它是一个裸块。裸块也是有效的,但非常奇怪 - 它们
大多
只是创建一个新范围,其中声明的
const
和
let
变量不会泄漏出去。
num=0;
if (num > 10);
{
num = num + 10;
}
alert(num);
查看“运行代码片段”如何导致弹出 10。
测验是正确的。
由于
if
语句后有一个分号,因此它实际上没有主体,因此如果它为真,则没有任何内容可运行。您可以将其视为以分号结尾。
块语句(括号内的语句,
{})在 Javascript 中有效,在本例中,它将像普通代码一样运行。因此
num = num + 10
运行。由于上面的
if
语句以分号结尾,因此无论
if
语句的结果如何,此代码都会运行。将其视为与
if
语句无关。
因此结果是
10
。是的,您可能希望删除
if
语句后的分号以获得所需的结果。
您可以根据需要进行测试:
num=0;
if (num > 10);
{
num = num + 10;
}
alert(num);
由于 if 语句后有一个分号,因此 if 语句将被忽略。
块内的语句将被执行,因此以下代码将执行:
num = num+10
您将得到 10 作为答案。