文章目录
前言
今天是每日10题大厂面试题专栏的第一章,所以有一些地方需要和同学们啰嗦一下,以后每天一更,周末不更,题目都是题主前一天晚上亲自做过并且总结过的题目,因为为了避免浪费大家的时间,一些题主觉得比较容易的题目就不会记录进来,所以不一定正好10题,每一道题的小标题命名将会用括号表明这题的考察点,时间有限的同学可以根据自己的优劣势进行针对性地看
看这些题目前,最好是把答案遮住,先不看题主的解释,尝试自己写一写,可能对自己的帮助提高会更大
题1(全等/new/基础包装类型)
下面输出的结果是:
let a = 3;
let b = new Number(3);
let c = 3;
console.log(a == b);
console.log(a === b);
console.log(b === c);
答案: true false false
这道题主要考察可以分成三个部分:
- 全等:值和类型匹配,才是全等(即===)
- new:new Number(3)是 使用了new相当于引用了,返回的是一个对象,如果是3 === Number(3)将返回true,这里将进一步说明new在js中的作用:
- 创建一个新对象
- 将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象)
- 执行构造函数中的代码(为这个新对象添加属性)
- 返回新对象
- 基础包装类型:3虽然是基础类型,不是对象,却可以调用Number原型下的方法,这中间又发生了什么呢?对于js中的基础类型,他们都有对应的一个包装类类型,当对基础类型调用方法或者调用对应属性的时候,会调用基础包装类型对这个基础类型进行包装,比如’123’.length发生的过程内部实现如下:
var str = '123';
var len = str.length;
console.log(len); // 3
var str = '123';
var _str = new String(str);
var len = _str.length;
_str = null;
console.log(len); // 3