ES6
#1、声明变量
// es5
声明变量 var — variable
用大写的形式去声明常量:var PI = 3.14159255358;
常量的值允许被修改
// es6
// 通过let 关键字代替 var 来声明变量,用发与var几乎一致
当let/const遇到{}会形成这个变量的块级作用域
声明变量 let — 叫命令或关键字
声明常量 const PI = 3.1415926;
报错会阻断下面的代码执行
报错:Assignment to constant variale
常量的值不允许被修改
// 变量、常量不得重复定义(相同作用域)
变量提升
es5
var 存在变量提升,只要在声明之前调用,就会有变量提升,并且值为undefined
es6
let 语句声明的参数没有变量提升
暂时性死区的概念:在变量声明之前调用,都是该变量的暂时性死区
解构赋值
三种状态
模式不匹配
解构不成功:声明了变量,没有赋值(undefined)
不完全解构
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称作解构赋值
// 数组的解构赋值
// es5
var a = 1;
var b = 2;
var c = 3;
// es6 好处:代码简洁
// 数组
let [a,b,c] = [1,2,3];
console.log(a);
console.log(b);
console.log©;
// 对象
let person = {
name: ‘zs’,
age: 18,
hoppy: [‘吃饭’, ‘睡觉’, ‘打豆豆’],
address: ‘北京八维’
}
let { obj: objs, obj: obj1 } = {
obj: person
}
console.log(objs)
// 字符串
// 会将字符串转换成类似数组的一个对象
let [a,b,c] = ‘mmd’;
// a = m
// b = m
// c = d
let {length:len} = ‘mmd’;
// len = 3
// 数组的解构赋值在函数中应用
let fun = function([name,age]){ // 接收的是形参
console.log(name);
console.log(age);
}
fun([‘zs’,18]) // 传递的参数是实参
// 对象的解构赋值在函数中应用
let fun = function({name,age}){ // 接收的是形参
console.log(name);
console.log(age);
}
fun({name:‘zs’,age:18}) // 传递的参数是实参
// 通过数组的解构赋值,返回一个值
let fun = (val) => {
return [val, val + “you aer the best!”];
}
console.log(fun())
// 通过对象的解构赋值来取json数据
const data = {
name:‘zs’,
age:18
}
let {name,age} = data;
console.log(name);
console.log(age)
在store文件夹里建一个module文件夹用来存放数据(store/module/app.js)
// 存放数据的地方
const state = {
num: 100
}
// 派生数据(很少用)
const getters = {
doubleNum(state){
return state.num*2
}
}
// 同步改变
const mutations = {
changeNum(state, payload){
state.num = payload;
}
}
// 异步改变
const actions = {
<!--}-->
changeNumAsync({commit}, payload){
commit('changeNum', payload)
}
}
export default {
// 命名空间
namespaced: true, // 配合module使用
state,
actions,
getters,
mutations
}