js的变量类型判断和类型的转换

类型判断

  1. typeof:number、string、boolean、object(null,object,array)、undefined、function

类型转换

  1. 显示类型转换

Number(mix):mix转换为数字  
  Number(null)   //结果为0
  Number(true)  //结果为1
  Number(false)  //结果为0
  Number(undefined) //NAN
  Number("123abc") //NAN
  Number({}) //NAN

String(target):转为字符串
  String(true) //"true"
  String(null)  //"null"
  String({})  //"[object Object]"
  String(undefined)  //"undefined"

Boolean(target):转为布尔型
  Boolean("45e") //true
  Boolean(45) //true
  Boolean({})  //true
  Boolean([])  //true
  Boolean(0) //false
  Boolean("") //false
  Boolean(null)  //false
  Boolean(undefined)  //false

parseInt(target):将数字转为整数,
 除了数字和以数字开始的字符串,其余都是NAN
 举栗子:parseInt("100px")

parseFloat(target):将数字转为浮点数
 除了数字和以数字开始的字符串,其余都是NAN

target.toString():target转为字符串 
  undefined和null不能用toString
parseInt(3,8)  //3
parseInt(3,2)  //NaN
parseInt(3,0)  //3或者NaN 浏览器不同结果不同
  • 隐形类型转换
隐形类型转换 :内部调用的是显示转换
isNaN():判断是否是NaN
isNaN("abc"),isNaN(undefined),isNaN({})  结果为 true
调用isNaN()时,会将target先放在Number()里面转换,然后和NaN比对

++/--:  会将target先放在Number()里面转换,变成number类型
+/-(正负) : 会将target先放在Number()里面转换...
+ (加号):左右两边有字符串左右参数就转为字符串
*/% : 会将target先放在Number()里面转换...
&& || ! : 会将target先放在Boolean()里面转换
< > <= >= :左右两边有数字,Number(); 都是字符串比较ASCII码值
== != :会将target先放在Boolean()里面转换

var a = "abc";
console.log(typeof a) //string
a++
console.log(a) //NaN
console.log(typeof a) //number

/*
先Number("abc") 转换成number类型 ,结果是 NaN ; typeof NaN-->number
*/
//练习
var str = false + 1;
console.log(str); 
var demo = false == 1;
console.log(demo);
if(typeof(a)&&-true + (+undefined) + ""){
	console.log('基础')
}
if(11 + "11" * 2 == 33){
	console.log('基础')
}
!!" " + !!"" - !!false||document.write('能否打印')

​1.var str = false + 1 替换成 var str = Number( false ) + 1
  Number(false )=0,所以结果为1

2.var demo = false == 1  替换成  var demo = Number( false ) == 1 
                         进而为  var demo =       0         == 1
  结果为false

3.typeof(a)&&-true + (+undefined) + "" 
typeof(a) = "undefined", 
-true=-Number(true)=-1,
 (+undefined)=Number(undefined)=NaN
-1 + NaN = NaN
NaN + "" = "NaN"
"undefined"&&"NaN"==> true

4.
!!" " ==> true
!!"" ==> false
!!false ==>false
 true + false - false || document.write("ff") ==> undefined
 1+0-1 == > 1
1||xx ===> || 第一个为TRUE后面不执行
// 第一题
var x=1
if(function f(){}){
 x+= typeof(f)
}
console.log(x) // 1undefined

// 第二题
(window.foo || (window.foo='bar'))
// 先算括号里面的 window.foo='bar'
console.log(foo) // 'bar'

(window.foo || window.foo='bar') 会报错,因为||运算符高于 赋值运算符

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值