ES6语法(一)(全称ECMAScript6)

2015年6月正式发布,JavaScript下一代语言标准,能够开发复杂大型的程序,成为企业级的语言。

1.ES6的作用域
  • 全局作用域:定义在函数体和{ }外,在全局范围内生效
  • 局部作用域:定义在函数体内部,包括函数的参数,仅在函数体内部有效
  • 块级作用域:定义在{ }内部,仅在{ }中生效
2.变量声明

1.let

  • 用于声明变量

  • 不能重复声明,不能提升变量

  • 块状作用域,只在{}内生效

  • 使用let声明的变量不属于顶层对象
    2.const

  • 声明常量

  • 不能重复声明

  • 必须进行初始化,即使只想要一个undefined的常量也要赋初值,const a = undefined

  • 常量不能修改

  • 块状作用域,只在{}内生效

  • 使用const声明的变量不属于顶层对象

    • let,const声明的变量不属于顶层对象,所以下面的情况拿不到他们声明的变量
            var a = 3;
            let b = 4;
            const c = 5;
            console.log(this.a);  //3
            console.log(this.b);  //undefined
            console.log(this.c); //undefined
3.变量的解构赋值

可以给变量设置默认值,但默认值在该变量没被赋值情况下才生效,否则被覆盖
1.数组解构赋值

var [a,b,c] = [1,2,3];
console.log(a,b,c)    //1,2,3

2.对象解构赋值

let{name:name,age:age}={name:"kk",age:"20"}
       console.log(name,age)  //kk  20
  • 可以嵌套赋值
let obj={
        p:['hello',{y:'world'}]
        
        }
        let{p:[x,{y:y}]}=obj;
        console.log(x,y)  // hello world

3.特殊对象的解构赋值

  • 字符串做数组
let[a,b,c]='var';
        console.log(a,b,c);  //v a r
  • 字符串做对象
let{length:len} = "function";
        console.log(len);  // 8
  • Math的应用
let{PI:p}=Math;
        console.log(p);  //3.1415926

4.应用场景

  • 交换变量
        var m = 11;
        var n = 22;
        [m,n]=[n,m];
        console.log(n);    //11
        console.log(m);   //22
  • 提取函数返回的多个值
    function demo() {
            return { name: 'abc', age: 11 };
        }

        var { name, age } = demo();
        console.log(name, age);
  • 定义函数参数
 function demo1({ a, b, c }) {

            console.log('姓名:' + a);
            console.log('年龄:' + b);
            console.log('性别:' + c);
        }

        demo1({ a: 'zs', b: 18, c: '男' });
  • 设置函数参数的默认值
function fn({id,name="qq"}){
            console.log(id,name)  //4,"qq"
        }
        fn({id:4})
  • 提取json中的数据
let jsonData={
            id:1,
            status:"okok",
            data:[1,2,3,4]
        }
        let {id,status,data} = jsonData;
4.新增字符串操作

1.模板字符串

  • 反引号定义字符串
  • 通过${}取变量值
  • 可以插入变量,函数
  • 定义比较长的字符串
    2.repeat()函数
  • 字符串的复制,括号里是复制多少个
    console.log("abc".repeat(10));
    3.包含字符串
  • 之前使用indexOf,正则
  • includes()函数
  • startsWith()
    第二个参数表示开始搜索的位置
  • endsWith()
    4.String.raw
  • 对于转移字符不做处理
 console.log( String.raw`test \n 第二行`);  //test  \n 第二行
  • 注意使用的时候不加()
    5.字符串补全长度
let str = "hello";
        console.log(str.padStart(10))  //     hello
        console.log(str.padStart(10,"*"))    //*****hello
        console.log(str.padStart(10,"abc"))    //abcabhello
5.数值

1.Number

  • 是否非无穷:Number.isFinite()
  • 转换成int类型:Number.parseInt()
  • 是否整数:Number.isInteger()
  1. Math
  • 去除小数部分:Math.trunc()
  • 判断是否是正数:Math.sign()
6.for of
for(let val of xxx){
console.log(val)
}
  • 用于遍历
    数组,字符串,元素列表等(不能遍历对象,用for in)
  • 可通过break结束循环 forEach循环不能被结束
  • for of遍历的对象需要实现一个迭代器的方法[iterator],这个迭代器的方法会返回一个对象,通过这个对象的.next()方法就能获取到对象每一个的值和状态,如果done参数是true就说明执行完了
  • object对象默认是没有迭代器方法的,如果我们想让object对象可以通过for of遍历的话,可以自己去实现一个迭代器
obj[Symbol.iterator] = function () {
    let index = 0;
    return {
        next: () => {
            // 找value
            let value = this[paramList[index]];
            index++;
            let done = index > paramList.length;
            return {value, done}
        }
    }
};

for (let item of obj) {
    console.log(item);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值