ES6-特性

1. let

  特性1:同作用域下变量不能重复声明 (var可以,前者覆盖后者)

  特性2:块级作用域内有效

    也就是说:ES6后作用域,全局作用域,块级作用域(if(){},while(){},for(){},else{}),函数作用域。查找变量由内向外查找。

  特性3:不存在变量提升

    例如:var声明变量,在代码执行前先收集变量定义在开头

      (var song)(不存在编写)

      var song= "恋爱达人";

 

2. 常量const

  特性1:不能修改值

  特性2:必须附初始值

  特性3:对数组和对象内元素修改,不算做对常量修改,不报错。

    原因:const本质,不许变量保存的内存地址内的值改变。复杂类型是引用地址所以可以改变。

 

3. 对象解构

  特性:快速声明变量,赋值对象属性

    例子:

const zhao = {
    name:"赵本山",
    age:"不详",
    xiaopin:function(){
        console.log("我可以演小品");
    },
}

let {name,age,xiaopin} = zhao;
console.log(name);
console.log(age);
console.log(xiaopin);

 

4. 对象字面量

  特性:赋值对象属性直接写变量,变量名是属性名,变量值是属性值

    例子:

let name2 ="沈腾";
let change = function(){
    console.log("我们改变你!!");
}
let person = {
    name2,
    change,
}
console.log(person.name2);
person.change();

 

5.箭头函数

  特性:使用 =>定义函数

    例子:

let say = ()=>{
    console.log("Hello,World!");
}

  特性2:箭头函数this指向函数定义处的this

// 如下:箭头函数this指向,定义处function(){}的this
let person = {
    name:"张三",
    age:18,
    say:function (){
        let talk = ()=>{
            console.log("this is "+this);
            console.log(this.name);
            console.log(this.age);
        }
        talk();
    }
}
person.say();
// 因为箭头函数没有this,所以使用function(){}的this,functionthis指向调用该函数的对象,也就是person
// 因此,output:this is person , this.name="张三" , this.age=18

  特性3:只有一个参数,一行代码(该代码会被当返回值)。分别可省略 () , {}

    例子:

let a = n => n*2;
let result = a(22);
console.log(result);

  

 6. 扩展运算符

  特性:...数组,将数组转化为参数序列

  

const tfboys = ['a','b','c'];
let chunwan = (index1,index2,index3) =>{
    console.log("index1: "+index1);
    console.log("index2: "+index2);
    console.log("index3: "+index3);
}
chunwan(...tfboys); // chunwan(tfboys[0],tfboys[1],tfboys[2]);

// 作用:
// 1. 数组合并
const kuaizi = ["王太利","肖央"];
const fenghuang = ["曾毅","玲花"];
const zuhe = [...kuaizi,...fenghuang];
console.log(zuhe);

 

7. promise对象 和 exprot与import

// promise对象
// 参数: 包含resolve,reject函数参数的函数参数
// 作用:解决异步代码嵌套
// 包含resolve,reject函数参数中resolve,reject作用
//         resolve():可以放置一个参数向下个then传值

// 方法: promise.then() 
// 参数:包含value的函数参数
//     value:resolve()传递的值
/* 返回值:如果return new Promise((resolve,reject)={
    
                })
        那么返回值还是 promise
*/
// export 暴露模块,import 导入模块
// export {变量,变量}
// import {变量,变量} from "./xxx.js"

let getData = ()=>{ 
    return  new Promise((resolve,reject)=>{
            setTimeout(()=>{
                resolve(1);
            },1000)
        }).then((value)=>{
            console.log(value);
            return new Promise((resolve,reject)=>{
                setTimeout(()=>{
                    resolve(2);
                },1000)
            })
        }).then((value)=>{
            console.log(value);
        })
}
export {getData}

 

8. async和await

 

 

posted @ 2023-04-25 19:51  麻雀之泪  阅读(32)  评论(0)    收藏  举报