问题一:
{
function foo() {}
foo = 1;
function foo() {} //之前的foo操作都会给全局一份 foo = 1就会由私有变成全局
}
// 正确答案 1
console.log(foo);
问题二:
{
function foo() {}
foo = 1;
function foo() {} //之前的foo操作都会给全局一份 foo = 1就会由私有变成全局
foo = 2; //还是私有块级作用域
}
// 正确答案 1
console.log(foo);
问题三:
var x= 1
function func(x,y=function anonymousl() {x=2}) {
var x= 3
y()
console.log(x) //3
}
func(5)
console.log(x) // 1
在y()中的x是用的参数x
问题四:
var a = 4;
function b(x,y,a){
a=3
console.log(arguements[2])
}
a = b(1,2)
1.在非严格的情况下arguments跟实参是一一对应的映射关系(一个改变另一个也跟着变),aguements是一个类数组
2.映射机制是在函数代码执行之前完成的,那会建立了映射就有映射,如果此时没有建立,映射机制后续就不会再有;
arguements[0] -----x-----1
arguements[1] -----y-----2
arguements[2] ---- a----undefined
a=3(代码执行,与arguements没有关系)