1.JS中使用typeof能够获得哪些类型正则表达式
number、string、boolean、undefined、object、function数组
2.什么时候使用===,什么时候使用==函数
通常除了obj.a == null里建议用==(不然须要写obj.a === null || obj.a === undefined,节约代码量,jQuery原码这么写的),其余建议用===spa
3.JS中的内置函数有哪些prototype
这里指的是ECMAScript中的函数,包括Object、Array、Function、Boolean、Number、String、Date、RegExp、Error对象
4.JS变量按照存储方式分为哪些类型,描述其特色ip
基本类型和引用类型内存
基本类型中的每一个值都放在内存中(栈内存),复制时复制的为值开发
引用类型中的每一个值放在堆内存中,变量中保存的只是这个值的一个地址,复制的时候复制的为地址字符串
5.如何理解JSON
JSON也是JS中的一个内置对象,只不过其书写上的格式比较严格,有两个API:stringify(对象->字符串)和parse(字符串->对象)
但另外一方面来讲,JSON也是一个数据格式
基本类型有string、number、boolean、undefined和null,保存在栈内存中
用变量来给另外一个变量赋值时,变量获得的是值,所以两个变量值发生变化时,另外一个变量的值不变
而引用类型有array、object、function,保存在堆内存中
用变量给另外一个变量赋值时,实际上获得的是这个引用类型的一个地址,所以当其中一个变量值发生变化时,另外一个变量的值也变化
能够理解成基本类型的值(数据量)小,直接放在内存中比较好,而引用类型数据量大,放在内存中不利于内存的使用,节约内存空间
对象、数组、正则表达式、null返回object,函数返回function,数字返回number,字符串返回string,布尔值返回boolean,undefined返回undefined
因此对于基本类型,typeof区分比较好,可是对于引用类型,用instanceof比较好(是否为某个的实例)
instanceof实际上判断的是数据对象是否为某个数据类型构造函数的实例,若是用'123' instanceof String,返回的也是false
这里能够用Object原型上的toString方法来判断,也就是Object.prototype.toString.call(),输出的是一个数组,内容为Object 数据类型,全部的数据类型在判断的时候都没有问题
ES6中新增了Symbol类型,用typeof返回symbol
这里的symbol类型每次都生成一个不同的独立的值,也就是用===符号判断两个Symbol类型是永远不可能相等的
能够在构造Symbol实例的时候向其中传入一个字符串,查看该值的时候会以symbol(字符串)的形式返回,有利于咱们区分不一样的Symbol类型
能够用在对象中,以防止对象的键值对被修改,但实际开发中还几乎没有用symbol类型的
发生在如下几种状况中
其中会被强制转换成false的有:0、NaN、"、undefined、null、false自己
JSON也是JS中的一个内置对象(注意和内置函数区别,Math也是一个内置对象,内置函数是能够用new关键词构造实例的),只不过其书写上的格式比较严格
JSON有两个API:stringify(对象->字符串)和parse(字符串->对象)
但另外一方面来讲,JSON也是一个数据格式