es6

es6 是为了框架服务的;

也叫es2015,2015年发布的

推荐书;es6标准入门

1.变量声明:

在es5中var,有缺点;可不声明,也可重复声明;还可以提升;

var不是那么的严格;

es6语法: let a=5

**let只在块级作用域里有效;

**let不允许重复声明;
let a=1
let a=2
这种不行;

**let没有变量提升;
console.lpg(a)
let a=1;
这种也报错,变量不能提升;

** 暂时性死区;let声明的变量会暂时绑定当前块级作用域;
let声明的那个变量,在块内只能用它的,外面有其他的声明也不能用;

{

}

举例:解决了for循环中i的问题:
var a=[]

for (var i=0;i<10;i++) {
a[i]=function(){
console.log(i);
}
}

a4 ——————这时的结果不论如何,都是10,因为的i之前没调用都没执行,但是i一直在加,最后到10,等你调用时,无论任何数值,i都已经到了10;

但是用let就可以解决这个问题:

var a=[]

for ( let i=0;i<10;i++) {
a[i]=function(){
console.log(i);
}
}


第二节:
在框架里推荐用let 声明,但是在jq中不要用;
只有在框架中可以兼容;

const是一个声明常量,不允许更改;
const a=5;

1)变量的解构赋值

之前声明多个变量有些麻烦;es6有简单的方案;

let [a,b,c]=[1,2,3], 注意是中括号,左边是一个变量数组,右边是数据数组;

等号右边的数据会对应的赋值给等号左边的变量;

2) 对象的解构赋值

let obj={name:“小明”,age:18},hobby:{sport:“basketball”,movie:“少年的你”};

var age=obj.age; // let {age} =obj;
let {name}=obj;

等号左边是变量名, 会被赋值等号右边对象对应的属性;

3)字符串的扩展

模版字符串:‘ ’
支持html解构换行;

支持在“字符串”中直接写变量;要求变量写在${变量} 这种形式;

4)数组的扩展 …

可以把数组和类数组结构拆分为参数序列;

举例:
var are=[1,5]

function add(m,n){
return m+n
}

console.log(add(…arr))

5)函数的扩展(重点)

支持默认参数;在形参里直接赋值,

function log(x,y=“world”){
console.log(x,y)
}

2)箭头函数

var fn=function(m){return m};

箭头函数:var fn=m=>m;

语法: var 函数名=(参数)=>{干什么事儿} 这是最完整的写法;

箭头函数简写:

1)如果只有一个参数,小括号可以省略,如果没有参数或多个参数,都不能省略;
2)如果箭头函数要返回一个值,那么return 和大括号可以一起省略;

3)如果返回的是一个对象的话,要给对象加小括号;

3.箭头函数中的this是绑定的,指向的是函数定义时所在的对象;

**this只可能指向调用的,或者是定义的,也就是生它的;

**箭头函数里的this是永远不变的;所以不能用做构造函数使用;
不能new;

举例:

function Timer(){
this.s1=0;
this.s2=0;
setInterval(()=>(this.s1++),1000)
setInverval(function(){this.s2++},1000)
}

var timer=new Timer();

setTImeout=(()=>{console.log(‘s1’,timer.s1)},3000)
setTImeout=(()=>{console.log(‘s2’,timer.s2)},3000)

s1 打印结果 3
s2 打印结果0


第三节

1.call apply函数

语法:
function.apply(obj,argsArr) 用obj这个对象去改了之前的对象
call也是完全一样的

function.call(obj,1,2,3) 第二个是参数列表

math.max.apply(null,[1,2,3,5])
math的最大值可以加数组;

2.Set:一种新的数据结构,类似于数组;

区别:数组的值是可以重复的,但是set是唯一的;

创建方式:可以是构造函数去创建数据结构;

var set=new Set([1,2,3,4,5])
console.log(set)

**如果有重复的值,可以自动数据去重;

数组去重:

var arr=[1,2,3.4.5,1,4,6,7]
var set=new Set(arr);

arr=[…set] ——先用扩展运算符拆开,然后用[]做成数组;

**set数据结构也是有一些方法的;
(1)size:
set.size
(2)set.add(9),add(10)
(3)set.delete(5)—5是数组中具体的那个值;
(4) set.has(5)
(5)clear 清除所有;

遍历:for of 循环
keys(所有属性名),values(所有属性值),entries(整体,属性名+属性值), forEach(值,属性名)

var arr=[1,2,3.4.5,1,4,6,7]
var set=new Set(arr);

for(var item of set.keys()){
console.log(item)
}

3.map也是一种新的数据结构;各种类型都可以做属性名;

set类似于数组,map类似于对象;

**因为对象的属性名只能是字符串

map中的属性名不限制类型

语法:通过map构造函数去创建(现实中用的很少)

var map=new Map()

取值:set.get(“属性名”) has(“属性名”)delete(“属性名)
size,clear属性都有;

也有四种遍历方法:

for of循环

for (let item of map.keys)(){
console.log(item)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值