对闭包的理解
闭包是一种保护私有变量的机制,在函数执行时形成一个私有的作用域,保护函数里面的私有变量不受外界干扰,只管的说就是形成一个不销毁的栈环境
对小程序和普通APP内嵌H5的区别理解
小程序和APP中的H5本质上都是webview加载的,但小程序的执行js代码是通过基于微信客户端的底层代码实现的,而h5页面则是直接由浏览器执行解析的js文件,所以小程序中data不适合储存太多数据,当数据变化,底层js调用频繁会影响小程序性能,严重时会导致小程序崩溃
ES6的新特性
一 var /let/const的区别
使用函数内部使用var在执行函数的时候函数内的变量会提升到作用域的顶部,var 的变量为全局变量,而let和const声明的变量是块级变量,使用let和const声明的变量会进入暂时性死区,直到该变量的声明被处理,let声明的变量可重新复制,const声明的变量必须初始化赋值,且不可在同一作用域内再次声明,也不能再次赋值
二 模板字面量 倒引号 ``
倒引号模板字面量本质上是嵌入式表达式字符串的字面量
ES6之前使用+号连接字符串
例:
const name = '小明'
let message = name + ' please see '
现在使用倒引号模板
const name='xiao ming'
let message = `${name} please see`
${expression} 表示的占位符
三 解构
ES6可以使用解构从数组和对象中提取值并赋值给独特的变量
例
const point=[1,2,3];
const [a,b,c]=point;
console,log('a:'+a+' b:'+b+' c:'+c)
//输出a:1 b:2 c:3
在解构赋值中还可以忽略值 例:
const point=[1,2,3];
const [a,b]=point;
console,log('a:'+a+' b:'+b)
//输出a:1 b:2
在对象中结构赋值
const game={
name:'zu qiou',
type:'qiu',
isLike:'yes'
}
const {name,type,isLike}= game
console.log(name,type,isLike)
//输出 : zu qiou,qiu,yes
四 对象字面量简写
let name='football'
let type='ball'
let isLike='yes'
const game={name,type,islike}
console.log(game)
五 展开运算符 …
//展开
const a=[1,2,3,4]
console.log(...a)
//合并数组
const a=[1,2,3]
const b=[4,5,6]
const c=[...a,...b]
console.log(c)
//输出:[1,2,3,4,5,6]
六 剩余参数
用途1
数组赋值时可将不定量的 剩余参数赋值给一个变量例
const color=['red','green','blue','yellow','black']
const [fcolor,scolor,tcolor,...itemcolor]=color
console.log(itemcolor)
//输出['yellow','black']
用途2
函数接收不定数量的参数例
function showColor(...color){
let total = 0;
for(const num of color) {
total += num;
}
return total;
};
箭头函数的优势
1、减少代码量,简便简洁
2、解决了this的指向问题
普通函数指向的是定调用者,箭头函数则是指向的是定义函数的上一层对象。
数组常见的排序方法
1、sort方法排序
升序
var arr=[1,6,2,3,7,0]
arr.sort(a,b){
return a-b;
}
console.log(arr)
//也可一行代码搞定
arr.sort()
降序
var arr=[1,6,2,3,7,0]
arr.sort(a,b){
return b-a;
}
console.log(arr)