es6式js语言下一代标准,已经在2015年6月正式开始发布了也叫es2015.它的目标,是使得JavaScript语言可以用来编写复杂的大型应用,成为企业级开发语言.
var 和let 的区别
1.var 能变量提升,不受块级作用域的影响,能重复定义。
2.let 不能变量提升,受块级作用域的影响,不能重复定义.
let 和 const的区别
他们唯一的区别就是const在声明的时候必须要赋值,且不能重新赋值
块级作用域是es6开始提出的概念,es6中明确声明了大括号就能形成块级作用域.
console.log(arr);//报错
let arr;
console.log(concc);//报错
const concc=123;
//let
for(let i=0;i<5;i++){
setTimeout(function(){
console.log('i',i);
})
}
//const
{const arr=0}
console.log(arr);//报错说没声明
知识点:
让一个数组中的元素与另一个数组中的元素一一对应
//数组结构
let arr=[1,2,3,4]
let [a,b,c,d]=arr;
console.log("数组中的解构",a);
因为对象是无序的,所以我们不能用前面数组解构的思想来看,我们通过绑定对应的属性名来获取属性值
//对象解构
let obj={
username : "lisi",
age : 20
}
let {username ,age}=obj;
console.log("我是对象解构",username);
在es6里面,我们可以给形参默认设置值,没有实参的传入的时候,可以让他等于默认值
//函数解构
function test({username="小编",miao="嘎嘎帅"}={}){
console.log(username+miao);
}
test()
let username='小编'
let obj={
username ,//当属性名和属性值都相同的时候,可以简写成这样
say(){
console.log(this.username+"嘎嘎帅");//简单方法的简写
}
}
obj.say()
let key ='username';
let obj={
[key] : '小编',
say(){
console.log(this[[key]]+"嘎嘎帅");
}
}
obj.say();
3.合并对象
方法 : Object.assign
let obj1={
username : '李四',
say(){
console.log(this.username+"嘎嘎帅");
}
}
let obj2={
username : '小编'
}
let obj=Object.assign(obj1,obj2)//如有重复的属性会让下面的属性中的属性值覆盖上面的
obj.say()
let test=()=>{}//这就是箭头函数
前面已经说过箭头函数不绑定this,他会找上下文的this来给自己使用
let test={
say:()=>{
console.log(this,"小编嘎嘎帅");//this指向的window,可是是obj调用的这个函数
}
}
test.say()
3.箭头函数不能做构造函数
箭头函数本身没有this, 所以不能拿来做构造函数的
var test=(name ,miao)=>{
this.name=name;
this.miao=miao;
}
let obj=new test('小编','嘎嘎帅');//直接报错
console.log(obj);
4.箭头函数的arguments对象不可用
arguments是实参列表
var test=(name ,miao)=>{
console.log(arguments);//报错,没有这个东西
this.name=name;
this.miao=miao;
}
test(1,2);
promise定义
promise使用步骤
async await异步变同步
promise是异步编程的一种解决方案, 可以用来解决回调地狱的问题
promise中文意思承诺
promise有三种状态:
pending 正在进行中
resolved 成功
rejected 失败
状态一旦改变,就无法再次改变状态,这也是它名字 promise-承诺 的由来,一个promise对象状态只能改变一次
我们可以使用promise来保存将来的数据
创建promise对象
存储成功或失败的数据
获取promise对象的数据
DOCTYPE html>
<html lang="en">
<body>
<script type="module">
let num = window.prompt("请输入数字");
// 1.创建promise对象
const obj = new Promise((resolve, reject) => {
// num > 10定位成功, 否则失败
if (num > 10) {
// 2.成功时用resolve保存数据
resolve({msg:'sucess',num});
} else {
// 3.失败时用reject保存数据
reject({ msg: 'error', num });
}
});
// 3.获取数据 then()获取成功的数据, catch()获取失败的数据
obj.then((res)=> {
console.log('成功', res);
}).catch(err=> {
console.log('失败',err);
})
script>
body>
html>
//index.js
export default {
username : '小编',
say(){
console.log(this.username+"嘎嘎帅");
}
}
export let username ="小编"
//index.html
<script type="module">
import * as obj from "./index.js";//as取名
console.log(obj);
script>