一、查看执行结果

  1. function side(arr) {
  2. arr[0] = arr[2];
  3. }
  4. function a(a, b, c = 3) {
  5. c = 10;
  6. side(arguments);
  7. return a + b + c;
  8. }
  9. a(1, 1, 1)

执行结果:12
关键思路:函数设置参数默认值后会形成单独的参数作用域,不受外面的变量影响。
参考链接参数默认值

二、查看执行结果

  1. var min = Math.min();
  2. max = Math.max();
  3. console.log(min < max);

执行结果:false
关键思路:Math.min()的输出结果为 Infinity , Math.max()的输出结果为 -Infinity

三、查看执行结果

  1. var a3 = 1;
  2. (function a3 () {
  3. a3 = 2;
  4. console.log(a3);
  5. })();

执行结果:[Function: a3]
关键思路:

  • 立即执行函数会形成一个单独的作用域空间,在这个单独作用域空间内,当函数名和变量重名后,以函数名称优先,因为函数名称是不可改变的,所以输出函数
  • 全局作用域 和 IIFE形成的作用域互不影响

四、查看执行结果

  1. var a4 = [0];
  2. if (a4) {
  3. console.log(a4 == true);
  4. } else {
  5. console.log(a4);
  6. }

执行结果:false
关键思路:

  • 当a4出现在if判断语句中时,会被转换成布尔值
  • 当非基础数据类型和基础数据类型判断时,会先调用json方法转换成string性,string 和 布尔型进行比较时会转换成数值类型 0 == 1 ,所以为false;

五、

  1. (function () {
  2. var a = (b = 5);
  3. })();
  4. console.log(b);
  5. console.log(a);

执行结果5 ErrorƔa is not defined