ES6新特性:const关键字详解

文章目录

    • [1 声明必需赋初值](#1 声明必需赋初值)
    • [2 声明的变量不能被重新赋值](#2 声明的变量不能被重新赋值)
      • [2.1 一般情况](#2.1 一般情况)
      • [2.2 如果变量是一个对象,可以修改对象的属性](#2.2 如果变量是一个对象,可以修改对象的属性)
      • [2.3 如果变量是一个数组,可以修改数组的元素](#2.3 如果变量是一个数组,可以修改数组的元素)
    • [3 声明的变量一般用大写](#3 声明的变量一般用大写)
    • [4 块级作用域](#4 块级作用域)
    • [5 不允许重复声明](#5 不允许重复声明)

const是ES6中新增的一个关键字,用于声明一个只读的常量,一旦声明后就不能再被修改。有以下几个特点

1 声明必需赋初值

在使用const声明变量时,一定要在声明时就给变量初始化,否则编译会报错'const' declarations must be initialized.

2 声明的变量不能被重新赋值

2.1 一般情况

一般的,声明的变量不能被重新赋值,否则会报错。Uncaught TypeError: Assignment to constant variable.

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新特性:const关键字</title>
</head>

<body>
    <script>
        const PI = 3.14;
        PI = 3.1415;	//报错 
    </script>
</body>

</html>

2.2 如果变量是一个对象,可以修改对象的属性

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新特性:const关键字</title>
</head>

<body>
    <script>
        const obj = {
            name: 'Tom',
            age: 3
        }
        // 修改对象的属性值
        obj.age = 8;
        console.log('obj:', obj);
    </script>
</body>

</html>

控制台输出:

但是,如果试图给对象重新赋值,则会报错 Uncaught TypeError: Assignment to constant variable.

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新特性:const关键字</title>
</head>

<body>
    <script>
        const obj = {
            name: 'Tom',
            age: 3
        }
        
        // 试图给对象重新赋值,报错Uncaught TypeError: Assignment to constant variable.
        obj={
            name: 'Tom',
            age: 8
        }
    </script>
</body>

</html>

2.3 如果变量是一个数组,可以修改数组的元素

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新特性:const关键字</title>
</head>

<body>
    <script>
        const Arr = [1, 2, 3];
        Arr[0] = 99;
        console.log('Arr:', Arr);
    </script>
</body>

</html>

控制台输出:

但是,如果试图给数组重新赋值,则会报错 Uncaught TypeError: Assignment to constant variable.

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新特性:const关键字</title>
</head>

<body>
    <script>
        const Arr = [1, 2, 3];
        Arr = [99, 2, 3];   // 尝试给Arr重新赋值,报错:Uncaught TypeError: Assignment to constant variable.
        console.log('Arr:', Arr);
    </script>
</body>

</html>

3 声明的变量一般用大写

用小写并不会出错,只是习惯上,用大写表示常量。

js 复制代码
const PI = 3.1415926;

4 块级作用域

let 关键字一样,const 关键字也具有块级作用域。

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

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新特性:const关键字</title>
</head>

<body>
    <script>
        {
            const PI = 3.14;
            console.log("块内部:", PI); //块内部: 3.14
        }
        console.log("块外部:", PI); //报错,PI is not defined
    </script>
</body>

</html>

5 不允许重复声明

使用 const 声明的变量不能被重复声明。


总结:声明对象类型 的变量,使用 const,声明非对象类型 的变量使用 let

相关推荐
不简说4 分钟前
史诗级更新!sv-print虽然不是很强,但却是很能打的设计器组件
前端·产品
用户95251151401555 分钟前
最常用的JS加解密场景MD5
前端
Hilaku5 分钟前
“虚拟DOM”到底是什么?我们用300行代码来实现一个
前端·javascript·vue.js
打好高远球11 分钟前
mo契官网建设与SEO实践
前端
神仙别闹17 分钟前
基于Java+MySQL实现(Web)可扩展的程序在线评测系统
java·前端·mysql
心.c31 分钟前
react当中的this指向
前端·javascript·react.js
Java水解39 分钟前
Web API基础
前端
闲鱼不闲40 分钟前
实现iframe重定向通知父级页面跳转
前端
咸鱼青菜好好味40 分钟前
node的项目实战相关-2-前台接口
前端
春秋半夏41 分钟前
音乐播放、歌词滚动
前端·css