let块级作用域
2024-08-29 00:31:44
let是es6中新加的作用域,即块级作用域。
var申明的变量要么全局,要么函数级,而let允许把变量的作用域限制在块级域中,这里的块级可以是()内,或{}内。
示例:
code_1:
"use strict";
var a = [];
for(let i=0; i<10; i++){
a[i] = function(){
console.log(i);
}
}
a[6]();//结果为6
code_2:
var a = [];
for(var i=0; i<10; i++){
a[i] = function(){
console.log(i);
}
}
a[6]();//结果为10
code_3:
var a = [];
for (var i = 0; i < 10; i++)
(function(c) {
a[i] = function() {
console.log(c);
}
}(i));
a[6]();//结果为6
在code_2中,由var定义的变量 i 是一个全局变量,每次循环的时候 i 都会被覆盖,而for循环体内的a[i]只是定义了一个函数,函数内部的打印的 i 在使用前还是一个变量,并不是固定的值,循环结束,全局变量 i = 10,所以最后调用a[6]()时打印的结果为10。在code_1中,由let定义的变量 i 在块级作用域内,每次循环时,a[i]函数中的 i 不会再改变,所以循环结束后打印的结果为6。code_3涉及到函数闭包,在网上看到了,就贴一下。
参考:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/let
https://segmentfault.com/q/1010000002466776
最新文章
- C# 把日期字符串转换为日期类型 (MM大写为月、小写为分钟)
- angularjs不同页面间参数的传递
- Laravel 5 多个视图共享数据的方法
- MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)
- PCA in Bioinformatics
- C++学习9 this指针详解
- rails 调试
- 结合setTimeout和clearTimeout,实现“返回顶部”的功能
- WP开发笔记——程序的退出方法
- [洛谷1580]yyy loves Easter_Egg I
- js_DOM_04
- .NET下的加密解密大全(2):对称加密
- Font Awesome 4.0.3 字体图标完美兼容IE7
- Angularjs学习笔记《一》
- 利用GUID唯一标识符并设置它的过期时间
- 11 吐司 Toast 代码案例
- Docker----起步(2)----在Ubuntu上安装最新版的Docker CE
- Codeforces 999D Equalize the Remainders (set使用)
- MySQL8.0.11 组复制配置
- Ontology Relations