您的位置:时时app平台注册网站 > web前端 > JS中Number(),parseInt(),parseFloat()和自动类型转换

JS中Number(),parseInt(),parseFloat()和自动类型转换

2019-11-03 13:29

 
7,Object类型
此类型是一组数据和功能的集合,我们可以var o = new Object();或var o = {};来创建对象。
  
每个object实例都有一些方法/属性:
    constructor属性:用来保存创建当前对象的方法。
    hasOwnProperty(name):可用于检测当前对象的实例是否有某个属性。
    isPrototypeOf(object):用于检测传入的对象是不是另一对象的原型。
    propertyIsEnumerable(name):用于检测对象的这个属性是不是可以用for-in来枚举。
    toString():返回对象的字符串表示。
    valueof():返回对象的字符串、布尔或数值表示。通常与toString()返回值一样。

(一)数据类型分类(注意:function不属于类型)

--Boolean值,true->1,false->0。

摘自 for certain

一:Number()

  如果是Boolean值,true和false值将分别被转换为1和0。

  如果是数字值,只是简单的传入和返回。

  如果是null值,返回0。

  如果是undefined,返回NaN。

  如果是字符串:

     a.  如果字符串中只包含数字时,将其转换为十进制数值,忽略前导0

     b. 如果字符串中包含有效浮点格式,如“1.1”,将其转换为对应的浮点数字,忽略前导0

     c. 如果字符串中包含有效的十六进制格式,如“0xf”,将其转换为相同大小的十进制数值

     d. 如果字符串为空,将其转换为0

     e. 如果字符串中包含除上述格式之外的字符,则将其转换为NaN

       如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,然后再依照前面的规则转换返回的字符串值。

,字符串不为纯数字和科学计数时 返回NaN

    //JS区分0和-0
        var num = 123;
        var num = 123.123;
        var num = 0b10;
        var num = 010;
        var num = 0xff;
        var num = 5e2;
        var num = 5e-2;

        var num = NaN;

        console.log('值: ' , num);
        console.log('类型: ' , typeof(num))

        //NaN本身为false
        //其他类型转为数值失败时都为NaN
        console.log(NaN - 100);
        if(NaN){
            console.log('Yes');
        }else{
            console.log('No');
        }

        //NaN
        var a = '123ad';
        //123
        var a = '123';
        //NaN
        var a = 'f3ad';
        //0
        var a = false;
        //1
        var a = true;
        //NaN
        var a = undefined;
        var a = new Object();
        var a = Array(1,23);

        //1e 124
        var a = 10e123;

        //3
        var a = 0b11;

        //255
        var a = 0xff;

        //1.23
        var a = 1.23;

        //0
        var a = '';

        //1200
        var a = '12e2';

        //0
        var a = null;

        //90
        var a = 0132;

        var n = Number(a);
        console.log(n);

 

parseInt()


1,typeof操作符 js提供了type...

       复合类型   (可以存储多种东西)

            object  对象    (eg. document 、window 、[]数组 …、null)

--不能有多个小数点报语法错误

         //123
        var a = '123ad';
        //123
        var a = '123';
        //NaN
        var a = 'f3ad';
        //NaN
        var a = false;
        //NaN
        var a = true;
        //NaN
        var a = undefined;
        var a = new Object();

        //13 第一个值
        var a = Array(13,2);

        //3100000 范围过大将转为科学计数法再大将为Infinity
        var a = 31e5;

        //3
        var a = 0b11;

        //255
        var a = 0xff;

        //1.23
        var a = 1.23;

        //NaN
        var a = '';

        //1200
        var a = '12e2aa';

        //NaN
        var a = null;

        //1.5
        var a = 1.5;

        //90
        var a = 0132;

        //
        var a = 1.113;

        var n = parseFloat(a);
        console.log(n);

 

 自动类型转换

   数字类型: 在字符串环境下 隐身转换为字符串  

   字符串类型 在数字环境下,可以隐式转换为字符串中的数字或NaN;

          在布尔环境下,可以隐式转换为true.

    空字符串:在数字环境下可以隐式转换为0;

         在布尔环境下可以隐式转换为false;

        字符串'true': 在数字环境下可以隐式转换位1;布尔为true

    字符串'false': 数字环境为0,布尔位false

     null: 在字符串环境下,转换为'null';

         数字环境下,转换为0,布尔环境下,转为false

     NaN: 在字符串环境下可以隐式转换为'NaN';

       布尔环境下,转换为false

    undefined: 字符串环境下,转换为“undefined”,

          数字环境下,转为NaN,

                 布尔下,转为false

    true: 字符串转为'true',数字环境下转为1

     false: 字符串转为'false',数字环境下转为0

 

       
6,数值转换:Number(),parseInt(),parseFloat()
Number()可以对任何类型的参数进行转换,转换规则如下:
    Boolean类型true转为1,false转为0;
    Number类型,直接返回;
    undefined返回NaN;
    String类型,空字符串转为0,数值类型的字符串会忽略所有前置的0转为相应的整型或浮点型,因此八进制将会被忽略,如果是ox开头的数字字符串,将按十六进制数处理转为相对应的十进制数,其它转为NaN;
    object类型,null返回0,其它会调用该对象的valueOf()对其返回值操作,如果返回NaN,再调用其toString()方法,测定返回值。
alert(Number("1234asdf"));  //  NaN
alert(Number("00070"));     //  70
alert(Number("false"));     //  0
alert(Number(""));          //  0
 
parseInt()和parseFloat只对字符串参数操作。
parseInt()的转化规则:
     它会忽略前面所有的空格,从第一个不是空格的字符开始转化,如果这个字符不是数字或者负号,将返回NaN;或者继续转化下一位置,直到下一个不是数字的位置或者结束位置。这样如“1234abcd”将返回1234,“”返回NaN,”12.3“返回12。
alert(parseInt("1234abcd"));   //   1234
alert(parseInt(""));        //  NaN
alert(parseInt("12.34"));   // 12
 
与Number()不同的是,parseInt()能识别出八进制、十六进制的数值进行对应的转化,但是在浏览器的实现上却出现了问题,IE中会把070转为70,而ff,chrome把070转为56。前面多个0时,相当于只有一个0。
alert(parseInt("070"));  //  ie弹出70,ff,chrome弹出56
 
不过幸好javascript提供了另一个参数来决定要何种(2/8/10/16)进制数来处理。
alert(parseInt("070","8"));  //  都弹出56
  
parseFloat()与parseInt()类似,也会逐个检查字符,直到不是数值的字符或第二个小数点出现。
alert(parseFloat("1234abcd")); //  1234
alert(parseFloat(""));         //  NaN
alert(parseFloat("12.34"));    //  12
alert(parseFloat("12.34.22")); //  12.34
alert(parseFloat("0x23"));     //  0
alert(parseFloat("0323"));     //  323
 
 
6,String类型
几乎所有的类型(null和undefined除外)都会有一个tostring()的方法,把自身转为字符串类型。
 
另外,数值型的toString()还可以接受一个参数(2/8/10/16),来决定按何种进制表示的字符串值。
对于null和undefined调用toString()将产生错误,如果不确定要转换值是不是null/undefined,可以调用String()来转换,它会把null转为”null“,undefined转化为"undefined",其它与toString()一样。

(二)数据类型的查看

              typeof()  的使用(number、string、boolean、undefined、function、object)

         eg.   var a = 1;

                alert(typeof a);    ==>弹出框显示为:number

--数字开头的字符串,只转换数字整数部分,忽略字母部分

js的数据类型:Number、String、Boolean、Undefined、Null和Object。我们在js里创建的数据一定是以上几种类型的一种。
 
1,typeof操作符
js提供了typeof操作符来检测数据的类型,但是typeof操作的结果只会是:number,string,boolean,undefined,object,function中的一个,这个和提供的数据类型是不一致的。
 
2,undefined类型
如果一个变量声明未赋值之前,它是undefined类型,并且有值是undefined。
要注意的是:如果我们对从未声明过的变量,它也是undefined类型,但是对它进行取值的操作将会产生一个变量未定义的错误。
var message;
alert(typeof message);  //  undefined
alert(message);     //  undefined
//var message2;
alert(typeof message2); //  undefined
alert(message2);    //  错误
 
3,Null类型
null值表示一个空对象指针,它也只有一个值null。
alert(typeof null);  //  object
alert(null);        // null
 
另外要注意的undefined值是派生自null值的,就有以下的结果:
alert(undefined == null);   // true
 
尽管如此,但他们两个的作用完全是不一样的,因此我们如果确定一个变量要指向对象,还没有真正指向对象之前,应该在声明它暂时赋值为null。
 
4,Boolean类型
只有两个值ture,false,并且是区分大小写的,也就是说var isError = False;将产生错误。
js提供了一个Boolean(arg)的函数来将其它类型转为Boolean类型,更有意思也值得注意的特性是js会为流程控制语句(如if)自动调用Boolean类型的转换。
转型的规则如下:
Boolean的flase,String类型的“”,Number类型的0和NaN,Object类型的null,undefined类型的undefined会被认为是false,其它都是true。
 
5,Number类型
可用来表示分为整数和浮点数,整数又包括八进制(0开头)、十进制(默认)和十六进制(0x开头)。
其中八进制如果有某位超过了7,前面的0将被忽略,被认为是十进制。如070转为十进制是56,而018会认为是18。
   
浮点数值保存空间是整数的两倍,js会把如1.0、10.这样的数值用转为整数来保存。
要注意的是,尽量不要用基于js浮点数值运算:
alert(0.1 0.2);  //  输出是0.30000000000000004
 
另外有几个特殊的值要注意:
Number.MAX_VALUE、Number.MIN_VALUE存储的是所能支持的最大、最小的数,如果超过这个范围将会得到正无穷Infinity、负无穷-Infinity。我们可以用isFinite()函数来判断一个数是不是超出了范围。其中我们可以从Number.NEGATIVE_INFINITY、Number.POSITIVE_INFINITY得到正无穷Infinity、负无穷-Infinity。
 
另外还有一个要注意的值NaN,任何一个需要返回数值的运算返回的不是数值将返回NaN,它是一个特殊数值,跟任何数值的任何运算都会返回NaN,并且它不与任何值相等包括自己。
另外有isNaN()函数,来判断传入的任意类型参数是不是NaN。isNaN会对参数进行转化,如果能转化为数值,就返回false.这上转化是对整体的一个转化,还会把true转为1,false转为0.如果参数是对象,它会先调用对象的valueOf(),如果不能转为数值,会再次调用toString()来判断。
alert(isNaN("1234asdf")); // true
alert(isNaN(0070));       // false
alert(isNaN("00070"));    // false
alert(isNaN(0x70));       // false
alert(isNaN("0x70"));     // false
alert(isNaN(false));      // false
alert(isNaN(""));         // false
alert(isNaN(NaN));        // true

       显示类(强制数据类型转换)

1、parseInt()--转化为整数

        从第0位开始,一位一位的查看是否是数字,若是查到某一位不是数字时,就把这位之前的数字提取出来,反之若第0位就是数字,则返回为NaN。

eg. var a ={                                                                                eg. var a = {

                   true ;   ==> NaN                                                 "12.324"  ;   ==>  12                  

                  "s123" ;  ==> NaN                                               "1s2a33"  ;   ==> 1

                  ".124" ;  ==> NaN                                                [12,232,44]  ;  ==>12

                  " "  ;      ==> NaN                                                 }

*           *   }

        parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。

        基是由parseInt()方法的第二个参数指定的,所以要解析十六进制的值,当然,对二进制、八进制,甚至十进制(默认模式),都可以这样调用parseInt()方法。

eg、var num1 = parseInt("AF",16);//175

        var num2 = parseInt("AF");//NaN

        var num3 = parseInt("10",2);//2  (按照二进制解析)

        var num4 = parseInt("sdasdad");//NaN

   2、parseFloat --转化为小数(浮点型)

       从第0位开始,一位一位的查看是否是数字,若是查到某一位不是数字时,就把这位之前的数字提取出来,且多解析出1个小数点;反之若第0位就是数字,则返回为NaN。

  ** eg.***   var a = "12.723.334"  ==>12.723

,空字符串,字符串开头不为纯数字和科学计数时 返回NaN

        //123
        var a = '123ad';
        //123
        var a = '123';
        //NaN
        var a = 'f3ad';
        //NaN
        var a = false;
        //NaN
        var a = true;
        //NaN
        var a = undefined;
        var a = new Object();

        //13 第一个值
        var a = Array(13,2);

        //3100000能够解析处时正常解析,不能时只返回第一个数字
        var a = 31e5;

        //3
        var a = 0b11;

        //255
        var a = 0xff;

        //1
        var a = 1.23;

        //NaN
        var a = '';

        //12  字符串只返回12e舍弃
        var a = '12e2';

        //NaN
        var a = null;

        //1
        var a = 1.5;

        //90
        var a = 0132;

        var n = parseInt(a);
        console.log(n);

        var a = parseInt("10",2);
        var a = parseInt("FF",16);
        var a = parseInt("10",8);
        console.log(a);

 

 parseFloat()

 


 

一、数据类型:

--科学计数法,能解析时正常解析,超出范围则返回Infinity

--Boolean,undefined , 对象 , 数组

隐式类型转换

1、“ ”   、“ ”   、“ =”  

     (1)碰到字符串就执行字符串拼接;

     (2)如果可以转换成数字,就进行数字相加(number的操作);

     (3)如果不能把左右两边都转化成数字,就执行字符串的拼接。

2、“-”  、“*”  、“/”  、“%”   、“--”

会直接把左右两边都转化成数字进行计算,如果不能转成数字,即为NaN。

3、“==”   、“!=”

       先判断所有的数据是否类型一样,如果类型不一样会进行类型转换,然后进行比较,若转换后的结果一样,及为true,若结果不一样,及为false。

4、“===”  、“!==”

        直接对左右两边的数据进行判断,若数据类型不一样,即为false(给什么比较什么,不会转换类型)。

5、!取反

     类似于反义词的作用

--二进制,八进制,十六进制转化时,转化为十进制的数值

        基本类型

            1、number 数字    (eg.  1、2、3…) 

            2、string 字符串      (eg.  '1' 、‘s’ …)

            3、boolean 布尔值    (eg.  true 、false)

            4、undefined  未定义     

            5、null    空对象(不能存东西)

--二进制,八进制,十六进制格式,转为十进制的数值

三:boolean()

   将所有的数据都转化为布尔值:

(1)转为true (非0的数字、非空的字符串、函数、非空对象、数组)

(2)转为false ( 0、空的字符串、NaN 、undefined  、Null   )

   注意:[    ]  ==>只要字符串中有空格或者有内容,即为非空的字符串。

              空对象是不能进行属性操作的。

              空数组  != 空对象null

【正文内容】

二:string()

   将所有的数据都转化为字符串,及在原来的基础上加上引号“”,变为字符串。

  

(三)数据类型的转换

--二进制,八进制,十六进制转化时,转化为十进制的数值

--null值,转为0

--数值正常转化,整型为整型,浮点型为浮点型

--parseFloat()

--

--数值正常转化,如果为浮点数,则转为整型,舍弃小数点后的数值

  Number()

--字符串为空,转为0

  

JS中Number(),parseInt(),parseFloat()和自动类型转换。--字符串中是纯科学计数,数值会直接转为十进制的数值

--undefined , 对象 , 数组

--parseInt()

--

--数字开头的字符串,只转换数字整数部分,忽略字母部分

--Number()

--

【参考来源】

,空字符串,字符串开头不为纯数字和科学计数时 返回NaN

--科学计数法,能解析时正常解析,不能时返回第一个数字

--Boolean,undefined , 对象 , 数组

--数字值,整型就是整型,浮点型就是浮点型,科学计数就科学计数

本文由时时app平台注册网站发布于web前端,转载请注明出处:JS中Number(),parseInt(),parseFloat()和自动类型转换

关键词: