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 的值。