【ES6】ES6入门

1.概要

- ECMAScript2015(ES6)是Javascript最标准的语法式样,是在2015年6月由Ecma国籍组织公布的最新版本,现在已经被多个领域和浏览器所广泛采纳和使用。

2.学习网址:

- https://github.com/lukehoban/es6features- https://babeljs.io/learn-es2015/
- https://es6.ruanyifeng.com/#docs

3.开发工具

- nodejs 10.x

4.编辑器

- vscode

- 运行命令 node test001.js

5.新特性

  1. let 和 const
  2. 变量结构赋值
  3. 数组
  4. 字符串
  5. 函数
  6. 面向对象
  7. Promise
  8. generator
  9. 模块化

6.let 和 const 命令

- let 知识点

1.限定作用域
2.不允许重复定义

-- 作用域

1.ES6 新增了let 命令,他用法类似var ,但是所声明的变量,只能再代码块中有用 ,说明 : var 不够严谨,let 只能作用再块级作用域;

if (true) {
let a = 1;
var b = 2;
}
console.log(b); // 2
console.log(a); // ReferenceError: a is not defined 报错,提示a未定义;

2.不允许重复定义,重复声明一个变量,这种情况本身就不合适,不管是再java ,python中都没有这种定义

var i = 0;
switch (i) {
case 0 :
var value = "hello";
break;
case 1 :
var value = "world";
break;
}

console.log(value); // hello

 

var i = 0;
switch (i) {
case 0 :
let value = "hello";
break;
case 1 :
let value = "world";
break;
}

console.log(value); // SyntaxError: Identifier ‘value‘ has already been declared 已经被定义过了,不能重复定义

- const 命令

- 知识点

定义常量

-- 声明一个只读的常量,一旦声明,不能修改

const num = 10;
console.log(num); // 10

-- const 声明变量不得改变值,说明,一旦声明必须初始化

const num ;
console.log(num); // SyntaxError: Missing initializer in const declaration 没有初始化

-- const 也是只有在块级作用域中有效

if (true) {
const num = 10;
}

console.log(num); // ReferenceError: num is not defined

-- const 与 let 命令一样,变量不可重复定义


7.变量的结构赋值

  1. 数组赋值
  2. 对象赋值
  3. 函数赋值
  4. 函数参数指明

-- 数组赋值 按照对应的位置,赋值

let [a,b,c] = [10,20,30];
console.log(a,b,c); // 10,20,30

-- 如果对应的位置没有值的话,解析会不成功,对应的变量会是undefined

let [a,b,c] = [10,20];
console.log(a,b,c); // 10 20 undefined

-- ... 赋值,其他后面的

let [a,b,...other] = [10,20,30,40,50];
console.log(a,b,other); // 10 20 [ 30, 40, 50 ]

  

-- 对象赋值 对象赋值变量必须与属性同名,才能取到值

let {name , age} = {name : "wx" , age : 18} ;
console.log(name,age);

  

-- 函数赋值

function sum () {
return [10,20];
}

let [num1,num2] = sum();
console.log(num1,num2);

  

-- 函数指明赋值

function sum ({x=1,y=2}) {
return x + y ;
}

console.log(sum({})); //3
console.log(sum({x:2})); // 4
console.log(sum({x:2,y:5})); // 7

8.嵌入字符串

- 知识点

  1. 字符串嵌入方式
  2. 字符串模板定义

- 模板,反单引号`${}`

let name = ‘john‘;
let mystr = `hello ${name}`;
console.log(mystr); //hello john

9.数组

- 知识点

新的数组循环方式 for of

- 循环所有的值

let list = [10,20,30];
for(let val of list)
console.log(val);

  

- 循环所有的下标

let list = [10,20,30];
for(let val in list)
console.log(val, list[val]);

10.箭头函数

- 知识点

  1. 通过箭头函数简化代码2.当只有一个参数的时候可以省略()
  2. 当只有一个return 的时候可以省略 {}

- 普通函数

function sum(x) {
return x ;
}

console.log(sum(1)); // 1

  

- 箭头函数简化, 去掉 funtion , 改成 =>

let sum = (x) => {
return x;
}

console.log(sum(1)); // 1

只有一个 参数的时候可以省略()

let sum = x => {
return x;
}

console.log(sum(1)); // 1

只有一个return 可以省略 {} 最终简化成

let sum = x => x;

console.log(sum(1));

11.类

- 知识点

  1. 新的类定义
  2. 类的实例
  3. setter / getter
  4. 类的继承

- 更像java python ES6 中 class 用来定义类 constructor 定义构造方法 通过new 生成新的实例对象

class show {
constructor (name,age) {
this.name = name;
this.age = age;
}

showName() {
console.log(this.name)
}

showAge() {
console.log(this.age)
}
}

let name = new show(‘wx‘,18);
name.showName(); //wx

- 类的实例

let name = show(‘wx‘,18) // TypeError: Class constructor show cannot be invoked without ‘new‘
let name = new show(‘wx‘,18); //true

- setter / getter  set get, 某个属性存储值和取值函数

class show {
constructor (name,sex) {
this.name = name;
this.sex = sex;
}

get age() {
return this._age;
}

set age(val) {
this._age = val;
}
}

let name = new show(‘wx‘,‘F‘);
console.log(name); //{ name: ‘wx‘, sex: ‘F‘ }
name.age = 19;
console.log(name); //{ name: ‘wx‘, sex: ‘F‘, _age: 19 }

  

- 类继承

- 知识点

  1. extends
  2. super

- super 调用父类的 constructor 使用super(),代表父类有构造函数

class A {}
class B extends A {
constructor() {
super();
}
}

  

// 实例
class Name {
constructor(name){
this.name = name;
}
show(){
console.log(`用户名${this.name}`);
}
}

class User extends Name {
constructor(name, age) {
super(name);
this.age = age;
}
showUser(){
return (`年龄是${this.age}`)
}
}

let mycar = new User("wx", "18");
mycar.show();
console.log(mycar.showUser()); // 用户名wx 年龄是18

  


12.generator 迭代器

- 知识点

1.function *xx {} 迭代生成器
2.yield :迭代返回
3.next() 方法参数

- generator 函数 需要在function 关键字与函数名之间加个星号, 一般函数用return ,return 就直接返回了,但是generator 函数 用yield 返回,可以多次返回

// 实例
function *show() {
yield "h";
yield "e";
yield ‘l‘;
yield ‘l‘;
yield ‘0‘;
}

for (let val of show()) {
console.log(val);
}

  

- next()

遍历器对象的next方法的运行逻辑如下。

(1)遇到yield表达式,就暂停执行后面的操作,并将紧跟在yield后面的那个表达式的值,作为返回的对象的value属性值。

(2)下一次调用next方法时,再继续往下执行,直到遇到下一个yield表达式。

(3)如果没有再遇到新的yield表达式,就一直运行到函数结束,直到return语句为止,并将return语句后面的表达式的值,作为返回的对象的value属性值。

(4)如果该函数没有return语句,则返回的对象的value属性值为undefined。

function *show() {
console.log(1);
yield;
console.log(2);
}

let generator = show();
generator.next();
generator.next();

  

原文地址:https://www.cnblogs.com/totoro-cat/p/11304630.html

时间: 2024-07-30 10:01:28

【ES6】ES6入门的相关文章

React +ES6 +Webpack入门

React +ES6 +Webpack入门 React已成为前端当下最热门的前端框架之一 , 其虚拟DOM和组件化开发让前端开发更富灵活性,而Webpack凭借它异步加载和可分离打包等优秀的特性,更为React的开发提供了便利.其优秀的特性不再赘述.本文将详细的记录react babel webpack的环境搭建,以及搭建的过程中遇到的一些坑. 一.新建React项目 1.如图为新建react项目结构,其中 entry.js放置react入口代码,index.js放置react组件代码,asse

Vue -- ES6 快速入门,Vue初识

一.ES6快速入门 let和const let ES6新增了let命令,用于声明变量.其用法类似var,但是声明的变量只在let命令所在的代码块内有效. { let x = 10; var y = 20; } x // ReferenceError: x is not defined y // 20 效果如下: var声明变量存在变量提升.也就是在声明变量之前就可以使用该变量. console.log(x) // undefined,var声明变量之前可以使用该变量 var x = 10; 刷新

ES6标准入门 论文随笔(二)

一.基本信息 标题:ES6标准入门 时间:2015 来源:电子工业出版社 关键词:ES6标准入门 二.研究内容 问题定义: ES6是什么?它是用来干嘛的?为什么要用ES6? 特点:(1)JavaScript新特性 (2)let.const (3)promise (4)iterator (5)proxy 三.结论 <ES6标准入门(第2版)>为中级难度,适合对 JavaScript 语言或 ES5 已经有所了解的读者,用来提高水平,了解这门语言的最新发展:也可当作参考手册,查寻 ES6/ES7

ES6 快速入门

快速了解ES6部分新特性... let ES6新增了let命令,用于声明变量.其用法类似var,但是声明的变量只在let命令所在的代码块内有效. { let x = 10; var y = 20; } x // ReferenceError: x is not defined y // 20 var声明变量存在变量提升.也就是在声明变量之前就可以使用该变量. console.log(x) // undefined,var声明变量之前可以使用该变量 var x = 10; 而let不会这样,let

ES6标准入门(阮一峰)-阅读记录与心得

目标:学习ES6标准,并能灵活使用ES6标准的JavaScript 内容:(未完成,待继续) 第一阶段:准备阶段 1.第一章,入门准备.主要讲了ES6简介与ECMAScript历史(这部分快速阅读),重点掌握ES6环境具体部署,建议使用Babel转码器.在配置Babel转码器之前,需要下载安装node环境,可以适当理解包管理的概念. 第二阶段:基础:新特性 1.第二章, 原文地址:https://www.cnblogs.com/xinkuiwu/p/11551679.html

《ES6标准入门》29~48Page 字符串拓展 正则拓展

1.字符串的拓展 ES3允许使用类似\u0061这样的形式来表示字符,其中的数字是Unicode-8编码. 但如果超出\uffff的字符,必须使用双字节的形式表达,例如 \uD842\uDFB7. 在ES6中,可以用\u{20BB7}这种形式表示,其中数字是Unicode-16编码. 对于需要Unicode-16编码存储的字符,ES认为有2个字符.此时使用String.codePoinAt()方法,可以准确的识别字符串中的字符,如果需要遍历,则需要使用for...of循环. 与此相对,Strin

ES6学习入门

ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. 虽然目前并不是所有浏览器都能兼容ES6全部特性,但越来越多的程序员在实际项目当中已经开始使用ES6了.所以就算你现在不打算使用ES6,但为了看懂别人的你也该懂点ES6的语法了... 暂时,我们想赶快上手项目,则只需要了解最常用的ES6特性 let, const, class, extends, s

【学习笔记】ES6标准入门

这里简要记录一下对自己感触比较深的几个知识点,将核心的应用投放于实际的项目之中,提供代码的可维护性. 一.let和const { // let声明的变量只在let命令所在的代码块内有效 let a = 1; var b = 2; } console.log(a); // 报错: ReferenceError: a is not defined console.log(b); // for循环的技术器就很适合let命令 for (let i = 0; i < 3; i++) { console.l

《ES6标准入门》10~28Page let和const命令 变量的解构赋值

1.let和const命令 (1)let命令 let命令类似于ES3中的var命令,但是所声明的变量只在let所在的代码块内有效. 1 { 2 let a = 10; 3 var b = 1; 4 } 5 6 console.log(a); //报错 7 console.log(b); //1 let相较var来讲有三个特殊性质,分别是不存在变量提升.暂时性死区和不允许重复声明. 1 //不存在变量提升 2 console.log(a); //报错 3 let a = 1; 4 5 //你无法在

es6快速入门

上次分享了es6开发环境的搭建,本次接着分享es6常用的特性. 1.变量声明let和const 我们都是知道在ES6以前,var关键字声明变量.无论声明在何处,都会被视为声明在函数的最顶部(不在函数内即在全局作用域的最顶部).这就是函数变量提升例如: function aa() { if(bool) { var test = 'hello man' } else { console.log(test) } } 以上的代码实际上是: function aa() { var test // 变量提升