美文网首页web前端学员笔记
代码报错不知道原因?看看你是否在类型的转换出了错

代码报错不知道原因?看看你是否在类型的转换出了错

作者: 特立独行的兔子_web | 来源:发表于2019-06-02 20:49 被阅读142次


    了解JavaScript中的五种基本数据类型与类型之间的转换

    首先我们先来了解下五种基本类型都有哪些

    基本数据类型: string number Boolean null undefined


    1. 字符串 String

                var a = '内容';

                var a = "内容";

    字符串特点:

            字符串一旦创建,它们的值不能改变, (要改变的话:先销毁原来的字符串,再使用新的字符串填         充变量)

    2. 数字  Number

            var a = 1;

            var b = 124;

        (1)数字有整数,浮点数;

                     所谓的浮点数值,就是该数值中必须包含一个小数点,并且小数点后必须至少有一位数字

                    由于保存浮点数值需要的内存空间是保存整数值的两倍,因此ECMAScript会不失时机地将浮点             数值转换为整数值

                            1. =》1

                            10.0 =》        10

        (2)范围从负无穷(-Infinity)到0 到正无穷(+Infinity);

                   * Infinity是无法参与计算的;

                   * 判断值是否超过JavaScript数值范围可以使用:

                        isFinite(num)

         (3) NaN :即非数值(Not a Number)是一个特殊的数值;

                     * NaN指的"不是一个数字",可以理解为"无效数值","失败数值", "坏数值";

                     * 用于指出数字类型中错误的情况:执行数学运算没有成功,这是失败后返回的结果;

                     * 任何涉及NaN的操作都会返回NaN;

                     * NaN与任何值都不相等;

                     * 判断是否"不是数值",参数为任意类型: isNaN();

    3. 布尔  Boolean

            var a = true;

            var a = false;

        只有两个字面值: true 和 false

        在ECMAScript中所有的类型的值都有与这两个Boolean值等价的值

    4. null  空

            var a = null;

            空对象指针      准备给对象用的坑

            null表示准备用来保存对象,还没有真正保存对象的值

            typeof检测null时会返回      "object" :

            最初在JavaScript最初实现中,JavaScript的值是由一个表示类型的标签和实际数值来表示的, 对象的类型标签是0,由于null代表的空指针,因此null的类型标签也成为了0,typeofnull就返回了object

    5. undefined  未定义;

            var a = undefined;

            var a;

            准备给基本数据类型用的坑

            只有一个值,在使用var声明变量但还没有加以初始化赋值时,这个变量的值就是undefined

    类型的转换

        (1) 转字符串:

                    String(变量):

                        null与undefined可使用这个转型函数

    var str = 'abc';var num = 234;var bool = true;var un = undefined;var nu = null;

    console.log(String(num)); // '234'

    console.log(String(bool)); // 'true'

    console.log(String(un)); // 'undefined'

    console.log(String(nu)); // 'null'

                    变量.toString(2 || 8 || 10 || 16)

                      参数是基数(几进制);数值、布尔值、对象和字符串都有这个方法,null与undefined则没有

               数字转为字符串的特殊方法:

                    数字.toFixed(位数)

                            保留小数点后几位,并采取四舍五入

      (2) 转数字:

                 *   Number()

                        布尔值:   true - 1;     false - 0;

    var bool = true;

    console.log(Number(bool));     //1

    var bool = false;

    console.log(Number(bool));     //0

                        Null:  0

    var nu = null;

    console.log(Number(nu));     //0

                        Undefined:  NaN

    var un = undefined;

    console.log(Number(un));      //NaN

                        字符串:

                                只包含数字(前面携带正负号)

                                前导零会被忽略

                                识别浮点、整数、16进制(自动转为同等大小的十进制数值)

                                空字符串  - 0

                                除上述之外 均为NaN

    var c = Number('1前端');      // NaN;

    var c = Number('1');      // 1;

    var c = Number('前端1');      // NaN;

                  *  parseInt()   转为整数

                            忽略字符串前面的空格,直至找到第一个非空字符,

                            如果第一个字符不是数字字符或者正负号          返回 NaN

                            如果第一个字符是数字字符,parseInt会继续解析第二个字符,知道解析完所有后续字符                        或者遇到了一个非数字字符

                            字符串以'0x'开头且后跟数字字符,就会将其当作一个十六进制整数

                            字符串以'0'开头且后跟数字字符,则会将其当作一个八进制数来解析

                            空字符串 返回 NaN

                            提供第二个参数:转换时使用的基数(进制)

    var a = parseInt('123.9前端');      //  123;

    var a = parseInt('前端123');     //  NaN;

                *    parseFloat()   转为浮点数

                            第一个小数点是有效的,第二个小数点是无效的

                            只解析十进制,无第二个参数

                            十六进制式的字符串始终被转换为 0

    var b = parseFloat('1239前端');     //  1239;

    var b = parseFloat('1.9前端');     //  1.9;

    var b = parseFloat('前端1.9');     // NaN;

      (3) 转布尔值:

                    Boolean()

                          0,空字符串,NaN, undefined ,null 转布尔都为false

    基本类型之间的转换是一个重点,一定要记清楚:

    JavaScript是一种弱类型语言,其中的数据类型在不同情况下会发生隐性的转换,如果不清楚类型的转换,可能之后的代码报错都找不到原因。

    相关文章

      网友评论

        本文标题:代码报错不知道原因?看看你是否在类型的转换出了错

        本文链接:https://www.haomeiwen.com/subject/phtfxctx.html