zoukankan      html  css  js  c++  java
  • javascript笔记整理(数据类型强制/隐式转换 )

    A.数据类型强制转换

    1、转换为数值类型

    Number(参数) 把任何的类型转换为数值类型

    A.如果是布尔值,false为0,true为1

      var a=false;alert(Number(a)); a=0

    B.如果是数字,转换成为本身。将无意义的后导0去掉    

      var a=3.2;alert(Number(a)); a=3.2

    C.如果Null转换为0

      var a=null;alert(Number(a)); a=0

    D.如果是undefined 转换为NaN not a number

      var a;alert(Number(a)); a=NaN

    E.如果对象则会先调用对象的 valueOf(),如果valueOf()返回的是NaN,然后再调用对象的toString()

      var a={toString:function(){return 3;},valueOf:function(){return"abc";}}; alert(Number(a)) a=3

    F.如果是字符串

      1.如果字符串当中只有数字,转换为10进制(忽略前导0和后导0)

        var a="0123.0";alert(Number(a)); a=123

      2.如果是有效的规范的浮点型,转换为浮点值(忽略前导0和后导0)

        var a="023.110";alert(Number(a)); a=23.11

      3.如果是空字符串,则转换为0

        var a="";alert(Number(a)); a=0

      4.如果是其他的值,返回NaN

        var a="chen";alert(Number(a)); a=NaN

    parseInt(string,radix)  将字符串转换为整数

     string 必需。要被解析的字符串。

    radix 可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

    A.如果一个字符串只包含数字,则以10进制的方式转换为整型

      var a="12.2";alert(parseInt(a)); a=12

    B.他会自动忽略字符串前面的空格,知道找到第一个非空的数值字符串,直到解析到第一个非数值的字符串结束。

      var a=" 2a2";alert(parseInt(a)); a=2

      var a=" 21a2";alert(parseInt(a)); a=21

      C.如果字符串的第一个字符不是空格、数字、-,那么返回NaN

        var a=" a21a2";alert(parseInt(a)); a=NaN

    parseFloat() 将字符串转换为浮点数

    A.字符串当中的.只有第一个有效,其他的都是无效的。

      var a="12.2";alert(parseInt(a)); a=12.2

    B.如果字符串是一个有效的整数,他返回的是整数,不会返回浮点数。

      var a="12";alert(parseInt(a)); a=12

      var a="12.0";alert(parseInt(a)); a=12

    2、转换为数值类型

    1. String(参数):可以将任何的类型转换为字符串

      null 结果 null

      undefined 结果 undefined

      true 结果 true

      false 结果 false

      1 结果 1

      数值类型 结果 本身的字符串

    2.toString()---调用的格式:对象.toString()。作用是将对象以字符串的方式来表示

      array.toString() 结果 由,分割的字符串

        var arr=[a,b,c];alert(arr.toString()); a,b,c

      Boolean.toString() 结果 两个值 true false

        var a=true;alert(arr.toString()); true

      String.toString() 结果 返回本身

        var a="陈";alert(arr.toString()); 陈

      Number.toString(radix) 结果 返回本身的字符串形式

        var a=12;alert(arr.toString()); 12

        radix 可选。规定表示数字的基数,使 2 ~ 36 之间的整数。若省略该参数,则使用基数 10。但是要注意,如果该参数是 10 以外的其他值,则 ECMAScript 标准允许实现返回任意值。

      注意:null和undefined没有toString()方法

    3、转换为布尔类型:Boolean()可以将任何类型的值转换为布尔值

    转换为假: ""、 0、 NaN 、undefined、 false

    其他的全部都转换为真

    B.数据类型隐式转换

    1.函数类

    a.isNaN()

      该函数会对参数进行隐式的Number()转换,如果转换不成功则返回true;

      var a='a23';alert(isNaN(a)); true

      var a='23';alert(isNaN(a)); false

    b.alert()输出的内容隐式的转换为字符串

      var a='23';alert(isNaN(a)); 23

    2.运算符类

    a.算数运算符 (- * / %)

    如果操作数不是数值, 将会隐式的调用Number()函数,按照这个函数的转换规则进行转换,如果转换不成功,整个表达式返回NaN

    var a='a23';var b='b23';alert(a+b); a23b23

    var a='23';var b='bc';alert(a*b); NaN

    *********加号(+)***********

    *.如果操作数都是数值,然后进行相加

    var a='2';var b='3';alert(a*b); 5

    *.任何数据类型和字符串相加,都会隐私的调用他们的toString()方法,然后返回他们拼接的结果。

    var a='2b';var b='c3';alert(a*b); 2bc3

    *.如果操作数都是布尔值,那么进行Number()转换,false为0,true为1,进行相加。

    var a=true;var b=false;alert(a+b); 1

    var a=true;var b=true;alert(a+b); 2

    b.关系运算符

    关系运算符的操作数可以是任何类型,如果操作数不是数值类型,将会隐式的转换

    1.运算的结果都是布尔值(ture;false)

    2.都是字符串的时候,会转换成ASCII码再比较;多个字符串只比较首个,首个相等再比较下一个。

      var a='abv';var b='aba';alert(a>b);结果ture.

      ASCII码:a=a; -> b=b; -> v>a;

    3.都是数值正常比较

    4.当一个是字符串,一个为数值的时候;会把字符串转化为数值类型,然后进行比较,如果不能转换为数值类型,则会返回NaN,返回false

    5.unfinished null

    6.如果两个都是数值型字符串,那么他们也只是比较第一个。

      var a='223';var b='31';alert(a>b); == false

    7.一个数值和布尔值比较,会把布尔值转化为数值后再较。

      false=0;true=1

    c.等性运算符 (== !=)

    会对操作数隐式的转换后再比较值

    (1)如果其中至少有一个是布尔值,那么会隐式的调用Number()进行转换,然后比较。

    (2)如果一个为字符串。另一个为数值,那么会隐式的调用Number()对字符串进行转换,如果转换不成功,则返回false;

    (3) undefined == null

      (a) 比较字符串的时候是比较他们的ASCII码是否相等

      (b) 比较两个数值的时候是比较他们的数值是否相等

      (c) 比较函数的时候,判断他们的位置是否相等。

    d.逻辑运算符

    A. 放在表达式里面用于判断。

    B. 给变量赋值

      var a= b && c

      如果一个运算数是对象,另一个是隐式的调用Boolean()函数,返回该对象。

      如果两个运算数都是对象,返回第二个对象。

      如果某个运算数是 null,返回 null。

      如果某个运算数是 NaN,返回 NaN。

      如果某个运算数是 undefined,发生错误。


      var a=b ||c

      如果一个运算数是对象,并且该对象左边的运算数隐式的调用Boolean()函数 值为 false,则返回该对象。

      如果两个运算数都是对象,返回第一个对象。

      如果最后一个运算数是 null,并且其他运算数值均为 false,则返回 null。

      如果最后一个运算数是 NaN,并且其他运算数值均为 false,则返回 NaN。

      如果某个运算数是 undefined,发生错误。

    3、语句类

    if(表达式){}else{}

    格式: var 变量= Boolean expression?真值:假值

    while(){}

    if语句和三元表达式里面的表达式会隐式的调用Boolean()函数,按照这个函数的转换规则,转换为相应的布尔值

  • 相关阅读:
    Codevs 2296 仪仗队 2008年省队选拔赛山东
    Codevs 1535 封锁阳光大学
    Codevs 1069 关押罪犯 2010年NOIP全国联赛提高组
    Codevs 1218 疫情控制 2012年NOIP全国联赛提高组
    Codevs 1684 垃圾陷阱
    洛谷 P1108 低价购买
    Vijos P1325桐桐的糖果计划
    Codevs 3289 花匠 2013年NOIP全国联赛提高组
    Codevs 2611 观光旅游(floyed最小环)
    C语言基础之彩色版C语言(内含linux)
  • 原文地址:https://www.cnblogs.com/chenrf/p/4908738.html
Copyright © 2011-2022 走看看