-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
面试官:说说JavaScript中的数据类型?区别? #51
Comments
再描述下【简单类型】和对应的【包装类】之间的关系及相互转换的内容 |
再加上【简单类型】是栈内存,值引用;【引用类型】是堆内存,地址引用。 |
简单数据类型中没有提及bigint数据类型? |
This was referenced Jul 20, 2022
Closed
Closed
niupi |
补充一下 转换方法
特殊情况
|
还有第三种类型,函数类型 (Function) |
还有bigint |
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
一、概述
前面我们讲到,
JS
中有六种简单数据类型:undefined
、null
、boolean
、string
、number
、symbol
,以及引用类型:object
但是我们在声明的时候只有一种数据类型,只有到运行期间才会确定当前类型
上面代码中,
x
的值在编译阶段是无法获取的,只有等到程序运行时才能知道虽然变量的数据类型是不确定的,但是各种运算符对数据类型是有要求的,如果运算子的类型与预期不符合,就会触发类型转换机制
常见的类型转换有:
二、显示转换
显示转换,即我们很清楚可以看到这里发生了类型的转变,常见的方法有:
Number()
将任意类型的值转化为数值
先给出类型转换规则:
实践一下:
从上面可以看到,
Number
转换的时候是很严格的,只要有一个字符无法转成数值,整个字符串就会被转为NaN
parseInt()
parseInt
相比Number
,就没那么严格了,parseInt
函数逐个解析字符,遇到不能转换的字符就停下来String()
可以将任意类型的值转化成字符串
给出转换规则图:
实践一下:
Boolean()
可以将任意类型的值转为布尔值,转换规则如下:
实践一下:
三、隐式转换
在隐式转换中,我们可能最大的疑惑是 :何时发生隐式转换?
我们这里可以归纳为两种情况发生隐式转换的场景:
==
、!=
、>
、<
)、if
、while
需要布尔值地方+
、-
、*
、/
、%
)除了上面的场景,还要求运算符两边的操作数不是同一类型
自动转换为布尔值
在需要布尔值的地方,就会将非布尔值的参数自动转为布尔值,系统内部会调用
Boolean
函数可以得出个小结:
除了上面几种会被转化成
false
,其他都换被转化成true
自动转换成字符串
遇到预期为字符串的地方,就会将非字符串的值自动转为字符串
具体规则是:先将复合类型的值转为原始类型的值,再将原始类型的值转为字符串
常发生在
+
运算中,一旦存在字符串,则会进行字符串拼接操作自动转换成数值
除了
+
有可能把运算子转为字符串,其他运算符都会把运算子自动转成数值null
转为数值时,值为0
。undefined
转为数值时,值为NaN
The text was updated successfully, but these errors were encountered: