首页
注册
登录
vlxer 最近的时间轴更新
vlxer
V2EX 第 200904 号会员,加入于 2016-11-11 17:30:42 +08:00
vlxer
提问
技术话题
好玩
工作信息
交易信息
城市相关
vlxer 最近回复了
2023-03-18 22:30:49 +08:00
回复了
Lao2tang
创建的主题
›
生活
›
最近网络上一直在宣传缅北诈骗,大伙儿觉得真的有那么夸张吗?
可以去,但只能去一次
2016-11-16 14:54:20 +08:00
回复了
brooky
创建的主题
›
JavaScript
›
var 和 let 的区别?
要理解这个,首先要理解词法作用域。
* 定义一个函数的时候,函数会保存当前作用域
* 函数执行的时候,会创建一个新的作用域,用于存放函数参数和局部变量,同时新的作用域指向函数保存的作用域,构成作用域链
因此,第一个例子中,由于没有块级作用域,循环里的所有函数都是共享同一个作用域的, a[0] == a[1] == ... == a[9] == i == 10 。
第二个例子中,有块级作用域,等价于:
```js
var a = [];
for (var i = 0; i < 10; i++) {
(function(i) {
a[i] = function() {
console.log(i);
};
})(i);
}
a[6](); // 6
```
通过查看 babel 的转换也可以看出:
http://babeljs.io/repl/#?babili=false&evaluate=true&lineWrap=false&presets=latest%2Creact%2Cstage-2&experimental=false&loose=false&spec=false&code=var%20a%20%3D%20%5B%5D%3B%0Afor%20(let%20i%20%3D%200%3B%20i%20%3C%2010%3B%20i%2B%2B)%20%7B%0A%20%20a%5Bi%5D%20%3D%20function%20()%20%7B%0A%20%20%20%20console.log(i)%3B%0A%20%20%7D%3B%0A%7D%0Aa%5B6%5D()%3B%20%2F%2F%206&playground=true
不明白问我,付费指导。
»
vlxer 创建的更多回复
关于
·
帮助文档
·
博客
·
API
·
FAQ
·
实用小工具
·
998 人在线
最高记录 6679
·
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 10ms ·
UTC 19:49
·
PVG 03:49
·
LAX 11:49
·
JFK 14:49
Developed with
CodeLauncher
♥ Do have faith in what you're doing.