读《ECMAScript 6 入门 —— 阮一峰》(上)

前言

这里写图片描述

ES6的出现是为了提高 javascript 的严谨性,安全性等方面,它代表着js的发展方向。网站开发的人员,无论前后端都必须熟稔 ES6 语法规范。


带着问题看书

1. ES6 新增的关键词 let 和 var 区别?

a.  使用let声明的变量,只在它所在的代码块内有效。即如果使用let,声明的变量仅在块级作用域内有效。
b.  var命令会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined。而用let命令声明,不会发生变量提升。
c.  let不允许在相同作用域内,重复声明同一个变量。let实际上为 JavaScript 新增了块级作用域。

2.为什么需要块级作用域?

为了更好的管理变量。
避免 内层变量可能会覆盖外层变量。
避免 用来计数的循环变量泄露为全局变量。

3.利用ES6中的块级作用域改写下面广泛使用的立即执行函数表达式(IIFE)?

// IIFE 写法
(function () {
  var tmp = ...;
  ...
}());
// 块级作用域写法
{
  let tmp = ...;
  ...
}

4.const命令的用法?

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

5.ES6 声明变量的六种方法?

var
function
let
const
import
class
为了保持兼容性,var命令和function命令声明的全局变量,依旧是顶层对象的属性;另一方面规定,let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。也就是说,从ES6开始,全局变量将逐步与顶层对象的属性脱钩。
var a = 1;
// 如果在Node的REPL环境,可以写成global.a
// 或者采用通用方法,写成this.a
window.a // 1

let b = 1;
window.b // undefined

6.什么是“解构”?哪些数据类型可以使用解构赋值?

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。
数组,对象,字符串,类数组对象都可以解构赋值,另外数值和布尔值也可以结构赋值。
let [a, b, c] = [1, 2, 3];
let { foo, bar } = { foo: "aaa", bar: "bbb" };
const [a, b, c, d, e] = 'hello';
let {length : len} = 'hello';
let [a, b, c] = [1, 2, 3];

函数的参数也可以使用解构赋值。
例如:
function add([x, y]){
  return x + y;
}

add([1, 2]); // 3

7.rest参数和arguments的区别?

rest是数组,而argument是类数组对象。
ES6 引入 rest 参数(形式为...变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了。

// arguments变量的写法
function sortNumbers() {
  return Array.prototype.slice.call(arguments).sort();
}

// rest参数的写法
const sortNumbers = (...numbers) => numbers.sort();

8.使用ES6中的箭头函数改写下列常用结构?

var f = v => v;
上面的箭头函数等同于:

var f = function(v) {
  return v;
};
如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。

var f = () => 5;
// 等同于
var f = function () { return 5 };

var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
  return num1 + num2;
};

9.使用箭头函数有哪些注意点?

(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。

(2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。

(3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。

(4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数。

(5)由于箭头函数没有自己的this,所以当然也就不能用call()、apply()、bind()这些方法去改变this的指向。

长期以来,JavaScript 语言的this对象一直是一个令人头痛的问题,在对象方法中使用this,必须非常小心。箭头函数”绑定”this,很大程度上解决了这个困扰。

10.Promise对象的含义和用法?

Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。

所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。

其实,上面罗列的这些只是这本书的冰山一角,大概也就十分之一吧。

了解更多

ECMAScript 6 入门

### 回答1: 《ECMAScript 6 入门》是阮一峰著的一本 JavaScript ES6 新特性入门教程,该书从ES6的背景和目标出发,逐步讲解了ES6新特性。其中包括:let 和 const 命令、变量的解构赋值、字符串的扩展、正则表达式的扩展、数值的扩展、数组的扩展、函数的扩展、对象的扩展等。 本书采用了易于理解的方式,详细解ES6新特性的实现原理,从而者可以更好地掌握新语法和语言特性。此外,每章节中均穿插了许多实例,方便者进行实践和理解。书中提供的案例也非常实用,能帮助开发者提高代码的可维护性、可扩展性以及可性。 在ES6中,JS的标准库得到了大幅度的扩充,涉及各种各样的操作API,可以使开发者在开发过程中更加高效、方便。此外,ES6还引入了模块化编程规范,进一步便于程序的组织和管理,使得代码更加可和易于理解。 总之,作为一本JavaScript ES6新特性入门教程,《ECMAScript 6 入门》绝对是一本值得阅的书籍。它详细地介绍了ES6所有的新特性和语言规范,并通过丰富的实例,让者能够快速地掌握ES6的编写技巧和使用方法,对于想要了解和掌握ES6新特性的开发者来说,阮一峰老师的这本书实在是一本不可或缺的参考书。 ### 回答2: 《ECMAScript 6 入门》是由阮一峰写的一本关于 ECMAScript 6 的入门指南,主要介绍了 ECMAScript 6 的新特性和语法。本书采用干货式的阐述方式,对 ECMAScript 6 中的新特性做了全面的介绍,列举了大量的例子,方便者更好地理解和掌握。在学习过程中,者也可以通过在线编译器和在线代码库练手。 《ECMAScript 6 入门》总共分为三大部分,包括基础篇、进阶篇和实战篇。基础篇主要讲述了 ECMAScript 6 中的基础语法和常用特性,比如变量声明、箭头函数、模板字符串、解构赋值、参数默认值等等。进阶篇则进一步讲述了 ECMAScript 6 中的高级特性,如面向对象编程、模块化、异步编程、迭代器和生成器等。实战篇则以实际的代码案例为基础,通过比较实际的场景来深入了解 ECMAScript 6 的应用。 总的来说,《ECMAScript 6 入门》是一本非常好的 ECMAScript 6 的入门书籍,对于想要学习 ECMAScript 6 的开发者来说,是一本非常重要的参考书籍。无论是初学者还是已经掌握了部分要点的开发者,都可以从其中获得很多收获。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值