我是靠谱客的博主 大意毛豆,最近开发中收集的这篇文章主要介绍JS基础面试高频(二):数据类型【进阶】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前文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()方法的区别就是可以转换undefinednull

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()函数强制转换。(''0undefinednullNaN转换结果为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基础面试高频(二):数据类型【进阶】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部