小编g.0*_*005的帖子

Javascript 闭包:通过示例了解 let 和 var 之间的区别

尽管我知道这let允许您声明范围仅限于块的变量,但我在与 javascript 闭包let一起var使用它时遇到了奇怪的差异。这是我的例子:

let

function buildFunction() {

  var arr = [];
  for(var i = 0; i < 3; i++) {
    let j = i;  //Using let to assign j
    arr.push(
      function(){
        console.log(j);
      }
    )
  }
   return arr;
}

var fs = buildFunction();
fs[0]();
fs[1]();
fs[2]();
Run Code Online (Sandbox Code Playgroud)

上面的代码片段输出:

0
1
2
Run Code Online (Sandbox Code Playgroud)

var

上面的代码片段输出如下:

2
2
2
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 如果您在块内部使用var并在执行期间为其分配值,那么它不应该像let一样工作并在内存中存储j的不同副本吗?

  2. javascript在闭包中处理letand的方式是否不同?var

对此的任何澄清将不胜感激。

javascript jquery

8
推荐指数
1
解决办法
2604
查看次数

创建快速参考变量,以便快速访问核心原型

我正在分析一些第三方JavaScript库,并遇到了一种方法,人们可以快速参考核心原型.这样做有什么性能上的好处吗?任何人都能用一个例子来解释这个吗

var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;

// Create quick reference variables for speed access to core prototypes.
var
    push             = ArrayProto.push,
    slice            = ArrayProto.slice,
    concat           = ArrayProto.concat,
    toString         = ObjProto.toString,
    hasOwnProperty   = ObjProto.hasOwnProperty;
Run Code Online (Sandbox Code Playgroud)

javascript

4
推荐指数
1
解决办法
47
查看次数

标签 统计

javascript ×2

jquery ×1