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()

JavaScript之数据类型的更多相关文章

  1. JS-安全检测JavaScript基本数据类型和内置对象的方法

    前言:在前端开发中经常会需要用到检测变量数据类型的需求,比如:判断一个变量是否为undefined或者null来进行下一步的操作,今天在阅读“编写高质量代码-改善JavaScript程序的188个建议 ...

  2. JavaScript基础——数据类型

    JavaScript使用数据类型来确定如何处理被分配给一个变量的数据.变量的类型决定了你可以对变量进行什么操作,如循环或者执行.下面描述了最常用的变量类型. 字符串(String):此数据类型将字符数 ...

  3. JavaScript 的数据类型 相关知识点

    (1)基本数据类型介绍 JavaScript的数据类型分为两类:原始类型(primitive type)和对象类型(object type) 或者说是:可以拥有方法的类型和不能拥有方法的类型 或者说是 ...

  4. JavaScript的数据类型

    JavaScript的数据类型 1.JavaScript的数据类型包括:字符串.数值.布尔.数组.对象.Null.Undefined. 2.JavaScript拥有动态类型,这以为着同一个变量可用作不 ...

  5. JavaScript判断数据类型总结

    最近做项目中遇到了一些关于javascript数据类型的判断处理,上网找了一下资料,并且亲自验证了各种数据类型的判断网页特效,在此做一个总结吧! 一.JS中的数据类型  1.数值型(Number):包 ...

  6. JavaScript 学习之第一篇JavaScript的数据类型(2016/8/29 晚 23:12)

    1. JavaScript的数据类型 JavaScript 里面有6中数据类型 Boolean String Number Undefined Null Object object(对象)类型包含了数 ...

  7. 从头开始学JavaScript (三)——数据类型

    原文:从头开始学JavaScript (三)--数据类型 一.分类 基本数据类型:undefined.null.string.Boolean.number 复杂数据类型:object object的属 ...

  8. JavaScript基本数据类型

    JavaScript基本数据类型 在JavaScript种一共有6种数据类型:Null.Undefined.Boolean.String.Number.Object.其中Object是一种复杂数据类型 ...

  9. javaScript(4)---数据类型

    javaScript(4)---数据类型 第4章 数据类型 学习要点: 1.typeof操作符 2.Undefined类型 3.Null类型 4.Boolean类型 5.Number类型 6.Stri ...

  10. 1:Javascript的数据类型和相互转换

    第一节:JavaScript的数据类型 他是弱类型 var 但是正是由于其实弱类 所以其后台的数据类型转换也是我们值得思考的 JavaScript的数据类型有两种 一种是原始类型  另外一种是对象类型 ...

随机推荐

  1. Cocos2d-x ios 下http请求的另一种实现

    简单描述下需求:游戏要加入事件log,比如玩家升到10级:创建角色:或是,触发这些事件后要求客户端忘后台抛送一条log信息.一般情况下,我们可以直接使用cocos自带的HttpClient(底层用li ...

  2. mysql 5.5 中的示例数据库 employees

    http://dev.mysql.com/doc/employee/en/employees-installation.html

  3. shell常识总结

    #!/bin/bash cmd="ls -lt | grep ^d | awk 'NR==1 {print $9}'" $cmd 这是一个获取文件夹名字的脚本,但是却提示: ls: ...

  4. git高级应用

    高级应用之一:   二分法查找错误版本: 当前日志 $ git log --oneline ccda9d2 added test1 dd518f7 test zu 88095f9 dasfdasf 3 ...

  5. lua 中pairs 和 ipairs区别

    lua 中pairs 和 ipairs区别 标准库提供了集中迭代器,包括迭代文件每行的(io.lines),迭代table元素的(pairs),迭代数组元素的(ipairs),迭代字符串中单词的 (s ...

  6. SQL2005以上行变行简单实现

    用语法PIVOT参照:http://technet.microsoft.com/zh-cn/library/ms177410(v=sql.105).aspx

  7. robotframework-FQA

    发现是一波三折,刚开始信步漫游,就又遇上了沟,整理一下吧:  1.WebDriverException: Message: 'geckodriver' executable needs to be i ...

  8. cocos2d-x 卡牌翻牌效果的实现

    转自:http://blog.csdn.net/yanghuiliu/article/details/9115833 这个能实现翻牌的action就是CCOrbitCamera. static CCO ...

  9. 使用viewpager实现广告条轮询的效果

    先上效果图: viewpager是google在v4-support包中提供的,使用时与listview类似,度需要提供一个adapter, 只不过viewpager提供的是PagerAdapter ...

  10. web app 相关记录

    今天在手机浏览器上运行cocos2d-html5的sample, crystalcraze运行起来只有10~20帧, moonwarrior只有20~30帧,很不理想的数据: 记录下几个web app ...