iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
自我挑戰組

I don't know JS yet系列 第 3

[ Day 3 ] I don't know JS yet - Get Started

  • 分享至 

  • xImage
  •  

Language Specification

The standards for JavaScript are the ECMAScript Language Specification (ECMA-262) and the ECMAScript Internationalization API specification (ECMA-402). As soon as one browser implements a feature, we try to document it. This means that cases where some proposals for new ECMAScript features have already been implemented in browsers, documentation and examples in MDN articles may use some of those new features. Most of the time, this happens between the stages 3 and 4, and is usually before the spec is officially published. __ https://developer.mozilla.org/en-US/docs/Web/JavaScript

For the most part, the JS defined in the specification and the JS that runs in browser-based JS engines is the same. But there are some differences that must be considered.

JS specification 是 JavaScript 的標竿,所有運行 JS 的環境都應該遵守其規範。通常定義在 specficication 的 JS 與在 browser-based 運行的 JS engines 規範應該是一致的,但有時還是會有 differences 需要被考慮。

JS 的環境不斷在擴展,從 broswer 到 server ( node.js ) ,有時 JS specification 會陳述新的,或者優化的 behavior,然而這不會與在 browser 上跑的 engine 一致,這麼做可能會導致 web 壞掉。舉例,TC39 預計新增 contains(...) 陣列方法,然而這方法名稱與現役的 JS frameworks 衝突,這時候 JS specification 會判斷是否要更新,如果更新,會為 web JS 設立 exceptions,其餘的 JS 環境則必須遵守該更新。

不是所有 JavaScript 都是 JavaScript

console.log('Not All(Web) JS');
上面是 JavaScript 嗎?

其實不同的 JS 環境會有其 APIs,舉例 web 就有 web APIs,Node.js 也有 Node.js APIs
console. 開頭的方法,大部分環境都有定義,但 JS specification 沒有定義,所以這個方法端看你怎麼看 JS,如果把 APIs 的定義也算進去,那 console.* 就是 JS; 認為 JS 就是定義在 specification 才叫做 JS,那 console.* 不是 JS。

大部分跨瀏覽器的使用者會說 " JS is so inconsistent! "
其實是環境與 APIs 的原因,並不是 JS 本身的緣故。

Developr Tool 只是 tool for developer

開發者工具目標是讓開法者體驗更好,並沒有精準的遵守 strict-spec JS behavior.

Don't trust what behavior you see in a developer console as representing exact to-the-letter JS semantics; for that, read the specification. Instead, think of the console as a "JS-friendly" environment. That's useful in its own right.

Many Faces

寫程式的風格(paradigm)主要分三種:

  • procedural
  • object-oriented
  • functional

procedural

Procedural 會以由上到下、的風格撰寫代碼,遵循 procedural 風格的語言,在處理問題時就會遵照該風格的規範,該風格把邏輯、資料組織成 procedures

object-oriented

OO 把邏輯、資料組織成 'classes'

functional

FP 把邏輯、資料組織成 'functions' ( 與 procedures 差異在於,fp 的 functions 為 'pure')

大部分程式語言支援不同風格,在一個專案裡,可以存在不同風格,稱 'multi-paradigm'。
C 以 procedural 為導向,Java/C++ 以 OO 為主,而 JS 則是 multi-paradigm 的語言,在 JS program 可以存在這三種風格沒有問題。


上一篇
[ Day 2 ] I don't know JS yet - Get Started
下一篇
[ Day 4 ] I don't know JS yet - Get Started
系列文
I don't know JS yet30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言