在javascript中,函数声明和函数表达式在作用域上有什么区别?函数声明意味着我们正在污染全球空间。函数表达式是同一种情况吗?
函数声明
function sum(){
// logic goes here
}函数表达式
var sum = function(){}发布于 2010-11-10 05:20:44
就污染范围而言,两者是等同的。注意,它不一定是全局范围--它是声明函数的范围(在其他函数中允许本地函数)。在您的示例中,这两种方法都在本地作用域中引入一个名为sum的变量(函数对象)。
发布于 2010-11-10 05:22:30
两者在范围上是相等的。在另一个函数中声明的函数不会是全局的。不同之处在于,您可以在任何时候使用声明的函数(因为它在运行任何代码之前就已悬挂),这是一个仅在分配了变量之后才将其作为表达式分配给变量的函数。
(function () {
bar(); // works
function bar() { } // is not global
foo(); // doesn't work
var foo = function () { };
})();https://stackoverflow.com/questions/4141437
复制相似问题