javascript 中数据类型相应的检测与判断

js 数据类型检测

typeof返回可能的值(8种):
string、boolean、number、object、function、undefined、null、symbol

typeof是什么?
typeof是一个一元操作符,并不是函数

typeof用途
typeof null ==‘object’ // true
typeof [] ==‘object’ // true
typeof {} ==‘object’ // true
在实际开发中,typeof 只适合用来检测元素是否为undefiend和function

如何检测数据类型呢?
使用Object.prototype.toString
eg:Object.prototype.toString.call(x) === ‘[object Array]’

js中toString和valueOf的区别?
toString:将对象类型的原始值以字符串的形式返回

valueOf:返回该对象类型的原始值

在字符串运算里面优先调用toString()

在数值运行里面优先调用valueOf()

1:字符串加数字,数字就会转成字符串

2:数字减字符串,字符串转成数字,如果字符串不是纯数字,就会转成NaN

3:乘、除、大于、小于跟减法运算是一样的转换

关于==

1.undefined等于null

2.字符串和数字比较时,字符串转数字

3.数字为布尔比较时,布尔转数字

4.字符串和布尔比较时,两者转数字

console.log(undefined==null) //true

console.log(‘0’==0) //true 字符串转数字

console.log(0==false) //true 布尔转数字

console.log(‘0’==false) //2个都转成数字

console.log(null==false) //false

console.log(undefined==false)//false

引用类型转值类型

(1).toString()方法。

(2).valueOf()方法。

类型转换
要想弄清楚类型转换,必须要清楚数据类型有多少中
数据类型:boolean,null,undefined,number,string,symbol,objec

显式类型转换
Number(),string(),boolean()

number()
原始类型转换
数值:数值
字符串:纯数值转为数值否则NaN,空的为0
布尔值:true为1,false为0
undefined:为NaN
null:0
对象类型转换
先调用对象自身的valueOf方法,如果该方法返回原始类型的值(数值,字符串,布尔值,undefined,null),则直接对该值使用number()方法,不再进行后续操作
如果valueOf方法返回的是复合类型的值,再调用对象自身的toString()方法,如果toString()返回的是原始类型的值,直接使用number方法
如果toString方法返回的是复合类型的值,直接报错

string()
原始类型转换
数值:相应的字符串
字符串:原值
布尔值:原值
undefined:undefined
null:null

对象类型转换
先调用toString方法,如果toString方法返回的是原始类型的值,则直接调用string(),不在进行后续操作
如果toString方法返回的是复合类型的值,在调用valueOf方法,如果valueOf方法返回的是原始类型的值,则直接调用string方法
如果valueOf返回的是复合类型的值,则直接报错

boolean()
原始类型转换
undefiend,null,-0,+0,NaN,’'都是转为false,其它的转为true

隐式类型的转换
什么触发隐式类型的转换
四则运算,判断语句,native调用
[]+[] // ‘’
[]+{}
{}+[]
{}+{}
true+true // 2
1+{a:1} // 1[object Object] 首先{a:1}会被转换成一个字符串,然后字符串+数字,数字会被转成字符串

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值