美文网首页
Es6 语言特性(React全栈读书笔记)

Es6 语言特性(React全栈读书笔记)

作者: 月魂king | 来源:发表于2018-02-08 10:26 被阅读0次

1. const、let关键字

在javascript中,变量默认是全局性的,只存在函数级作用域,声明函数曾经是创造作用域的唯一方法。为了解决块级作用域的问题,ES6中提出了let关键字。

// console.log(a);  a is not defined
let a = 'john';
console.log(a);

同时还引入的概念是const,用来定义一个常亮,一旦定义以后不可以修改,不过如果是引用类型的,那么可以改变它的属性。

// console.log(a);  a is not defined
const a = 'john';
// a = 'lucy'; Assignment to constant variable
// a is read-only
console.log(a);
const a = { name: 'john' };
a.name = 'lucy';
// 可以正常运行
console.log(a);

2. 函数

  • 箭头函数
    箭头函数是一种更简单的函数声明方式,可以把它看做是一种语法糖,箭头函数是永远匿名的。
let add = (a,b) => {return a + b};
// 当后面是表达式(expression)的时候,还可以简写为
let add = (a,b) => a + b;
// 等同于
let add = function (a,b) {
  return a + b;
}
// 在回调函数中的应用
let numbers  = [1, 2, 3];
let doubleNumbers = numbers.map((number) => number * 2);
console.log(doubleNumbers);
  • this在箭头函数中的使用
let age = 2;
let john = {
  age: 1,
  grow: function () {
    setTimeout(function(){}, 1000);
  }
};
john.grow();
// 此处结果是NaN 原因是let声明的变量是块级作用域,不是全局变量
var age = 2;
let john = {
  age: 1,
  grow: function(){
    setTimeout(function(){
      console.log(++this.age)
    },100);
  }
}
john.grow();
// 此处结果是3

在对象方法的嵌套函数中,this会指向global对象。一般为了解决这种问题,会采用一些hack来解决它。

let john = {
  age: 1,
  grow: function(){
    const self = this;
    setTimeout(function(){
      console.log(++self.age);
    },100)
  }
}
// 或者
let john = {
  age: 1,
  grow: function(){
    setTimeout(function(){
      console.log(this.age)
    }.bind(this),100)
  }
}

使用箭头函数就可以轻松解决这个问题

let kitty = {
  age: 1,
  grow: function(){
    setTimeout(()=>{console.log(this.age)},100);
  }
 }
  • 函数默认参数

相关文章

  • Es6 语言特性(React全栈读书笔记)

    1. const、let关键字 在javascript中,变量默认是全局性的,只存在函数级作用域,声明函数曾经是创...

  • ES6 语法

    刚开始用vue或者react,很多时候我们都会把ES6这位大兄dei加入我们的技术栈中。但是ES6那么多那么多特性...

  • ES6

    刚开始用vue或者react,很多时候我们都会把ES6这位大兄dei加入我们的技术栈中。但是ES6那么多那么多特性...

  • 【转】es6总结

    刚开始用vue或者react,很多时候我们都会把ES6这位大兄dei加入我们的技术栈中。但是ES6那么多那么多特性...

  • ES6

    刚开始用vue或者react,很多时候我们都会把ES6这位大兄dei加入我们的技术栈中。但是ES6那么多那么多特性...

  • React+Redux基础

    技术栈: react + redux + webpack + react-router + ES6/7/8 + i...

  • es6

    刚开始用vue或者react,很多时候我们都会把ES6这个大兄弟加入我们的技术栈中。但是ES6那么多那么多特性,我...

  • ES6这些

    刚开始用vue或者react,很多时候我们都会把ES6这个大兄弟加入我们的技术栈中。但是ES6那么多那么多特性,我...

  • ES6这些就够了

    刚开始用vue或者react,很多时候我们都会把ES6这个大兄弟加入我们的技术栈中。但是ES6那么多那么多特性,我...

  • 基于react + redux + immutable + le

    ## 技术栈: react + redux + immutable + less + scss + ES6/7 +...

网友评论

      本文标题:Es6 语言特性(React全栈读书笔记)

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