js的语言标准
1、let定义变量,const定义常量
不能重复定义
1 | let a=1; |
块级作用域
1 | if(true){ |
let arr=[1,2,3,4]
for(let i=0;ilength=arr.length;i<ilength;i++){}
此处的 i 外部也访问不到
不存在变量提升
1 | console.log(foo) |
2、箭头函数
( ) => { }//参数=》表达式/语句1
2
3
4
5
6
7
8
9let double = x => x * 2
//等同于
let double = x => {
return x * 2
}
//等同于
let double=function(x) {
return x * 2
}
继承外层作用域
1 | //一般情况下 |
不能用作构造函数
1 | //没有用箭头函数可以做构造函数 |
没有prototype属性
1 | let commonFn =function(){} |
3、模板字符串
反引号标识 ` `
支持多行字符串
1 | let str = ` |
<div>
<h1 class="title">123</h1>
</div>
`
document.quertSelector('body').innerTHML= str
支持变量和表达式
嵌套变量的用法
1
2let name='baiqi'
let str = `<h1 class="title"> ${name} </h1>
`
document.quertSelector(‘body’).innerTHML= str嵌套函数的用法
1
2
3
4let getName=()=>{
return 'baiqi yuan'
}
let str = `<h1 class="title"> ${getName()} </h1>
`
document.quertSelector(‘body’).innerTHML= str
4、Promise
Promise对象
1 | Promise结构 |
链式Promise
1 | var promise1=new Promise((resolve,reject)=>{ |
关键字 resolve , reject , then
面向对象-类
- 关键词:class
构造函数,constructor
1
2
3
4
5
6
7
8
9
10class Animal{
constructor(name){
this.name = name
}
getName(){
return this.name
}
}
let animal=new Animal("yuan")
animal.getName()语法糖,对应function
面向对象-类的继承
entends:类的继承
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18class Animal{
constructor(){
this.name = 'yuan'
}
getName(){
return this.name
}
}
class Cat extends Animal{
constructor(){
super()//指的是父类的构造函数
this.name = 'cat'
}
}
let animal=new Animal()
let cat=new Cat()
cat.getName()//结果为catsuper:调用父类的构造函数
面向对象-对象
对象里的属性的简写
对象里的方法的简写
属性名可以为表达式
其他扩展
1 | var obj={ |
ES6模块化
解决一个复杂问题时自上而下逐层吧系统划分成若干个模块的过程
CommonJs,AMD,CMD
关键词:export, import