JavaScript的数据类型
1、JavaScript有6种数据类型(这里不说ES6新增的Symbol类型)
- 基本数据类型:String,Boolean,Number,Undefined,Null typeof null //object
- 引用数据类型:Object(Array,Date,RegExp,Function)
2、基本类型和引用类型的区别:
- 保存位置:基本类型保存在栈内存中,引用类型保存在堆内存中
- 检测类型:基本类型用typeof检测,引用类型用instanceof检测
- 修改变量:基本类型不可修改,引用类型可以修改
- 保存类型:保存基本类型的变量保存的是值本身,保存引用类型的变量保存的并不是对象本身,而是一个指向该对象的引用地址
3、如何判断一个变量是Array类型?
- instanceof
- Array.isArray()
- Object.prototype.toString.call() 不仅可以判断数组,还可以判断数值,字符串,正则等其他类型
1 [] instanceof Array //true 2 Array.isArray([]) //true 3 toString.call([]) //[object Array]
4、如何判断一个变量是Number类型?
- typeof
- isNaN
1 var a = 12; 2 typeof a; //number 3 isNaN(a) //false
注意:
1、isNaN是函数类型 typeof isNaN //function
2、isNaN()是布尔类型 typeof isNaN() //boolean
5、==和===的区别?
- ==会自动转换类型
- ===不会,===会先判断左右两边的数据类型,如果一致,再去比较两边的值,如果不一致,则返回false
1 undefined == undefined //true 2 undefined === undefined //true 3 [] == [] //false 4 [] === [] //false 5 {} == {} //false 6 {} ==== {} //false
6、null和undefined的区别?
1 null == undefined //true 2 null === undefined //false
区别:
- null表示一个空对象指针,可以理解成空对象。可以给一个变量赋值为null,用来保存对象
- undefined是变量声明还没初始化的变量的值,可以理解成空变量。没必要给一个变量赋值成undefined,默认就是undefined
7、js的字符串类型有哪些方法?正则表达式的函数怎么使用?
8、typeof和instanceof的区别?instanceof的原理?