JavaScript类型转换

转换为字符串类型

方式一:

  1. 对于Number类型和Boolean类型来说, 直接利用变量调用toString()方法即可
  2. toString()方法会将调用者转换为字符串, 并且会将转换后的结果返回给我们,不会修改调用者原有的值
var num = 666;
var bl = true;
var res1 = num.toString();
var res2 = bl.toString();
  1. 对于null和undefined来说, 不能通过调用toString()方法来转换
var n = null;
var u = undefined;
var res3 = n.toString();//报错
var res4 = u.toString();//报错
  1. toString()括号里的值表示转换为多少进制
var num = 666;
var res4 = num.toString(2);
console.log(res4);//1010011010
var res5 = num.toString(16);
console.log(res5);//29a

方式二

  1. 将需要转换的数据传递给String()函数
  2. String()函数可以将Number/Boolean/null/undefined转换为字符串
    var num = 666;
    var bl = true;
    var n = null;
    var u = undefined;
    
    var res1 = String(num);
    var res2 = String(bl);
    var res3 = String(n);
    var res4 = String(u);
    console.log(res1); //666
    console.log(res2); //true
    console.log(res3); //null
    console.log(res4); //undefined

方式三

  1. 利用算数运算符的加法运算来转换, Number/Boolean/null/undefined转换为字符串
    var res1 = num + "";
    var res2 = bl + "";
    var res3 = n + "";
    var res4 = u + "";

    console.log(res1);
    console.log(res2);
    console.log(res3); 
    console.log(res4); //undefined
  1. 任何类型和字符串想加,都会先转换为字符串之后再想加

转换为Number类型

方式一

  1. 将需要转换的数据传递给Number()函数
  2. 转换对象为字符串
    1. 都是数字, 正常转换
    2. 中部仅仅有数字,转换为NaN
    3. 没有内容"" " ",转换为0
  3. 对于布尔类型: true转换为1, false转换为0
  4. 对于null: 转换为0
  5. 对于undefined: 转换为NaN
  6. 通过Number函数或者通过+-运算符转换,都不能转换复杂的字符串
    var bl = true;
    var n = null;
    var u = undefined;
    var str1 = "123";
    var str2 = "123abc";

    var res1 = Number(bl);
    var res2 = Number(n);
    var res3 = Number(u);
    var res4 = Number(str1);
    var res5 = Number(str2);

    console.log(res1); //1
    console.log(res2); //0
    console.log(res3); //NaN
    console.log(res4); //123
    console.log(res5); //NaN

方式二

  1. 利用算数运算符来转换
  2. 在需要转换的类型前面加上+加号或者-减号即可
  3. +加号不会改变数据的正负性,减号会改变
  4. 通过Number函数或者通过+-运算符转换,都不能转换复杂的字符串
    var bl = true;
    var n = null;
    var u = undefined;
    var str1 = "123";
    var str2 = "123abc";
    
    var res1 = +bl;
    var res2 = +n;
    var res3 = +u;
    var res4 = -str1;
    var res5 = +str2;

    console.log(res1); //1
    console.log(res2); //0
    console.log(res3); //NaN
    console.log(res4); //-123
    console.log(res5); //NaN

方式三

  1. 通过parseInt()/parseFloat()函数
  2. parseInt: 只能提取整数
  3. parseFloat: 可以提取小数
  4. 可以转换复杂字符串
    var num1 = 3.14;
    var bl = true;
    var n = null;
    var u = undefined;
    var str1 = "123";
    var str2 = "123abc123";

    var res1 = parseFloat(num1);
    var res2 = parseInt(bl);
    var res3 = parseInt(n);
    var res4 = parseInt(u);
    var res5 = parseInt(str1);
    var res6 = parseInt(str2);

    console.log(res1); //3.14
    console.log(res2); //NaN
    console.log(res3); //NaN
    console.log(res4); //NaN
    console.log(res5); //123
    console.log(res6); //123
  1. 不能转换boolean/null/undefined
  2. parseInt/parseFloat ,会从左至右的提取,一旦被中断后续的就提取不到了
  3. 对于parseFloat来说,只能提取一个点,第二个点会被中断
var str3 = "3.123.66";
var res7 = parseFloat(str3);
console.log(res7); //3.123

转换为boolean

  1. 将需要转换的数据传递给Boolean()函数即可
  2. 对于字符串而言:
    1. 只要是空字符串(没有任何内容), 都会转换为false
    2. 只要字符串中有内容(包含空格/Table),都会转换为true
  3. 对于Number类型而言:只要不是0都会转换为true,只有0会转换为false
  4. 对于null和undefined而言, 都会转换为false
  5. 对于NaN也会转换为false
总结:"" / 0 / null / undefined / NaN  --> false
    var num = 666;
    var n = null;
    var u = undefined;
    var str4 = "";
    var str5 = " ";
    
    var res1 = Boolean(num);
    var res2 = Boolean(u);
    var res3 = Boolean(n);
    var res4 = Boolean(str4);
    var res5 = Boolean(str5);

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

推荐阅读更多精彩内容

  • Javascript 中有6种基本类型(包括 symbol),以及对象类型,他们在不同的运算中会被系统转化为不同是...
    faremax阅读 793评论 0 3
  • 强制数据类型转换:指的是一个数据类型转换为其他数据类型 String number 或 boolean 将其他数据...
    hi武林高手阅读 227评论 0 2
  • 参考的这篇文章进行的总结+个人理解 基础知识: 1️⃣强制转换有三种类型方式,Number、String、Bool...
    黑莓小宝闪电朵朵阅读 193评论 0 2
  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 1,014评论 0 1
  • 2018.2.24.晴 回到深圳的第一天,天气很给力,洗了所有的衣服,全部都晒干了,真好。 下午和弟弟妹妹们一起去...
    叮铛之眼阅读 258评论 0 2