js

作者: w_小伍 | 来源:发表于2020-09-01 16:02 被阅读0次

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.非加法类: 只要其中一方是数字,那么另一方就转为数字

相关文章

网友评论

      本文标题:js

      本文链接:https://www.haomeiwen.com/subject/chyvsktx.html