首页 > 解决方案 > if语句里面的代码什么时候执行?

问题描述

考虑以下 3 个场景。

var y = 1;
if (function f(){}) {
   y += typeof f;
}
console.log(y);     // "1undefined"

上面的输出表明function f(){}只是检查了它的真实性,但在执行之前没有定义if block

var y = 1;
if (y--) {
   y += typeof f;
}
console.log(y);     // "0undefined"

但是,这里我们得到 y 的值为 0,这意味着里面的表达式if conditionif block. 但是不if block应该跳过y--评估为 0 这是一个错误的值,如下所示。

var y = 1;
if (0) {
   y += typeof f;
}
console.log(y);     // "1"

标签: javascript

解决方案


上面的输出表明函数 f(){} 只是检查了它的真实性,但没有定义

f命名函数表达式创建一个变量,该变量仅在其自己的范围内共享其名称(在本例中)。

永远不会创建在您的语句f可访问的范围内的变量。y += typeof f;


但是不应该跳过 if 块作为 y-- 评估为 0

y--不评估为 0。

它评估为1然后递减y0


推荐阅读