函数声明的javascript范围

标签 javascript function scope

var javascript中的关键字导致变量存储在本地范围内。没有 var变量属于全局范围。函数呢?很清楚当函数被声明为变量时会发生什么

var foo = function() {...}

但是作用域是什么
function foo() {...} 

属于?

编辑:
我意识到我没有问完全正确的问题,所以作为跟进。在最外层的嵌套中,上面的两个声明和下面的声明有区别吗?
foo = function() {...}

最佳答案

它始终属于当前范围。例如:

// global scope

// foo is a global function
function foo() {

    // bar is local to foo
    function bar() {

    }

}
关于你的第二个问题,这个:
foo = function() {...}
是分配给全局变量的匿名函数表达式(除非您运行的是严格模式,否则 foo 将是未定义的)。那和 function foo() {} 的区别是后者是一个函数声明(相对于变量声明,它被分配了一个匿名函数表达式)。
您可能会对这篇关于函数声明和函数表达式的优秀文章感兴趣:Named function expressions demystified .

关于函数声明的javascript范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14665160/

相关文章:

javascript - 除了 ES6 之外,我们还能用其他格式编写 TypeScript 模块吗?

javascript - jQuery 在选项卡中打开 PDF - 正在打开其他选项卡

javascript - 在 javascript 中单击单选按钮时获得回调的最佳方法

ruby-on-rails - 在局部文件中本地定义的变量对于调用的 erb 模板是否也可见?

java - Servlet 重定向到同一页面并显示错误消息

javascript - 访问函数内部定义的全局变量

javascript - 无法散列密码并将其设置为 mongodb 模式中的字段

bash - 每 5 秒执行一次 bash 函数,但让脚本的其余部分运行

c - 是否可以创建一个可以以不同结构运行的函数(用 C 语言)?

python - 如何从 atan 转换为 atan2?