复习 JavaScript && ES6 专题 (1) 2017/3/10 – Payne

Slides:



Advertisements
Similar presentations
— 高级软件人才实作培训专家 ! 北京传智播客教育 ajax 讲师:韩顺平 qq:
Advertisements

第 4 章 PHP 基本語法.
C#程式設計 第二部分 第5-6章 C# 程式設計 - 南華大學資管系.
移动校园Hybrid应用开发介绍 2015年11月.
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
JavaScript中常用的互動方式 認識簡單的交談與基本的運算.
第12讲 Javascript 复习 信息学院 孙辉.
南京理工大学 第2章 Java基本语法 本章我们将学习Java编程语言的基本语法,包括变量、操作符、表达式、语句、字符串、数组、控制流以及如何使用帮助文档。 使用下面的编程框架: public class Test{ public static void main(String []args){ //以下添加测试代码.
P303 HTML/DHTML/CSS/JavaScript 專業HTML網頁設計 陳錦輝.
第一讲 JavaScript编程基础 信息学院 周宝刚.
第4章 JavaScript脚本语言基础 4.1 JavaScript简介 4.2 JavaScript语法基础
第3章 JavaScript语言基础.
ES6简介.
14 JavaScript语言基础 JavaScript是一种轻量级、解释型的Web开发语言。所谓轻量级,就是语言的体系结构不是很庞杂,例如,没有C、Java等语言中的类、内存管理、系统管理等高深的知识范畴;所谓解释型,就是语言在浏览器或服务器等环境中直接被解释执行,不需要对源代码进行编译操作。
C#程序设计 10软件1、2班 王槐彬 计算机工程学院.
第二章 JAVA语言基础.
Google App Engine Google 應用服務引擎.
Ch07 PHP程式基礎 網頁程式設計.
网络协会2017培训 Node.js专题 (1) 2017/3/12 – Payne.
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
ASP VBScript 基础知识.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
网络协会2017培训 恶补Web知识训练营 2017/4/7 – Payne.
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
Visual Basic 6.0 學習範本 第三章 基本資料型態.
物件導向程式設計 (Object-Oriented rogramming)
第二章 C# 基础知识.
PHP 5 入門基礎 第一個PHP 程式 PHP 資料型態.
Java基础 JavaSE异常.
程式語言 -Visual Basic 變數、常數與資料型態.
流程控制結構 4-1 流程控制與UML活動圖 4-2 程式區塊與主控台基本輸入 4-3 條件控制敘述 4-4 迴圈控制敘述 4-5 巢狀迴圈
JavaScript for Qt Quick
第3章 語法入門 第一個Java程式 文字模式下與程式互動 資料、運算 流程控制.
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
本單元介紹何謂變數,及說明變數的宣告方式。
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
JAVA程序设计 第5章 深入理解JAVA语言----补充.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
Java语言程序设计 第五部分 Java异常处理.
王豐緒 銘傳大學資訊工程學系 問題:JAVA 物件檔輸出入.
第三章 流程控制與例外處理 資訊教育研究室 製作 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
辅导课程十三.
DWR WEB开发交流 1、自我介绍 2、DWR概述 3、DWR DEMO介绍 4、DWR实现机制 5、DWR配置说明 6、JS开发注意事项.
例外處理與 物件序列化(Exception Handling and Serialization of Objects)
本章中將會更詳細地考慮有關重複的概念,並且會 介紹for和do…while等兩種用來控制重複的敘述 式。 也將會介紹switch多重選擇敘述式。 我們會討論直接和迅速離開某種控制敘述式的 break敘述式,以及用來跳過重複敘述式本體剩餘 部份的continue敘述式。 本章會討論用來組合控制條件的邏輯運算子,最後.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
Php class 組員: 賴羿陵 林昱廷 莊正暉 張雅晴
Java程序设计 第2章 基本数据类型及操作.
C/C++/Java 哪些值不是头等程序对象
第三章 C# 基础知识.
第3章 Java語法的JSP程式 3-1 Java語言的基礎 3-2 JSP程式的基本架構 3-3 Java的變數與資料型態
软件测试 (四)静态测试与动态测试.
第二章Java基本程序设计.
Ajax编程技术 第六章 调试与错误处理.
Chapter 2 基本語法.
JavaScript Sunxiaoshen.
第二章 Java基本语法 讲师:复凡.
Action Script 使用介紹 第六組 張瀚之.
第3章 JavaScript基本语句.
第二章 Java语法基础.
第2章 JavaScript语言基础 2.1 数据类型、常量及变量.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
Java程序设计 第17章 异常和断言.
Scala编程
知识分享:使用web写UI, 使用js对接C++项目, 提高开发效 率。
第2章 Java语言基础.
第二章 Java基础语法 北京传智播客教育
第 20 章 ActionScript 指令與語法.
JavaScript 教师:魏小迪
Presentation transcript:

复习 JavaScript && ES6 专题 (1) 2017/3/10 – Payne 网络协会2017培训 复习 JavaScript && ES6 专题 (1) 2017/3/10 – Payne

JavaScript 是什么 JavaScript ( JS ) 是一种轻量级解释型的,或是JIT编译型 的程序设计语言,有着 函数优先 (First-class Function) 的 编程语言。 虽然它是作为开发web页面的脚本语言而出名的,但是在 很多非浏览器环境中也使用JavaScript,例如 node.js。 JS是一种基于原型、多范式的动态脚本语言,并且支持面 向对象、命令式和声明式(如:函数式编程)编程风格。

JavaScript 的标准 ECMAScript(ES) 是 JavaScript 的标准。 截至 2012 年,所有的现代浏览器都完整了支持 ECMAScript 5.1 (所谓的ES5),旧式的浏览器至少支持 ECMAScript 3 标准。 在2015年6月17日,ECMA国际组织发布了 ECMAScript 的第六版 该版本正式名称为ECMAScript 2015,但通常被称为 ECMAScript 6 或者ES6。 自此,ECMAScript每年发布一次新标准。

JavaScript 文件 JavaScript 文件后缀是 .js。 由 JavaScript 发展过来的还有 CoffeeScript (.coffee)、 TypeScript (.ts) 等等语言。 一般为了区分不同类型的 JS文件,请根据不同的方言设置 不同的文件后缀。

练习 JavaScript 的地方 1. 自己浏览器的开发者工具的 Console 2. 一个编辑器编辑代码 -> Node.js 运行 3. 类似 Codepen 的在线编程网站

复习JavaScript 1.语法与数据类型 2.控制流与错误处理 3.循环与迭代 4.函数 5.表达式和运算符 更多内容请看MDN的 JavaScript 指南

语法 JavaScript 从 Java 中借用其大部分语法,但也受 Awk,Perl 和 Python的影响。 JavaScript是区分大小写的,并使用 Unicode字符集。 语句指令可以采用换行(类似Python)或者尾部加半角分号(类似 C/C++)分隔。 建议随时添加分号来结束你的语句,以避免可能的副作用(尤其是 自动化打包时候必须严格遵循这个规则)。

注释 注释的语法与 C ++和许多其他语言中的语法相同。 // 单行注释 /* 这是一个更长的, 多行注释 */ /* 然而, 你不能, /* 嵌套注释 */ 语法错误 */

数据类型 六种 原型 数据类型: Boolean. 布尔值,true 和 false. null. 一个表明 null 值的特殊关键字。 JavaScript 是大小写敏感的,因此 null 与 Null、NULL或其他变量完全不同。 undefined. 变量未定义时的属性。 Number. 表示数字,例如: 42 或者 3.14159。 String. 表示字符串,例如:"Howdy" Symbol ( 在 ECMAScript 6 中新添加的类型).。一种数据类型,它的实例是唯 一且不可改变的。 以及 Object 对象 (数组 Array 也是 Object 的一部分)

数字 Number 可以是整数、可以是浮点数(实际是64位浮点数)。 可以以十进制 (123) 的形式赋值,也可以是十六进制 (0x666)。 所有的数字运算(含位运算)与 C/C++ 基本一致。 更多特殊的操作请查工具书。

字符串 String JavaScript 中的字符串可以用 半角双引号(类似 C++的 string) 或者 单引号 “圈住”。 操作类似于 C++/Java 的字符串类型。 更多操作请查工具书。

对象 Object JavaScript 里面最经常用,最富有生命力的就是对象。 对象字面值是封闭在花括号对({})中的一个对象的零个或多 个"属性名-值"对的元素列表。 你可以使用数字或字符串字面值作为属性的名字。当属性名 字为数字时,则构成了数组。

对象 Object let person = { name: 'John', job: 'Teacher', gender: 'male', birthYear: 1978, isMarried: false, company: { name: 'South Tester Normal University' } }; console.log(person);

数组 Array 使用方式与其它编程语言的数组一样。 但不同于 C/C++,JavaScript的数组不需要指定数组大小。 let a = [1 ,2, 4, 8, 16, 32]; console.log(a[2]); // 输出数组 a 的属性名 2 的成员值-> 4 a[666] = 888; // 设置数组属性名为 666 的成员值为 888 console.log(a[666]); // 输出数组 a 的属性名666的成员值-> 888

声明 var let (ES6) const (ES6) 声明一个变量,可选择将其初始化为一个值。(不需要交代数据类型) 声明一个块作用域的局部变量(block scope local variable),可选择将其初始 化为一个值。 const (ES6) 声明一个只读的常量。

声明标识符 JavaScript 标识符必须以字母、下划线(_)或者美元符号($)开 头。后续的字符也可以是数字(0-9)。 因为 JavaScript 语言是区分大小写的,这里所指的字母可以是“A” 到“Z”(大写的)和“a”到“z”(小写的)。 建议变量使用小驼峰命名法,常量全部大写。 数值名字前缀为名词,函数前缀为动词,类前缀使用大驼峰命名法。 具体规则参阅。

声明标识符 变量名:number, studentName 常量名:MAX_COUNT, DEFAULT_URL 函数名:getStudentName, setScore, isChinese, loadPage, hasJoker 类名:Person, SuperMan, TeacherManager 不要给我用拼音命名!

声明变量 var a = 1; 声明局部变量和全局变量 a,初始值为 1。 let b = true; c = {} 【非常不建议使用】 声明了一个全局变量 c 并会在严格模式下产生一个 ReferenceError。 var haha; 声明局部变量和全局变量 haha,无初始值 (undefined)。

声明常量 和C/C++一样,就很舒服。 const MAX_COUNT = 99;

获取/设置变量值 let a = 123; // 声明一个块级作用域变量 a,初始值是123 console.log(a); // 输出变量 a 的值到控制台 -> 123 a = 666; // 设置变量a的值为 666 console.log(a); // 输出变量 a 的值到控制台 -> 666 a += 222; // 变量 a 自增 222 console.log(a); // 输出变量 a 的值到控制台 -> 888

变量的函数作用域 在 ES6 之前,JavaScript 采用函数作用域。 在所有函数之外声明的变量,叫做全局变量,因为它可被 当前文档中的任何其他代码所访问。 在函数内部声明的变量,叫做局部变量,因为它只能在该 函数内部访问。

变量的函数作用域 var a = 123; // 全局变量 a (function () { var a = 666; // 局部变量 a console.log(a); // 输出局部变量 a -> 666 })(); console.log(a); // 输出全局变量 a -> 123

变量的块级作用域 ECMAScript 6 后支持语句块作用域(类似C/C++/Java)。 需要使用 let 声明变量。 let a = 123; { let a = 666; console.log(a); // 输出语句块变量 a -> 666 } console.log(a); // 输出 全局变量 a -> 123

变量的声明提升 采用 var 声明变量时会发生声明提升的情况。 你可以引用稍后声明的变量而不会引发异常(唯一的功用, 有效避免因为异常导致JS无法继续执行)。 但是,在 ECMAScript 6 中,let(const)将不会提升变 量到代码块的顶部。所以一定要在声明之后采用这些变量 或常量。

语句块(Block Statement) 大多数程序都使用语句块来给语句分组,这样可以使语句的结构清 晰明了。我们使用一对花括号( {} )来分组语句块,如下所示: var x = 1; { var x = 2; } alert(x); // 输出的结果为 2

流程控制 if...else 语句 与 C/C++用法一致。 switch 语句 与 C/C++用法一致,注意 case 可以 使用字符串并且严格按照类型匹配。 for、do...while、while、break、continue 语句 与 C/C++用法兼容。

遍历新玩法 —— for-in 语句 for...in 语句迭代一个指定的变量(指代对象属性名)去遍历这个对 象 (或数组) 的属性,每个属性,javascript 执行指定的语句。一个 for...in 语句示例如下: let a = [1 ,2, 4, 8, 16, 32]; for (let i in a) { console.log(a[i]); // 遍历输出数组每个成员 }

遍历新玩法 —— for-of 语句 与 for-in 语句不同的是,for-of 语句直接返回的是对象的属性值, 而非属性名。 【 ECMAScript 6 规范】 let a = [1 ,2, 4, 8, 16, 32]; for (let value of a) { console.log(value); // 遍历输出数组每个成员 }

错误抛出 与 C++/Java 基本一致,语法使用 try… catch … finally 语句。 特殊点是:Catch 的形参不需要指定类型,也就是可以 throw 任意值(比Java的舒服多了)。 支持嵌套多层 try…catch 语句。

Promise 从 ECMAScript 6 开始,JavaScript 增加了对 Promise 对象的支 持,它允许你对延时和异步操作流进行控制,让异步操作更加优雅。 知识点涉及高级JS编程,因此这次培训不讲这个知识点。

函数 函数是搭建JavaScript的基本构件之一。

定义函数 一个函数定义(也称为函数声明)由一系列的函数关键字组成, 依 次为: 函数的名称。 函数参数列表,包围在括号( )中并由逗号( , )区隔。 函数功能,包围在花括号{ }中,用于定义函数功能的一些 JavaScript语句。 基本上和C/C++一致,但不需要设定形参类型、返回类型(就很舒 服!)。

定义函数 function plus(a, b) { return a + b; // return 不是必要的 }

函数嵌套 和C/C++/Java什么的类似: function addSquares(a,b) { function square(x) { return x * x; } return square(a) + square(b); a = addSquares(2,3); // 返回 13

类 面向对象的编程语言不可能没有类。但是, JavaScript 的类与其他语言表现形式有很大的差别 在 ES6 之前,JavaScript 的类都需要采用 function 构成。 ES6后才出现类似于 C++/Java 的 class。

< ES6 的 类 function Person(name) { // 定义一个 Person 类,构造函数只有参数 name this.name = name; } Person.prototype.setName = function (name) { // Person 类的方法原型 var John = new Person("John"); // new 一个 Person 类 console.log(John.name); // 输出 实例John 的名字 -> John John.setName("Bob"); // John 改名了 console.log(John.name); // 输出 实例John 的名字 -> Bob

ES6 的类 class Person { // 定义Person类 constructor(name) { // 构造函数 只有形参name this.name = name; } setName(name) { //setName 方法

用 ES5 做一个Person对象 要求: 记录Person的姓名,性别,出生年份,国家 允许Person改名,变性,移民 制作一个人类资产排行榜!(sort)

用 ES6 改写 把刚刚的函数构成的类改成 ES6 的类 (class)。

箭头函数 函数的快捷写法,不需要通过 function 关键字创建函数,并且还 可以省略 return 关键字,类似于 Python 的 lambda 表达式。 [1, 2, 3].sort((a, b) => a < b); // 数字递减排序 (DESC) [1, 2, 3].map(a => a + 1); // 数组的所有数字加一

模板字符串 类似于 C语言的 printf 的模板输出。 JavaScript 的模板字符串使用 `` “圈住”字符串,并且支持多行输出,支持嵌 套变量/函数/JS语句。 let age = 18; let gender = "male"; console.info(`${(gender == "male") ? "he" : "she"} is ${age} years old!`);

默认参数 ES6 支持默认参数。 function setName(name = "Unknown") { // ES6 写法有效判定未传值 this.name = name; } function setName(name) { // ES5写法 有风险 this.name = name || "Unknown";

作业 希望大家有空可以模仿刚才的例子“做一个Person对象” 写一遍。 有问题欢迎在微信群问各位dalao。 培训录播: https://learntv.scnu.edu.cn/Panopto/Pages/Viewer.as px?id=379f8bf7-a58d-4353-8d51-6a7480dc6c79