1.typeof和instanceof
typeof 是判断参数是什么类型的实例,返回值为说明运算数类型的字符串。
instanceof是造函数的prototyp用来判断一个对象在其原型链中是否存在一个构e属性
typeof能判断除了null之外的所有基本类型,判断引用类型时,出来函数外都会被判断为object
instanceof无法判断基本类型,但是可以正确判断引用类型
console.log(typeof (() => {}))// function
console.log(typeof null) //object
console.log(typeof undefined) // undefined
console.log(typeof [1,1,2])//object
console.log(typeof Function.prototype)//function
console.log('xiao' instanceof String)//false
console.log([1,2] instanceof Array)//true
console.log(new Date() instanceof Date)//true
2.当数字和字符串相加时,会把数字转成字符串
console.log(12 + 'xiao')// 12xiao
JavaScript 从左向右计算表达式。不同的次序会产生不同的结果
console.log(12 + 11 + 'xiao')// 23xiao
console.log('xiao' + 11 + 12)// xiao1112 由于第一个操作数是字符串,因此所有操作数都被视为字符串
3.undefined
当声明的变量未初始化时,该变量的默认值是 undefined
let a
console.log(a === undefined) // true
4.Number()和parseInt()
Number()
Boolean值,true和false值将分别被转为1和0。
数字值,整型就是整型,浮点型就是浮点型,科学计数就科学计数
null值,转为0
二进制,八进制,十六进制格式,转为十进制的数值
字符串为空,转为0
字符串中是纯科学计数,数值会直接转为十进制的数值
undefined , 对象 , 数组 ,字符串不为纯数字和科学计数时 返回NaN
parseInt()
数值正常转化,如果为浮点数,则转为整型,舍弃小数点后的数值
字符串起始包含数字时则数字那段转为数值,后面舍弃
二进制,八进制,十六进制转化时,转化为十进制的数值
科学计数法,能解析时正常解析,不能时返回第一个数字
Boolean,undefined , 对象 , 数组 ,空字符串,字符串开头不为纯数字和科学计数时 返回NaN
parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数
// 只有数字时
let a1 = '1212'
console.log(Number(a1)) // 1212
console.log(parseInt(a1)) // 1212
// 只有字母时
let a2 = 'asas'
console.log(Number(a2)) // NaN
console.log(parseInt(a2)) // NaN
// 数字字母
let a3 = '12as'
console.log(Number(a3)) // NaN
console.log(parseInt(a3)) // 12
// 字符串数
let a4 = '12.11'
console.log(Number(a4)) // 12.11
console.log(parseInt(a4)) // 12
// 为null
let a5 = null
console.log(Number(a5)) // 0
console.log(parseInt(a5)) // NaN
// 为Boolean
let a6 = true
console.log(Number(a6)) // 1
console.log(parseInt(a6)) // NaN
let a7 = false
console.log(Number(a7)) // 0
console.log(parseInt(a7)) // NaN
// 空字符串数
let a8 = ''
console.log(Number(a8)) // 0
console.log(parseInt(a8)) // NaN
5.加法类:只要运算有字符串,都会先转成字符串后再拼接起来
let a = 1 + '1' // 11
a = '1' + 2 // 12
a = 1 + 2 + '3' // 33
a = true + '1' // true1
a = null + '1' // null1
a = 1 + '2' + 3 //123
// 可以用数字加空字符串,把数字转成字符串
a = 12 + '' // 类型string
console.log(typeof a)
console.log(a)
6.非加法类: 只要其中一方是数字,那么另一方就转为数字
网友评论