最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Function declaration - Function Expression - Scope - Stack Overflow

programmeradmin2浏览0评论

In javascript, What is the difference between function declaration and function expression in terms of scope? function declaration means we are polluting the global space. Is it the same case with function expression?

Function declaration

function sum(){
 // logic goes here
}

Function expression

var sum = function(){}

In javascript, What is the difference between function declaration and function expression in terms of scope? function declaration means we are polluting the global space. Is it the same case with function expression?

Function declaration

function sum(){
 // logic goes here
}

Function expression

var sum = function(){}
Share Improve this question edited Nov 10, 2010 at 5:17 casablanca 70.8k7 gold badges138 silver badges154 bronze badges asked Nov 10, 2010 at 5:14 CKRCKR 2234 silver badges8 bronze badges 1
  • stackoverflow./questions/336859/… and stackoverflow./questions/1013385/… – Phil Commented Nov 10, 2010 at 5:19
Add a ment  | 

2 Answers 2

Reset to default 10

Both are equivalent in terms of scope. A function declared inside another function will not be global. The difference is that you can use a declared function at any time (because it's hoisted before any code is run), a function assigned to a variable as an expression only after you have assigned it.

(function () {

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

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

})();

As far as polluting the enclosing scope goes, both are equivalent. Note that it is not necessarily the global scope - it is the scope in which the function is declared (local functions are permitted within other functions). In your example, both methods introduce a variable (function object) named sum into the local scope.

发布评论

评论列表(0)

  1. 暂无评论