开发者问题收集

测验一下,他们的答案是错误的吗?

2020-03-26
82

我在测试中遇到了这个问题。

以下 不正确 的 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。

这个问题写得不好吗?是他们错了,还是我错了?

3个回答

不幸的是, if 条件后的分号 不是 语法错误 - 它只是意味着不使用 if 条件的结果,因为如果结果为真,则不会运行任何语句。

紧随其后的 { 是有效的语法,尽管它与 if 断开连接 - 它是一个裸块。裸块也是有效的,但非常奇怪 - 它们 大多 只是创建一个新范围,其中声明的 constlet 变量不会泄漏出去。

num=0;
if (num > 10);
{
num = num + 10;
}
alert(num);

查看“运行代码片段”如何导致弹出 10。

测验是正确的。

CertainPerformance
2020-03-26

由于 if 语句后有一个分号,因此它实际上没有主体,因此如果它为真,则没有任何内容可运行。您可以将其视为以分号结尾。

块语句(括号内的语句, {})在 Javascript 中有效,在本例中,它将像普通代码一样运行。因此 num = num + 10 运行。由于上面的 if 语句以分号结尾,因此无论 if 语句的结果如何,此代码都会运行。将其视为与 if 语句无关。

因此结果是 10 。是的,您可能希望删除 if 语句后的分号以获得所需的结果。

您可以根据需要进行测试:

num=0;
if (num > 10);
{
num = num + 10;
}
alert(num);
Cully
2020-03-26

由于 if 语句后有一个分号,因此 if 语句将被忽略。

块内的语句将被执行,因此以下代码将执行:

num = num+10 

您将得到 10 作为答案。

Abhishek Kulkarni
2020-03-26