笔记 ---- 记于21.04.05 - 04.13
1、async/await
1 标准用法: 2 function testAwait (x) { 3 return new Promise(resolve => { 4 setTimeout(() => { 5 resolve(x); 6 }, 2000); 7 }); 8 } 9 10 async function helloAsync() { 11 var x = await testAwait ("hello world"); 12 console.log(x); 13 14 或者: 15 // var x = testAwait ("hello world");//此处x是一个Promise对象 16 // x.then(function(value){ 17 // console.log(value); 18 // }); 19 } 20 helloAsync ();
2、宽松相等 ==
1 [ ] == [ ] // false 2 3 解析:两个引用类型,==比较的是引用地址
3、== 和 !优先级
[ ]== ![ ] // true 解析:(1)! 的优先级高于== ,右边Boolean([])是true,取返等于 false (2)一个引用类型和一个值去比较 把引用类型转化成值类型,左边0 (3)所以 0 == false 答案是true
4、数字与字符串相加减
'5' + 3 '5' - 3 解析:加号有拼接功能,减号就是逻辑运算 巩固:typeof (+"1") // "number" 对非数值+—常被用来做类型转换相当于Number()
5、数组比较大小
var a = [1, 2, 3], b = [1, 2, 3], c = [1, 2, 4] a == b a === b a > c a < c 答案:false, false, false, true 解析:相等(==)和全等(===)还是比较引用地址 引用类型间比较大小是按照字典序比较,就是先比第一项谁大,相同再去比第二项。
6、动态控制axios的params(get请求),data(post请求) --------- 对象键值可以使用 [ 变量或表达式 ] ★
let method = plat == 'xxx' ? 'get' : 'post'; // 当 plat等于某个值时是get请求,否则为post请求
axios({
method, // 请求方式
[ method == 'get' ? 'params' : 'data' ]: data // 对象键值可以使用 [ 变量或表达式 ] data就是传回后端的数据
}).then(() => {}).catch(() => {})
7、vue中如果对象添加了新属性却渲染不出来,是因为属性原本是不存在这个属性的就算加上了,dom也不会更新的。(节省内存)
解决1:给对象初始化要添加的属性,监听这个属性,这样原来有这个值就会更新dom(但有一个问题就是不太符合逻辑,你其他地方也用不到这个值,占着内存影响性能) 解决2:新建一个对象存这个值,直接渲染这个对象即可 sumTotal: {} ==> sumTotal['lines'] = xxx 新增不会渲染 2、新对象只存要加的这个值 newSumTotal: { lines: ''} ==> this.newSumTotal.lines = xxx