为什么JavaScript在第二种情况下不查找全局范围

用户名

在控制台中执行时,foo将按预期方式查找b值为2的值

function foo() {
    console.log(b)
}
var b = 2
foo() // 2 for console.log

但是当我这样做时

function foo() {
    console.log(b)
    var b = 2
    console.log(b)
}
var b = 2
foo() // undefined for first console.log

为什么不再在全球范围内查找b了?

开发01

这是因为所谓的Javascript提升,这是javascript看到您的代码的方式:

function foo() {
  var b; // javascript hoisted this variable on top
  console.log(b) // so here you see underfined
  b = 2;
  console.log(b);
}

现在,由于javascriptb在函数顶部b使用了提升变量,因此从未使用过全局变量,因此在显示提升变量后立即声明undefined因此,如果您var从函数中删除新的声明(关键字),则仍然应该可以访问全局b变量。

顺便说一句,在函数顶部声明所有变量是一个好习惯,例如:

function foo() {
  var b = 2;
  console.log(b);
}

要了解有关该主题的更多信息,请参见:

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么JavaScript在第二种情况下不查找全局范围

来自分类Dev

在第二种情况下无法理解输出

来自分类Dev

在第二种情况下触发mysql错误

来自分类Dev

为什么我的第二种标签类型不起作用?

来自分类Dev

第一种情况和第二种情况有什么区别?

来自分类Dev

使用ifndef和||进行条件编译 没有第二种情况

来自分类Dev

使用PICK_CONTACT运行第二种情况

来自分类Dev

runge kutta第二种方法的python代码是什么?

来自分类Dev

向应用程序添加第二种语言的最佳方法是什么

来自分类Dev

未调用JSF Action(一种情况有效,而第二种情况无效)

来自分类Dev

MySQL搜索并替换第二种模式

来自分类Dev

以第二种形式使用QMediaPlayer

来自分类Dev

第二种异步任务的实现,无需等待

来自分类Dev

向div添加第二种样式

来自分类Dev

以第二种形式使用SerialPort

来自分类Dev

第二种物质未在辉石中显示

来自分类Dev

从第二种形式填充DataGridView

来自分类Dev

以第二种形式访问richtextbox

来自分类Dev

MySQL搜索并替换第二种模式

来自分类Dev

MVC SqlQuery和第二种

来自分类Dev

无法加载第二种形式的C#

来自分类Dev

没有JS的第二种形式目标?

来自分类Dev

为什么“选项”上的“包含”方法使用具有下限的第二种类型而不是“任何”类型?

来自分类Dev

从第二种形式传递第二个参数?

来自分类Dev

width.find('。')适用于第一种情况,尽管使用相同的代码,但不适用于第二种情况

来自分类Dev

当在C#.net中单击第二种形式的按钮时,如何从第二种中获取主要形式的字符串数据?

来自分类Dev

一种形式关闭-第二种形式更新DataGridView

来自分类Dev

根据第一种形式的结果显示第二种形式

来自分类Dev

Javascript:console.log(arr.length)表示长度为n,console.log(arr)表示长度为n-1。第二种情况不会显示最后一个元素

Related 相关文章

  1. 1

    为什么JavaScript在第二种情况下不查找全局范围

  2. 2

    在第二种情况下无法理解输出

  3. 3

    在第二种情况下触发mysql错误

  4. 4

    为什么我的第二种标签类型不起作用?

  5. 5

    第一种情况和第二种情况有什么区别?

  6. 6

    使用ifndef和||进行条件编译 没有第二种情况

  7. 7

    使用PICK_CONTACT运行第二种情况

  8. 8

    runge kutta第二种方法的python代码是什么?

  9. 9

    向应用程序添加第二种语言的最佳方法是什么

  10. 10

    未调用JSF Action(一种情况有效,而第二种情况无效)

  11. 11

    MySQL搜索并替换第二种模式

  12. 12

    以第二种形式使用QMediaPlayer

  13. 13

    第二种异步任务的实现,无需等待

  14. 14

    向div添加第二种样式

  15. 15

    以第二种形式使用SerialPort

  16. 16

    第二种物质未在辉石中显示

  17. 17

    从第二种形式填充DataGridView

  18. 18

    以第二种形式访问richtextbox

  19. 19

    MySQL搜索并替换第二种模式

  20. 20

    MVC SqlQuery和第二种

  21. 21

    无法加载第二种形式的C#

  22. 22

    没有JS的第二种形式目标?

  23. 23

    为什么“选项”上的“包含”方法使用具有下限的第二种类型而不是“任何”类型?

  24. 24

    从第二种形式传递第二个参数?

  25. 25

    width.find('。')适用于第一种情况,尽管使用相同的代码,但不适用于第二种情况

  26. 26

    当在C#.net中单击第二种形式的按钮时,如何从第二种中获取主要形式的字符串数据?

  27. 27

    一种形式关闭-第二种形式更新DataGridView

  28. 28

    根据第一种形式的结果显示第二种形式

  29. 29

    Javascript:console.log(arr.length)表示长度为n,console.log(arr)表示长度为n-1。第二种情况不会显示最后一个元素

热门标签

归档