function test(foo){
var foo;
function foo(){console.log(111)}
console.log(foo)
}
test(4) // function foo(){console.log(111)}
****************************
function test(foo=7){
var foo;
function foo(){console.log(111)}
console.log(foo)
}
test(4) //4
************************
第一个demo,波同学可不可以解释一下这种情况吗? 按照波同学的意思,参数arguments在创建阶段应该是优先级最高的,那么执行test(4)时, foo被赋值为“4”的这一步是在Context的执行阶段进行,还是在创建阶段进行呢?如果是在执行阶段,那这个算是赋值操作吧,理应会覆盖原本函数foo的声明吧?
第二个demo更疑惑,如果用了ES6的默认值,最终的输出值就只会是4
前端基础进阶(三):变量对象详解变量对象,在新版本中,准确的说法应该是环境记录对象,而环境记录对象,又区分词法环境对象与变量环境对象,词法环境对象用于解析当前上下文中,由 const 声明的标识符引用,变量...