前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript let 和 const

JavaScript let 和 const

原创
作者头像
陈不成i
修改2021-07-19 11:19:21
3130
修改2021-07-19 11:19:21
举报
文章被收录于专栏:ops技术分享ops技术分享

ECMAScript 2015(ECMAScript 6)

ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: letconst

let 声明的变量只在 let 命令所在的代码块内有效。

const 声明一个只读的常量,一旦声明,常量的值就不能改变。

在 ES6 之前,JavaScript 只有两种作用域: 全局变量函数内的局部变量


全局变量

在函数外声明的变量作用域是全局的:

代码语言:javascript
复制
var carName = "Volvo";
 
// 这里可以使用 carName 变量
 
function myFunction() {
    // 这里也可以使用 carName 变量
}

全局变量在 JavaScript 程序的任何地方都可以访问。


局部变量

在函数内声明的变量作用域是局部的(函数内):

实例

代码语言:javascript
复制
// 这里不能使用 carName 变量
 
function myFunction() {
    var carName = "Volvo";
    // 这里可以使用 carName 变量
}
 
// 这里不能使用 carName 变量

函数内使用 var 声明的变量只能在函数内容访问,如果不使用 var 则是全局变量。


JavaScript 块级作用域(Block Scope)

使用 var 关键字声明的变量不具备块级作用域的特性,它在 {} 外依然能被访问到。

代码语言:javascript
复制
{ 
    var x = 2; 
}
// 这里可以使用 x 变量

在 ES6 之前,是没有块级作用域的概念的。

ES6 可以使用 let 关键字来实现块级作用域。

let 声明的变量只在 let 命令所在的代码块 {} 内有效,在 {} 之外不能访问。

代码语言:javascript
复制
{ 
    let x = 2;
}
// 这里不能使用 x 变量

重新定义变量

使用 var 关键字重新声明变量可能会带来问题。

在块中重新声明变量也会重新声明块外的变量:

实例

代码语言:javascript
复制
var x = 10;
// 这里输出 x 为 10
{ 
    var x = 2;
    // 这里输出 x 为 2
}
// 这里输出 x 为 2

let 关键字就可以解决这个问题,因为它只在 let 命令所在的代码块{}内有效。

实例

代码语言:javascript
复制
var x = 10;
// 这里输出 x 为 10
{ 
    let x = 2;
    // 这里输出 x 为 2
}
// 这里输出 x 为 10

浏览器支持

Internet Explorer 11 及更早版本的浏览器不支持 let 关键字。

下表列出了各个浏览器支持 let 关键字的最低版本号。

Chrome 49

IE / Edge 12

Firefox 44

Safari 11

Opera 36

Mar, 2016

Jul, 2015

Jan, 2015

Sep, 2017

Mar, 2016


循环作用域

使用 var 关键字:

实例

代码语言:javascript
复制
var i = 5;
for (var i = 0; i < 10; i++) {
    // 一些代码...
}
// 这里输出 i 为 10

局部变量

在函数体内使用 varlet 关键字声明的变量有点类似。

它们的作用域都是 局部的:

代码语言:javascript
复制
// 使用 var
function myFunction() {
    var carName = "Volvo";   // 局部作用域
}

// 使用 let
function myFunction() {
    let carName = "Volvo";   //  局部作用域
}

全局变量

在函数体外或代码块外使用 varlet 关键字声明的变量也有点类似。

它们的作用域都是 全局的:

代码语言:javascript
复制
// 使用 var
var x = 2;       // 全局作用域

// 使用 let
let x = 2;       // 全局作用域

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ECMAScript 2015(ECMAScript 6)
  • 全局变量
  • 局部变量
  • 实例
  • JavaScript 块级作用域(Block Scope)
  • 重新定义变量
  • 实例
  • 实例
    • 浏览器支持
    • 循环作用域
    • 实例
    • 局部变量
    • 全局变量
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档