JavaScript 中的包装类型详解
JavaScript 中的包装类型详解
在 JavaScript 中,我们有基本类型和对象类型两种数据类型。
基本类型包括
String
,Number
,Boolean
,null
,undefined
和Symbol
。然而,当我们需要在这些基本类型上调用方法时,就需要用到 JavaScript 的包装类型。
什么是包装类型?
包装类型是 JavaScript 中的一种特殊对象,它们将基本类型的值“包装”在对象中,使我们能够在基本类型上调用方法。JavaScript 提供了三种包装类型:
String
,Number
和Boolean
。例如,当我们在一个字符串上调用方法时,JavaScript 会临时将其转换(或者说“包装”)为一个对象,这样就可以调用方法了。
在这个例子中,
str
是一个字符串基本类型,但我们可以在它上面调用toUpperCase
方法。这是因为 JavaScript 在后台临时将str
包装成了一个String
对象,然后在这个对象上调用了toUpperCase
方法。
包装类型的特性
值得注意的是,这种包装只是临时的,调用方法后,基本类型值会恢复到原来的状态。这就是所谓的包装类型。
此外,虽然
null
和undefined
也是基本类型,但它们没有对应的包装类型,也没有可以调用的方法。
包装类型的注意事项
虽然包装类型在 JavaScript 中非常有用,但在使用时也需要注意一些问题。例如,虽然
Boolean
对象是一个包装类型,但它在布尔上下文中总是被视为true
,无论它包装的值是true
还是false
。这可能会导致一些意想不到的结果。
在这个例子中,
bool
是一个Boolean
对象,其包装的值为false
。然而,因为bool
是一个对象,所以在if
语句中,它被视为true
,所以console.log
语句总是会执行。所以打印出run?
。总的来说,包装类型是 JavaScript 中一个重要的概念,它让我们能够在基本类型上调用方法,极大地增强了 JavaScript 的灵活性和功能性。然而,在使用时,我们也需要注意它的一些特性和潜在问题。
面试题
有可能会是面试题,先看以下代码:
看了上面关于包装类型的介绍,那会执行到 if 里面吗?
不会
为什么呢?
原因:
在 JavaScript 中,有两种类型的布尔值:基本类型的布尔值
(true 或 false)
和Boolean
对象(通过new Boolean()
创建的,它是一个包装对象,可以包装一个布尔值,但它本身是一个对象)。在 JavaScript 中,所有的对象(包括
Boolean
对象)在布尔上下文中都被视为true
,无论它们包装的值是true
还是false
。这就是为什么 if 语句中的
!a
不会执行的原因,因为a
是一个Boolean
对象,即使它包装的值是false
,在布尔上下文中也被视为true
,所以!a
的结果是false
。
技术前沿拓展
前端开发,你的认知不能仅局限于技术内,需要发散思维了解技术圈的前沿知识。细心的人会发现,开发内部工具的过程中,大量的页面、场景、组件等在不断重复,这种重复造轮子的工作,浪费工程师的大量时间。
介绍一款程序员都应该知道的软件JNPF快速开发平台,很多人都尝试用过它,它是功能的集大成者,任何信息化系统都可以基于它开发出来。
这是一个基于 Java Boot/.Net Core 构建的简单、跨平台快速开发框架。前后端封装了上千个常用类,方便扩展;集成了代码生成器,支持前后端业务代码生成,实现快速开发,提升工作效率;框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用;后端框架支持 Vue2、Vue3。如果你有闲暇时间,可以做个知识拓展。
看完本文如果觉得有用,记得点个赞支持,收藏起来说不定哪天就用上啦~
评论