美文网首页
JS 里的数据类型转换

JS 里的数据类型转换

作者: 饥人谷_子安 | 来源:发表于2019-03-29 21:42 被阅读0次

            本篇主要介绍一些有关于JS的数据类型转换的小知识

    类型转换

    number String boolean Symbol null undefined object
    number toString()/与''相加/String()全局函数 Boolean()/!! 赋值内容
    String toString()/与''相加/String()全局函数 Boolean()/!! 赋值内容
    boolean
    Symbol X Boolean()/!! 赋值内容
    null toString()报错,无法转换,null没有toString的API/与''相加/String()全局函数 Boolean()/!! 赋值内容
    undefined toString()报错,无法转换,不能读取undefied的toString属性/与''相加/String()全局函数 Boolean()/!! 赋值内容
    object toString,但是得到的却是[object Object],无法做到正确的转换,除非重写一个toString/与''相加/String()全局函数 Boolean()/!! 赋值内容

    转换字符串类型

    1.         通过console.log()打印出来的内容为字符串类型,在使用console.log()时,如果console.log()发现需要打印出来的内容类型不是字符串,会自动将内容的类型转换为字符串;
    2.         老司机如何快速转换为字符串:在赋值时,在该变量后加上一个+ ''即可,此时即使是无法进行转换的null也可以转换为字符串类型

    转换boolean类型

            在布尔类型中0代表着没有内容,为false;其他数字代表着存在内容,为true;''代表着没有内容,为false;' '代表着存在内容,为true;但在对象中则不一样了,只要是对象一律时true:

    •     在JS的number类型中,除0与NaN转换为boolean类型时为flase,其他数值皆为true;
    •     在JS的String类型中,除''转换为boolean类型时为flase,其他字符串转换时皆为true;
    •     在JS的null类型中,null类型的值转换为boolean时皆为flase;
    •     在JS的undefined类型中,undefined类型的值转换为boolean时皆为false;
    •     在JS的object类型中,object类型的值转换成boolean时皆为true;
          PS:JS中的五个falsy值分别为0,NaN,'',null,undefined;

    如何将其他类型转换为number类型?

            这里以将'1'转换为1的操作进行举例
            1. number('1') === 1;
            2. parseInt('1', 10) === 1;
            3. parseFloat('1.23') === 1.23;
            4. '1' - 0=== 1;//得到一个number类型的值;
            5. + '1' === 1; + '-1' === -1//取正,得到一个number类型,'+'表示取其原本的值,但是是以number的形式进行表示;
             PS:使用parserInt()对变量进行类型转换时,如果需要进行类型转换的变量内容并不是全是数字时,则会该变量的开头处开始,能转变多少值为number类型就转换多少;JS中中所有的数字都是以64位浮点位的形式存在的;JS存储字符时,每个字符长度为16位bit

    垃圾回收

    •         未被引用的对象就是垃圾;
    •         IE6浏览器中存在着bug,若未完全关闭IE6浏览器,只是关闭一个tab页面时,此时IE6不会认为未被引用的对象是垃圾,此时需要将该对象手动标记为垃圾:
    var fn = function(){};
    document.body.onclick = fn;
    fn = null//将fn对象手动标记为垃圾
    

    深拷贝与浅拷贝

            在JS中若改变一个变量时,不会影响其他变量,则称为深拷贝;JS中基本类型的赋值就是深拷贝,如:

    var a = 123;
    var b = 123;
    var obj = {
      'name': 'obj'
    }
    var obje = {
      'name': 'obje'
    }
    //上述代码就是进行深拷贝操作
    

            在JS中若改变一个变量时,对于其他变量产生影响,则称为浅拷贝;JS中object类型的赋值就是浅拷贝,如:

    var 对象 = {
      'name': '对象'
    };
    var 对象1 = 对象;
    对象1.name = '对象1';
    console.log(对象1.name);// => 对象1
    console.log(对象.name);// => 对象1
    

    相关文章

      网友评论

          本文标题:JS 里的数据类型转换

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