2023 day3 晚上学习内容
一 .var let const 区别
var: 存在变量提升;存在变量覆盖,已经被定义且赋值的变量,如果再次被赋值,则以后一次值为准;没有块级作用域;
const:定义的是常量,声明之后必须赋值;定义的值不能去修改,否则报错;有块级作用域;不存在变量提升和变量覆盖;对于数组和对象的元素修改,不算做对常量的修改,不会报错。
let: 有块级作用域;不存在变量提升和变量覆盖;let不允许在相同的作用域中重复声明,注意是相同作用域,不同作用域重复声明不会报错
二. 解构赋值
let a = 3; let b = 4; 如果在不声明第三个变量的前提下,使a=4, b=3?
答案:[a, b] = [b, a]
三. 如何利用es6快速的去重?
let arr = [27, 16, 15, 33, 22, 16, 21]
let item = [...new Set(arr)]
四. Promise 面试题 以下代码的执行结果是?
const promise = new Promise((resolve, reject) => {
console.log('a')
resolve()
console.log('b')
})
promise.then(() => {
console.log('c')
})
console.log('d')
答案:a,b,d,c
解释:以上考察的是关于promise的原理,promise的构造函数是同步执行的,当new Promise的一瞬间,a,b 就立刻被执行,而 .then方法是异步执行的,当执行完a和b之后,会执行输出d,最后执行输出c