ES6第一天

一、声明变量

   let、const 声明变量与var声明变量的区别

var 变量名称=赋值  作用域问题:全局作用域 局部作用域

第一种区别:let、cons声明变量,新增块级作用域 ,每一个 {} 就是一个独特的块级作用域,通过let或者const定义变量在其内部生效

第二个区别:var定义变量,存在变量的默认提升;let 和const定义的变量,不存在变量的提升

第三个区别:var定义变量可以重复定义;let和const不允许重复

第四个区别:var 定义变量 会被挂载到window上 ,let const不会

备注:const 定义常量  永远不改变的值

let定义变量 在一个块级作用域中,形成一个暂时性死区  在定义完成以前任何地方都不能是用哪个该变量

        var a=20

        if(true){

            console.log(a)//报错,在块作用域,如果有let,在定义完成前不能使用。

            let a=30

        }

二、字符串模板,拼接字符串

字符串被 ``(esc键下面的键)包含,变量被${}包含

        let x="hello world"

        let str="你好"

        console.log("我的口号是"+x+"加油"+str+"加油")//原生js

        console.log(`我的口号是${x}加油${str}加油加油`)

三、数据解构

解构:将复杂的结构,简化成简单结构

(备注:ES6 模块化开发 Node模块化开发  每一个特殊的功能封装起来)

解构对象:

let obj={
            name:'王一',
            age:21,
            height:180
        }

// 前面必须是解构的变量   ,后面是解构的复杂结构(对象或者数组)

//前面的变量必须要和复杂结构的属性同名

let{name} = obj   //解构name属性

console.log(name)//王一

let {name,age}=obj  //解构name,age属性

解构数组:

let arr=[20,30,40]
        let [a,b,c]=arr
        console.log(a) //20
        console.log(b)//30
        console.log(c)//40

交换变量(常用)
        let a=20
        let b=30;
        [a,b]=[b,a]
        console.log(a)
        console.log(b)

四、对象的简化写法

1、如果属性名 等于变量 可以省略:后面的内容

2、省略function

比如:

        let name="王一"
        let age=21
        let obj={
            name:name,
            age:age,
            eat:function(){
                console.log()
            }
        }
        //属性名 等于变量 可以省略:后面的内容
        let obj={
            name, //具有name属性 并且name属性等于变量name
            age,
            //省略function
            eat(){}

        }

五、箭头函数

1、箭头函数和function的区别

       1.传统定义函数中,this指向性永远不明确,随着环境随之发生变化
         箭头函数中 this的指向性用于指向被定义的环境 专一
        2.function具有默认的提升功能 ,箭头函数没有
        3.function 可以作为构造函数使用 箭头函数不行 (因为this指向不会转变)
        4.function 中 arguments参数集合  箭头函数中没有,但是箭头函数有...rest(...为拓展运算符)

备注:arguments是传入函数的参数集合  rest参数类比 arguments

不同点:arguments无论你是否定义过形参,所有的参数都会放入arguments

              rest参数 只会放入除了形参以外的所有参数

案例:

let sum=(a,b,...args)=>{
            //rest参数 只会放入除了形参以外的所有参数
            console.log(args) //[3,4,5]
        }
        sum(1,2,3,4,5)

        function sum(a,b){
            //arguments无论你是否定义过形参,所有的参数都会放入arguments
            console.log(arguments)  //[1,2,3,4,5]
        }
        sum(1,2,3,4,5)

2、箭头函数的写法

        1.如果箭头函数中只有一个参数,那么可以省略小括号
        2.如果箭头函数内部有且只有一行return语句 ,那么可以省略 {} 和return

比如:封装一个箭头函数 输入一个参数,返回其平方

let pow=(n)=>{return n*n}   //正常的箭头函数

let pow= n=> n*n //因为是一个参数,可以省略小括号 ,只有一行语句,省略了{}和return

箭头函数的例子:this的指向性用于指向被定义的环境

let box=document.getElementsByClassName("box")[0]
        let box1=document.getElementsByClassName("box")[1]
        function change(){
            setTimeout(()=>{   
                console.log(this)
                this.style.backgroundColor="blue"
            },3000)
           // var that=this           //常规写法
           // setTimeout(function(){    //因为是延迟函数,在window下调用,所以this指向window
           //  that.style.backgroundColor="blue"
           // },3000)
        }
        box.οnclick=change;
        box1.οnclick=change; 

六、参数的默认值

定义函数时,存在形参的,es6语法 默认参数  将具有默认值放到后面,将没有默认值往前放

案例:

//定义一个函数,连接 数据库   本地数据  在线数据库
 //三个参数  host,port,password

        let db={
            host:"localhost",
            port:33006,
            password:123
        }
        function connect({host,port,password}){    //{host,port,password}解构形参的对象
            console.log(host)
            console.log(port)
            console.log(password)
        }
        connect(db)

七、拓展运算符(...)

... 用于复杂数据的展开,可以直接展开数组,可以将对象展开到另一个对象里面

案例:

        let arr=[1,2,3]
        console.log(arr)
//输出数组中的元素呢
        console.log(...arr) //1,2,3

//数组 合并数组
        let r=[4,5,6]
        r.push(...arr)
        console.log(r)

//数组结构属于引用数据类型 无法直接复制 赋值的地址 
        let arr=[1,2,3]
        let x=[...arr]
        x.push(4)
        console.log(arr)
        console.log(x)

//取最大值

        let result=Math.max.apply(null,r)
        console.log(result)
        let result=Math.max(...r)
        console.log(result)

//展开对象

let obj={
            a:1,
            b:2,
            c:3
        }
        let daobj={
            ...obj,
            d:20
        }
        console.log(obj)   
        console.log(daobj)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值