let

let命令用来声明块级作用域. 以前的JavaScript只有全局作用域和函数作用域, 没有块级作用域.

// 示例1:
if (1) {
var a = "hello";
let b = "world";
}
console.log( a ); // hello
console.log( b ); // b is not defined // 示例2:
for (let i = 0; i < 10; i++) {
// do something
} console.log(i); // ReferenceError: i is not defined // 示例3.1:
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
console.log( i );
console.log( a[6]() ); // 10
// 循环结束后i的值为10, a[6](), 相当于a[6](10), 所以输出10 // 示例3.2:
var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
console.log( a[6]() ); // 6
// 循环结束后, i不再能够被访问, 此时调用a[6](), 则相当于a[6](6), 输出6

不存在变量提升

// var 的情况
console.log(foo); // 输出undefined
var foo = 2; // let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2; // 什么都不定义而直接输出
console.log(foo2); // 报错ReferenceError

报错与输出undefined大不一样, undefined是JavaScript里的值, 而报错则程序中断运行.

const

const声明一个只读的常量. 一旦声明, 常量的值就不能改变.

const PI = 3.1415;
PI // 3.1415 // 为const变量重新赋值报错
PI = 3; // TypeError: Assignment to constant variable. // 由const变量不能在其后赋值, 所以在声明的同时必须同时赋值, 否则报错
const foo; // SyntaxError: Missing initializer in const declaration

const的变量作用域等其它特性都与let相同

箭头函数

ES6允许使用箭头(=>)定义函数. 一个箭头函数表达式的语法比一个函数表达式更短.

语法

首先箭头函数一般用来简化使用函数表达式来定义的函数, 总体理解就是箭头左边是函数的参数, 箭头

右边是函数的返回值或者函数体.

var func1 = (param1, param2, paramN) => expression; // 相当于
var func2 = function (param1, param2, paramN) { return expression }; // 注意下面的statements加了大括号
var func10 = (param1, param2, paramN) => { statements }; // 相当于
var func11 = function (param1, param2, paramN) { statements }; // Parentheses are optional when there's only one parameter name:
// 函数参数只有1个, 则参数外层的括号可省略
var func3 = (singleParam) => { statements }; // 相当于
var func4 = singleParam => { statements } // 相当于
var func5 = function (singleParam) { statements }; // A function with no parameters should be written with a pair of parentheses.
// 函数没有参数, 参数外层的括号不可省略
var func6 = () => { statements }; // 相当于
var func7 = function () { statements }; // Parenthesize the body of function to return an object literal expression:
// 函数的返回值是1个对象, 则需要额外加一层小括号(因为原来的大括号当包围函数体的用途)
var func8 = params => ({name: sheng});
var func9 = function (params) { return {name: sheng} };

强烈推荐这个网站http://babeljs.io/repl, 把自己写的箭头函数, 复制粘贴到该网站左边的框

里, 该网站就会自动帮你解析成ES3/5版本.

简单示例

var sayHello = () => "hello-world";
console.log( sayHello() );

Class

ES6标准的定义的class并不是推翻了已经存在JavaScript基于原型的继承方式, 新的class,

写法只是让我们看起来更清晰, 更像传统的面向对象编程.class, 实际上是1个特殊的函数.

// 传统写法
function Point(x, y) {
this.x = x;
this.y = y;
} Point.prototype.toString = function () {
return '(' + this.x + ', ' + this.y + ')';
}; var p = new Point(1, 2); // class写法
//定义类
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
} toString() {
return '(' + this.x + ', ' + this.y + ')';
}
}

模板字符串

模板字符串是增强版的字符串, 使用反引号标识. 提供嵌入表达式, 插入变量, 保留换行等功能.

语法

`string text`

`string text line 1
string text line 2` `string text ${expression} string text` // ${} 是固定用法

用法

// 在字符串中嵌入变量
var name = "Bob", time = "today";
`Hello ${name}, how are you ${time}?` // 多行字符串
console.log(`
string text line 1
string text line 2
string text line 3
`); console.log("\
string text line 1\
string text line 2\
string text line 3\
"); //

相关链接

Babel REPL: http://babeljs.io/repl, 该工具非常强大, 在线把ES6语法解析成其兼容版本.

本文大部分内容都参考自此书: http://es6.ruanyifeng.com/

箭头函数 - MDN

ES6简单入门的更多相关文章

  1. koa2入门--01.ES6简单复习、koa2安装以及例子

    1.ES6简单复习 /*let 和 const: let用于定义一个块作用域的变量,const 定义一个常量 */ let a = 'test'; const b = 2; /*对象的属性和方法的简写 ...

  2. Vue的简单入门

    Vue的简单入门 一.什么是Vue? vue.js也一个渐进式JavaScript框架,可以独立完成前后端分离式web项目 渐进式:vue可以从小到控制页面中的一个变量后到页面中一块内容再到整个页面, ...

  3. python 全栈开发,Day88(csrf_exempt,ES6 快速入门,Vue)

    BBS项目内容回顾 1. 登陆页面 1. 验证码 1. PIL(Pillow) 2. io 2. ORM 1. 增删改查 3. AJAX $.ajax({ url: '', type: '', dat ...

  4. es6 快速入门 系列

    es6 快速入门(未完结,持续更新中...) 前言 为什么要学习es6 es6对于所有javaScript开发者来说,非常重要 未来,es6将构成javaScript应用程序的基础 es6中很多特性, ...

  5. es6 快速入门 系列 —— 变量声明:let和const

    其他章节请看: es6 快速入门 系列 变量声明:let和const 试图解决的问题 经典的 var 声明让人迷惑 function demo1(v){ if(v){ var color='red' ...

  6. es6 快速入门 系列 —— promise

    其他章节请看: es6 快速入门 系列 Promise Promise 是一种异步编程的选择 初步认识Promise 用 Promise 来实现这样一个功能:发送一个 ajax,返回后输出 json ...

  7. es6快速入门 系列 - async

    其他章节请看: es6 快速入门 系列 async 前文我们已经知道 promise 是一种异步编程的选择.而 async 是一种用于执行异步任务更简单的语法. Tip:建议学完 Promise 在看 ...

  8. es6 快速入门 系列 —— 类 (class)

    其他章节请看: es6 快速入门 系列 类 类(class)是 javascript 新特性的一个重要组成部分,这一特性提供了一种更简洁的语法和更好的功能,可以让你通过一个安全.一致的方式来自定义对象 ...

  9. es6 快速入门 系列 —— 对象

    其他章节请看: es6 快速入门 系列 对象 试图解决的问题 写法繁杂 属性初始值需要重复写 function createPeople(name, age){ // name 和 age 都写了 2 ...

随机推荐

  1. 6:7 题一起MySQL数据库分库备份

    企业Shell面试题6:MySQL数据库分表备份 请实现对MySQL数据库进行分表备份,用脚本实现. 解答: [root@db01 scripts]# cat fenbiao.sh #!/bin/ba ...

  2. 让IE6支持min-width和max-width的方法

    正如君所想象的一样,同实现层的fixed一样,用的是expression语句.例如div#demo在: IE6下最小宽度300px:   或 *html div#demo { width:expres ...

  3. 第二百三十九节,Bootstrap路径分页标签和徽章组件

    Bootstrap路径分页标签和徽章组件 学习要点: 1.路径组件 2.分页组件 3.标签组件 4.徽章组件 本节课我们主要学习一下 Bootstrap 的四个组件功能:路径组件.分页组件.标签组件 ...

  4. java字符编码(转)

    转载:http://blog.csdn.net/peach99999/article/details/7231247 深入讨论java乱码问题 几种常见的编码格式 为什么要编码 不知道大家有没有想过一 ...

  5. oralce 术语

    §2.1 术语 l 数据库块(BLOCK) ORACLE 数据库中的最小存储和处理单位,包含块本身的头信息数据或PL/SQL代码. ORACLE 块的大小是可以在安装时选择“自定义安装”来指定,也可以 ...

  6. Django admin 的 9 个技巧

    Tip 1:Django admin 后台不限于用 Django 开发的网站 虽然 Django admin 管理界面可以非常友好的用在 Django 项目的其它部分,它同样可以很容易用于其它像传统的 ...

  7. Laravel5.1 模型 --多对多关系

    多对多关系也是很常用的一种关系,比如一篇文章可以有多个标签,一个标签下也可以有多篇文章,这就是一个典型的多对多的关系. 1 实现多对多关系 多对多关系我们需要三张表,一张是文章另一张是标签,第三章表是 ...

  8. C#中单例的双重锁定模式

    from:https://blog.csdn.net/sinat_20559947/article/details/48311915 using System; using System.Collec ...

  9. Eclipse获取签名证书的SHA1

    签名后的获取方式 :http://jingyan.baidu.com/article/3ea51489da3bc252e71bba59.html 未签名的获取方式:http://www.th7.cn/ ...

  10. 学习tornado

    http://old.sebug.net/paper/books/tornado/ http://demo.pythoner.com/itt2zh/index.html http://tornado- ...