ES6基础语法

一、简介

ES6,全程ECMAScript6.0,是JavaScript的下一个版本标准。
ES6主要是为了解决ES5中的先天不足,比如JavaSript中没有类的概念。

二、基本内容

1、let命令

与var生命的变量不同,let声明的变量只在所在的代码块内有效。

{
    let a = 0;
    var b = 0;
    a // 0
    b // 0
}
a // 报错ReferenceError: a is not defined
b // 0

且let声明的变量只能声明一次,而var则可以声明多次

let a = 1;
let a = 2;
var b = 3;
var b = 4;
a // Identifier 'a' has already been declared
b // 4

let不存在变量提升,而var会变量提升

console.log(a); // ReferenceError: a is not defined
let a = "apple";
//let不存在变量提升,声明a之前不存在,所以报错

console.log(b); // undefined
var b = "banana"; //var存在变量提升,开始运行时b已经存在,但还未赋值,所以输出undefined
2、const命令

const声明一个只读变量,声明之后不允许更改 ++(指向变量的内存地址所保存的数据)++。所以声明时必须初始化,否则会报错。

const PI = "3.1415926";
PI // 3.1415926

const MY_AGE; // SyntaxError: Missing initializer in const declaration  

在ES6中规定,代码块中如果存在let或者const,代码块会对这些命令声明的变量从块开始就形成一个封闭区域。在代码块内,在声明变量之前使用它会报错

var PI = "a";
if(ture){
    console.log(PI); // ReferenceError: PI is not defined
    const PI = "3.1415926";
}
3.解构赋值
概述

解构赋值时对赋值运算符的扩展,针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。在代码书写上更加简洁易懂,方便复杂对象中数据字段的获取。

解构模型

结构分为两部分:解构表达式右边的解构的源、结构表达式右边的机构的目标

数组模型的解构
//基本
let [a, b, c] = [1, 2, 3];
// a = 1
// b = 2
// c = 3
//嵌套
let [a, [[b], c]] = [1 , [[2], 3]];
// a = 1
// b = 2
// c = 3
//可忽略
let [a, , b] = [1, 2, 3];
// a = 1;
// b = 3;
//不完全解构
let [a = 1, b] = []; // a = 1; b = undefind;
//剩余运算符
let [a, ...b] = [1, 2, 3];
// a = 1
// b = [2, 3]
//字符串等
//在数组的解构中,解构的目标若为可遍历对象,皆可进行解构赋值。可遍历对象即实现 Iterator 接口的数据。
let [a, b, c, d, e] = 'hello';
// a = 'h'
// b = 'e'
// c = 'l'
// d = 'l'
// e = 'o'
//解构默认值
//当解构模式有匹配结果,且匹配结果是 undefined 时,会触发默认值作为返回结果。
let [a = 2] = [undefined]; // a = 2
let [a = 3, b = a] = [];     // a = 3, b = 3
let [a = 3, b = a] = [1];    // a = 1, b = 1
let [a = 3, b = a] = [1, 2]; // a = 1, b = 2
对象模型的解构
//基本
let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
// foo = 'aaa'
// bar = 'bbb'

let { baz : foo } = { baz : 'ddd' };
// foo = 'ddd'
//可嵌套可忽略
let obj = { p: ['hello', {y: 'world'}] };
let { p: [x, { y }] } = obj;
// x = 'hello'
// y = 'world'
let obj = { p: ['hello', {y: 'world'}] };
let { p: [x, { }] } = obj;
// x = 'hello'
//不完全解构
let obj = {p: [{y: 'world'}] };
let {p: [{ y }, x ] } = obj;
// x = undefined
// y = 'world'
//剩余运算符
let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40};
// a = 10
// b = 20
// rest = {c: 30, d: 40}
//解构默认值
let {a = 10, b = 5} = {a: 3};
// a = 3; b = 5;
let {a: aa = 10, b: bb = 5} = {a: 3};
// aa = 3; bb = 5;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值