es6 变量的声明方式
let 关键字:
- 声明的变量是块级作用域
- 不允许重复声明变量
- 不存在变量提升
for(let i = 0; i < 5; i++){
setTimeout(() =>{
console.log(i)
}, 1000)
}
const 关键字:
- 声明的是块级作用域
- 不允许重复声明变量
- 不存在变量提升
- 声明的是一个常量(基本数据类型):本质 是 存放变量的内存地址不允许更改; 基本数据类型的数据和地址存放在栈中(存放在一起的), 因此变成常量, 常量不允许更改; 但是对于引用数据类型, 栈中存放的是地址(指针),地址指向堆内存空间,声明一个引用数据类型作为常量时, 相当于是固定了指针, 而不能固定数据
常见面试题: var, let 和const 三者的区别
- var 存在变量提升机制, let和const 不存在变量提升
- var 允许重复声明变量, let和const不允许重复声明变量
- var 声明的变量值可以随意更改,const 声明的是常量,不允许更改
- var 声明的变量会产生内存泄露,let 和 const 不会
- var 声明的变量是全局作用域或者局部作用域, let 和 const声明的变量是块级作用域
es5 数组的遍历(迭代)方式
以下两种循环方式可以使用 break 和continue 语句
- for循环
- for-in循环:可以遍历数组, 但是他最主要的功能是遍历对象
————————————————————————————
以下几种遍历方式不可以使用 break 和continue 语句
错误信息: Uncaught SyntaxError: Illegal break statement
错误信息: Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement - forEach()
- map() : 映射, 返回是一个新数组
- some() :返回一个布尔值, true: 只要数据中有一个元素满足条件即可
- every(): 返回一个布尔值, true: 数据中所有的元素满足条件即可 ;
- reduce(function(acc, value, index){}, initValue) : 累计器 ;如果提供初始值 initValue; 则acc 就是初始值,否则是数组中的第一个元素
- filter() : 过滤器 ; 返回的是一个新的数组(满足条件的)
是否使用return语句
- for循环,for-in, forEach() 他们三者不需要使用return语句
- map() some() every() reduce() filter() 他们需要借助于return语句
es6的箭头函数
使用 => 表示箭头函数
- 基本结构
let fun = () => {
}
- 一个参数: () 可以省略
let fun = (x) => {
console.log(x)
}
let fun = x => {
console.log(x)
}
let fun = (x, y) => {
console.log(x, y)
}
- 返回值是单一的语句 : {} 可以省略, 如果返回值是对象, 需要添加 ()
let fun = x => x * x
let fun = () => ({
name:'tom',
age:18
})
es6的解构赋值
- 对象解构 : 按照对象的key(属性名)进行解构
// 按照默认键名进行解构
let {
name, age} = {
name:;'tom', age:18}
console.log(name, age) // tom 18
// 重新定义 解构名字
let {
name:xm, age:nl} = {
name:;'tom', age:18}
console.log(xm , nl) // tom , 18
- 数组解构 : 按照数组的顺序(索引值) 进行解构
let arr = [10, 30, 50];
// let [a] = arr;
let [a, , b] = arr;
// 结合 扩展运算符进行解构
let [a, ...b] = arr; // 正确 ...b 扩展运算符必须放到最后
let [...b, a] = arr; // 错误信息: Rest element must be last element
// 数组是按照索引值进行解构
let arr = [10, [23, 456]];
// let [a, b, c] = arr; // a ===> 10 ; b===> [23, 456] c===> undefined
let [a, [b, c]] = arr; // a ===> 10 ; b===> 23 c===> 456
console.log(a);
console.log(b);
console.log(c);
-
扩展运算符的应用
- 通过 扩展运算符 实现一维数组的深拷贝
let arr = [10, 30, 540]; let [...a] = arr; console