首先我们来看一下ES是什么?全称为ECMAScript,是JavaScript语言的核心,它规定了js的组成部分:语法、类型、语句、关键字、保留字、操作符、对象。下面直奔两者不同:

1. 系统库的引用

ES5中的引用需要先使用require导入React包,成为对象,再去进行真正引用

//ES5
var React = require("react");
var {Component,PropTypes
} = React;  //引用React抽象组件var ReactNative = require("react-native");
var {Image,Text,
} = ReactNative;  //引用具体的React Native组件

在ES6里,可以使用import方法来直接实现系统库引用,不需要额外制作一个类库对象

//ES6
import React, { Component,PropTypes,
} from 'react';
import {Image,Text
} from 'react-native'

2. 导出及引用单个类

ES5中,要导出一个类给别的模块使用,一般通过module.exports来实现,引用时,依然通过require方法来获取。

//ES5导出
var MyComponent = React.createClass({...
});
module.exports = MyComponent;//ES5导入
var MyComponent = require('./MyComponent');

ES6中,使用export default实现同样的功能,但要使用import方法来实现导入。

//ES6导出(一般都继承于Component类)
export default class MyComponent extends Component{...
}//ES6导入
import MyComponent from './MyComponent';

    注意:ES5和ES6的导入导出方法是成对出现的,不可以混用。

3. 定义组件

ES5中,组件类的定义通过React.createClass实现。

注意:ES5中React.createClass后面是需要小括号的,且结尾必须有分号。

//ES5
var Photo = React.createClass({render: function() {return (<Image source={this.props.source} />);},
});

在ES6里,让组件类去继承React.Component类就可以了。

注意:这里结尾时不会出现小括号,也不需要添加分号。

//ES6
class Photo extends React.Component {render() {return (<Image source={this.props.source} />);}
}

4. 给组件定义方法

从上面的例子可以看到,给组件定义方法不再用 名字:function()的写法,而是直接用 名字(),在方法的最后也不能有逗号了。

//ES5
var Photo = React.createClass({componentWillMount: function(){},render: function() {return (<Image source={this.props.source} />);},
});
//ES6
class Photo extends React.Component {componentWillMount() {}render() {return (<Image source={this.props.source} />);}
}

5. 初始化State

ES5中,初始化state使用getInitialState

//ES5
var Video = React.createClass({getInitialState: function() {return {loopsRemaining: this.props.maxLoops,};},
})

ES6中存在两种写法
第一种,直接构造state函数

class Video extends React.Component {state = {loopsRemaining: this.props.maxLoops,}
}

第二种,相当于OC中的方法重写,重写constructor方法

class Video extends React.Component {constructor(props){super(props);this.state = {loopsRemaining: this.props.maxLoops,};}
}

6. ES6中的新特性

  • ES6中的let命令,声明变量,用法和var差不多,但是let是为JavaScript新增了块级作用域,ES5中是没有块级作用域的,并且var有变量提升的概念,但是在let中,使用的变量一定要进行声明;
  • ES6中变量的结构赋值,包括对象解构和数组解构以及混合解构,比如:var [a,b,c] = [0,1,2];
  • ES6中的函数定义也不再使用关键字function,而是利用了箭头函数=>来进行定义;
  • ES6中可以设置默认函数参数,如function A(x,y=9){};
  • ES6中新增了Set集合和Map集合;
  • ES6新增了一个基本数据类型Symbol;
  • ……

目前先总结这么多,其他小伙伴也可以补充哦,大家一起学习、进步!

前端面试之ES5与ES6的区别相关推荐

  1. HTML和HTML5,css和css3的区别,ES5和ES6的区别有那些?

    HTML和HTML5的区别: 其实说白了,就是ES5和ES6的区别,无非就是换汤不换药,其实这个说法也不太对,是加了一些调料而已,HTML是前端搭建页面的必须品,但是随着人们开发的需求和速度,后期维护 ...

  2. 前端面试高频考点,ES6知识点汇总!!!

    前端面试高频考点,ES6知识点汇总!!! ⛳️大家好,我是王同学,今天给大家分享的是ES6面试的高频考点,文章没有一点套路,只有满满的干货 ⛳️如果对你有帮助就给我点个赞吧,这样我们就互不相欠了 ⛳️ ...

  3. 谈谈ES5和ES6的区别

    我们都知道JavaScript是由三部分组成: 1. ECMAScript(核心):规定了语言的组成部分=>语法.类型.语句.关键字.保留字.操作符.对象 2. BOM(浏览器对象模型): 支持 ...

  4. es5和es6的区别、以及es6的新特性

    es5和es6的区别 系统库的引入 es5:ES5中的引用需要先使用require导入React包,成为对象,再去进行真正引用 es6:ES6里,可以使用import方法来直接实现系统库引用,不需要额 ...

  5. es5 和es6的区别

    es5 和es6的区别 答题思路: 列出es6的新技术 + 解决了es5中哪些的不足 + 看法 通过不同的语法作答 准备几个技术点去分析:优化 性能 缺陷(es6中promice) 自己查es6的更深 ...

  6. 你知道ES5 和 ES6 的区别吗?,能说出说几个 ES6 的新增方法吗?

    目录 ES5 和 ES6 的区别 ES6 的新增方法 1.新增声明命令 let 和 const 1.1)特点 2.模板字符串(Template String) 3.函数的扩展 3.1)函数的默认参数 ...

  7. 常用浏览器内核的了解、ES5和ES6的区别、ES6的更新的笔试题

    对浏览器的内核的了解?有哪些内核?(重点6分) 浏览器要渲染出网页给用户看,必须加载html编码和js脚本,渲染引擎渲染页面的UI和js执行引擎操作内存,就是浏览器的的重要组成程序:内核 根据不同的浏 ...

  8. es5和es6的区别

    最近在看阮一峰的<ECMAScript6入门>,讲真,这本书对初学者真的很有帮助,在这里也推荐给大家.接下来,我要说的一些例子也大多来源于这本书,如果对这本书感兴趣的小伙伴,也可以戳这里哦 ...

  9. es5与es6的区别

    es5和es6对于前端开发来说是经常都会使用的方法,他们为我们开发提供了很多便利的方法和写法,使我们的代码更加的优雅,作为一个新人就让我简单总结一下es5与es6的不同. 1. 变量 首先在变量方面e ...

最新文章

  1. 我看过的SDN方面的好文章
  2. 一次犹豫不决策略选择
  3. jquery form 的beforeSubmit提交前的回调函数
  4. iOS开发笔记[13/50]:解决SenTestingKit/SenTestingKit.h: No such file or directory问题
  5. 稳定菜篮子市场供需 农业大健康-林裕豪:从玉农业全力保障
  6. eclipse导入远程库的git项目
  7. JavaOne演讲者选择了您不应该错过的10个会话
  8. spring属性注入的set方法注入
  9. c mysql dll_C:\Windows\libmysql_e.dll
  10. nodejs上传图片并展示
  11. SSL/TLS捕包分析
  12. 关于卸载Python第三方包的粗暴方法
  13. python最简单单例模式_5种Python单例模式的实现方式
  14. ubuntu16.0.4安装mysql5.7以及设置远程访问
  15. java基础知识---IO常用基础操作(一)
  16. 尔雅/广雅 —— 古代的字典
  17. 你的不好意思,正在摧毁你
  18. 热炉法则:规章制度面前人人平等 | 每天成就更大成功
  19. java数组计算奇数的和,JAVA从键盘中输入20个整数将奇数和偶数存入不同的两个数组中 计算这两个数组中所有数据之和...
  20. python 3 4j不是合法的_3 4j 是合法Python数字类型。

热门文章

  1. [MicroPython]TurniBit开发板DIY自动窗帘模拟系统
  2. IIS5、IIS6、IIS7的ASP.net 请求处理过程比较转
  3. 吴裕雄--天生自然 高等数学学习:导数的几何意义
  4. 依靠闲鱼赚钱,互联网副业单天500+
  5. python微博评论情感分析_Python采集微博热评进行情感分析祝你狗年脱单
  6. C#使用委托实现信用卡用户定时还款功能
  7. 计算机软件侵权鉴定,通过计算机软件侵权司法鉴定简要对比流程看软件侵权对比方法...
  8. (6CBIR模拟问题)自己动手,编写神经网络程序,解决Mnist问题,并网络化部署...
  9. 实现QQ登陆(QQ互联)
  10. nginx访问后端偶尔超时问题