📓
Something About JavaScript
  • Introduction
  • Day 1:前言
  • Day 2:資料型態的夢魘——動態型別加弱型別(1)
  • Day 3:資料型態的夢魘——動態型別加弱型別(2)
  • Day 4:動態型別加弱型別不是罪——怎麼 JavaScript 一摔就變成個印度阿三?
  • Day 5:湯姆克魯斯與唐家霸王槍——變數的作用域(Scope) (1)
  • Day 6:湯姆克魯斯與唐家霸王槍——變數的作用域(Scope) (2)
  • Day 7:傳統 var 關鍵字的不足
  • Day 8:var 掰掰 —— ES6 更嚴謹安全的 let 和 const
  • Day 9:圖解變數作用域(Scope)
  • Day 10:程式也懂電梯向上? —— Hoisting
  • Day 11:Strict Mode (嚴謹模式)
  • Day 12:看 Strict Mode 如何施展「還我漂亮拳」(1)
  • Day 13:看 Strict Mode 如何施展「還我漂亮拳」(2)
  • Day 14:來挖挖恐龍骨 —— with 語法
  • Day 15:this 關鍵字 (1)
  • Day 16:this 關鍵字 (2)
  • Day 17:this 關鍵字 (3)
  • Day 18:this 關鍵字 (4)
  • Day 19:函數定義 (Function Definition) 的 100 種寫法
  • Day 20:ES6 的箭頭函數 (Arrow Functions)
  • Day 21:箭頭函數 (Arrow Functions) 的 this 和你想的不一樣 (1)
  • Day 22:箭頭函數 (Arrow Functions) 的 this 和你想的不一樣 (2)
  • Day 23:ES6 物件實字威力加強版 (Enhanced Object Literals)
  • Day 24:函數呼叫 (Function Invocation) 與立即函數 (Self-Invoking Functions)
  • Day 25:不是多了塊魚 —— 立即函數的應用整理
  • Day 26:程式界的哈姆雷特 —— Pass by value, or Pass by reference?
  • Day 27:別管變數 Pass by Whatever,尋找容易理解的銀色子彈 (Silver Bullet)
  • Day 28:閉包 (Closures)
  • Day 29:閉包 (Closures) 進階打怪實戰
  • Day 30:ES10 醞釀中 —— 擁抱 JS の 未來
Powered by GitBook
On this page

Was this helpful?

Day 1:前言

PreviousIntroductionNextDay 2:資料型態的夢魘——動態型別加弱型別(1)

Last updated 4 years ago

Was this helpful?

近年 JavaScript 像個炙手可熱的大明星。

印象中,八、九年前的 JavaScript 並沒有那麼引人注目。當然,要寫網頁,HTML、CSS、JavaScript 仍是不可或缺的三劍客,但那還是個 Adobe Flash 稱霸網頁互動元件的風光年代,無論是網頁動畫、互動特效、桌面小遊戲,只要是多媒體互動的應用,Flash 與 ActionScript 幾乎是第一選擇。也有很多人選擇 Java Applet 作為網頁上的互動應用。相較之下,JavaScript 就像個跑龍套,只是傳統網頁實現簡單互動事件的工具,例如點點按鈕、跳出視窗,一點也不時尚。

(Source: )

HTML5 的面世是個轉捩點,逐漸改變了一切。HTML5 增加了許多新語法元素,讓它可以做到許多傳統只能靠 Flash 或 Applet 才能實現的互動效果。尤其在的論調公開後,越來越多開發者投入 HTML5,許多有趣的 HTML5 小遊戲如雨後春筍冒出來,讓人看到並驚嘆 HTML5 的無限潛力。而 HTML5 能實現各種豐富動態互動的背後功臣,就是 JavaScript。

到了近年,兩個重要因素更讓 JavaScript 的光芒推上高峰。

一個是 Node.js 的面世,讓 JavaScript 得以將「魔爪」伸入後端,一個語言前後端通吃,多麼有吸引力的優勢啊!讓眾多開發者趨之若鶩,紛紛投入 JavaScript 陣營。另一個是前端技術的爆炸性發展,堪稱是一日千里,眾家前端框架百花齊放,身為前端最重要的程式語言,JavaScript 自然前景一片看俏,社群蓬勃發展,每年都有新特性釋出,各種轉譯語言也百家爭鳴。

無論你使用哪一派前端框架、或是使用哪一個轉譯語言,對原生 JavaScript (ECMAScript) 都應該有一定的了解。

(Source: )

「JavaScript 很簡單」是許多人對它的印象。

確實,和 Java、C# 等嚴謹性高、規範多的語言比起來,JavaScript 是一個入門門檻相對容易許多的程式語言,可以歸功於它的許多特性:語法寬容、弱型別加動態型別、型別判斷籠統、非強制物件導向等等。但這些特性同時也使這個語言讓人又愛又恨——愛它容易起步上手,恨它藏著各種魔鬼的細節。JavaScript 的容易入門,常讓人輕忽了它的特性和陷阱,在開發過程大吃苦頭。

網路上很多人都看過這張嘲諷滿點的圖片「Thanks Brendan for giving us the Javascript」。我第一次看到的心得是:這是什麼神經病語言。在 Java 或 C# 開發者眼中,應該很容易有類似感想。(看 Brendan 那燦爛的笑容,笑得你心裡發寒啊~)

(Source: )

這個系列的目標是以清晰易懂的方式,探討原生 JavaScript 一些容易讓人混淆、造成編程失誤、或不那麼確切熟悉的特性,或是將一些觀念進行整理。預計也會探討部分 ES6、ES7、ES8 的新特性。

期待這個過程能像 2019 iT 邦幫忙鐵人賽的形象——「勇者鬥惡龍」,斬破 JavaScript 惡魔般的迷霧!

References

Dec 31, 2020: Adobe Flash Death Date Announced By Adobe
賈伯斯支持 HTML5 抵制 Adobe Flash
Where is JS Man?
Thanks Brendan for giving us the Javascript : ProgrammerHumor - Reddit
Thoughts on Flash - Apple
Steve Jobs "Thoughts on Flash" 全文翻譯 | T客邦
為什麼 Jobs 永遠不會讓 Flash 上 iPhone? | MR JAMIE