二、数据类型
(1)5种基本类型:
boolean: 布尔值。表示两种状态。
true
false
Boolean(): 将一个值转换成对应的布尔值。
string : 字符串。
number : 数值。
undefined: 未定义。
null: 表示一个空的对象的引用。
(2)typeof 操作符:
alert( typeof "ok") //“string”
alert( typeof null ) //”object”
(3)null 与 undefined :
null == undefined //true
null === undefined //false
(4)NaN (not a number) 不是数值的数值类型。
alert( typeof NaN ) // number
alert( NaN == NaN) //false
用途:
用于表示一个本应该返回数值的操作数,而又未返回数值的情况下。
或者用于数值的非法操作,比如2*“ok”
特点:
1、NaN 不等于自身
2、NaN的任何操作都会返回NaN
(5)isNaN()
is not a number 判断是否是NaN 或 非NaN数值。
console.log( isNaN(NaN) ) //true
console.log( isNaN(100) ) //false
console.log( isNaN("ok") ) //true
注意:
console.log( isNaN("") ) //false
console.log( isNaN("100") ) //false
console.log( isNaN([]) ) //false
console.log( isNaN(false) ) //false
内部实现的原理就是调用Number()
(6)转换为数值的方法
整体检测: 检测整个字符串
Number()
true : 1
false : 0
null : 0
undefined : 0
NaN : NaN
“” : 0
“12” : 12
“12.23”: 12.23
对象: 先调用toString()
十六进制 : 十进制
局部检测:
只要字符串开头是数字或符号就返回NaN,逐个字符检测。
第二个参数可以指定进制类型。
parseInt() 不能识别小数点,
parseInt("11.2srt") //11
parseInt("eee11.2srt")
parseFloat( )
parseFloat("100. 126345jkfdghju") // 100.126
特点:
parseInt( a ) == parseFloat( a )
与正则表达式的不同是????
+(一元操作符) 与 Number() 相同
例如:Date.now() 与 +new Date() 与 Number(new Date())
console.log(+new Date()) //1520758224410
console.log(Date.now()) // 1520758224511
console.log(+new Date()) //1520758224515
(6)转换为字符串的方法
toString( )
“” + [5, 6]
注意:
“” + null // “null”
“ ” + undefined “undefined”
(7)引用 类型
Object
Date
Array
RegExp
Function
包装类型: Boolean、Number、String
单体内置对象: Math 、Global
function fn1() {
}
console.log(typeof fn1) //function
console.log(fn1 instanceof Function) //true
console.log(fn1 instanceof Object) //true
注意:
1、js中的函数加new 作为构造函数,不加则作为普通函数。
2、Global在js中是不存在的对象,最起码你访问不到它。
它是留给宿主去定义的。在浏览器中它是作为window对象的一部分实现的。
(8)基本类型与引用类型
保存:
值
地址
操作:
基本类型可以直接操作值,
引用类型是操作对对像 的引用。
Js不允许直接访问内存中的位置。
复制
基本类型: 值 、完全独立
引用类型: 地址、指向同一个对象
(9)检测变量类型
typeof 返回字符串,常用于检测基本类型。
只能检测 number 、boolean、string、undefined、object、function
不能分辨 null 和 具体的某个对象,以及不能检测对象的类型。
注意:正则表达式最好不要这样判断有兼容问题。
instanceof 检测对象的具体类型()
obj instanceof Object
规定: 所有引用类型都是Object的实例。