All of my blog

JavaScript的数据类型

《JavaScript高级程序设计》

  1)ECMAScript不支持自定义类型,只有6中数据类型:

    5种基本数据类型(简单数据类型)

      Undefined 未定义 "undefined"

var a ;

var a = "undefined";//不做

      Null 空引用数据类型 "null"

var a = null;

      Boolean 布尔类型 true/false

var a = false;

      Number 数字类型

var a = 10;

      String 字符串类型 "" ''

var a ="hello";

var a ='hello';

    1种引用数据类型(复杂数据类型)

      Object(本质由一组无序的键值对组成)

var person= new Object();

person.name = "terry";

person.age = 12;

 

    

  2) typeof 操作符

  返回该变量名所指向数据的类型

    语法:

typeof 变量名  

    可有取值如下

      "undefined" 未定义

      "boolean" 布尔类型

      "string" 字符串

      "number" 数值

      "object" 对象或者null

      "function" 函数

 

  3) 基本数据类型

    1. Undefiend 

      该类型只有一个值undefined。对未声明和未初始化的变量执行typeof操作符都返回undefined

var a;

console.log(a); // undefined

console.log(typeof a); // undefined

console.log(b); //ReferenceError: b is not defined

console.log(typeof b); // undefined

    2. Null类型

      该类型只有一个值 null ,null可以表示一个空对象的指针。

var car = null;

console.log(typeof car ) //object  null被认为是空对象的引用

 

【使用情景】

      如果一个变量准备将来保存对象,可以将该变量初始化null而不是其他,这样可以通过检查null值就可以知道相应的变量是否已经保存了一个对象的引用。

      if(car !=null ){

        //car对象执行某些操作

      }

      实际上 undefined 派生自null值。undefined == null 结果为 true

null与undefined用途不同,null可以用来表示一个空对象,但是没有必要把一个变量的值显式设置为undefined

 

    3. Boolean类型

      该类型只有两个值,true,false虽然boolean类型的取值只有两个,但是ECMAScript中所有的类型的值都有与这两个Boolean值等价的值

      

    4. Number

      该类型用来表示整数和浮点数

      1) 表示方法:

1. 整数:

        十进制数: 55 0~9

        八进制数: 首位为0,其他位为(0~7 如果字面值超出了范围,前导0将会被忽略)

070 (表示 7*8一次方 =  56)

079 (超过了范围,表示79)

        十六进制: 前两位为0x,其他位为(0~9,A~F)

2. 浮点数

所谓浮点数值,就是该数值中必须包含一个小数点,并且小数点后必须至少有一位数字。浮点数值的最高精度是17位小数。

例如: var f = 1.2;

      科学计数法:e

        var e = 3.125e7; //31250000

2) 数值范围

由于内存的限制,ECMAScript不能保存世界上所有的数值。ECMAScript能表示的最小数值保存在Number.MIN_VALUE中,能表示的最大的数值保存在Number.MAX_VALUE中。如果某次计算的结果超过了JavaScript数值范围,将会返回Infinity(正无极)或者-Infinity(负无极)使用 isFinite()函数可以判断参数是否在最大值和最小值之间,如果在,返回true

 

在绝大数浏览器中:

Number.MIN_VALUE : 5e-324

        Number.MAX_VALUE : 1.7976931348623157e+308

如果某次计算返回了正的或者负的Infinity,那么该值无法继续参与下一次计算。可以使用isFinite(para)函数判断para 是否在最大数最小数之间

3) 非数值 NaN (not a number)

        该数值表示一个本来要返回数值的操作数未返回数据的情况。

var a = 10/'a';

console.log(a); //NaN

任何涉及到NaN的操作都会返回NaN; NaN与任何值都不相等,包括NaN本身。

isNaN,判断参数是否“不是数值”,当参数para不是数值的时候返回true

isNaN(NaN); true

isNaN("blue"); true 无法转换为数值

isNaN(10); false 10

isNaN("10"); false 10

isNaN(true); false

注意:

        1) 默认情况下,ECMAScript会将小数点后带有6个零以上的浮点数转化为科学计数法。

0.0000003 => 3e-7

2) 在进行算术计算时,所有以八进制十六进制表示的数值都会被转换成十进制数值。

       

      3) 保存浮点数需要的内存是整数的两倍,因此ECMAScript会不失时机将浮点转换为整数

        例如:

        var a = 1.;

        var b = 1.0;  都将解析为1

4) 避免测试某个特点的浮点数值,是使用IEEE754数值的浮点计算的通病

例如: 0.1+0.2结果不是0.3,而是0.30000000000000004

    5. String

      该类型表示由零个或者多个16位Unicode字符组成的字符序列,即字符串。字符串可以由双引号或者单引号表示

      1)字符字面量

      \n 换行

      \t 制表

      \b 退格

      \r 回车

      \\ 斜杠

      \' 单引号

      \" 双引号

      2)字符长度

      通过length属性获取字符长度

     

    6. Object

      ECMAScript中的对象其实就是一组数据和功能的集合。对象可以通过执行"new 对象类型"来创建。

      var o = new Object();

Object类型是所有它的实例的基础,换句话说,Object类型所具有的任何属性和方法,同样存在于更具体的对象。

      constructor: 保存用户创建当前对象的函数

        hasOwnProperty(propertyName); 用于检查给定的属性是否在当前对象实例中

        isPrototypeOf(object); 用于检查传入的对象是否是原型

        propertyIsEnumerable(propertyName); 用于检查给定的属性在当前对象实例中是否存在

        toLocaleString(); 返回对象的字符串表示,该字符串与执行环境的地区对应

        toString(); 返回对象的字符串表示

        valueOf(); 返回对象的字符串,数值,布尔值的表示。

posted @ 2017-09-26 19:46  小小鱼儿小小林  阅读(48)  评论(0)    收藏  举报