javascript 的数据类型转换详解

javascript 的数据类型转换详解

javascript的数据类型转换分为显示类型转换和隐式类型转换

1.显示类型转换

  • Number(s) : 转换为数字
var num = Number("123.12");  //num --> 123.12
var num = Number("-123.12"); //num --> -123.12
var num = Number(true);      //num --> 1
var num = Number(false);     //num --> 0
var num = Number(null);      //num --> 0
var num = Number(undefined); //num --> NaN
var num = Number("a");       //num --> NaN
var num = Number("12ab");    //num --> NaN
  • parseInt(string,radix) : 转换为整数(去尾法) radix : 2-36进制
//一个参数时,默认为十进制数
 var num = parseInt(123.98);     //num --> 123
 var num = parseInt("123.98");   //num --> 123
 var num = parseInt("100px");    //num --> 100
 var num = parseInt(true);       //num --> NaN
 var num = parseInt(false);      //num --> NaN
 var num = parseInt(null);       //num --> NaN
 var num = parseInt("a");        //num --> NaN
 
 //两个参数时,第二个参数表示进制,把字符串转换为整数后,
 //作为一个该进制的整数,再转化为十进制的数
 
 var num = parseInt("12.98",16);   //num --> 18
 //12.98 --> 12(16进制) --> 1*16^1 + 2*16^0 = 18
 
 var num = parseInt("11.98",2);    //num --> 3
 //11.98 --> 11(2进制) --> 1*2^1 + 1*2^0 = 3

 var num = parseInt("2a.8",16);    //num --> 42
 //"2a.8" --> 2a(16进制) --> 2*16^1 + 10*16^0 = 42
  • parseFloat(string) : 转换为浮点数
//遇到非数字和非首个小数点的就截去
 var num = parseFloat("123.98");     //num --> 123.98
 var num = parseFloat("123.98.2");   //num --> 123.98
 var num = parseFloat("123abc");    //num --> 123
 var num = parseFloat("123.98abc");  //num --> 123.98
  • String(s) : 转换为字符串
 var num = String(123.12);   //num --> "123.12"
 var num = String(true);     //num --> "true"
 var num = String(undefined);//num --> "undefined"
  • toString(radix) : 与String()差不多,用法不一样
    注意: undefined 和 null 不能用toString()
var a = 12;
var num = a.toString();//  num --> "123"
//radix为目标进制,转化为目标进制的数的字符串形式

var a = 12;             //12转换为8进制
var num = a.toString(8);//  num --> "14" 
  • Boolean(s) : 转换为布尔值
//0, null, NaN, undefined, 空字符串"" 都转换为false
 var num = Boolean(0);         //num --> false
 var num = Boolean(null);      //num --> false
 var num = Boolean("");        //num --> false
 var num = Boolean(undefined); //num --> false
 var num = Boolean(NaN);       //num --> false
 //除了以上几个外都转换为true

2.隐式类型转换

隐式类型转换就是javascript内部调用显示类型转换而得到的结果

  • isNaN(s) : 内部先调用Number(s)得到的结果再与 NaN比较
var num =isNaN("12ab");    // num --> true
var num =isNaN(undefined); // num --> true
var num =isNaN(null);      // num --> false
  • ++ / - - 和 +/ - (一元正负号) : 内部先调用Number(),再作运算
var num = "123";
num++;         //num --> 124 
+ num;         //num --> 123

var num = "123abc";
num++;         //num --> NaN
  • + (加号) : 当加号两侧有一个字符串就会内部调用String()
var str = 2 + "a";  //str --> "2a"
  • - (减号) * (乘号) / (除号) %(取模) :
    先符号两边调用Number(),再作运算
var num = "12" - 1;  //num --> 11
var num = "12" * 1;  //num --> 12
var num = "a" - 1;   //num --> NaN
var num = true - 1;  //num --> 0
var num = false - 1; //num --> -1
  • > < >= <= : 若一边为字符一边为数字则把字符转换为数字
    若两边均为字符则直接比较ASCII码值
var a = "2" > 1;        //a --> true;
var a = true >= false;  // a--> true; 
  • == 和 != :先把字符转换为数字
var num = "1" == 1;  //num --> true;
var num = "2" != 1;  //num --> true;
  • 不发生类型转换 : === 和 !== (类型也要相同)
var num = "1" === 1;  //num --> false;
  • 特殊情况 : null == undefined, NaN != NaN
var a = null == undefined;  //a --> true;
var a = NaN == NaN;         //a --> false;

大家好,我是LA,萌新一枚,平常主要写一些基础知识加深自己的印象,能和大家分享我也很高兴.我会尽力写一些能帮助到大家的文章,如果文章中有错误的地方,请各位前辈指出,我一定及时改正,希望能在这和大家一起学习,一起成长!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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

推荐阅读更多精彩内容