主要内容大概
let命令
var可以重复定义,let不可以重复定义,符合常见的语法规范
js不存在完整的块级作用域
但是es6中提出了块级作用域,但是必须要通过let声明
局部作用域在外部不可使用
用let声明a,但是不能在声明之前使用a,所以会报错,但是如果变成var则不报错,输出a=200
let解决循环变量加监听的功能,如果是var i=0,则alert弹出的都3,因为i循环完以后就是3不变了,所以以后声明变量尽量都使用let
const关键字
不可重新赋值,保存一些不可被更改的值
变量的解析赋值
创建一个obj对象,不是类
es6新的对象赋值方法,好似json,如果把username换成username1,就赋值不成功,因为匹配不到,也是好似json
中括号对应中括号
也没有问题,输出 h e l l o
模板字符串
传统拼接方式
高级拼接方式
简化的对象写法
对象里面声明函数,加上this才能输出tom,如果不加输出的jerry
es5中可以这么写,但是比较麻烦,但是在es6中
直接这么写,简化写法,function也可以省略了
箭头函数
结合foreash使用
所以这里的this是window,是声明时候的对象
这个时候定时器是window,因为setinterval是window调用的
这个时候箭头函数有外层函数,所以此时this是btn2
外层的外层是window此时this是window
排序默认升序
降序,牛掰,正序就是a-b
箭头函数就是简化回调函数
点点点运算符
。。。
val可变参数只能在参数列表最后,上图中,1赋值给了a
一个扩展的用法
箭头函数的可变参数
js的语法不想java一样如果只有形参没有实参就会报错,语法比较松散,js中可以不传参,赋默认值的方法就是等于
数组拓展
find,找到第一个,上图输出6
findIndex,找到第一个条件为true的位置,上图输出3
上图返回true
得到NaN 表示非数字
得到123
set和map容器
es6提供set
es6中的class
extends和super
重写父类的方法
class属性扩展
拓展属性
拓展方法
如果在原型对象上挂载,那两者都有了就
都是中国,所有共享的了,
通过p1不能改原型上的属性,相反是覆盖了直接,要通过prototype
挂载到原型上,对象访问不到
只能通过类名去访问,和对象无关
模块化
es6中引入了模块化编程,让大型的复杂的项目可以拆分成互相依赖的小文件,在用简单的方法拼接起来。
导入模块是名称必须要与导出的名称一致
可以命名别名
导出方法
想引几个引几个
即使把import写到最后也是提升到首先执行
这种都是错误的
对于路径,./表示同级路径,…/表示上级文件,…/…/表示上上级
没有名字的导出export default,但是只能出现一次
自己可以随便起名字