SlideShare a Scribd company logo
Submit Search
Upload
3. 流程語法與函式
Report
Share
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
•
2 likes
•
258 views
1
of
76
3. 流程語法與函式
•
2 likes
•
258 views
Report
Share
Download Now
Download to read offline
Technology
使用除錯器 認識基本流程語法 運用一級函式特性 使用yield建立產生器 認識模版字串與標記模版
Read more
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
Recommended
Worktest测试框架原理 by
Worktest测试框架原理
Janeay
226 views
•
13 slides
jasmine入门指南 by
jasmine入门指南
Zhicheng Wang
1.1K views
•
11 slides
雲端運算20150521 by
雲端運算20150521
勝億 曾
881 views
•
13 slides
最新Java技术内存模型 by
最新Java技术内存模型
yiditushe
580 views
•
39 slides
网站前端代码静态检查工具研究 by
网站前端代码静态检查工具研究
pop2008
1.3K views
•
16 slides
移动开发的性能优化 by
移动开发的性能优化
foxgem
1.4K views
•
21 slides
More Related Content
Similar to 3. 流程語法與函式
面向对象设计七大原则 by
面向对象设计七大原则
zoorz
1.5K views
•
44 slides
网站前端代码静态检查工具综述 by
网站前端代码静态检查工具综述
pop2008
1.1K views
•
14 slides
Notes of jcip by
Notes of jcip
Dai Jun
2K views
•
134 slides
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型 by
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Justin Lin
2.5K views
•
78 slides
Java常见问题排查 by
Java常见问题排查
bluedavy lin
11.5K views
•
46 slides
Java常见问题排查 by
Java常见问题排查
ayanamist
2K views
•
46 slides
Similar to 3. 流程語法與函式
(12)
面向对象设计七大原则 by zoorz
面向对象设计七大原则
zoorz
•
1.5K views
网站前端代码静态检查工具综述 by pop2008
网站前端代码静态检查工具综述
pop2008
•
1.1K views
Notes of jcip by Dai Jun
Notes of jcip
Dai Jun
•
2K views
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型 by Justin Lin
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Justin Lin
•
2.5K views
Java常见问题排查 by bluedavy lin
Java常见问题排查
bluedavy lin
•
11.5K views
Java常见问题排查 by ayanamist
Java常见问题排查
ayanamist
•
2K views
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註 by Justin Lin
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Justin Lin
•
2.8K views
自訂泛型、列舉與標註 by Justin Lin
自訂泛型、列舉與標註
Justin Lin
•
633 views
Java SE 8 技術手冊第 5 章 - 物件封裝 by Justin Lin
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
•
3.4K views
Ecmascript by jay li
Ecmascript
jay li
•
7.5K views
浅谈电商网站数据访问层(DAL)与 ORM 之适用性 by Xuefeng Zhang
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
Xuefeng Zhang
•
2.5K views
超理性使用者介面設計 - Data-driven A/B Testing by Ying-Hsiang Liao
超理性使用者介面設計 - Data-driven A/B Testing
Ying-Hsiang Liao
•
10.6K views
More from Justin Lin
Ch14 簡介 Spring Boot by
Ch14 簡介 Spring Boot
Justin Lin
872 views
•
22 slides
Ch13 整合 Spring MVC/Security by
Ch13 整合 Spring MVC/Security
Justin Lin
280 views
•
58 slides
Ch12 Spring 起步走 by
Ch12 Spring 起步走
Justin Lin
274 views
•
31 slides
Ch11 簡介 JavaMail by
Ch11 簡介 JavaMail
Justin Lin
157 views
•
8 slides
Ch10 Web 容器安全管理 by
Ch10 Web 容器安全管理
Justin Lin
153 views
•
30 slides
Ch09 整合資料庫 by
Ch09 整合資料庫
Justin Lin
233 views
•
92 slides
More from Justin Lin
(20)
Ch14 簡介 Spring Boot by Justin Lin
Ch14 簡介 Spring Boot
Justin Lin
•
872 views
Ch13 整合 Spring MVC/Security by Justin Lin
Ch13 整合 Spring MVC/Security
Justin Lin
•
280 views
Ch12 Spring 起步走 by Justin Lin
Ch12 Spring 起步走
Justin Lin
•
274 views
Ch11 簡介 JavaMail by Justin Lin
Ch11 簡介 JavaMail
Justin Lin
•
157 views
Ch10 Web 容器安全管理 by Justin Lin
Ch10 Web 容器安全管理
Justin Lin
•
153 views
Ch09 整合資料庫 by Justin Lin
Ch09 整合資料庫
Justin Lin
•
233 views
Ch08 自訂標籤 by Justin Lin
Ch08 自訂標籤
Justin Lin
•
133 views
Ch07 使用 JSTL by Justin Lin
Ch07 使用 JSTL
Justin Lin
•
161 views
Ch06 使用 JSP by Justin Lin
Ch06 使用 JSP
Justin Lin
•
250 views
Ch05 Servlet 進階 API、過濾器與傾聽器 by Justin Lin
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
•
204 views
Ch04 會話管理 by Justin Lin
Ch04 會話管理
Justin Lin
•
238 views
Ch03 請求與回應 by Justin Lin
Ch03 請求與回應
Justin Lin
•
236 views
Ch02 撰寫與設定 Servlet by Justin Lin
Ch02 撰寫與設定 Servlet
Justin Lin
•
352 views
CH1. 簡介 Web 應用程式 by Justin Lin
CH1. 簡介 Web 應用程式
Justin Lin
•
1.2K views
14. 進階主題 by Justin Lin
14. 進階主題
Justin Lin
•
406 views
13.並行、平行與非同步 by Justin Lin
13.並行、平行與非同步
Justin Lin
•
237 views
12. 除錯、測試與效能 by Justin Lin
12. 除錯、測試與效能
Justin Lin
•
153 views
11. 常用內建模組 by Justin Lin
11. 常用內建模組
Justin Lin
•
149 views
10. 資料永續與交換 by Justin Lin
10. 資料永續與交換
Justin Lin
•
156 views
9. 資料結構 by Justin Lin
9. 資料結構
Justin Lin
•
292 views
Recently uploaded
AI Technology & Development of Civilization by
AI Technology & Development of Civilization
unclebrown017
44 views
•
74 slides
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班 by
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
40 views
•
37 slides
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班 by
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
43 views
•
32 slides
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班 by
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
43 views
•
25 slides
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式 by
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
Shengyou Fan
151 views
•
54 slides
Hacking Facebook for fun and profit by Pranav Hivarekar by
Hacking Facebook for fun and profit by Pranav Hivarekar
Pranav Hivarekar
6 views
•
69 slides
Recently uploaded
(6)
AI Technology & Development of Civilization by unclebrown017
AI Technology & Development of Civilization
unclebrown017
•
44 views
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班 by IttrainingIttraining
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
•
40 views
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班 by IttrainingIttraining
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
•
43 views
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班 by IttrainingIttraining
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班
IttrainingIttraining
•
43 views
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式 by Shengyou Fan
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
Shengyou Fan
•
151 views
Hacking Facebook for fun and profit by Pranav Hivarekar by Pranav Hivarekar
Hacking Facebook for fun and profit by Pranav Hivarekar
Pranav Hivarekar
•
6 views
3. 流程語法與函式
2.
3.流程語法與函式 • 學習目標 – 使用除錯器 –
認識基本流程語法 – 運用一級函式特性 – 使用yield建立產生器 – 認識模版字串與標記模版 2
3.
使用Visual Studio Code 3
4.
4
5.
5
6.
6
7.
7
8.
8
9.
if分支判斷 9
10.
10
11.
11
12.
變數與區塊 • 若在某個區塊中使用let或const宣告變數, 可視範圍限於區塊之中 • 在JavaScript中,還可以直接定義區塊 12
13.
• 使用var宣告的變數,沒有區塊範圍的限制 • 這個特性在其他程式語言中並不常見,這 也是ES6以後不推薦使用var宣告變數的原 因之一 13
14.
• let宣告的範圍限於區塊 • let宣告的變數存在著暫時死區 14
15.
switch比對 • switch的case採用的是===嚴格比對 15
16.
16
17.
• 千萬不要在case比對中使用NaN 17
18.
for迴圈 18
19.
• 若是從頭至尾循序走訪陣列或字串,ES6新 增了for..of語法可以使用 19
20.
• 對於U+0000至U+FFFF範圍外的字元, for..of語法可以正確地取得「字元」而 不是碼元 20
21.
• 想要列舉物件的特性名稱,可以使用 for..in語法 21
22.
• 陣列也是一種物件,而索引不過是基於數 字的特性名稱 22
23.
• for..in針對的是實例本身以及繼承而來 的可列舉特性 • 規範中並不包含列舉時特性的順序排列 23
24.
• 想確認物件是否擁有某特性,可以使用in 運算子檢驗 • 只要實例本身擁有或是繼承而來的特性, in運算子就會傳回true 24
25.
• 想知道物件「本身」是否擁有某特性(而 不是繼承而來的特性),可以使用 hasOwnProperty()方法 25
26.
while迴圈 26
27.
break、continue 27
28.
28
29.
• 配合標籤使用 29
30.
30
31.
宣告函式 31
32.
• JavaScript會自動用換行來作為陳述句結束 的依據 • 不過這是JavaScript中不好的特性 32
33.
• {}的風格問題 33
34.
• 遞迴(Recursion) 34
35.
• 區域函式(Local function) 35
36.
• 不直接支援函式重載 • 指定的引數個數少於參數個數,未被指定引 數的參數會被設為undefined 36
37.
• ES6以後可以使用預設引數 • ES6新支援物件實字寫法 37
38.
• 參數的預設值,每次都會重新運算 38
39.
• ES6之前的版本會使用Falsy family結合||捷 徑運算 39
40.
• ES6可以在函式的參數名稱前加上「…」, 表示該參數接受不定長度引數 40
41.
• 在ES6之前,若想實作出不定長度引數的效 果,必須借助arguments • 是類陣列實例,存放著呼叫函式時的「全 部」引數,索引順序就是引數的指定順序 41
42.
選項物件 42
43.
一級函式的運用 • 每個函式都是個物件,是Function的實例 • 對函式物件使用typeof,會傳回 'function' 43
44.
• 函式跟基本型態、物件、陣列等一樣,都 被JavaScript視為一級公民來對待 • 可以自由地在變數、函式呼叫時指定,因 此具有這樣特性的函式,也被稱一級函式 (First-class
function) • 將某個可重用流程進行傳遞 44
45.
filter()函式 45
46.
46
47.
47
48.
map()函式 48
49.
49
50.
陣列filter()、map() 50
51.
陣列sort() 51
52.
• 函式是Function的實例,也因此具有一些 特性與方法 • name在ES6以前已經被廣泛實作,只不過 在ES6中才標準化 52
53.
函式實字 53
54.
• 函式宣告與函式實字不同的地方 54
55.
• 函式實字是可以附加名稱的 • 立即呼叫運算式(Immediately
Invoked Functions Expression, IIFE) 55
56.
匿名函式 56
57.
箭號函式 57
58.
Closure • 函式與作用域環境(Lexical environment) 的組合 •
自由變數(Free variable) 58
59.
• 函式會捕捉的是變數,不是變數值 59
60.
• 想要捕捉每次的i變數值,而不是變數本身 60
61.
• 使用ES6的let 61
62.
產生器函式 • 函式並不會因為yield而結束,只是將流 程控制權讓給函式的呼叫者 62
63.
• 產生器函式會傳回產生器物件,此物件具 有next()方法 63
64.
生產者與消費者 64
65.
65
66.
• 具有yield的函式,還是可以使用return 66
67.
67
68.
• 資料來源是直接從另一個產生器取得 68
69.
• 使用yield*改寫 69
70.
模版字串 70
71.
71
72.
72
73.
標記模版 • 特殊形式的函式呼叫 • 底下的程式碼執行效果,相當於f('10
+ 20 = 30') 73
74.
• f`${a} +
${b} = ${a + b}` – 等同於呼叫f(['', ' + ', ' = ', ''], 10, 20, 30) 74
75.
• String.raw函式是其中一個例子 75
76.
76