#

数组(array)、字符串(string)和数字(number)是一个程序最基本的组成部分

# 2.1 数组

数组可以容纳任何类型的值,可以是字符串、数字、对象(object),甚至是其他数组

使用 delete 运算符可以将单元从数组中删除,但是请注意,单元删除后,数组的 length 属性并不会发生变化。

indexOf(..)、concat(..)、forEach(..)

一些 DOM 查询操作会返回 DOM 元素列表,它们并非真正意义上的数组,但十分类似。

# 2.2 字符串

JavaScript 中字符串是不可变的,而数组是可变的。

许多数组函数用来处理字符串很方便。虽然字符串没有这些函数,但可以通过“借用”数组的非变更方法来处理字符串

var c = Array.prototype.join.call( a, "-" );
1

# 2.3 数字

JavaScript 只有一种数值类型:number(数字),包括“整数”和带小数的十进制数

要检测一个值是否是整数,可以使用 ES6 中的 Number.isInteger(..) 方法

要检测一个值是否是安全的整数,可以使用 ES6 中的 Number.isSafeInteger(..) 方法

# 2.4 特殊数值

undefined 类型只有一个值,即 undefined。null 类型也只有一个值,即 null。它们的名称既是类型也是值。

• null 指空值(empty value)

• undefined 指没有值(missing value)

• undefined 指从未赋值

• null 指曾赋过值,但是目前没有值

null 是一个特殊关键字,不是标识符,我们不能将其当作变量来使用和赋值。然而undefined 却是一个标识符,可以被当作变量来使用和赋值。

永远不要重新定义 undefined。

void 运算符

undefined 是一个内置标识符

表达式 void ___ 没有返回值,因此返回结果是 undefined。void 并不改变表达式的结果,只是让表达式不返回值:

  1. 不是数字的数字

这种情况下返回值为 NaN

NaN 意指“不是一个数字”

NaN 是一个特殊值,它和自身不相等

全局工具函数 isNaN(..) 来判断一个值是否是 NaN。

NaN 是 JavaScript 中唯 一一个不等于自身的值。

应该尽量使用 Number.isNaN(..)

加法和减法运算不会得到负零(negative zero)。

ES6 中新加入了一个工具方法 Object.is(..) 来判断两个值是否绝对相等

var a = 2 / "foo";
var b = -3 * 0;
Object.is( a, NaN ); // true
Object.is( b, -0 ); // true
Object.is( b, 0 ); // false
1
2
3
4
5

# 2.5 值和引用

JavaScript 中没有指针,引用的工作机制也不尽相同。在 JavaScript 中变量不可能成为指向另一个变量的引用

JavaScript 引用指向的是值。如果一个值有 10 个引用,这些引用指向的都是同一个值,它们相互之间没有引用 / 指向关系

# 2.6 小结

JavaScript 中的数组是通过数字索引的一组任意类型的值。字符串和数组类似,但是它们的行为特征不同,在将字符作为数组来处理时需要特别小心。JavaScript 中的数字包括“整数”和“浮点型”。

基本类型中定义了几个特殊的值。

null 类型只有一个值 null,undefined 类型也只有一个值 undefined。所有变量在赋值之前默认值都是 undefined。void 运算符返回 undefined。

数 字 类 型 有 几 个 特 殊 值, 包 括 NaN( 意 指“not a number”, 更 确 切 地 说 是“invalid number”)、+Infinity、-Infinity 和 -0。

简单标量基本类型值(字符串和数字等)通过值复制来赋值 / 传递,而复合值(对象等)通过引用复制来赋值 / 传递。JavaScript 中的引用和其他语言中的引用 / 指针不同,它们不能指向别的变量 / 引用,只能指向值。

上次更新: 2022/8/19 下午5:52:22