【转】关于函数内参数及变量的声明优先级

http://www.cnblogs.com/ssh-007/p/5064699.html

说明函数上下文VO按照如下顺序填充:

  1. 函数参数 (若未传入,初始化该参数值为undefined,会被 函数声明 和 变量声明 覆盖)
  2. 函数声明 (若发生命名冲突,会覆盖)
  3. 变量声明 (初始化变量值为undefined,若发生命名冲突,会忽略。)

例子:

(function f(a){
    var a;
    function a(){
        return "aaa";
    }
    console.log(a);
})(function(){ return 2; });

返回: function a() {return "aaa"; }

原文地址:https://www.cnblogs.com/xfh0192/p/7677248.html