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评论