首页
注册
登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请
登录
V2EX
›
vlxer
›
全部回复第 1 页 / 共 1 页
回复总数
2
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
不明白问我,付费指导。
关于
·
帮助文档
·
博客
·
API
·
FAQ
·
实用小工具
·
5477 人在线
最高记录 6679
·
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 21ms ·
UTC 08:10
·
PVG 16:10
·
LAX 00:10
·
JFK 03:10
Developed with
CodeLauncher
♥ Do have faith in what you're doing.