0927
0928
变量的解耦赋值
数组的解构赋值
只要等号两边的模式相同,左边的变量就会被赋予对应的值。
ES6 内部使用严格相等运算符(===),判断一个位置是否有值。所以,只有当一个数组成员严格等于undefined,默认值才会生效。
对象的解构赋值
数组按次序,变量的取值由位置决定;对象没有次序,变量与属性同名获取正确的值。
解构赋值的规则是只要等号右边的值不是对象或数组,就先将其转为对象。undefined和null无法转为对象,所以对它们进行解构赋值都会报错。但是undefined会触发函数参数的默认值。
let { prop: x } = undefined; // TypeError let { prop: y } = null; // TypeError
map.set(key, value) —— 根据键存储值。
map.get(key) —— 根据键来返回值,如果 map 中不存在对应的 key,则返回 undefined。
map.has(key) —— 如果 key 存在则返回 true,否则返回 false。
map.delete(key) —— 删除指定键的值。
map.clear() —— 清空 map。
map.size —— 返回当前元素个数。
0929
- ES6——第4节:字符串的拓展学习
0930
server.listen(8080,()=>{console.log("server running at http://127.0.0.1:8080")})
1001
- ES6学习——正则的扩展 / 字符串新增的方法
1002
5、6节:
- String.raw() 转义斜杠的方法(会把斜杠前面再加一个斜杠),常用于模版字符串的处理(将所有变量替换,而且对斜杠进行转义)。
String.raw()代码实现:
String.raw = function(strings,...values) { let output = ''; let index; for(index = 0;index<values.length;index++){ output += strings.raw[index] + values[index]; } output += strings.raw[index] return output; }
- codePointAt() 处理4个字节储存的字符,返回一个字符的码点(十进制值)
- Normalize()将字符的不同表示方法统一为同样的形式,Unicode正规化
- string.matchAll(regex)返回的是遍历器,所以可以用for…of循环取出。
遍历器的好处:如果匹配的是一个很大的数组,比较节省资源。
遍历器转换为数组:
方法一: [...string.matchAll(regex)] 方法二: Array.from(string.matchAll(regex))
7节:数值的扩展
- 前缀 0b 或者 0B—— 表示二进制
前缀 0o 或者 0O——表示八进制
转化为十进制用Number()方法 - Number.isFinite()对非数值一律返回false
- Number.isNaN()只对NaN返回true,对非NaN一律返回false
- Number.isInteger()用来判断一个数值是否为整数。但在对数据精度要求较高的情况下,不建议使用,会有误判的情况。
- Number.EPSILON表示1于大于1的最小浮点数之间的差,即是js能够表示的最小精度。误差小于这个值就可以认为不存在误差了。
对于64位浮点数来说,大于1的最小浮点数相当于二进制的1.00…001小数点后面有连续51个零。这个值减去1之后,就等于2的-52次方。
1003
ES6 -8节学习:
1.ES6参数变量是默认声明的,所以不能用let或者const再次声明、不能有同名函数。
2.参数默认值是惰性求值的。
3.ES6中undefined会触发默认值,null不会触发默认值
4.利用参数默认值可以指定某一个参数不得省略,如果省略就抛出一个错误。将参数设置为undefined则表示这个参数是可以省略的。
5.如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分
6.rest参数:
function(a,b,...theArgs){ //... }
arguments是一个对应于传递给函数的参数的类数组对象。
7.箭头函数可以让setTimeout里面的this,绑定定义时所在的作用域s1,而不是指向运行时所在的作用域s2。
8.箭头函数可以让this指向固定化。