ES6新语法

简介: ES6新语法

1.let


1.1 let命令的作用域只局限于当前代码

<script>
  {
    let a =10;
    var b = 1;
  }
  console.log(a); // error
  console.log(b);
</script>

1.2 let 声明的变量作用域不会被提前

console.log(a); // 输出undefined
var a = 10;
console.log(b); // error
let b = 1;


1.3 在相同作用域下,不能声明相同的变量

// 报错
function func(){
  let a= 0;
  var a = 0;
}
// 报错
function func(){
  let a = 1;
  let a = 2;
}
// 报错
function func(arg){
  let arg = 0;
}
// 不报错
function func(arg){
  {
  let arg = 2;
  }
}

1.4 for 循环中let的父子作用域

<!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>Document</title>
</head>
<body>
    <button>按钮</button>
    <button>按钮</button>
    <button>按钮</button>
    <button>按钮</button>
    <button>按钮</button>
</body>
<script>
    var btns = document.querySelectorAll('button');
    for(var i=0; i<btns.length; i++){
        btns[i].onclick = function(){
            console.log('这是第'+ i +'个按钮');
        }
    }
</script>
</html>


2、const


const表示声明一个常量。他和let的特点一样,主要区别是常量。


  1. const变量在声明时需要赋值。


  2.声明后变量的指针地址不能变,但是指向的数据结构内容可以改变。对于简单数据类型就是值       不能变。对于对象类型则是指指针不能变。


3、解构


3.1 什么是解构

       解构赋值可以理理解为赋值操作的语法糖,它是针对数组或者对象进⾏行行模式匹配,然后对其中的变量进行赋值。代码书写上⾔简意赅,语义明确,也方便了对象数据的读取操作。


解构不同的数据类型,解构的语法会略有不同。数组解构用的是[],对象解构用的是{}


但是解构的默认值,和别名语法是一样的。


3.2 数组解构

{
        let a,b,c; // 声明
        [a,b,c] = [1,2,3]; // 解构赋值,数据的解构使用[],
        console.log(a,b,c) // 1 2 3
    }
    {
        let [a,b,c] = [1,2,3]; // 声明并解构赋值
        console.log(a,b,c) // 1 2 3
    }
    {
        let [a,,b] = [1,2,3] // 赋值是按照位置顺序指定的,使用,占位符
        console.log(a,b) // 1 3
    }
    {
        let [a,b=2,c=3,d] = [1,22] // 给b设置一个默认值,默认值会被赋值操作覆盖
        console.log(a,b,c) // 1 22 3
    }
    {
        let [a,...other] = [1,2,3]; // 数组分割
        console.log(a,other) // 1 [2 3]
    }


3.3 对象解构

{
    let a,b;
    ({a,b} = {a:1,b:2}); // 对象解构使用的{}
    console.log(a,b);
}
{
    let {a,b} = {b:2,a:1}; // 对象中赋值的对应关系使用的是键值,和顺序无关
    console.log(a,b);
}
{
    let {a:num1,b:num2} ={a:1,b:2} // 当对象中的键值和变量名称不一致的时候,可以使用别名
    console.log(num1,num2);
}
{
    function func() {
        return {
            schoolname: '学校名称',
            classlist: [{
                    classname: '班级1',
                    count: 10
                },
                {
                    classname: '班级2',
                    count: 11
                }
            ]
        }
    }
    // 解构复杂数据类型
    let {
        schoolname: myschoolname,
        classlist: [{
            classname: myclassname1
        }, {
            classname: myclassname2
        }]
    } = func();
    console.log(myschoolname, myclassname1, myclassname2);
}


4、字符串方法扩展


{
    let str = '123name321';
    console.log(str.includes('name')); // 判断是否包涵name
    console.log(str.startsWith('123')); // 判断是否以123开头
    console.log(str.startsWith('name',3)); // 判断从第4位开始,是否以name开头
    console.log(str.endsWith('321')); // 判断是否以321结尾
    console.log(str.endsWith('name',7)); // 判断第7位以前,是否以name结尾
    console.log(str.repeat(2)); // 重复字符串2次
    console.log(str.padStart(13,'abcd')) // 头部补全,补全到13位
    console.log(str.padEnd(13,'abcd')) // 尾部补全,补全到13位
}


5、字符串模板


     在之前的语法中,在字符串中拼接带变量的字符串会比较麻烦,所以引入了字符串模板。


{
    let name='youyou';
    let age=18;
    let str = `我叫${name},    今年${age}岁`; // 注意空格和回车会原样输出
    console.log(str)
}

相关文章
|
11月前
|
前端开发 JavaScript
|
2月前
|
存储 前端开发 JavaScript
ES6语法
ES6语法
47 0
|
8月前
|
JavaScript
ES6的基础用法
对js es6的用法进行简单介绍
|
11月前
|
前端开发
es6 语法简单使用2
es6 语法简单使用
48 0
|
11月前
|
网络架构
es6 语法简单使用1
es6 语法简单使用
57 0
|
Web App开发 前端开发 JavaScript
ES9语法知识点回顾
ES9语法知识点回顾
242 31
es6新语法小总结
es6新语法小总结
93 0
|
缓存 JSON JavaScript
ES6常用语法
ES6:最新版的JS,ECMAScript标准 JavaScript语言(实现),它还有多种称呼: • ECMAScript6.0 • ECMA6 • ES6