zoukankan      html  css  js  c++  java
  • ES6

     

    #1、声明变量

    // es5
    声明变量 var --- variable
    用大写的形式去声明常量:var PI = 3.14159255358;
    常量的值允许被修改
    
    // es6
    // 通过let 关键字代替 var 来声明变量,用发与var几乎一致
    当let/const遇到{}会形成这个变量的块级作用域
    声明变量 let --- 叫命令或关键字
    声明常量 const PI = 3.1415926;
    报错会阻断下面的代码执行
    报错:Assignment to constant variale 
    常量的值不允许被修改
    // 变量、常量不得重复定义(相同作用域)
    报错:Identifier 'num' has already been declared
    

    #2、变量提升

    • es5
    var 存在变量提升,只要在声明之前调用,就会有变量提升,并且值为undefined
    
    • es6

    let 语句声明的参数没有变量提升

    暂时性死区的概念:在变量声明之前调用,都是该变量的暂时性死区

    #3、解构赋值

    • 三种状态
    1. 模式不匹配
    2. 解构不成功:声明了变量,没有赋值(undefined)
    3. 不完全解构
    ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称作解构赋值 
    // 数组的解构赋值
    // es5
    var a = 1;
    var b = 2;
    var c = 3;
    // es6 好处:代码简洁
    // 数组
    let [a,b,c] = [1,2,3];
    console.log(a);
    console.log(b);
    console.log(c);
    // 对象
    let person = {
        name: 'zs',
        age: 18,
        hoppy: ['吃饭', '睡觉', '打豆豆'],
        address: '北京八维'
    }
    let { obj: objs, obj: obj1 } = {
        obj: person
    }
    
    console.log(objs)
    // 字符串
    // 会将字符串转换成类似数组的一个对象
    let [a,b,c] = 'mmd';
    // a = m
    // b = m
    // c = d
    let {length:len} = 'mmd';
    // len = 3
    
    // 数组的解构赋值在函数中应用
    let fun = function([name,age]){ // 接收的是形参
        console.log(name);
        console.log(age);
    }
    fun(['zs',18]) // 传递的参数是实参
    
    // 对象的解构赋值在函数中应用
    let fun = function({name,age}){ // 接收的是形参
        console.log(name);
        console.log(age);
    }
    fun({name:'zs',age:18}) // 传递的参数是实参
    
    
    // 通过数组的解构赋值,返回一个值
    let fun = (val) => {
        return [val, val + "you aer the best!"];
    }
    console.log(fun())
    
    // 通过对象的解构赋值来取json数据
    const data = {
        name:'zs',
        age:18
    }
    let {name,age} = data;
    console.log(name);
    console.log(age)
    
    

    #总结:

    • 解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象
    • 由于undefined和null无法转为对象,所以对他们进行解构赋值,都会报错

    #4、语法提案的批准流程

    • Stade 0 - Strawman (展示阶段)
    • Stage 1 - proposal (征求意见阶段)
    • Stage 2 - Draft (草案阶段)
    • Stage 3 - Candidate (候选人阶段)
    • Stage 4 - Finished (定案阶段)

    #5、字符串扩展

    1、String.includes(string) 用来判断字符串中是否包含指定参数(string)
    2、String.startsWith(string) 字符串是否以XX开始
    3、String.endsWith(string) 字符串是否以XX开始
    string.includes(string,start) 
    string 代表查询参数
    start 代表查询起始位置
    includes() 具备隐式转换
    
    let str = '123木头人'
    console.log(str.includes('123',3)) // 结果为false
    
    
    // str.repeat() ''
    // str.repeat(0) ''
    // str.repeat(1) mmd
    // str.repeat(2) mmdmmd
    let str = 'mmd';
    let newString = str.repeat();
    console.log(newString)
    
    let str = 'mmd';
    console.log(str.padStart(5,'*')) // **mmd
    console.log(str.padEnd(5,'*')) // mmd**
  • 相关阅读:
    C++ 修改常量的值
    Android Studio 使用入门
    Ubuntu14.04下配置固定IP
    vi/vim 按键说明
    linux下文件夹的创建、复制、剪切、重命名、清空和删除命令
    linux中的find命令——查找文件名
    shell 脚本编写基础
    linux C程序中获取shell脚本输出(如获取system命令输出)
    vi 技巧
    理解Linux中的shutdown、poweroff、halt和reboot命令
  • 原文地址:https://www.cnblogs.com/mtl-key/p/13036075.html
Copyright © 2011-2022 走看看