Skip to content

说说下面代码的执行过程

Posted on:2024年7月19日 at 10:32
var a = 3;
function c() {
  alert(a);
}
(function () {
  var a = 4;
  c();
})();

这段代码的执行过程如下:

  1. 定义变量 a 并赋值为 3。
  2. 定义一个函数 c,该函数弹出一个对话框显示变量 a 的值。
  3. 定义一个立即执行函数,并在其中定义变量 a 并赋值为 4。
  4. 在立即执行函数中调用函数 c。
  5. 函数 c 弹出一个对话框显示变量 a 的值,此时输出结果为 3。

原因是在立即执行函数中定义的变量 a 只在该函数作用域内有效,并没有改变全局作用域中的变量 a 的值,而函数 c 中使用的变量 a 是从全局作用域中查找的,因此输出的是全局作用域中的变量 a 的值。

原文转自:https://fe.ecool.fun/topic/daa37c79-092b-4d02-a963-05a374864788