javascript - 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 condition
在if block
. 但是不if block
应该跳过y--
评估为 0 这是一个错误的值,如下所示。
var y = 1;
if (0) {
y += typeof f;
}
console.log(y); // "1"
解决方案
上面的输出表明函数 f(){} 只是检查了它的真实性,但没有定义
f
命名函数表达式创建一个变量,该变量仅在其自己的范围内共享其名称(在本例中)。
您永远不会创建在您的语句f
可访问的范围内的变量。y += typeof f;
但是不应该跳过 if 块作为 y-- 评估为 0
y--
不评估为 0。
它评估为1
,然后递减y
为0
。
推荐阅读
- python - 读取 CSV 并将其呈现为显示为 Datatables 不工作
- excel - 将选定单元格的特定区域选择为 PDF,然后在工作表中使用 VBA 进行打印
- flutter - Flutter 中的 delta、globalPosition、localPosition 和 primaryDelta 是什么?
- python - 如何在 Python 中保存对文件的响应?
- javascript - 将平面列表渲染“项目”传递给函数。React Native(有点 js 问题)
- javascript - 存储/重用 Ajax 响应的最佳实践
- azure-devops - 在 Microsoft 机器学习服务器上使用 Azure Devops python 工件存储库
- docker - 为什么我无法通过 tomcat 服务器访问我在 Kubernetes 集群中的应用程序?
- python - BOTO3:打印特定区域的实例信息
- python - 在 python 中打印到 .txt 文件时,有没有办法保留多行?