0%

js的数据类型

JS的数据类型

基本数据类型六种:string、number、boolean、null、undefined、symbol

对象类型:也叫引用类型,主要包括Array和function

为什么说JS是弱类型的语言

js在声明变量的时候并没有预先确定的类型,变量的值就是它的类型,同一值在不同的情况下会发生强制转换变成不同的类型。所以说它是弱类型的语言。

js强制转换的规则

js有一个内置ToPrimitive(obj,type)算法,用于将引用引用类型转换成基本类型

String 运算符号转换规则

null=>”null” undefined=>undefined true=>’trur’ false=>’false’

number运算符强制转换

null=>0; undefined=>NaN; ture=>1; false=>0;

字符串转换遵循数字常量规则,转换失败返回NaN

Boolean

除了undefined/null/0/-0/NaN/空字符串为false,其他为true.

js强制转换的不同场景

什么时候自动转换成string类型?

字符串类型的而转换,主要发生在字符串的加法运算中

1
2
3
4
5
'2' + 1// '21'
'2' + true// "2true"
'2' + false// "2false"
'2' + undefined// "2undefined"
'2' + null// "2null"

运算隐式转换

+号左右两边分别进行取值,进行ToPrimitive()操作

分别获取左右转换之后的值,如果存在String,则对其进行Tostring处理后进行拼接

其他都按照ToNumber处理(调用valueOf)

在转换时ToPrimitive,除去Date为string外,其余都按照ToNumber处理

什么时候自动转换成Number

有加法运算符(-*也可以),但是没有String类型的时候,会优先转换成数字类型

toString和String的区别

toString不可以将null和undefined转换成字符串,可以带进制转换,如334.toString(2),

而string可以转换null和undefined,但是不可以进行进制转换