javascript - 评估 JavaScript 示例中的范围

标签 javascript scope

看看这个“CoffeeScript - 加速 JavaScript 开发”示例:

(function() {
  var age, reincarnate;

  age = 99;

  reincarnate = function() {
    var age;
    age = 0;
    console.log("inner age:", age);
    return age;
  };

  reincarnate();

  console.log("I am " + age + " years old");

}).call(this);

为什么在这个例子中 age 打印出 99

reincarnate,一个闭包(据我所知)可以访问 age。为什么它的操作不会将 age 更改为 0?

最佳答案

由于 reincarnate() 包含:

var age;
age = 0;

它在自己的范围内重新声明了 age 变量。随后,名称 age 指的是"new"变量,而不是捕获的变量。

省略 var 关键字会导致捕获的 age 变量被修改。

关于javascript - 评估 JavaScript 示例中的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23784119/

相关文章:

c - 源文件中的static/extern有什么用?

scope - 声明在其范围之外仍然有效的符号

javascript - jQuery-UI 多范围 slider - 获取值

集成 Stripe API 时 Rails 应用程序中出现 Javascript 错误

javascript - 当对象推送到数组时如何保持键的顺序

jquery - 单击一个div后,如何停止多个div上的jquery单击功能?

c++ - 返回引用传递参数的引用

javascript - jQuery 删除除第一个和最后一个数字之外的所有数字

javascript - ios 发送经纬度到WebView

C++ 在类中定义静态对象