1.Es6介绍
2.let和const
let/const:
- 无变量提升
- 有作用域
- 不能重复声明
const:不变量
javascript
//变量提升:
console.log(a) // undefined
var a=3
//变量提升的问题1:
var arr=[]
for(var i =0;i<10;i++){
arr[i]=function(){
return i
}
}
console.log(arr[5]) // 10 不是5 因为i++ 到10了
//let不会污染全局变量,var会:
console.log(windows.RegExp) // 返回是个函数
let RegExp = 10
console.log(RegExp) //10
3.模版字符串
javascript
let id = 6
let htmlString = `<div>my id is ${id}</div>`
console.log(htmlString) // my id is 6
4. 函数之默认值、剩余参数
默认值:解决了es5 ,函数传参时默认值的问题
javascript
//Es5写法
function foo(a, b) {
a = a || 10 //a默认值为10,b为5
b = b || 5
return a + b
}
console.log(foo()) //15
//Es6写法
function foo(a = 10, b = 5) {
return a + b
}
console.log(foo()) //15
剩余参数:解决了es5的arguments的问题
javascript
//写个函数pick出对象中想要的属性和值
// Es5写法
var book = {
'name': 'Happy',
'author': 'Dahong',
'year': 2009
}
function pick(obj) {
var result = Object.create(null)
for (var i = 1; i < arguments.length; i++) {
result[arguments[i]] = obj[arguments[i]]
}
return result
}
console.log(pick(book, 'name', 'year')) //{name: 'Happy', year: 2009}
//Es6写法
let book = {
'name': 'Happy',
'author': 'Dahong',
'year': 2009
}
function pick(obj, ...keys) {
let result = Object.create(null)
for (let i = 0; i < keys.length; i++) {
console.log(keys[i])
result[keys[i]] = obj[keys[i]]
}
return result
}
console.log(pick(book, 'name', 'year')) //{name: 'Happy', year: 2009}