CodeAshen's blog CodeAshen's blog
首页
  • Spring Framework

    • 《剖析Spring5核心原理》
    • 《Spring源码轻松学》
  • Spring Boot

    • Spring Boot 2.0深度实践
  • Spring Cloud

    • Spring Cloud
    • Spring Cloud Alibaba
  • RabbitMQ
  • RocketMQ
  • Kafka
  • MySQL8.0详解
  • Redis从入门到高可用
  • Elastic Stack
  • 操作系统
  • 计算机网络
  • 数据结构与算法
  • 云原生
  • Devops
  • 前端
  • 实用工具
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • Reference
GitHub (opens new window)

CodeAshen

后端界的小学生
首页
  • Spring Framework

    • 《剖析Spring5核心原理》
    • 《Spring源码轻松学》
  • Spring Boot

    • Spring Boot 2.0深度实践
  • Spring Cloud

    • Spring Cloud
    • Spring Cloud Alibaba
  • RabbitMQ
  • RocketMQ
  • Kafka
  • MySQL8.0详解
  • Redis从入门到高可用
  • Elastic Stack
  • 操作系统
  • 计算机网络
  • 数据结构与算法
  • 云原生
  • Devops
  • 前端
  • 实用工具
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • Reference
GitHub (opens new window)
  • CSS3浮动定位与背景样式

  • CSS动画

  • JS基础语法与表达式

  • 流程控制语句与数组

  • JS函数与DOM

  • 面向对象

  • 正则表达式

  • ES6基础入门

    • 01-初识ES6
      • const
      • let、const 与 var 的区别
    • 02-模板字符串和箭头函数
    • 03-解构赋值
    • 04-对象字面量的增强与函数参数的默认值
  • ES6语法扩展

  • Promise与Class

  • Module与Babel

  • 前端
  • ES6基础入门
CodeAshen
2023-02-10
目录

01-初识ES6

# 什么是 ES6

ECMAScript 是由 ECMA 这个标准化组织制定的一个语言标准,6 是版本号。

$$ECMAScript = 语法 + API$$

$$JavaScript(浏览器端) = ECMAScript(语法 + API) + DOM + BOM$$

主流浏览器的最新版本几乎全部支持 ES6,IE 老版本等不支特的浏览器,可以用 Babel 转码。

# let 和 const

// 1.let 和 const 是什么
// 声明变量或声明常量
// var 声明变量
// let 代替 var,声明变量
// const 声明常量 constant

// 2.let 和 const 的用法
// var 一样
var username = 'Alex';
let age = 18;
const sex = 'male';
console.log(username, age, sex);

// 3.什么是变量,什么是常量
username = 'ZS';
age = 28;
console.log(username, age);

// 报错
sex = 'female';

// var、let声明的就是变量,变量一旦初始化之后,还可以重新赋值
// const 声明的就是常量,常量一旦初始化,就不能重新赋值了,否则就会报错
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# const

const 就是为了那些一旦初始化就不希望重新赋值的情况设计的。

const 的注意事项:

  • 使用 const 声明常量,一旦声明,就必须立即初始化,不能留到以后赋值

  • const 声明的常量,允许在不重新赋值的情况下修改它的值(引用类型)

    const person = { username: 'Alex' };
    person.username = 'ZhangSan';
    console.log(person);
    
    1
    2
    3

# let、const 与 var 的区别

区别有 5 个:

  1. 重复声明

    var 允许重复声明,let、const 不允许。重复声明即已经存在的变量或常量,又声明了一遍。

  2. 变量提升

    var 会提升变量的声明到当前作用域的顶部,let、const 不存在变量提升。

  3. 暂存性死区

    let、const 存在暂时性死区。只要作用域内存在 let、const,它们所声明的变量或常量就自动“绑定”这个区域,不再受到外部作用域的影响。

    // 在全局作用域用 let 声明了 a、b
    let a = 1;
    let b = 1;
    
    function func() {
        // 输出 1。因为函数作用域内没有用 let/const 声明 b,就会去外层作用域去找 b
        console.log(b);
        
        // 报错。函数作用域内有 let 声明了 a,就不会去外层作用域去找 a
        // console.log(a);
        
        for (let i = 0; i < 3; i++) {
            // 报错。块级作用域内有 let 声明了 a,就不会去外层作用域去找 a
            // console.log(a)
            let a = 2;
        }
        
        let a = 1;
    }
    
    func();
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
  4. window 对象的属性和方法(全局作用域中)

    全局作用域中,var 声明的变量,通过 function 声明的函数,会自动变成 window 对象的属性或方法。let、const 不会。

    // var/function
    var a = 18;
    function fun() {}
    console.log(window.a);           // 18
    console.log(window.fun === fun); // true
    
    // let/const
    let b = 18;
    const fun2 = function () {};
    console.log(window.b);      // undefined
    console.log(window.fun2);   // undefined
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
  5. 块级作用域

    var 没有块级作用域,let/const 有块级作用域。

    {
        var a = 1;
        let b = 2;
    }
    console.log(a);  // 1
    console.log(b);  // 报错,b 未定义
    
    1
    2
    3
    4
    5
    6
编辑 (opens new window)
上次更新: 2023/06/04, 12:34:19
01-正则表达式
02-模板字符串和箭头函数

← 01-正则表达式 02-模板字符串和箭头函数→

最近更新
01
第01章-RabbitMQ导学
02-10
02
第02章-入门RabbitMQ核心概念
02-10
03
第03章-RabbitMQ高级特性
02-10
更多文章>
Theme by Vdoing | Copyright © 2020-2023 CodeAshen | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式