es6

作者: hi_0eb6 | 来源:发表于2019-06-27 22:43 被阅读0次

var  let const 区别

图1,分别显示 a输出10,b输出 b is not defined,c输出Assignment to constant variable(变量无法复制)。var就相当于一个全局定义,let相当于一个局部定义,而const相当于一个常量

图1

图2 a会输出undefined ,局部先用局部定义,var a=2相当于我在注释的地方先定义了一个var a

图2

图3 a会输出 Cannot access 'a' before initialization 在用域中可以理解成{}中如果使用定义的值在作用域中有都是优先使用作用域中的

图3

图4 使用var可以重复定义,a会输出2,而let不可以重复定义,b会报错Identifier 'b' has already been declared不可以重复定义

图4

图5 i会输出三次aa,其实()也是作用域中,j只会输出一次aa

图5

图6 const与let 类似区别主要在于无法赋值,但是使用push之类数组或者对象,如果不能修改可以使用Object.freeze

图6

图7 在循环中使用定时器,var会先打印aa,后打印5次5,而let会先打印bb后打印0,1,2,3,4

图7

 数组解构赋值

         let [a,b,c]=[1,2,3]

         console.log(a,b,c) //输入1 2 3

 JSON解构赋值

      let josn={

           name:'a',

             age:10,

            job:'b'

        }

        let {name,age,job}=josn

         console.log(name,age,job)// 输出a 10 b

            let {name,age,job:d}=josn

        别名

         console.log(name,age,d)// 输出a 10 b

        数组给默认值

         let [a,b,c='无数据']=['aa','bb']

         console.log(a,b,c) //输出aa bb 无数据

         let [a,b,c='无数据']=['aa','bb',undefined]

         console.log(a,b,c) //输出aa bb 无数据

         let [a,b,c='无数据']=['aa','bb',null]

         console.log(a,b,c) //输出aa bb null

         JSON给默认值

         let {a,b}={a:'aa',b:'bb'}

         console.log(a,b) //输出 aa bb

         let a;

         {a}={a:'aa',b:'bb'}

         console.log(a) //报错作用域

         解决方式加一层括号

         ({a}={a:'aa',b:'bb'})

         交换

         let a=1;

         let b=2;

         [a,b]=[b,a]

         console.log(a,b)//输出2 1

         function aa({a,b='无'}){

             console.log(a,b)

        }

        aa({

           a:1

        })

         //输出1 "无"

        字符串模板

         let a='a'

          let b='b'

         let str='第一个'+a+'第二个'+b

         console.log(str) //输出第一个a第二个b

         let str=`第一个${a}第二个人${b}`

        console.log(str)//输出第一个a第二个b

         字符串数组查找

         includes使用

         let aa=[1,2,3]

        console.log(aa.includes(1))//输出true

         let aa='aa bb cc'

         console.log(aa.includes('aa'))//输出true

        console.log(aa.includes('a'))//输出true只会找回有没有

         indexOf使用

         let aa=[1,2,3]

         console.log(aa.indexOf(1))//输出0

        let aa='aa bb cc'

         console.log(aa.indexOf('a'))//输出0返回下标位置

         console.log(aa.indexOf('s'))//没有找到返回-1

         endsWith 已什么结尾有返回true 没有返回false

         let str='abc.png'

         console.log(str.endsWith('png')) //输出true

         startsWith 已什么开始有返回true 没有返回false

         let str='abc.png'

         console.log(str.startsWith('abc')) //输出true

         repeat重复多少次

         let str ='aa'

        console.log(str.repeat(20))//输出20个aa

         padStart 从前往后字符串填充

        console.log('a'.padStart(2,'b')) //输出ba  2为a与b总长度b为填充的东西

         padEnd 从后往前

相关文章

网友评论

      本文标题:es6

      本文链接:https://www.haomeiwen.com/subject/vabdcctx.html