zoukankan      html  css  js  c++  java
  • JavaScript数据类型

    ECMAScript中有5种简单数据类型:Undefined,Null,Boolean,Number和String。还有一种复杂的数据类型Object。ECMAScript不支持任何创建自定义类型的机制。所有值都成为以上6中数据类型之一

    一:typeof操作符

      typeof操作符是用来检测变量的数据类型的。用法为 typeof(变量/字面量)。

      PS:typeof是操作符而不是内置函数

      对于值或者变量使用typeof 操作符会返回如下字符串。

                               字符串                                                            描述                                           
    undefined 未定义
    boolean 布尔类型
    string 字符串类型
    number 数值类型
    object 对象
    function 函数

      二:Undefined类型

      在定义变量的时候如果没有对其进行初始化,这个变量的值就是undefined

       var box

       alert(box)     // undefined

      未初始化值和变量不存在是不一样的。如:

      var box;

      alert(age);     //报错

      alert(typeof(box))           // undefined

      alert(typeof(age))            // undefined

      三:NULL类型

      Null类型表示一个空对象的引用,而typeof操作符检测Null的话返回值为object

      var box = null;

      alert(typeof(box))                        // object

      有个需要说明的是undefined 是派生字null的。因此 alert(undefined == null) 的结果会是true

      四:Boolean类型

      Boolean 类型有两个值:true和false。JavaScript是区分大小写的,True和False或者其他都不是Boolean类型

      var box= true;

      alert(typeof(box));

      虽然Boolean类型的字面量只有true和false两种,但是ECMAScript中所有的类型的值都有与Boolean值等价的值。可以使用转型函数Boolean()

    1 var box = “hello world”
    2 var box2 = Boolean(box);
    3 alert(box2);               // true
    4 alert(typeof box2);    //boolean

     上面的例子是一个显示转换,当然我们还可以进行隐式的转换,具体如下:

    1 var isChange = "hello"
    2 if(isChange)
    3 {
    4    alert("我是真的");
    5 }
    6 else
    7 {
    8    alert("我是假的");
    9 }

      以下是其他类型转换为Boolean类型的规则

             数据类型            转换为true值          转换为false值     
    Boolean true false
    String 任何非空字符串 空字符串
    Number 非零值包括最大值和最小值 0和NaN
    object 任何对象 null
    Undefined   undefined

    五:Number类型

      Number类型包括整型和浮点型两种,为了支持各种类型的数据。JavaScript定义了不同的整型字面量格式;

      十进制整型: var box = 100;

      八进制整型: var box = 070;            // 八进制 56

                        var box = 090;            // 无效的八进制 自动解析为90

      十六进制类型:  var box= 0x1a         // 16进制 26

       浮点类型

       浮点类型就是该值中必须包含一个小数点,并且小数点后面必须至少有一位数字。

       var box = 3.8      var box1 = .8  都是符合标准的

       浮点型数字的空间占用比整型要大两倍,因此ECMAScript会自动将浮点型的数据转换为整型

       var box = 12.0   // 转换为12

       var box = 12.     //小数点之后没有数字,转换为12

       对于那些过大或者过小的数据,可以使用科学计数法 e 来表示

       var box = 10e2         // 10 X 102

      

      虽然浮点值的最高精度在17位小数,但是算数运算中可能不精确

      alert(0.1 + 0.2)         // 0.30000000000000004

      

      浮点数的范围在 Number.MIN_VALUE和 Number.MAX_VALUE

      alert(Number.MIN_VALUE);

      alert(Number.MAX_VALUE);

      如果超过了浮点范围的最大值或者最小值,那么就先出现Infinity(正无穷)或者-Infinity(负无穷)

      var box= 100e10000              // 超出范围,Infinity

      var box = -100e100000          //超出范围,-Infinity

      如果想确定一个数值是否超过了规定范围,可以使用isFinite()函数

      var box = 100e10000;

      alert(isFinite(box));

      NaN值,这个数值表示本来应该返回一个数值但是未返回数值的情况。

      alert(0/0)    // NaN

      可以通过Number.NaN,得到NaN值,任何与NaN运算的结果均为NaN。并且NaN与NaN并不是相等的

      alert(Number.NaN)    // NaN

      alert(NaN+1)            // NaN

      alert(NaN == NaN)    // false

      ECMAScript提供了isNaN()函数。用来判断这个值是不是NaN。isNaN()函数在接收到一个值之后会尝试将这个值转换为数值

      alert(isNaN(25))          // false

       alert(isNaN(NaN))       // true

      有三个函数可以把非数值类型转换为数值;Number()、parseInt()、parseFloat()。Number()函数是转型函数,可以用于任何类型的数据类型,而另外的两个专门用于把字符串转换为数值

      Number(true)              // 1

      Number(20)                // 20

      Number(null)              // 0

      Number(undefined)     // NaN

      

      如果是字符串,应该遵循以下规则

      1,只包含数值的字符串,会直接转化成十进制数值,如果包括前导0,则直接把0去掉

       alert(Nubmer("456"))              // 456

       alert(Number("070"))              // 70

      2,只包含浮点值的字符串,则直接转化为对应的浮点值,如果包含前导和后导0,即自动去掉

      alert(Number("12.30"))             // 12.3

      3,如果字符串是空。则直接返回0

      alert(Number(""))                      // 0

      4,如果不是以上三种类型,则返回NaN

      alert(Number("Lee12"))              // NaN

      5,如果是对象,首先会调用valueOf()方法,然后确定该值是否可以转化为数字,如果转换的结果为NaN,则会继续调用toString()方法。

      var box =

       {

          toString:function{

                       return "123";

                       }

       }

      由于Number()函数在转换字符串的时候比较复杂并且不够合理,因此 在处理的时候更多的应用的是parseInt()。

    1 alert(parsetInt('456Lee')); //456,会返回整数部分
    2 alert(parsetInt('Lee456Lee')); //NaN,如果第一个不是数值,就返回 NaN
    3 alert(parseInt('12Lee56Lee')); //12,从第一数值开始取,到最后一个连续数值结束
    4 alert(parseInt('56.12')); //56,小数点不是数值,会被去掉
    5 alert(parseInt('')); //NaN,空返回 NaN

      

      parseInt()除了能够识别十进制数据还能够识别八进制和十六进制数据

      

    1 alert(parseInt('0xA')); //10,十六进制
    2 alert(parseInt('070')); //56,八进制
    3 alert(parseInt('0xALee')); //100,十六进制,Lee 被自动过滤掉

      ECMAScript为parseInt() 提供了第二个参数,用于解决各种进制之间的转换

    1 alert(parseInt('0xAF')); //175,十六进制
    2 alert(parseInt('AF',16)); //175,第二参数指定十六进制,可以去掉 0x 前导
    3 alert(parseInt('AF')); //NaN,理所当然
    4 alert(parseInt('101010101',2)); //314,二进制转换
    5 alert(parseInt('70',8)) //56,八进制转换

      parseFloat()是用于浮点数值转换的。和parseInt()一样,从第一位解析到非浮点数值位置

    1 alert(parseFloat('123Lee')); //123,去掉不是别的部分
    2 alert(parseFloat('0xA')); //0,不认十六进制
    3 alert(parseFloat('123.4.5')); //123.4,只认一个小数点
    4 alert(parseFloat('0123.400')); //123.4,去掉前后导
    5 alert(parseFloat('1.234e7')); //12340000,把科学技术法转成普通数值

      

    六:String类型

      字符串类型包含了一些特殊的字符字面量。称为转义字符

      

     1 字面量 含义
     2 
                         换行
     3 	                     制表
     4                      空格
     5 
                         回车
     6 f                     进纸
     7 \                     斜杠
     8 '                     单引号
     9 "                     双引号
    10 xnn                   以十六进制代码 nn 表示的一个字符(0~F)。例:x41
    11 unnn                  以十六进制代码 nnn 表示的一个 Unicode 字符(0~F)。 例: u03a3

      

     七:Object类型

      var box = new Object();

      

  • 相关阅读:
    Linux文件与目录管理(一)
    Linux文件基本属性
    软工实践总结
    微软必应词典的调查与研究
    调研安卓开发环境的发展演变
    软件工程的预定目标
    学习进度第5周
    机械学习----KNN算法
    MyBatis:简介、第一个程序01(纯小白非常实用)
    解决数据库连接时区的问题
  • 原文地址:https://www.cnblogs.com/CalmEric/p/3480298.html
Copyright © 2011-2022 走看看