1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| 整数、浮点数(Number)、布尔(Boolean,true 和 false)
null:代表空值(通常手动赋值),转为布尔类型表现为 false undefined:代表未定义(默认值),转为布尔类型表现为 false NaN:数字类型,代表无效的数字,转为布尔类型表现为 false
类型转换: 比如:Number('1') 转浮点数:parseFloat 转整数:parseInt
字符串(String): length 属性,获得长度 (可以取索引,但不能使用负数和切片,索引越界也不会报错) slice 方法,切片,只有两个参数 includes 方法,判断是否包含某个字符,在较新的 ES 标准中添加 indexOf 方法,判断是否包含某个字符,并返回索引 split 方法,同 py replace 方法,只会替换第一个匹配的 replaceAll 方法,同 py replace,在较新的 ES 标准中添加 格式化字符串(ES6):`Hello ${name}`
数组(Array): 可以包含不同类型类型数据(同 py) length 属性,获得长度 push 方法,添加元素 (可以取索引,但不能使用负数和切片,索引越界也不会报错) slice 方法,切片,只有两个参数 includes 方法,判断元素是否存在于数组中,在较新的 ES 标准中添加 indexOf 方法,得到相等的第一个元素在数组中的索引,没有则返回 -1 concat 方法,合并两个数组,不能像 py 使用加法运算 join 方法,同 py 字符串的 join 方法
对象(Object): js 没有字典,使用对象进行代替 我们定义的对象都是 Object 类的实例对象(几乎所有对象都是 Object 类的实例对象) Object.keys 方法,返回对象的所有属性名称 Object.values 方法,返回对象的所有属性值 取不存在的属性值时,不会报错 判断两个对象是否相等时,判断的是内存地址是否相等,而不是值 取属性有两种方式: obj.attr obj["attr"]
typeof: 用于得到数据类型,写法:typeof a typeof null; // "object"(历史遗留 bug) null === a,判断一个变量是否是 null typeof [1, 2]; // "object"(无法区分数组和普通对象) Array.isArray 方法:判断参数是否是数组 typeof NaN; // "number"(无法区分无效数字) Number.isNaN 方法:判断参数是否是 NaN
加法运算: 数字 + 数字 数字 + 布尔、null,右侧被转为数字 数字 + undefined,undefined 被转为 NaN 数字 + 对象,会使用对象的 valueOf 方法的返回值进行计算,类似 py 类中的魔法方法(如 __len__) 字符串 + 字符串 字符串 + 任意类型,右侧被转为字符串 字符串 + 对象,会使用对象的 toString 方法的返回值进行计算
|