ES6优秀写法汇总

一. 基本概念

ES6的重要改变包括:

  1. Arrow function(箭头函数)
  2. Promise
  3. Generator
  4. let 和 const
  5. Class(类)
  6. Module(模块)
  7. Multiline strings(多行字符串)
  8. Template literal(模板字面量)
  9. Default parameters(默认参数)
  10. The spread operator(展开操作符)
  11. Destructuring assignment(解构赋值)
  12. Enhanced object literals(增强的对象字面量)
  13. for…of 循环
  14. Map 和 Set

二. 分类详解

1. var let const变量

var

  • var声明的变量的作用域是它当前执行的上下文。var声明的变量只能是全局整个函数块
  • 函数内部使用var声明的变量,只属于函数内部,在函数外部是无法访问到函数内部的变量的,但是函数内可以访问到函数外部var定义的变量。
  • var声明的变量可以重复声明并且赋值,不会报错。
  • var声明的变量,会存在变量的声明提升的问题。
var name = 'wxw';  // 污染全局window的name属性
// 立即执行函数,可以使变量name私有化
(function () {
     
    var name = 'wxw';
})();

let

  • let 声明的变量是块级作用域

  • let变量的作用域仅限于for循环,if语块,普通的块{}内部,这点与var相似,但最大的区别是:var声明的变量的作用域是整个封闭函数

function varTest() {
   
    var x = 1;
    if (true) {
   
        var x = 22; // 这个x是与上面同一个变量!
        console.log(x); // 22
    }
    console.log(x); // 22
}

function letTest() {
   
    let x = 1;
    if (true) {
   
        let x = 22; // 这个x是不同变量!
        console.log(x); // 22
    }
    console.log(x); // 1
}
  • 在同一个函数或块作用域内重复声明同一个变量是会报错的,可以重复赋值,但不可重复声明。
let name = 'wxw';
let name = '万达';  // 报错,不可多次声明
name = '万达';     // ok ,正确赋值
  • 用var声明的变量有初始化值undefined,但通过let声明的变量直到他们的定义被执行时才进行的初始化。所以在变量初始化之前访问该变量会导致ReferenceError错误。该变量处在一个自块顶部到初始化处理的暂存死区中。
  function foo() {
   
      console.log(param1); // undefined
      console.log(param2); // ReferenceError错误!
      var param1 = 'bar';
      let param2 = 'bar2';
  }

const

  • const 也是块级作用域

  • const声明的变量不可再次声明,也不可再次赋值修改。

  • const声明的引用类型对象,例如对象,数组,其本身不可修改,但是对象的内部属性值可以修改。

const person ={
    name:'wxw',age:32 }
person = {
   name:'www'}         // 报错,不可修改person对象本身
person.name="王晓文"          // 修改对象内部属性,OK,没有问题,正确赋值
const jerry =Object.freeze(person);  // 冻结对象,不可增删改这个对象的已有属性
// 使用var声明,会导致结果永远为循环最后值
for (var index = 0; index < 10; index++) {
   
    console.log(index);
    setTimeout(function () {
   
        console.log(`index-${
     index}`);
    }, 1000)   // var: 10遍10  let: 依次输出 0- 9
}
console.log(`index-${
     index
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值