promist
//当需要调两个接口成功以后再执行的操作,可使用Promise.all()方法
await Promise.all([this.init(), this.record()])
wx.setNavigationBarTitle({
title: this.data.name,
})
定义变量
let 相当于var
const 定义常量
区别
- 块级作用域 {}内 if(){} for(){}
- 没有预解析,不存在变量提升,必须先定义再使用,否则报错
- 在同一个作用域中,变量不能重复定义,但是可以重新赋值
- const定义变量不能修改,所以必须定义就赋值
解构赋值
数组
左右结构一致
let [a,b,c]=[2,4,6]
let [a, [b, c]] = [1, [2, 3]];
console.log(a,b,c) //2 4 6 //1 2 3
应用:交换数据
let a = 1;
let b = 2;
[a, b] = [b, a];
console.log(a, b); // 2 1
对象
a:num 起别名
d=‘暂无数据’ 默认数据
let { a:num, b, c,d=‘暂无数据’ } = {
a: 11,
b: 99,
c: 10
}
console.log(num, b, c); // 11 99 10
注意:top代表window
模板字符串
let age=18;
console.log(`我今年${age}岁了`)
查找字符
- indexOf() 如果存在返回的是字符的索引,若不存在返回-1
let str = 'abckoejofiw';
console.log(str.indexOf('iw')); // 9
- includes() 存在返回true,不存在返回false
let str = 'abckoejofiw';
console.log(str.includes('x')); // false
- 判断浏览器
if(navigator.userAgent.includes('chrome')){
console.log('谷歌')
}else{
console.log('不是谷歌')
}
- 判断以谁开头结尾 true/false
- str.startsWith('开头')
- str.endsWith('结尾')
- 重复字符串 str.repeat(2) // 2为重复次数
- 填充字符串
str.padStart(2,'x') 以‘x’从前填充为2位数
str.padEnd(2,'x') 以‘x’从后填充为2位数
函数
- 函数的默认参数
function( a, b="默认参数" ){}
function( {a,b}={} ){}
- 箭头函数
let show = ()=>{
//this指向函数外部的this
//箭头函数里边没有arguments,但可以用...args
//箭头函数不能作为构造函数
}
- 函数的参数的变量默认已经定义,不能重复定义
扩展运算符 (重置reset运算符) …
- 作用一 : 扩展
- 展开数组 ...[a,b,c]=a,b,c
let arr=[1,2,3]
console.log(...arr) // 1 2 3
- 重置数组 ...a == arguments
function show(...a){
consle.log(a) // [1,2,3,4]
}
show(1,2,3,4)
- 剩余数组
function show(a,b,...c){
consle.log(a,b,c) // 1 2 [3,4]
}
show(1,2,3,4)
- 复制数组
let arr=[1,2,3];
let arr2=[...arr];
console.log(arr,arr2)
比较变量是否相等
1、== 会自动转换数据类型
2、===
+0===-0 //true
NaN===NaN //false
Object.assign(target, source1, source2)合并对象
1、如果合并的对象中有键名相同,后者会覆盖前者
2、合并参数的首位如果不是对象,会自动转化为对象,但是不能转化的会报错,例如undefined和null,数值,字符串和布尔值,所以使用的时候要考虑第一个会不会出现这种情况,所以解决方法:拼接一个空对象 Object.assign({},obj)
3、这些非对象参数不在首位就不报错,会自动跳过,只有字符串会变成对象'ab'===>{'0':'a','1':'b'}
let obj = {a: 1};
Object.assign(obj, undefined) === obj // true
Object.assign(obj, null) === obj // true
3、