博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6--var-let-const(ms)
阅读量:6417 次
发布时间:2019-06-23

本文共 1953 字,大约阅读时间需要 6 分钟。

1.var 可声明前置,let不可。

var aa = 3var a = 4复制代码
a = 3let a //报错复制代码

2.let不可重复声明(var 可以)

let a = 1let 2 = 2 //报错复制代码

3.存在块级作用域

for (let i = 0; i < 4; i++){    console.log(i) // 0 1 2 3 只能在这个花括号内,外面作用域是没有i的。}console.log(i) //报错:i is not defined复制代码

4.const 和let一样不可重复声明,不可声明前置及存在块级作用域。

const a = 5a =  3 //报错复制代码
const obj = {a:2}obj.a = 3 //没问题。因为const指向的是一个对象,对象不变就可以,这里变的是对象里面的a。obj = {a: 3} //报错。因为把obj对象重新赋值了。复制代码

数组的解构

1.数组解构

这样可以

let [a, b ,c] = [1, 2, 3]console.log(a,b,c) //1 2 3复制代码

这样也可

let [a, [b], c] = [1, [2], 3]console.log([a, [b], c]) // Array(3)0: 21: [3]2: 4length: 3__proto__: Array(0)a //2b //3c //4复制代码

这样报错咯

let [a] = 1 //报错复制代码

2.默认值

let [a, b=1] = [2]a // 2b // 1 这个a下标为0,后面的2给a,b没有(undefined)就用b默认的,所以是1.有就用设置的,没有设置就用默认的。let [a=1, b=2] = [3, 4]a // 3b // 4设置了就用设置的let [a=1, b=2] = [undefined, null]a // 1b // nulla没有设置,所以用默认的1b其实是设置了,只不过是null。let [a=1, b=a] = [3]a // 3b // 3复制代码

3.对象的解构赋值

前置知识

let p = [name, age] //等同于下面的写法(ES6)let p1 = {name: name, age: age}复制代码

对象解构范例

let {name: name ,age: age} = {name: 'Tom', age: 18} //等于下面的let namelet age({name: name, age: age} = {name: 'Tom', age: 18})复制代码

4.对象也有默认值,和上面的意思相同。

let {x, y=5} = {x: 1} //y是undefined,所以使用默认的y=5x //1y //5复制代码

5.函数解构

function sum([x, y] = [1, 2]){    return x + y}sum()//3sum([2])//NaNsum([2, 3])//5(俩个都赋值,相加得5)复制代码
1.function sum({x, y}={x:0, y:0}, {a=2, b=3}){    return [x+a, y+b]}sum({x:4, y:5}, {a:6}) //(2) [10, 8]为什么是[10,8]2.function sum({x, y}={x:0, y:0}, {a=2, b=3}){    return [x+a, y+b]}sum({x:4, y:5}, {a:6, b:7})(2) [10, 12]复制代码

这个需要注意一下

function sum([x=1, y=2]){    return x+y}sum() //报错sum([])//3 有[]里面,没有赋值所以用默认的想不报错这样写,要给xy赋值function sum([x, y] = [1, 2]){    return x + y}sum() //3(ES6)复制代码

6.作用

let [x, y] = [1, 2];(这个分好要写,不然浏览器会把它和下一句连一起。报错)[x, y] = [y, x] //赋的值反过来了x //2y // 1复制代码
function ajax({url, type='GET'}){}ajax({url: 'http://localhost:3000/getData'})ajax的url是必须要填的,其他不赋值可以使用默认。复制代码

转载于:https://juejin.im/post/5c52bcd9f265da2d943f36bf

你可能感兴趣的文章
使用sql生成UUID
查看>>
mysql日期函数(转)
查看>>
REST API用得也痛苦
查看>>
test for windows live writer plugins
查看>>
Tiny210 U-BOOT(二)----配置时钟频率基本原理
查看>>
读javascript高级程序设计14-错误处理与调试
查看>>
代理模式
查看>>
javaweb学习总结(二十四)——jsp传统标签开发
查看>>
让script的type属性等于text/html
查看>>
[Docker] Docker Machine intro
查看>>
HA 高可用软件系统保养指南
查看>>
linux 文件系统sysvinit 流程分析
查看>>
体素科技:2018年,算法驱动下的医学影像分析进展
查看>>
Vue 折腾记 - (8) 写一个挺靠谱的多地区选择组件
查看>>
VS Code折腾记 - (3) 多图解VSCode基础功能
查看>>
再不懂区块链,你就OUT了!
查看>>
教你玩转自定义View—手撸一个倒计时控件如此简单
查看>>
『翻译』Node.js 调试
查看>>
我的iOS开发之路总结(更新啦~)
查看>>
Java NIO之拥抱Path和Files
查看>>