d4——JS中关于数据类型转化和运算符的比较

之前一直觉得数据类型转化这个模块特别简单,感觉自己掌握的也挺好,直到最近再翻出来看笔记的时候才发现自己掌握的很乱,所以就打算重新整理这块的知识点,如果有总结不得当的地方,也希望有大佬能及时指出.
为什么要有数据类型转化?
JS是一门弱类型语言,变量是没有限制的,可以随便赋值,但是运算符在进行运算时会要求变量的类型和运算符期望的类型一致,所以当不同类型进行加减运算时,就存在类型转换;
而类型转换又主要分为两大类:强制类型转换和隐式自动类型转换
强制类型转换
转为数值型
1. Number():
可以把任意值转换成数值,如果要转换的字符串中只要有一个不是数值的字符,会返回NaN;

console.log(Number('12.34'));//12.34
console.log(Number('12.aa')) //NaN
console.log(Number(null));//0
console.log(Number(true));//1
console.log(Number(undefined));//NaN
console.log(Number('\t\3.23233232\t'));//Number 可以自动去掉两头空白符,输出3.23

注意:
在强制转化为数值的条件下,任何数据类型都会被转化为number型,其中null=0 true=1 undefined=NaN
小数类型的字符串,转化后得到原数字

2.parseInt():
通常是将字符串或者小数转整型, 转化后的数据类型是number,如果字符串开头是非数字,则返回NaN;
其他类型都是返回NaN 包括(undefined true null

var n1=parseInt(3.14);
var n2 = parseInt('1a3.78');
var n3=parseInt(true);
var n4=parseInt(null);
var n5=parseInt(undefined);
console.log(n1,typeof n1);//3  number
console.log(n2,typeof n2);//1 number
console.log(n3,typeof n3);//NaN number
console.log(n4,typeof n4);//NaN
console.log(n5,typeof n5);//NaN

3.parseFloat():
用于将字符串型转化为浮点型,转化后的数据类型是number;如果字符串开头是非数字,则返回NaN;

var n1=parseFloat('3.14a');//3.14
var n2=parseFloat('4a');//4
var n3=parseFloat('a5.13');//NaN
var n4=parseFloat(null);
console.log(n4,typeof n4);//NaN  number
console.log(n1,n2,n3);

转为字符串型
string():适用于任何数据类型,(null,undefined转化后为null和undefined)通常适用于没有意义的变量
toString ():可以把一个逻辑值转化为字符串,但是null和undefined没有toString ()方法

var   a='shf';
var   b=null;
var   c=undefined;
console.log(a.toString());//shf
console.log(b.toString());//报错
console.log(c.toString());//报错
console.log(String(a));//a
console.log(String(b));//null
console.log(String(c));//undefined

转化为boolean
null ,空字符串,0 ,undefined,NaN会转换成false 其他都会转换成true

console.log(Boolean(1));//true
console.log(Boolean(0));//false
console.log(Boolean(11));//true
console.log(Boolean(-10));//true
console.log(Boolean("哈哈"));//true
console.log(Boolean(""));//false  空字符串
console.log(Boolean(null));//false
console.log(Boolean(undefined));//false
console.log(1&&3||0&&4);//3 
console.log(4&&3-2);//1 
var num =5;		
num>2&&console.log(a);//报错
num<6||console.log(a);//什么也不输出

布尔类型里面两种特殊例子:

var a = "123abc";
console.log(a);//123abc
console.log(!!a);//true
console.log(!a);//false
console.log(typeof(!!a));//bool
console.log(+a);//NaN
console.log(typeof(+a));//number
console.log(typeof a);//string

隐式数据类型转化
在运算过程中,程序自己进行数据类型转化,自动调用Number()函数
只有加号两端有字符串的时候,则运算结果就都是字符串

var a=1,b='2',c=true;
console.log(a+b+c);//12true
console.log(b+c+a);//2true1
console.log(c+a+b);//22

比较运算符
这部分主要以习题的方式帮助理解

下面的每条语句输出值是什么:
var message;
var age;
console.log(message);
console.log(age);
console.log(message===undefined);
console.log(typeof null);//object
console.log(null==undefined);//true  ===三个等号也是true
//为什么最后一条语句是true呢?  null类型被看做空对象指针,只有一个值,即空值,
//所以用typeof操作符去检测,结果就是object
//但是这个null值是在内存空间里已经声明了的,只是里面没有值,
//所以在某种特殊的意义上也相当于未定义,所以等价于undefined
console.log(11 === "11");//false 严格相等
console.log(NaN == NaN);//两个NaN不能比较
console.log(11 + "11" * 2 === 33);//true
console.log(false + 1);//1         
console.log(false == 1); //false      
console.log(false + true);//1  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值