首页 > 其他 > 详细

ES6变量解构赋值

时间:2019-04-01 12:39:50      阅读:164      评论:0      收藏:0      [点我收藏+]

分享变量解构分2部分

  1. ES变量的声明
  2. 变量的解构概念,用法,注意事项(数组解构,对象解构)
  3. 可能在项目遇到的应用场景

第一部分变量的声明

ES6之前

大家都了解JavaScript 中变量作用域的基本单元一直是 function,就是函数作用域,
如果创建块级作用域的话就是要声明立即调用函数

// 全局作用域
var a = 2

// 块级作用域,
(function (){
   
    var a = 3
    console.log(a)

 })()

 console.log(a)
let 声明

es新增2个声明变量 let ,const方式, 只要在任意块里用这2个声明方式声明的都市块级作用域变量,
var,function声明的还是函数作用域变量,块的标志是{...}这意味着我们只需要一对{ .. } 就可以创建一个作用域

 var a = 2;

{

  let a = 3
  console.log( a );        // 3

}

console.log( a );          // 2
const 声明

用于创建常量。块级变量声明,这个变量的值在声明时设定之后就不允许改变。 const 声明必须要有显式的初始化。如果需要一个值为 undefined 的常量,就要声明 const a = undefined 。


{
   const a = 2;
   console.log( a );     // 2
   a = 3;                     // TypeError!
}
块作用域函数

从 ES6 开始,块内声明的函数,其作用域在这个块内


{
   foo();         // 可以这么做!
   function foo() {
    // ..
   }
}

foo();          // ReferenceError

举个列子

a = 1, 每隔1秒输出a+1的值, 并赋值给a以此累加到值5为止

// 错误的
// 错误原因是 异步执行时去找 i变量,此时i的值为 
for (var i = 1; i<=5;i++) {

    setTimeout(function(){
      console.log('i=>', i)
    }, i*1000)

}

// 利用之前的块级作用域
for (var i = 1; i<=5;i++) {

      (function (i){
             //  原因相当于每次声明一个i 来实现块级
           setTimeout(function(){
               console.log('i=>', i)
           }, i*1000)
           
        })(i)

}

// 利用ES6的块级申明
for (let i = 1;i<=5;i++) {
   // 相当于每次声明 i 在块内
   setTimeout(function(){
        console.log('i=>', i)
    }, i*1000)
}
let,var,const注意事项

let,var 声明且未赋值时默认值undefined,const必须显示声明 不会默认undefined

let  name = '张三',age 
var _name = '李四',_age
const __name = '王五', __age  // 报错

连续声明赋值可采用数组解构

变量解构

ES6变量解构赋值

原文:https://www.cnblogs.com/webchenhan/p/10635516.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!