JS 里的数据类型转换

        本篇主要介绍一些有关于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 里的数据类型转换)