一、查看执行结果
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
