JavaScript之数据类型

时间:2023-03-09 02:35:33
JavaScript之数据类型

1. 种类

5种基本类型:Number、String、Null、Undefined、Boolean

1种对象类型:Object(Function、Array、Date)

特别注意:当把基本类型尝试以对象的方式使用它的时候(比如使用它的length属性,增加它的属性),JS会将其转化为包装类型的对象(临时对象),但当完成这样一个访问后,JS就会销毁这个临时对象!

2. 类型检测

由于ECMAScript是松散类型的,故有必要检测给定变量的数据类型:

typeOf

JavaScript之数据类型

适合范围:基本类型、函数类型(注意:不适合null)

instanceof

var obj;
console.log(obj instanceof Object);//true
console.log(undefined instanceof Object);//false
console.log(null instanceof Object)//false

obj instanceof Object   判断obj的原型链上是否有Object.prototype对象

适用范围:引用类型的判断

Undefined、Null类型的检测

由于这两种类型都只有一个值,所以可以直接用值来判断!

null === null;//true
undefined === undefined;//true

Undefined的意义:用来表示声明但未初始化的变量(注意:不同于尚未定义的变量)

Null的意义:用来表示尚未存在的对象(空对象指针)(建议:如果定义的变量将来用于保存对象,那最好将该变量初始化为null而不是其他值,这样就只要坚持null即可知道是否已经保存了一个对象的引用!)

3. 等于、严格等于

==:

  1. 对于基本类型而言,会尝试进行类型转换之后再比较
  2. 对于引用类型,会比较是否是指向同一个对象(地址比较)

JavaScript之数据类型

===:

  1. 类型不同返回false
  2. 同类型的比较,不进行类型转换

特殊值:NaN的比较

NaN:Not a Nnmber

意义:控制“将本来要返回数字但是却没有返回数字”的情况。例如“I”*3在其他语言中是会报错的,但在JavaScript中并不会报错,而是返回值NAN。

特殊性:跟任何类型比较都不相等,包括它自己!所以要判断一个值是否是NAN,必须使用isNAN

1.对于基本类型会尝试进行number类型的转换后再进行判断

JavaScript之数据类型

2.对于对象类型,会首先调用其valueOf尝试转换后再进行判断

    var o = {
valueOf:function(){
return "44";
}
}
isNaN(o);//false

4. 类型转换

 

巧用+/-进行类型转换

JavaScript之数据类型

Boolean值的转换

可以对任何数据类型的值调用Boolean()函数,而且总会返回一个Boolean值
数据类型
转换为true的值
转换为false的值
Boolean
任何非空字符串
空字符串
Number
任何非零数字值(包括无穷大)
0和NaN
Object
任何对象
null
Undefined
不适用
undefined

字符串转数值

方式一:Number()--不推荐
JavaScript之数据类型
方式二:parseInt():建议无论什么情况下都要明确指定基数
JavaScript之数据类型
JavaScript之数据类型
方式三:parseFloat()
JavaScript之数据类型

值转字符串

  1. toString-----不适用于null、undefined
  2. String()