概述
前文JS基础知识(一):数据类型
介绍了几种数据类型,这一篇来讲一下数据类型的进阶使用
1.数据类型的转换
转换为String类型
1.toString()
方法。(基础数据类型本身没有该方法,但会通过原型链去找原型对象中的方法)
const a = 123
console.log(a.toString()) // '123'
const b = true
console.log(b.toString()) // 'true'
const c = Symbol()
console.log(c.toString()) // 'Symbol()'
const d = null
console.log(d.toString()) // TypeError: Cannot read property 'toString' of null
const e = undefined
console.log(e.toString()) // TypeError: Cannot read property 'toString' of undefined
const f = [1, 2, 3]
console.log(f.toString()) // '1,2,3'
const g = { a: 123 }
console.log(g.toString()) // [object Object]
2.String()
函数强制转换。(与toString()
方法的区别就是可以转换undefined
和null
)
const a = 123
console.log(String(a)) // '123'
const b = true
console.log(String(b)) // 'true'
const c = Symbol()
console.log(String(c)) // 'Symbol()'
const d = null
console.log(String(d)) // 'null'
const e = undefined
console.log(String(e)) // 'undefined'
const f = [1, 2, 3]
console.log(String(f)) // '1,2,3'
const g = { a: 123 }
console.log(String(g)) // [object Object]
3.隐式转换。(当+
运算符的一侧为String类型的时候,在运算的过程就会把其它类型隐式的转换为String类型)
console.log('hello:' + 123) // 'hello:123'
console.log('hello:' + true) // 'hello:true'
console.log('hello:' + undefined) // 'hello:undefined'
console.log('hello:' + null) // 'hello:null'
console.log('hello:' + [1, 2, 3]) // 'hello:1,2,3'
console.log('hello:' + { a: 123 }) // 'hello:[object Object]'
转换为Number类型
1.Number()
函数强制转换。(正常数字形式的字符串、布尔类型、null可以转换成功,其它转换失败的情况下都是NaN
)
console.log(Number('123')) // 123
console.log(Number(true)) // 1
console.log(Number(false)) // 0
console.log(Number(null)) // 0
console.log(Number(undefined)) // NaN
console.log(Number('123a')) // NaN
2.隐式转换。(当-
运算符的一侧为Number类型的时)
console.log('12' - 1) // 11
console.log(12 - '1') // 11
转换为Boolean类型
1.Boolean()
函数强制转换。(''
、0
、undefined
、null
、NaN
转换结果为false,其余情况都是true)
console.log(Boolean('')) // false
console.log(Boolean(0)) // false
console.log(Boolean(undefined)) // false
console.log(Boolean(null)) // false
console.log(Boolean(NaN)) // false
2.隐式转换。(条件判断中会转换成布尔类型,但要注意下==
和===
的区别)
console.log(1 == true) // true
console.log(1 === true) // false
隐式类型转换一般只发生在==
条件判断中,===
是还要判断数据类型是否一致
2.数据类型的验证
typeof
一般用于验证基础数据类型,除了null
之外的其它基础数据类型都是可以得到正确的验证结果
console.log(typeof '123') // string
console.log(typeof 123) // number
console.log(typeof true) // boolean
console.log(typeof undefined) // undefined
console.log(typeof [1, 2, 3]) // object
console.log(typeof { a: 1 }) // object
// 比较特殊的验证
console.log(typeof null) // object
console.log(typeof function () {}) // function
instanceof
一般用于验证引用数据类型,用来比较一个对象是否为某一个构造函数的实例,返回值是布尔类型
const arr = []
const obj = {}
const fn = function () {}
console.log(arr instanceof Array) // true
console.log(arr instanceof Object) // true
console.log(obj instanceof Object) // true
console.log(fn instanceof Function) // true
Object.prototype.toString.call()
也可以用来验证数据类型
function proCall(val) {
return Object.prototype.toString.call(val)
}
const num = 1
console.log(proCall(num)) // [object Number]
const arr = []
console.log(proCall(arr)) // [object Array]
const fn = function () {}
console.log(proCall(fn)) // [object Function]
关注公众号【麋鹿迷了路】,发送js
获取更多学习资源
喜欢的小伙伴们点个赞吧(〃‘▽’〃) ̄ω ̄= ( ̄▽ ̄)~*
最后
以上就是大意毛豆为你收集整理的JS基础面试高频(二):数据类型【进阶】的全部内容,希望文章能够帮你解决JS基础面试高频(二):数据类型【进阶】所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复