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()函数,按照这个函数的转换规则,转换为相应的布尔值

  • 相关阅读:
    vue3父组件方法之间方法的互相调用
    vue3获取数据的注意点
    2021牛客暑期多校训练营5 D. Double Strings(DP/排列组合)
    2021牛客暑期多校训练营8 K. Yet Another Problem About Pi(几何)
    2021牛客暑期多校训练营8 D. OR(位运算/结论)
    2021牛客暑期多校训练营5 J. Jewels(二分图最大权匹配)
    关于C++ STL中对于set使用lower_bound进行二分查找的效率问题
    CSP202012-4 食材运输(70分)
    【k8s】Volume-pv-local
    【k8s】Volume-pvc
  • 原文地址:https://www.cnblogs.com/chenrf/p/4908738.html
Copyright © 2011-2022 走看看