9 21 冯娜

学习日志
一、模板字符串:

1、什么是模板字符串:简化版的字符串拼接。(``)

2、特点:

(1)支持换行。

(2)支持动态生成内容。

二、let

1、什么是let:代替var,用于声明变量的新关键词。

2、var的缺点:

(1) 变量声明提前,打乱了程序正常的执行顺序。

(2) 没有块级作用域,代码块内的变量,会影响块外的变量。

3、let的优势:

(1)禁止变量声明提前,保证程序按顺序执行代码。不会破坏程序正常的执行顺序。

(2)让程序结构(分支和循环)的{},也成为一级作用域——块级作用域,保证块内和块外即使有相同的变量,也不会相互影响,避免了块内的变量污染外部。

4、什么时候使用let:今后只要声明变量,都用 let 代替 var。

5、let做的两件事:

(1)let会被自动翻译为匿名函数自调。

(2)双保险,let为了进一步避免可能的冲突将变量悄悄改了名字。

6、let的特点:

(1)全局写 let t=0, 用 window.t 却找不到。

(2)同一级作用域内,不能在 let t=0 前,提前使用t。即使外层作用域有t变量,也不 行。

(3)相同作用域内,不允许重复let同一个变量。

for of:不能遍历对象。

三、箭头函数:

1、什么是箭头函数:

简化版的回调函数,专门代替function来简化创建函数的新语法。

2、使用箭头函数是为了简化代码。

3、什么时候使用箭头函数:几乎所有回调函数都可用箭头函数简化。

4、使用箭头函数:

(1)去掉function,在()和{}之间加=>

(2)若只有一个函数,可省略(),若无,定保留。

(3)若函数体只有一句话,可省略{},若这句话还是return,则可省略return和{}。

5、注意:

(1)若回调函数中的this和外部的this不同时,不能简化。

(2)若用箭头函数简化,结果内外this都是window。

四、for of

1、专门代替普通for循环,来遍历一个索引数组。

2、什么时候使用:大部分只遍历数组的内容,不关心位置,也不改变遍历顺序的普通for循环,才能用for of简写。

3、功能:简化版的遍历索引数组和类数组对象。

4、for of的问题:

(1)不支持关联数组和对象。

(2)只能读取元素值,不能修改元素值,按值传递。

(3)只能连续遍历所有。

5、使用for of

for(var 变量 of 数组/类数组对象/字符串){ //都是数字下标
// of会依次取出后边数组/类数组对象/字符串中每个位置上的的元素值,临时保存到of前的变量中
// of前的变量会依次得到元素值
}

6、对比循环

for循环最灵活。

7、注意:

for in 只能遍历关联数组和对象,in其实不仅遍历当前对象自己的成员,且会延着原型链向父对象继续查找所有可用的成员名。
原因:计数器i的类型为string

8、面试题:

(1)for循环、for of、forEach三种遍历,哪种效率高?
一样高。其实只有一种遍历,就是for循环。其他的都是封装的for循环而已。所以,ES5的其他遍历函数 indexOf、every、some、forEach、 map、filter 和 reduce,都没有效率的提升,因为内部都是for循环而已,只是语法简单而已。

(2)是不是有了ES6,就不用ES5了?
要看浏览器是否兼容ES6。如果使用框架和微信开发,基本上可以使用最新的语法。因为框架中和微信开发中都自带翻译工具(Babel),在项目打包时,会将ES6代码翻译成ES5代码,保证浏览器兼容性。如果没使用框架,使用原生或jquery开发,则尽量不要使用ES6。

五、参数增强:

1、参数默认值:function fn(a,b,c=0){...}

2、剩余参数:专门代替arguments的语法,代替arguments处理不确定参数个数的情况。

3、打散数组:

(1)什么是打散数组:将一个数组打散为多个元素值,依次传给函数的多个形参变量,代替apply。

(2)为什么使用:apply()也能打散数组参数,再传给要调用的函数。但是,apply()的本职工作是修改this,然后顺便帮忙打散数组。如果今后我们只想单纯的打散数组,跟this无关时。apply()就不好用了。如果用apply()单纯打散数组,必须给定一个无意义的对象作为第一个参数。

4、注意:

(1)定义函数时,形参列表中的...是收集不确定个数的实参值的意思。

(2)调用函数时,实参值列表中的...是打散数组实参为多个实参值,分别传入的意 思。

5、面试题:

(1)...不是打散的意思吗?这里怎么成了收集?
定义函数时,形参列表中的...是收集不确定个数的实参值的意思。调用函数时,实参值列表中的...是打散数组实参为多个实参值,分别传入的意思。

(2)...作为打散数组放在实参列表中时,不一定放在结尾?
是的,可以和其他单独的实参值混搭。

标签

评论

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1