超级基础却又超级容易出错的前端面试题(2)
2020-06-15 本文已影响0人
Mr哎呦喂
一、 拓展运算符和解构赋值是深拷贝还是浅拷贝?
正确答案:当对象或者数组的值是基本类型的时候是深拷贝,引用类型则是浅拷贝.
面试中经常会问到这个问题,对于不细心的同学来说,平时根本没有注意这个细节,导致被问到时一脸懵,可以自己写个例子试一下
const a = {
name: 'name',
age: 18,
marriage: false,
addr: { province: 'sichuan', city: 'chengdu' }
}
let { name, age, marriage, addr } = a
name = 'myname'
age = 26
marriage = true
addr.province = 'shanghai'
addr.city = 'shanghai'
console.log(name, age, marriage, addr)
console.log(a)
输出结果
// myname 26 true {province: "shanghai", city: "shanghai"}
// { name: "name", age: 18, marriage: false, addr: {province: "shanghai", city: "shanghai"} }
二、typeof 各种类型的值的返回结果 ?
null == undefined;
0.1 + 0.2 == 0.3;
typeof NaN;
typeof Function;
typeof Object;
typeof {};
'a'+1;
'a'-1;
Function instanceof Object;
Object instanceof Function;
正确答案:true false number function function Object 'a1' NaN true true
这个题的易错点在于typeof的返回值以及instance的原理,直接附上MDN的权威链接,做错的仔细研究一下吧
相关知识点:
typeof null === 'object';
typeof NaN === 'number';
