ES6新特性:let关键字详解

文章目录

  • [1 声明提升](#1 声明提升)
  • [2 作用域](#2 作用域)
  • [3 重复声明](#3 重复声明)

在JavaScript中,letvar 都是声明变量的关键字,但在用法和作用域方面有一些区别。

let 是ES6引入的新的声明变量的关键字,它与 var 相比,更加严格,语法更加规范,并且可以避免一些常见的错误。

1 声明提升

  • let 不存在变量提升

    使用var关键字声明的变量会被提升到当前作用域的顶部,而使用let声明的变量不会。所以,使用var声明的变量可以在声明之前使用,但是使用let声明的变量必须在声明之后使用。

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ES6新特性:let关键字</title>
</head>

<body>
    <script>
        console.log('myVar:', myVar);    //myVar: undefined
        var myVar = '我是var声明的变量';
        console.log('myVar:', myVar);    //myVar: 我是var声明的变量

        console.log('myLet:', myLet);    //报错,Cannot access 'myLet' before initialization
        let myLet = '我是let声明的变量';
        console.log('myLet:', myLet);    //myLet: 我是let声明的变量
    </script>
</body>

</html>

2 作用域

  • let声明的变量具有块级作用域

    使用var声明的变量有函数作用域或全局作用域,而使用let声明的变量有块级作用域。

    块级作用域是指变量只在定义它们的块内部可见。这意味着,使用let声明的变量只能在声明它的块级作用域内使用,而不会影响外部作用域。

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ES6新特性:let关键字</title>
</head>

<body>
    <script>
        {
            var myVar = '我是var声明的变量';
            let myLet = '我是let声明的变量';
        }
        console.log('myVar:', myVar);    //myVar: 我是var声明的变量
        console.log('myLet:', myLet);    //报错:myLet is not defined
    </script>
</body>

</html>

3 重复声明

  • let 不允许重复声明变量

    使用var声明的变量可以被重复声明,而使用let声明的变量不能被重复声明。

    重复声明是指在同一个作用域内,使用相同的变量名再次声明变量。如果使用var声明同名变量,则会覆盖之前的声明。如果使用let声明同名变量,则会抛出下面的错误。

    html 复制代码
     Identifier 'myLet' has already been declared



总之,以后声明变量,用 let 就对了!

相关推荐
黑客飓风16 分钟前
JavaScript 性能优化实战大纲
前端·javascript·性能优化
emojiwoo2 小时前
【前端基础知识系列六】React 项目基本框架及常见文件夹作用总结(图文版)
前端·react.js·前端框架
张人玉2 小时前
XML 序列化与操作详解笔记
xml·前端·笔记
杨荧2 小时前
基于Python的宠物服务管理系统 Python+Django+Vue.js
大数据·前端·vue.js·爬虫·python·信息可视化
YeeWang3 小时前
🎉 Eficy 让你的 Cherry Studio 直接生成可预览的 React 页面
前端·javascript
gnip3 小时前
Jenkins部署前端项目实战方案
前端·javascript·架构
Orange3015113 小时前
《深入源码理解webpack构建流程》
前端·javascript·webpack·typescript·node.js·es6
lovepenny4 小时前
Failed to resolve entry for package "js-demo-tools". The package may have ......
前端·npm
超凌4 小时前
threejs 创建了10w条THREE.Line,销毁数据,等待了10秒
前端
车厘小团子4 小时前
🎨 前端多主题最佳实践:用 Less Map + generate-css 打造自动化主题系统
前端·架构·less