深入理解JavaScript类型转换

JavaScript类型转换

JS识别数据类型函数——typeof()

typeof()可以识别数据类型,比如typeof(“123”),就会输出string

六种数据类型:number、string、boolean、object([]、null)、undefined、function

不定义直接使用变量,只有typeof()才可以。返回字符串"undefined"

	console.log(typeof(a))
	console.log(typeof(typeof(a)))

输出:undefined string

JS显式类型转换

1、Number()
	console.log(Number("abc"),Number(true),Number(false),Number(undefined),Number(null))
	console.log(typeof(NaN))

输出:NaN 1 0 NaN 0
输出:number
【知识】NaN代表not a number,但它本身是一个number类型

2、parseInt(string,radix) 和 parseFloat()
	console.log(parseInt("123"),parseInt("123.4abc456"),parseInt(true),parseInt(undefined),parseInt(null))
	console.log(parseFloat("123"),parseFloat("123.4abc456"),parseFloat(true),parseFloat(undefined),parseFloat(null))

输出:123 123 NaN NaN NaN
输出:123 123.4 NaN NaN NaN

	console.log(parseInt(1001,2)) //2代表这个数是二进制,转化为十进制

输出:9 (二进制1001 是十进制9)

3、String() 和 .toString(radix)
	console.log(String(123),String(true),String(false),String(undefined),String(null))
	var num = 10;

输出:123 true false undefined null

	var num = 10;
	console.log(num.toString())
	console.log(num.toString(2)) //将一个十进制的数,转化为任意进制

输出:10
输出:1010
【注意】.toString()不可以转换undefined和null

【思考】如何把一个二进制(1010)转化为十六进制

	var n = 1010;
	var intN = parseInt(n,2);
	console.log("二进制:",n,"十进制:",intN,"十六进制:",intN.toString(16))

输出:二进制: 1010 十进制: 10 十六进制: a
思路:先把二进制转化成十进制,再把十进制转化为二进制

JS隐式类型转换

	 ++ -- + -加加、减减、正、负 number
	 + 加 number/string
	 - * / % 减、乘、除、求余 number
	 < > <= >= 小于、大于、小于等于、大于等于 number
	 == != 等于、不等于 number

在进行一些字符串和数字运算时,会隐式类型转换

字符串数字(如字符串"123"),和数字进行上面运算,除了加号,一般都会转换成数字进行运算。
特殊的是,数字+字符串进行的是字符串链接。
非数字字符串(如字符串"abc")- 数字结果为 NaN;

	var str1 = "1",
		str6 = "6"
		stra = "a",
		num1 = 1,
		num6 = 6;
	console.log(str6-num1,str6-str1,stra+num1,++str1)
	console.log(1=="1",1==="1",str6>num1)

输出:5 5 NaN “a1” 2
输出:true false true
===是全等于,不进行隐式类型转换的进行比较。

两个小案例:

	if(typeof(a) && -true + (+undefined) + ""){
		document.write("扎实")
	}

解析:“undefined”&& -1 + 0 + “” => “undefined”&&"-1"

	if(11 + "11" * 2 == 33){
		document.write("扎实")
	}

解析:11 + 22 == 33 先算乘除,再算加减

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值