js数据类型 隐式转换
2018-10-17 本文已影响0人
牛大嘴
隐式转换
因为对象在跟Boolean比较时 对象先转换为字符串 在转换为Number 然后两者进行比较
空对象转换 字符串 '' Number('') 返回 0 0==false
var arr = []
if(arr){
console.log('true') //执行
}
if(arr==false){
console.log('true') //执行 因为对象在跟Boolean比较时 对象先转换为字符串 在转换为Number 然后两者进行比较
//空对象转换 字符串 '' Number('') 返回 0 0==false
}
因为Number({}) 返回NaN NaN不等于false 所以不执行
var json = {}
if(json){
console.log('true') //执行
}
if(json==false){
console.log('false') //error 因为Number({}) 返回NaN NaN不等于false 所以不执行
}
因为对象在跟字符串比较时 对象转换成字符串 然后两者在进行比较
var arr = [1,2,3]
var str = '1,2,3'
if(arr==str){
console.log('true') // 因为对象在跟字符串比较时 对象转换成字符串 然后两者在进行比较
}
因为对象在跟数字比较时 对象先转换成字符串 在转换成数字 然后两者在进行比较
var arr = ['1']
if(arr==1){
console.log('true') //因为对象在跟数字比较时 对象先转换成字符串 在转换成数字 然后两者在进行比较
}
隐式转换
var a = 1;
a = a + ""
console.log(typeof a) //String
var b = "1"
b = + b
console.log(typeof b) //Number
var c = 1
c = !!c
console.log(typeof c) //Boolean
console.log(null==undefined) //true 二者跟其它比较返回false
console.log(Number(null)) //返回 0
今天先跟大家分享到这.