参考网站: https://es6.ruanyifeng.com/
在这里感谢作者,网站是基于书籍开源的,感谢作者的分享精神。当时我以为 阮一峰 和 廖雪峰 是同一个人,最后发现原来不是。
历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如 Ruby 的require、Python 的import,甚至就连 CSS 都有@import,但是 JavaScript 任何这方面的支持都没有,这对开发大型的、复杂的项目形成了巨大障碍。
所以ES6 有了导入和导出的概念,使得项目模块化了。
1-1 导出变量或者函数
// profile.js // 导出变量 var firstName = 'Michael'; var lastName = 'Jackson'; var year = 1958; export { firstName, lastName, year };导出函数:
export function multiply(x, y) { return x * y; };1-2 导入
// main.js import { firstName, lastName, year } from './profile.js'; function setName(element) { element.textContent = firstName + ' ' + lastName; }导入函数
// circle.js export function area(radius) { return Math.PI * radius * radius; } export function circumference(radius) { return 2 * Math.PI * radius; }导入:
// main.js import { area, circumference } from './circle'; console.log('圆面积:' + area(4)); console.log('圆周长:' + circumference(14));他是ES 6(ECMAScript)的语法,箭头函数(arrow function),箭头函数是简写,但是也会有一些功能不支持。
比如:
function(x){ reuturn x+6; }上面的函数也可以用箭头函数进行简写,
(x)=>x+6;也可以这样:
x=>x+6;区别
内容普通函数箭头函数this指向支持不支持new 实例化支持不支持构造_prototype_支持不支持const声明一个只读的常量。一旦声明,常量的值就不能改变。export 导出常量值。
ES6 新增了let命令,用来声明局部变量。
import requst from './request' // 封装请求 const http = { /** * methods: 请求 * @param url 请求地址 * @param params 请求参数 */ // get请求,传入url和参数 get(url,params){ const config= { method: 'get', url: url } if(params) config.params = params return requst(config) }, post(url,params){ const config = { method: 'post', url: url } if (params) config.data = params return requst(config) } } // 导出 export default http和使用双引号/单引号的普通字符串的作用一样。
模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
// 字符串中嵌入变量 var name = "Bob", time = "today"; `Hello ${name}, how are you ${time}?` // 如果在模板字符串中需要使用反引号,则前面要用反斜杠转义。 var greeting = `\`Yo\` World!`;如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。
$('#list').html(` <ul> <li>first</li> <li>second</li> </ul> `);ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
{ let a = 10; var b = 1; } a // ReferenceError: a is not defined. b // 1