变量对象VO的填充顺序
- 函数参数:若未传入,初始化该参数值为undefined
- 函数声明:提升声明和赋值。若发生命名冲突(如传入的参数有同名的变量,或arguments)会覆盖
- 变量声明:初始化变量值为undefined,若发生命名冲突,会忽略(即不会覆盖他的值为undefined)
function app(arg1, arg2) {
function arguments() {};
function arg1() {};
function arg3() {};
// 这里的arguments和arg1都被赋值为函数
var arg2, arg3;
// 这里的arg2发生命名冲突,但是不覆盖他的值
};
app(1,2);命名函数表达式的标识符在函数内不可变var a = function b() {
b =1;
console.log(b);
// function() {}因为在函数体内是不变的
};

本文详细解析了变量对象VO在函数参数、声明过程中的填充顺序,包括函数参数默认值、提升声明与赋值、变量声明及初始化,以及命名冲突处理等关键点。
1456

被折叠的 条评论
为什么被折叠?



