首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数声明.函数表达式.范围

函数声明.函数表达式.范围
EN

Stack Overflow用户
提问于 2010-11-10 05:14:08
回答 2查看 859关注 0票数 5

在javascript中,函数声明和函数表达式在作用域上有什么区别?函数声明意味着我们正在污染全球空间。函数表达式是同一种情况吗?

函数声明

代码语言:javascript
复制
function sum(){
 // logic goes here
}

函数表达式

代码语言:javascript
复制
var sum = function(){}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-10 05:20:44

就污染范围而言,两者是等同的。注意,它不一定是全局范围--它是声明函数的范围(在其他函数中允许本地函数)。在您的示例中,这两种方法都在本地作用域中引入一个名为sum的变量(函数对象)。

票数 5
EN

Stack Overflow用户

发布于 2010-11-10 05:22:30

两者在范围上是相等的。在另一个函数中声明的函数不会是全局的。不同之处在于,您可以在任何时候使用声明的函数(因为它在运行任何代码之前就已悬挂),这是一个仅在分配了变量之后才将其作为表达式分配给变量的函数。

代码语言:javascript
复制
(function () {

    bar(); // works
    function bar() { }  // is not global

    foo();  // doesn't work
    var foo = function () { };

})();
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4141437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档