gpt4 book ai didi

javascript - 为什么 if 语句不在全局范围内寻找变量

转载 作者:行者123 更新时间:2023-11-28 13:29:28 26 4
gpt4 key购买 nike

我试图理解 JS 中的作用域。这里我有一个示例,它在全局范围内有一个名为 check 的变量。它有一个真值,我的意思是 1。然后在一个名为 main 的函数中,该函数没有名为 check 的变量,但有一个 if 语句,用于检查是否存在 check 变量或不,它会重新分配另一个值来检查变量。然后将其打印出来。如果我使用

if(check){}

它打印出未定义。这里我有一些问题:

1. 检查变量在全局范围内声明。这意味着它可以在任何地方访问。然后,即使 IF 语句 失败,它也应该打印全局分配的值,即1 而不是 undefined。为什么它打印 undefined 而不是 1?

2.主函数作用域没有检查变量。当if在主函数作用域内找不到检查时,为什么不在全局作用域中查找它?

  (function(){
var check=1;
function main(){
if(check){
var check=10;
}
document.write(check);
}
main();
})();

最佳答案

JavaScript 只有函数作用域和称为提升的东西。函数内的每个变量声明都放在函数的开头。因此,您的代码相当于

var check=1;
function main(){
var check; // = undefined
if(check){ // block doesn't create scope
check=10;
}
document.write(check);
}

局部变量 check 隐藏外部变量 check

关于javascript - 为什么 if 语句不在全局范围内寻找变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26288884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com