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

扎扎米

我试图理解JS的作用域。在这里我有一个示例,该示例在全局范围内有一个变量。check我的意思是说真值1。然后在一个名为mainwhichdoesn't have a variable called check但有一个if statementwhich检查是否存在检查变量的函数中,在其上重新分配另一个值以检查变量。然后将其打印出来。如果我使用

if(check){}

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

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

2. main函数范围没有检查变量。如果在main函数的范围内找不到check时,为什么在全局范围内找不到它?

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

费利克斯·克林(Felix Kling)

JavaScript仅具有功能范围,并且称为提升函数内部的每个变量声明都放在函数的开头。因此,您的代码等效于

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

局部变量check遮盖了外部变量check

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么“变量不在范围内”

来自分类Dev

Gradle全局变量不在buildscript范围内

来自分类Dev

局部函数变量更改不会影响全局范围内的变量。为什么不?

来自分类Dev

Dapper / EF-当变量不在使用范围内时,为什么性能会提高

来自分类Dev

为什么在全局范围内打印变量有效,但对其进行修改却无效?

来自分类Dev

为什么会收到“不在范围内”异常消息?

来自分类Dev

Haskell'showInt'不在范围内:为什么不呢?

来自分类Dev

为什么会收到“不在范围内”异常消息?

来自分类Dev

为什么项目不在视图范围内?

来自分类Dev

为什么在Swift的全局范围内重载==?

来自分类Dev

Haskell变量不在范围内

来自分类Dev

Haskell:变量不在范围内吗?

来自分类Dev

Haskell变量不在范围内

来自分类Dev

AngularJS变量不在视野范围内

来自分类Dev

我用let声明了我的变量,但它仍然不在全局范围内

来自分类Dev

为什么这不在范围内?为什么要使用严格阻止呢?

来自分类Dev

设置jQuery侦听器不在全局范围内

来自分类Dev

不在范围内:<*>

来自分类Dev

不在范围内

来自分类Dev

类中的条件语句,但不在函数范围内

来自分类Dev

为什么这不在React形式的onSubmit函数范围内?

来自分类Dev

为什么通配符类型参数不在自引用类型的包装器范围内

来自分类Dev

您能告诉我为什么这些方法不在范围内吗?

来自分类Dev

为什么我的oracle日期字段不在查询范围内?

来自分类Dev

为什么 d3.scale Quantize 不在我的连续范围内生成离散值

来自分类Dev

为什么在全局范围内声明的枚举明确不需要终止号?

来自分类Dev

为什么在全局范围内使用“ extern int a”似乎不可行?

来自分类Dev

宏`assert`,为什么它不能在全局范围内编译?

来自分类Dev

封闭的局部范围内的变量与全局范围内的变量-Python

Related 相关文章

  1. 1

    为什么“变量不在范围内”

  2. 2

    Gradle全局变量不在buildscript范围内

  3. 3

    局部函数变量更改不会影响全局范围内的变量。为什么不?

  4. 4

    Dapper / EF-当变量不在使用范围内时,为什么性能会提高

  5. 5

    为什么在全局范围内打印变量有效,但对其进行修改却无效?

  6. 6

    为什么会收到“不在范围内”异常消息?

  7. 7

    Haskell'showInt'不在范围内:为什么不呢?

  8. 8

    为什么会收到“不在范围内”异常消息?

  9. 9

    为什么项目不在视图范围内?

  10. 10

    为什么在Swift的全局范围内重载==?

  11. 11

    Haskell变量不在范围内

  12. 12

    Haskell:变量不在范围内吗?

  13. 13

    Haskell变量不在范围内

  14. 14

    AngularJS变量不在视野范围内

  15. 15

    我用let声明了我的变量,但它仍然不在全局范围内

  16. 16

    为什么这不在范围内?为什么要使用严格阻止呢?

  17. 17

    设置jQuery侦听器不在全局范围内

  18. 18

    不在范围内:<*>

  19. 19

    不在范围内

  20. 20

    类中的条件语句,但不在函数范围内

  21. 21

    为什么这不在React形式的onSubmit函数范围内?

  22. 22

    为什么通配符类型参数不在自引用类型的包装器范围内

  23. 23

    您能告诉我为什么这些方法不在范围内吗?

  24. 24

    为什么我的oracle日期字段不在查询范围内?

  25. 25

    为什么 d3.scale Quantize 不在我的连续范围内生成离散值

  26. 26

    为什么在全局范围内声明的枚举明确不需要终止号?

  27. 27

    为什么在全局范围内使用“ extern int a”似乎不可行?

  28. 28

    宏`assert`,为什么它不能在全局范围内编译?

  29. 29

    封闭的局部范围内的变量与全局范围内的变量-Python

热门标签

归档