JavaScript数据类型和数据结构
动态和弱类型
设foo=42;// foo现在是一个数字 foo=“bar”;// foo现在是一个字符串 foo=真;// foo现在是一个布尔值
常量foo=42;// foo是一个数字 常量结果=foo+“1”;// JavaScript将foo强制为字符串,因此它可以与其他操作数连接 console.log(结果);// 421
基本值
|
||
---|---|---|
|
||
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Null类型
未定义的类型
一 返回 没有值的语句( 回报; )隐式返回 未定义 . 访问不存在的 对象 财产( 对象不存在 )收益 未定义 . 未初始化的变量声明( 设x; )隐式地将变量初始化为 未定义 . 许多方法,例如 Array.prototype.find() 和 Map.prototype.get() ,返回 未定义 找不到元素时。
布尔型
数字类型
正值大于 数量。 最大值(_V) 已转换为 +无限 . 正值小于 数量。 最小值(_V) 已转换为 +0 . 负值小于- 数量。 最大值(_V) 已转换为 -无限 . 负值大于- 数量。 最小值(_V) 已转换为 -0 .
console.log(42/+0);// 无穷 控制台.log(42/-0);//- 无穷
BigInt类型
//BigInt公司 const x=BigInt(数字.MAX_SAFE_INTEGER);// 9007199254740991年 x+1n===x+2n;// 错误,因为9007199254740992n和9007199244740993n不相等 //编号 数量。 MAX_SAFE_INTEGER+1===数量。 MAX_SAFE_INTEGER+2;// 正确,因为两者都是9007199254740992
字符串类型
小心“字符串输入”你的代码!
使用串联很容易构建复杂字符串。 字符串很容易调试(您看到的打印内容总是字符串中的内容)。 字符串是许多API的公约数( 输入字段 , 本地存储器 值, 获取() 使用时的响应 响应.text() 等),并且只使用字符串可能很诱人。
符号类型
物体
属性
Data属性
价值 -
由属性的get访问检索到的值。 可以是任何JavaScript值。 可写的 -
一个布尔值,指示是否可以通过赋值更改属性。 可枚举的 -
一个布尔值,指示属性是否可以由 用于。。。 在里面 循环。 另请参见 属性的可枚举性和所有权 可枚举性如何与其他函数和语法交互。 可配置的 -
一个布尔值,指示属性是否可以删除、是否可以更改为访问器属性以及是否可以更改其属性。
访问器属性
得到 -
使用空参数列表调用的函数,用于在执行get访问值时检索属性值。 另请参见 吸气剂 。可能是 未定义 . 设置 -
使用包含指定值的参数调用的函数。 每当试图更改指定属性时执行。 另请参见 设置器 。可能是 未定义 . 可枚举的 -
一个布尔值,指示属性是否可以由 用于。。。 在里面 循环。 另请参见 财产的可枚举性和所有权 可枚举性如何与其他函数和语法交互。 可配置的 -
一个布尔值,指示属性是否可以删除、是否可以更改为数据属性以及是否可以更改其属性。
日期
索引集合:数组和类型化数组
键控集合:贴图、集、弱贴图、弱集
结构化数据:JSON
标准库中的更多对象
类型强制
原始强制
这个 日期() 构造函数,当它收到一个不是 日期 instance-strings表示日期字符串,而数字表示时间戳。 这个 + 操作符-如果一个操作数是字符串,则执行字符串串联; 否则,执行数值加法。 这个 == 操作符-如果一个操作数是基元,而另一个是对象,则对象将转换为没有首选类型的基元值。
控制台.log({}+[]);// “[对象对象]”
数字强制
其他胁迫
原始强制 : [Symbol.toPrimitive](“默认”) → 值() → toString() 数字强制 , 数字强制 , BigInt强制 : [Symbol.toPrimitive](“数字”) → 值() → toString() 字符串强制 : [Symbol.toPrimitive](“字符串”) → toString() → 值()
另请参见
JavaScript数据结构和算法 作者:Oleksii Trekhleb JavaScript中的计算机科学 作者:Nicholas C.Zakas