美文网首页
声明变量,块作用域,解构赋值,默认值

声明变量,块作用域,解构赋值,默认值

作者: 追逐_e6cf | 来源:发表于2018-10-10 23:36 被阅读0次

一、es5与es6
es5与es6的区别:

  • 发布的时间不同:es6于2015年发布
  • 语法功能不断进行升级,不断地更新功能
  • es6不兼容IE浏览器,新的EDGE版本兼容强
  • webpack可以对es6代码进行编译,之后我们代码进行上线处理就行了
    二、声明变量
  • es5:var function
  • es6:var function let const class import
    暂时性死区:没有进行赋值之前,前面所有的区域都是暂时性的死区
console.log(a)
let a = 123;
console.log(a)
let a = 123;
let a = 456;  //这里不能重复去声明同一个变量
console.log(a)
let a = 123;
a = 456;  //let定义的变量可以改变值
console.log(a)
//var 声明的变量会自动挂载到顶层对象上,而let声明的变量不会
//let声明的变量不会对全局作用域造成污染
var a = 123;
console.log(window.a)

let b = 456;
console.log(window.b)

三、块作用域
作用域:

  • es5:全局作用域,函数作用域
  • es6:全局作用域,函数作用域,块级作用域(通常作用于for,if...里面,必须使用es6声明变量才生效)
if(true){
  let a = 123;
}
//暂时性死区同样存在于块级作用域里面
//必须在赋值之后才会没有暂时性死区
if(true){
  console.log(a);
  let a = 123;
}

四、const
es6定义变量:

  • 都是不可以进行重复声明的
  • 都是会形成块作用域
  • 都是具有暂时性死区
  • 都是没有变量提升
  • 都不会挂载到顶层对象上面去的
    const 定义常量
    const 不可以再进行改变值
const arr = [];
arr = 123;
console.log(arr);//报错

可以进行写值

const arr = [];
arr.push(1);
console.log(arr);

五、解构赋值
解构:ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。

let [a, b, c] = [1, 2, 3];  //完全解构
let [a, b, c] = [1, 2]; //不完全解构
console.log(a, b, c);
let {a, b, c} = {
  a : 'abc',
  b : 'def'
}
console.log(a, b);
//对象在解构的时候,可以交换位置
let {a, b} = {
  b : 'def',
  a : 'abc'
}
console.log(a, b);

匹配模式:

let {a:a1, b:b1} = {
  b : 'abc',
  a : 'cba'
}
console.log(a, b);  //报错
console.log(a1, b1);

let {a:a1, b:b1} = {
  b : 'abc',
  a : {c : "123"}
}
console.log(a1)
let [a, [b], c] = [1, 2, 3];  //错误写法
let [a, [b], c] = [1, [2], 3];
let [a, b, c] = [1, [2], 3];

rest展开运算符

let [a, ...b] = [1, 2, 3, 4, 5, 6]
console.log(a, b)

let [a, c, ...b] = [1, 2, 3, 4, 5, 6]
console.log(a, b, c)

let [a, [b, ...c], d] = [1, [2, 3, 4, 5, 6]]
console.log(a, b, c, d)
let divs = document.getElementsByTagName('div');
console.log(divs)
console.log([...divs])

六、默认值
如果取不到值/取值为undefined的情况,就是undefined

let [a] = [];
console.log(a);
let num = '' || 123;
let num = 0 || 123;
let num = null || 123;
let num = false || 123;
console.log(num);

a = 默认值

let [a=1] = [];
console.log(a);
let [a=undefined] = [];
console.log(a);
let [a=123, b=456] = [undefined, 5];
console.log(a, b);
function fn(){
  console.log(1);
}
let [a=fn, b=1] = [, 2]
console.log(a, b)
let {a:a1=1, b=2} = {
  b:5,
  a:2
}
console.log(a1, b)
let {max, min} = Math;
console.log(min(-550, 500))
console.log(max(-550, 500))

相关文章

  • 声明变量,块作用域,解构赋值,默认值

    一、es5与es6es5与es6的区别: 发布的时间不同:es6于2015年发布 语法功能不断进行升级,不断地更新...

  • ES6相比ES5有哪些优点?

    新增变量声明关键字let, const, 多了块级作用域概念 变量的解构赋值, 扩展运算符 字符串, 数组, 对象...

  • ES6系列之变量的解构赋值

    本篇目录: 数组的解构赋值变量声明并赋值时的解构变量先声明后赋值时的解构不完全解构默认值交换变量解析一个从函数返回...

  • JScript语言——ES6(ES2015)

    ES6(ES2015)语法介绍 变量声明let、const 块级作用域 解构赋值 箭头函数清楚简写形式箭头函数的t...

  • ES6概念总结.md

    ECMAScript 6 Part1 let与const声明变量,作用域有所不同 变量解构赋值,不规则格式一一智能...

  • ES6知识点复习(二)

    变量的解构赋值 解构赋值允许指定默认值,es6内部使用严格相等运算符 === 默认值可以引用解构赋值的其他变量,但...

  • vue常用的ES6语法--let和const

    作用:用来声明变量和常量 const声明的变量必须赋值1、作用域只局限于当前代码块 2、使用let和const声明...

  • 无标题文章

    ES6 解构赋值const声明不可变变量,let块状作用域箭头函数 this指向上一个作用域2017快过去了,这一...

  • ES6笔记(解构赋值)

    ES6笔记(解构赋值) 解构赋值 变量的解构: 解构赋值允许指定默认值。 解构赋值必须保证赋值方 被赋值方类型一...

  • es6学习总结

    let 声明变量具有块级作用域,for循环声明变量有个特点,声明变量部分是父作用域,代码块为子作用域,且互不影响,...

网友评论

      本文标题:声明变量,块作用域,解构赋值,默认值

      本文链接:https://www.haomeiwen.com/subject/iogmaftx.html