Javascript是一种动态语言,无需提前声明变量的类型,也可以使用同一个变量保存不同类型的数据。
需要指明类型的变量声明方式: int a; float b; char C; (C语言)
数据类型
Boolean, Null, Undefined, Number, String, Symbol(ES6) 和 Object。
基本数据类型都是不可修改的,对变量的重赋值并非操作原来的值。
Symbol
Symbol表示独一无二的值,是Javascript语言的第七种数据类型。
1 | let s = Symbol('symbol'); |
Symbole可以接受一个参数,表示对Symbole实例的区分。
ES6 Set和 Map
Set为类数组结构,是一种非重复类数组。
Map为键开放的对象结构。
typeof判断Set和Map为Object。
Set
Set数据结构类似于数组,但成员的值是不重复的唯一值。
1 | const set = new Set([1, 2, 3, 4, 4]); |
在为set赋值时,若直接传入一个数组,set会过滤数组中的重复性,重复的NaN也会被过滤掉。
1 | let arr = [3, 5, 2, 2, 5, 5]; |
利用Set的不重复特性实现数组去重。
WeakSet
与Set的两个区别
- WeakSet成员只能是对象。
- WeakSet是弱引用,会自动回收。
Map
类似于对象,允许“键”为各种类型的Hash结构数据。
1 | const map = new Map(); |
变量k1和k2的值是一样的,但在Map结构中被视为两个键。可知,Map的键是和内存地址绑定的,只要内存地址不一样,就视为两个键。
WeakMap
与Map的区别
- 只接受对象作为键名(null除外)。
- WeakMap键所指向的对象,不计入垃圾回收机制。
应用:为对象添加一些额外的说明,不造成引用。
常用API
字符串
String.substr(starts, ends); 字符串截取
String.slice(starts, ends); 字符串截取
String.split(spliter); 将字符串以匹配的模式分割为数组。
String.indexOf(param); 查找匹配值的起始序列号
数组
Arr.slice(starts, ends); 数组截取,返回新数组
Arr.splice(starts, ends, new1, new2, …); 可以修改原始数组,从指定位置开始删除若干元素,从该位置插入若干元素
Arr.concat(arr); 数组连接,返回新数组
Arr.join(joiner); 使用连接符将数组连接为字符串
Arr.indexOf(param); 查找匹配值的下标
Arr.push(); 尾部入栈
Arr.pop(); 尾部出栈
Arr.unshift(); 头部入栈
Arr.shift(); 头部出栈
Arr.sort(func); 数组排序,参数可选,默认升序
Arr.reverse(); 数组反转
Arr.from(set); 将Set结构转为数组。
Set
S.add(value); 添加某个值
S.delete(value); 删除某个值
S.has(value); 是否含有某值
S.clear(); 清除所有值
Map
m.size; 返回Map结构的成员总数
m.set(key, value); 设置键名为key,键值为value
m.get(key); 获取对应键为key的值。