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. 【libsvm学习】

    参考: http://www.cnblogs.com/bigshuai/articles/2883256.html http://www.cnblogs.com/tornadomeet/archive ...

  2. Hibernate4搭建Log4J日志管理(附Log4j.properties配置详解)

    1.首先加入slf4j的jar包,即slf4j-api-1.6.1.jar 在hibernate官网下载hibernate-release-4.2.2.Final.zip并解压,在hibernate- ...

  3. hibernate4.0+版本和3.0+版本的区别总结

    自己总结下hibernate4.1版本中的新特性和hibernate3.3做区别 1.数据库方言设置 <property name=”dialect”>org.hibernate.dial ...

  4. 【Java基础】Java中的持久属性集Properties

    Properties 类的介绍 Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载.属性列表中每个键及其对应值都是一个字符串.一个属性列表可包含另一个属性列 ...

  5. ffmpeg关于aac解码

    ffmpeg从0.11.3版本开始,默认解码aac为AV_SAMPLE_FMT_FLT (float) 0.11.2以前版本解码aac为AV_SAMPLE_FMT_S16 (16位short型)

  6. HTML 网页游戏 2048

    新手只会一点html和css,javascript基本不会,更别提jQuery了= = 跟着慕课网的教学视频(视频地址:http://www.imooc.com/learn/76)一点点做的,由于自己 ...

  7. Android UI开发第三十二篇——Creating a Navigation Drawer

    Navigation Drawer是从屏幕的左侧滑出,显示应用导航的视图.官方是这样定义的: The navigation drawer is a panel that displays the ap ...

  8. JS----JS调试技巧

    骨灰级调试大师Alert 那还是互联网刚刚起步的时代,网页前端还主要以内容展示为主,浏览器脚本还只能为页面提供非常简单的辅助功能的时候.那个时候,网页主要运行在以IE6为主的浏览器中,JS的调试功能还 ...

  9. Delphi- DLL操作

    动态链接库(Dynamic Link Library)是一个可以执行的并可以被多个Windows应用程序共享的程序模块(Module).模块中包含代码.数据和资源. 动态链接库的优点:不用重复编译和链 ...

  10. csdn 刷分小工具(刷了1000多被封了,慎用)

    先上图,周第一, 月第六代码未整理,比较乱,仅仅供参考(cookie已经废了,号被封了,哈哈) using System; using System.Collections.Generic; usin ...