Skip to content

第 33 题:下面的代码打印什么内容,为什么?

js
var b = 10;
(function b() {
  b = 20;
  console.log(b)
})()

打印结果内容如下:

js
ƒ b() {
b = 20;
console.log(b)
}

原因分析:

  1. 作用域:执行上下文中包含作用域链 在理解作用域链之前,先介绍一下作用域,作用域可以理解为执行上下文中申明的变量和作用的范围;包括块级作用域/函数作用域;

  2. 特性:声明提前:一个声明在函数体内都是可见的,函数声明优先于变量声明;

在非匿名自执行函数中,函数变量为只读状态无法修改;