在javascript中,函数声明和函数表达式在范围方面有什么区别?功能声明意味着我们正在污染全球空间.是否与函数表达式相同?
功能声明
function sum(){
// logic goes here
}
Run Code Online (Sandbox Code Playgroud)
功能表达
var sum = function(){}
Run Code Online (Sandbox Code Playgroud)
两者在范围方面都是等同的.函数声明的另一个函数内部不会是全球性的.不同之处在于您可以随时使用声明的函数(因为它在任何代码运行之前都会被提升),只有在您分配了变量后才将该函数作为表达式分配给它.
(function () {
bar(); // works
function bar() { } // is not global
foo(); // doesn't work
var foo = function () { };
})();
Run Code Online (Sandbox Code Playgroud)
至于污染封闭范围,两者都是等价的.请注意,它不一定是全局范围 - 它是声明函数的范围(在其他函数中允许本地函数).在您的示例中,两个方法都引入了一个名为sum本地范围的变量(函数对象).
| 归档时间: |
|
| 查看次数: |
789 次 |
| 最近记录: |