JavaScript Let
该关键字在[ES6 (2015)]. let中引入
let使用块作用域声明的变量
使用let声明的变量必须在使用前声明
用let声明的变量不能在同一范围内重新声明
块范围
在 ES6(2015)之前,JavaScript 没有Block Scope。
JavaScript 有全局作用域和函数作用域。
ES6引入了两个新的 JavaScript 关键字:let和const。
这两个关键字在 JavaScript 中提供了块作用域:
1 | { |
全球范围
使用 声明的变量var始终具有全局作用域。
使用var关键字声明的变量不能具有块作用域:
1 | { |
不能重新申报
用let 定义的变量不能被重新声明。
您不会意外地重新声明使用let声明的变量。
与let你不能这样做:
1 | let x = "John Doe"; |
可以重新声明用var定义的变量。
与var你可以做到这一点:
1 | var x = "John Doe"; |
重新声明变量
使用关键字var重新声明变量可能会带来问题。
在块内重新声明变量也会在块外重新声明变量:
1 | var x = 10; |
使用关键字let重新声明变量可以解决这个问题。
在块内重新声明变量不会在块外重新声明变量:
1 | let x = 10; |
var、let和 const之间的区别
| 范围 | 重述 | 重新分配 | 吊装 | 绑定这个 | |
|---|---|---|---|---|---|
| var | No | Yes | Yes | Yes | Yes |
| let | Yes | No | Yes | No | No |
| const | Yes | No | No | No | No |
什么是好的?
let并且const 具有块作用域。
let并且const 不能重新申报。
let并且const 必须在使用前声明。
let并且const 不绑定到this.
let并且不const 被吊装。
什么是不好?
var不必声明。
var被吊起。
var与此相关。
浏览器支持
Internet Explorer 11 或更早版本不支持let和const关键字。
下表定义了完全支持的第一个浏览器版本:
![]() |
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|---|
| Chrome 49 | Edge 12 | Firefox 36 | Safari 11 | Opera 36 |
| Mar, 2016 | Jul, 2015 | Jan, 2015 | Sep, 2017 | Mar, 2016 |
重新申报
var允许在程序中的任何位置重新声明 JavaScript 变量:
1 | var x = 2; |
对于let,不允许在同一块中重新声明变量:
1 | var x = 2; // Allowed |
let允许在另一个块中使用 ,重新声明变量:
1 | let x = 2; // Allowed |
Let吊装
用定义的变量var被提升到顶部并且可以随时初始化。
含义:您可以在声明变量之前使用该变量:
还行吧:
1 | carName = "Volvo"; |
用定义的变量let也会被提升到块的顶部,但不会被初始化。
含义:let在声明变量之前使用变量将导致 ReferenceError:
1 | carName = "Saab"; |
搜索
阅读量:
收藏数:
点赞数:







0评论