一、查看执行结果
function side(arr) {
arr[0] = arr[2];
}
function a(a, b, c = 3) {
c = 10;
side(arguments);
return a + b + c;
}
a(1, 1, 1)
执行结果:12
关键思路:函数设置参数默认值后会形成单独的参数作用域,不受外面的变量影响。
参考链接:参数默认值
二、查看执行结果
var min = Math.min();
max = Math.max();
console.log(min < max);
执行结果:false
关键思路:Math.min()的输出结果为 Infinity , Math.max()的输出结果为 -Infinity
三、查看执行结果
var a3 = 1;
(function a3 () {
a3 = 2;
console.log(a3);
})();
执行结果:[Function: a3]
关键思路:
- 立即执行函数会形成一个单独的作用域空间,在这个单独作用域空间内,当函数名和变量重名后,以函数名称优先,因为函数名称是不可改变的,所以输出函数
- 全局作用域 和 IIFE形成的作用域互不影响
四、查看执行结果
var a4 = [0];
if (a4) {
console.log(a4 == true);
} else {
console.log(a4);
}
执行结果:false
关键思路:
- 当a4出现在if判断语句中时,会被转换成布尔值
- 当非基础数据类型和基础数据类型判断时,会先调用json方法转换成string性,string 和 布尔型进行比较时会转换成数值类型 0 == 1 ,所以为false;
五、
(function () {
var a = (b = 5);
})();
console.log(b);
console.log(a);
执行结果:5 ErrorƔa is not defined