第一题
let a = 1;
function b(a) {
var a
a = 2
console.log(a)
}
b(a)
console.log(a)
输出为2 1
因为函数带有参数a 相当于var a;使函数内的2变成了局部变量
第二题
function a (b = c, c = 1) {
console.log(b, c)
}
a()
会报错,因为形参b=c,c没有定义
第三题
let a = b = 10;
(function(){
let a = b = 20
})()
console.log(a);//10
console.log(b);//20
输出为10 20
因为let a=b=20,相当于 let a=b b=20;let a=b为局部变量,b=20为全局变量
第四题
var name = 'World';
(function () {
if (typeof name === 'undefined') {
var name = "Jack"
console.info('Goodbye ' + name)
} else {
console.info('Hello ' + name)
log
debug
error
}
})()
输出为Goodbye Jack
因为 声明提前 var name 提前到了if的前面