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

    JavaScript中有多种数据类型,在实际工作中,不管是有意还是无意的,我们总能碰到不一样的数据类型值之间进行运算,或者我想从用户输入获得一个数字时,而用户却输入了一个字符串,这种时候就需要用到今天介绍的东西了——数据类型转换。JS中的数据类型转换主要分为两大类:显式类型转换,隐式类型转换。

    一     显示类型转换

             1、Number()

                  接受一个参数,并把它转换成数字。

                  如果参数包含数字和小数点以外的其他字符,则转换失败,返回NaN。下面是一些特殊值转换为数字的结果:

    1 Number(null);//0
    2 Number(undefined);//NaN
    3 Number(true);//1
    4 Number(false);//0
    5 Number("");//0

            

      2、parseInt()

                  接受两个参数,第一个参数会被转换成十进制整数,第二个参数是一个数字,规定第一个参数的进制,它是可选的,默认是10。

                  转换规则:

        a,首先判断第一个参数的数据类型,如果不是字符串或数字类型,则转换失败,直接返回NaN;

        b,若是数字,则原样返回;

        c,若是字符串,则从第一个非空白字符开始检测,直到遇到第一个非数字字符为止,然后返回前面的部分;

        d,如果正负号是第一个非空字符,那么可以识别正负号;

        e,不能识别小数点。

     1 parseInt("123");//123
     2 parseInt("-123");//-123
     3 parseInt(123.123);//123
     4 parseInt("    123");//123
     5 parseInt("123abc");//123
     6 parseInt("abc123");//NaN
     7 parseInt(true);//NaN
     8 parseInt(undefined);//NaN
     9 parseInt(unll);//NaN
    10 parseInt("");//NaN
    11 parseInt(110,2);//6
    12 parseInt(110,16);//272

            

      3、parseFloat()

                  接受一个参数,并把它转换成小数。如果正负号是第一个非空字符,那么可以识别正负号。和parseInt唯一不同的是,它可以识别第一次出现的小数点。

    1 parseFloat("123.123");//123.123
    2 parseFloat("123.1.2.3");//123.1
    3 parseFloat("123.123abc");//123.123

            

      4、toString()

                  用需要被转换成字符串的值调用toString()方法,格式:test.toString(),注意:数字不能直接调用,需要把数字赋值给变量调用。toString()方法的返回值都是字符串类型。

                  在转换数字时,可以接受一个数字类型作为参数,参数规定了转换后结果的进制。其他时候传参无效。

    1 var num = 10;
    2 var a = num.toString();//"10"
    3 var b = num.toString(2);//"1010"
    4 var c = num.toString(8);//"12"
    5 var d = num.toString(16);//"a"

            

      5、String()

                  接受一个参数,将它转换成字符串。任何东西传进去都能的到字符串类型的返回值。

    1 String(123);//"123"
    2 String(123.123);//"123.123"
    3 String(undefined);//"undefined"
    4 String(null);//"null"
    5 String(true);//"true"

            

      6、Boolean()

                  除undefined、null、0、NaN、“”(空串)、false转换成false外,其他任何东西都被转成true。

    1 Boolean(undefined);//false
    2 Boolean(null);//false
    3 Boolean(0);//false
    4 Boolean(NaN);//false
    5 Boolean("");//false
    6 Boolean(false);//false

    二  隐式类型转换

      

      1、isNaN()

        接受一个参数,判断参数是否是数字,是则返回false,否则返回ture。

        会触发隐式类型转换,先调用Number()把参数转换成数字类型。

    1 isNaN(123);//false
    2 isNaN("123");//false
    3 isNaN("");//false
    4 isNaN("abc");true

           

      2、++/--(自增自减)和+/-(正负)

                 会触发隐式类型转换,先调用Number()把操作数转换成数字类型。

    1 var num = "123";
    2 num ++;//123
    3 console.log(num);//124

           

      3、+(数字和字符串相加时)

                 会触发隐式类型转换,先调用String()把操作数转换成字符串类型。

    1 var num = 12;
    2 console.log("I'm " + num + "years old.");//"I'm 12 years old"
    3 console.log(num + "12");//"1212"

           

      4、-、*、/、%

        会触发隐式类型转换,先调用Number()把操作数转换成数字类型。

    1 var num = 12;
    2 console.log(num - 1);//11
    3 console.log(num * 1);//12
    4 console.log(num / 1);//12
    5 console.log(num % 1);//0

          

       5、&&、||、!

        会触发隐式类型转换,调用Boolean()把每个操作数转换成布尔类型。

    1 123 && "abc";//"abc"
    2 0 && "abc";//0
    3 123 || "abc";//123
    4 0 || undefined;//undefined
    5 !0;//true
    6 !1;//false

      关于逻辑运算的返回值:当两个原始值进行逻辑运算时,与运算会返回第一个找到的能被Boolean()转换成false的操作数,否则返回最后一个操作数。或运算会返回第一个能被Boolean()转换成true的操作数,否则返回最后一个操作数。非运算将返回被Boolean()转换成布尔值后再取反的值。即非运算返回的不再是操作数的值,而是布尔值。

      

      6、>、<、<=、>=、==、!=(数字和字符串比较时)

        会触发隐式类型转换,先调用Number()把操作数转换成数字类型。

    1 123 > "122";//true
    2 123 < "124";//true
    3 123 >= "123";//true
    4 123 <= "123";//true
    5 123 == "123";//true
    6 123 != "123";//false

    最后有两个特别的:undefined == null 返回true;NaN == NaN 返回false。另外在做加法(+)运算时字符串优先,在做其他数学计算时,数字优先。

  • 相关阅读:
    matlab之图像处理(2)
    FIR滤波器(1)- 基础知识
    图像融合
    IEEE Floating Point Standard (IEEE754浮点数表示法标准)
    ISE 中使用system generate
    System Generator入门
    System Generator入门笔记
    2019 Multi-University Training Contest 7 Kejin Player Final Exam
    Sequence POJ
    POJ
  • 原文地址:https://www.cnblogs.com/ruhaoren/p/11338883.html
Copyright © 2011-2022 走看看