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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353