变量声明是否提升到 if 作用域块的顶部?

达尼·穆萨

当在 if 块范围内用关键字 var 声明的变量发生提升时,( var x;) 是否提升到当前 if 块的顶部?或者在这种情况下到全局范围的顶部?假设我们直接在全局作用域内写了下面这段代码

if (true) {
   some code;
   var x = 1;
}
马蒂亚斯·W

根据您的示例使用var(或完全省略定义键,例如 just x = 1)时,它将被提升到最近的范围,在您的示例中将是全局范围 ( window)。

如果它将被包装在一个函数中,那么该函数将是最接近的作用域。

function a() {
    if(true){
       var x=1;
    }
    console.log(x) // 1
    console.log(window.x) // undefined
}
a()
console.log(x) // Throws error (x is not defined)

如果您希望变量完全是块作用域,那么您需要使用letor const

if(true){
    const x=1;
}
console.log(x) // Throws error (x is not defined)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么条件块中的函数声明被提升到Chrome而不是Firefox中的函数作用域?

来自分类Dev

函数作用域中的变量是否像全局作用域中的变量一样被提升到开头?

来自分类Dev

在LVM缓存中增加了块大小之后,文件不再被提升到缓存中

来自分类Dev

在循环内部重新声明块作用域循环变量

来自分类Dev

何时分配块作用域变量

来自分类Dev

同步块和变量作用域

来自分类Dev

在JavaScript中;在块外声明的let变量是否获得全局作用域?

来自分类Dev

将值提升到ValidationNel中

来自分类Dev

从任一提升到IO

来自分类Dev

酿造链接提升到自制python

来自分类Dev

Scala从List [A]提升到List [Option [A]]

来自分类Dev

嵌套块中的PL / SQL变量作用域

来自分类Dev

ng-repeat变量作用域到DOM块

来自分类Dev

Ruby方法具有块变量作用域?

来自分类Dev

如何在 ES6 中将变量提升到所有导入之上?

来自分类Dev

无法重新声明块作用域变量“ reducer”(打字稿)

来自分类Dev

无法重新声明块作用域变量“ reducer”(打字稿)

来自分类Dev

如何将更改提升到已经提升的参考

来自分类Dev

是否可以将Verilog变量的本地作用域赋予always块?

来自分类Dev

如何将try声明的作用域也作用于finally块?

来自分类Dev

`function`声明是功能范围的,但是`异步function`声明是块作用域?

来自分类Dev

如何将PartialFunction提升到任一

来自分类Dev

将双射提升到函子中

来自分类Dev

将计算从State monad提升到RWS monad

来自分类Dev

Doobie-将任意效果提升到ConnectionIO

来自分类Dev

将双射提升到函子中

来自分类Dev

如何从2013年提升到2015年?

来自分类Dev

将RealFrac提升到另一RealFrac功能

来自分类Dev

如何将fclabels镜头提升到Monad?

Related 相关文章

  1. 1

    为什么条件块中的函数声明被提升到Chrome而不是Firefox中的函数作用域?

  2. 2

    函数作用域中的变量是否像全局作用域中的变量一样被提升到开头?

  3. 3

    在LVM缓存中增加了块大小之后,文件不再被提升到缓存中

  4. 4

    在循环内部重新声明块作用域循环变量

  5. 5

    何时分配块作用域变量

  6. 6

    同步块和变量作用域

  7. 7

    在JavaScript中;在块外声明的let变量是否获得全局作用域?

  8. 8

    将值提升到ValidationNel中

  9. 9

    从任一提升到IO

  10. 10

    酿造链接提升到自制python

  11. 11

    Scala从List [A]提升到List [Option [A]]

  12. 12

    嵌套块中的PL / SQL变量作用域

  13. 13

    ng-repeat变量作用域到DOM块

  14. 14

    Ruby方法具有块变量作用域?

  15. 15

    如何在 ES6 中将变量提升到所有导入之上?

  16. 16

    无法重新声明块作用域变量“ reducer”(打字稿)

  17. 17

    无法重新声明块作用域变量“ reducer”(打字稿)

  18. 18

    如何将更改提升到已经提升的参考

  19. 19

    是否可以将Verilog变量的本地作用域赋予always块?

  20. 20

    如何将try声明的作用域也作用于finally块?

  21. 21

    `function`声明是功能范围的,但是`异步function`声明是块作用域?

  22. 22

    如何将PartialFunction提升到任一

  23. 23

    将双射提升到函子中

  24. 24

    将计算从State monad提升到RWS monad

  25. 25

    Doobie-将任意效果提升到ConnectionIO

  26. 26

    将双射提升到函子中

  27. 27

    如何从2013年提升到2015年?

  28. 28

    将RealFrac提升到另一RealFrac功能

  29. 29

    如何将fclabels镜头提升到Monad?

热门标签

归档