常考JS题笔记

### 1. 原始类型有哪几种?null 是对象吗?

答: Null,undefined,Number,String,Blooean,symbol
1)【理解和使用ES6中的Symbol】【https://www.jianshu.com/p/f40a77bbd74e】
2)null不是对象,但是typeof会把其归为对象
console.log(typeof null) // `000` 开头代表是对象,然而 `null` 表示为全零,所以被误判为对象
console.log(null instanceof Object)

let c = 2;
let d = Number(c)
let e = new Number(c)
console.log(typeof c); //number
console.log(c instanceof Number); //false
console.log(d instanceof Number); //false
console.log(e instanceof Number); //true
明明都是num,而且都是2,只是因为第一个不是对象,是基本类型,所以直接返回false,而new是封装成对象,所以true。
这里要严格注意这个问题,有些说法是检测目标的__proto__与构造函数的prototype相同即返回true,这是不严谨的,检测的一定要是 [对象] 才行
let f = [];
console.log(f instanceof Array); //true
复杂类型是直接生成构造函数的,所以不会像基本类型一样两种情况,这个可以放心用。

[JS的instanceof到底是有多坑?][https://www.imooc.com/article/69870]

### 2. 对象类型和原始类型的不同之处?函数参数是对象会发生什么问题?
答: 原始对象存放的是值;对象类型存放的是指针;

原文地址:https://www.cnblogs.com/xiaozhumaopao/p/11119097.html