1. 种类

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

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

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

2. 类型检测

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

typeOf

适合范围:基本类型、函数类型(注意:不适合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. 对于引用类型,会比较是否是指向同一个对象(地址比较)

===:

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

特殊值:NaN的比较

NaN:Not a Nnmber

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

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

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

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

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

4. 类型转换

 

巧用+/-进行类型转换

Boolean值的转换

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

字符串转数值

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

值转字符串

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

最新文章

  1. ASP.net gridview之性别
  2. 会游走的TextView
  3. mybatis int 类型判断<if>
  4. MySQL中快速复制数据表方法汇总
  5. 实现手机扫描二维码页面登录,类似web微信-第四篇,服务器端
  6. Linux WAS7 启动异常
  7. angular 服务
  8. JIRA官方:JIRA项目跟踪
  9. file.encoding到底指的是什么呢?
  10. Django查询的琐碎记录
  11. media query(媒体查询)和media type(媒体类型)
  12. Java版简易画图板的实现
  13. 微信H5支付证书过滤
  14. C#创建、读写、增加、删除XML操作
  15. JavaScript Json(转)
  16. CentOS6.5安装mysql以及常见问题的解决
  17. Python基础系列讲解—动态类型语言的特点
  18. Java 反射 不定参数bug
  19. Cure HDU - 5879(预处理+技巧)
  20. 利用QtGraphicalEffects来使得自己的图像显示更加生动

热门文章

  1. nyoj 84阶乘后0的个数
  2. HW5.2
  3. HW3.17
  4. Stream消息流 和 Stream Grouping 消息流组
  5. A Tour of Go Struct Fields
  6. 对比iOS网络组件:AFNetworking VS ASIHTTPRequest(转载)
  7. Powerdesigner设置表结构对齐方式
  8. oc学习之路----通过代码自定义cell
  9. 自己动手Jquery插件
  10. JBPM学习(五):流程变量