数据类型
数据类型
原始类型:
number、string、boolean、null、undefined、symbol引用类型:
object
原始类型(原始值)存储在栈(stack)中;引用类型存储在堆(heap)中,其指针存粗在栈中。
Number
类型
整形:默认为10进制。16进制以
0x或0X开头,跟随0-9、a-f(表示10-15)组成。浮点型:不能精确类似0.1这样的数,只能极其近似0.1。这在任何使用二进制浮点数的编程语言中都如此。
范围
Number.MAX_VALUE=1.7976931348623157e+308Number.MIN_VALUE=5e-324Number.POSITIVE_INFINITY=InfinityNumber.NEGATIVE_INFINITY=-Infinity
方法
toString(?进制):把数字转换成指定进制形式的字符串,参数为进制,默认十进制toFixed(?保修位数):把数字转换成十进制形式的字符串(四舍五入),参数为保留几位小数,默认为0
转换
Number()强转
parseInt()和parseFloat()函数转换
如果接收的不是数字或者字符串,其他均转换为NaN
如果接收的字符串还有非数字的字符,那么从首部开始查找到非数字字符为止,然后转换前面的数字字符
第二个参数为进制数,默认为十进制
String
string是一组由16位Unicode字符组成的不可变的有序序列,其长度length是指所含字符的个数。
方法
concat(:?string,...):连接字符串,返回新字符串charAt(:?string):返回指定下标的字符。如果超出有效范围,返回为空字符串charCodeAt(:?string):返回指定下标的字符的Unicode编码。如果指定位置没有字符,返回NaNslice():返回字符串片段。参数1为开始的下标,参数2为获取长度indexOf()、lastIndexOf():返回子串在字符串中的下标,如果未找到,返回-1substr():返回字符串片段。参数1为开始的下标,参数2为获取长度substring():返回字符串片段。参数1和参数2或为起始下标和获取长度,取最小值为开始的下标,如果参数有undefined、NaN或者负数,那么将其替换为0toUpperCase()、toLowerCase():首字符转为大/小写trim():删除前后空格,返回新字符串split():按条件分割字符串为数组。参数1为分割条件,参数2为返回数组的最大长度replace():按指定替换字符串search():返回子串在字符串中的下标,如果未找到,返回-1match():查找第一个匹配的子串,作为数组返回,未找到返回null
String()转换
String()转换可将任何值转为字符串
Boolean
只有2个值:true和false。任意 JavaScript 的值都可以转换为布尔值。
null和undefined
null:描述“空值”,特殊的对象。typeof null => 'object'undefined:描述“未定义”。typeof undefined => 'undefined'
Array
数组是值的有序集合。每个值叫元素,元素在数组中的位置以数字表示,称为索引。
length
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)返回新数组,不改变操作数组,如果内部函数无返回,那么默认返回undefinedfilter(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、有索引(索引为只读),实际上并不是数组,不能使用数组特有的方法。
函数内
argumentsdom集合
HTMLCollection与NodeList等
类数组的数组化
Symbol
Symbol实例都是唯一的Symbol.for()可以注册或获取一个全局Symbol实例以
Symbol为key的对象不可被Object.keys、for in枚举到
Last updated