数据类型

数据类型

  • 原始类型:numberstringbooleannullundefinedsymbol

  • 引用类型: object

原始类型(原始值)存储在(stack)中;引用类型存储在(heap)中,其指针存粗在中。

Number

类型

  • 整形:默认为10进制。16进制以 0x0X 开头,跟随0-9、a-f(表示10-15)组成。

  • 浮点型:不能精确类似0.1这样的数,只能极其近似0.1。这在任何使用二进制浮点数的编程语言中都如此。

范围

  • Number.MAX_VALUE=1.7976931348623157e+308

  • Number.MIN_VALUE=5e-324

  • Number.POSITIVE_INFINITY=Infinity

  • Number.NEGATIVE_INFINITY=-Infinity

方法

  • toString(?进制):把数字转换成指定进制形式的字符串,参数为进制,默认十进制

  • toFixed(?保修位数):把数字转换成十进制形式的字符串(四舍五入),参数为保留几位小数,默认为0

转换

Number()强转

parseInt()和parseFloat()函数转换

  • 如果接收的不是数字或者字符串,其他均转换为NaN

  • 如果接收的字符串还有非数字的字符,那么从首部开始查找到非数字字符为止,然后转换前面的数字字符

  • 第二个参数为进制数,默认为十进制

String

string是一组由16位Unicode字符组成的不可变的有序序列,其长度length是指所含字符的个数。

方法

  • concat(:?string,...):连接字符串,返回新字符串

  • charAt(:?string):返回指定下标的字符。如果超出有效范围,返回为空字符串

  • charCodeAt(:?string):返回指定下标的字符的Unicode编码。如果指定位置没有字符,返回NaN

  • slice():返回字符串片段。参数1为开始的下标,参数2为获取长度

  • indexOf()lastIndexOf():返回子串在字符串中的下标,如果未找到,返回-1

  • substr():返回字符串片段。参数1为开始的下标,参数2为获取长度

  • substring():返回字符串片段。参数1和参数2或为起始下标和获取长度,取最小值为开始的下标,如果参数有undefined、NaN或者负数,那么将其替换为0

  • toUpperCase()toLowerCase():首字符转为大/小写

  • trim():删除前后空格,返回新字符串

  • split():按条件分割字符串为数组。参数1为分割条件,参数2为返回数组的最大长度

  • replace():按指定替换字符串

  • search():返回子串在字符串中的下标,如果未找到,返回-1

  • match():查找第一个匹配的子串,作为数组返回,未找到返回null

String()转换

可将任何值转为字符串

Boolean

只有2个值:truefalse。任意 JavaScript 的值都可以转换为布尔值。

null和undefined

  • null:描述“空值”,特殊的对象。typeof null => 'object'

  • undefined:描述“未定义”。typeof undefined => 'undefined'

Array

数组是值的有序集合。每个值叫元素,元素在数组中的位置以数字表示,称为索引。

length

数组的length不是只读。

转换

  • valueOf():返回数组本身

  • toString():调用每一项的toString()方法,并用,拼接。

  • join(:?string):调用每一项的toString()方法,并用传入的参数拼接,如果参数为空或者undefined,则默认用,拼接。

稀疏数组

新版本chrome中:var arr = [,,,] -> [empty x 3]

稀疏数组就是包含从0开始的不连续索引的数组。

方法

  • join(:?string)

  • reverse()颠倒元素顺序(改变调用数组并返回)

  • sort(:?fn)排序。不带参数时,按照元素的字母表顺序排序(改变调用数组并返回)

  • concat(:any)连接数组元素,返回新数组,不改变调用数组。

  • slice(a1:?number, a2:?number)返回下标从a1到a2(不包含a2)的子数组,不改变调用数组。如果不指定a2,则截取到最后一个元素。并且参数为负数时,表示倒数第几个元素的位置。

  • splice(a1?:number,a2:?number,...),插入或删除元素,返回删除的部分,会改变调用数组。第1个参数指定起始位置,第2个参数指定删除的元素个数(可为空),随后为新插入的元素。

  • push()pop()将数组当作操作。push(arg1:any, ...)方法在末尾添加N个元素(一次插入),返回新数组长度;pop()方法删除最后一个元素,返回删除的值

  • unshift()shift()将数组当作操作。unshift(arg1:any, ...)在数组头部添加N个元素(一次插入),返回新数组长度;shift()删除第一个元素,返回删除的值

  • forEach(fn(item:元素,index:索引, self:引用本身)):为每个元素调用指定函数,无返回。无法在专递参数给调用函数之前终止遍历,即无相应的break语句,如需提前终止,必须在try块中抛出一个异常。

  • map(fn)返回新数组,不改变操作数组,如果内部函数无返回,那么默认返回undefined

  • filter(fn)返回数组子集,如果调用函数返回true或能转化为true,那么该元素就是这个子集成员。

  • every(fn)some(fn)数组的逻辑判定,返回true或者false。前者所有元素调用返回true才为true,后者只需要一个元素调用返回true即为true。

  • reduce(fn(init:初始值/上一次函数的返回值, item:元素, index:索引, self:引用本身), init?:初始值)reduceRight(fn, init?:初始值),使用指定函数将元素进行组合,返回值是最后一个函数返回的值。

  • indexOf(who:元素,position?:指定索引,可为负)lastIndexOf()返回指定元素的索引,如果未找到则返回-1

类数组对象

有length、有索引(索引为只读),实际上并不是数组,不能使用数组特有的方法。

  • 函数内arguments

  • dom集合HTMLCollectionNodeList

类数组的数组化

Symbol

  • Symbol 实例都是唯一的

  • Symbol.for()可以注册或获取一个全局Symbol实例

  • Symbol为key的对象不可被Object.keysfor in枚举到

Last updated