iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
自我挑戰組

TypeScript 從0開始系列 第 9

D9 - As a JS beginner

  • 分享至 

  • xImage
  •  

今天的內容是我閱讀 GeeksforGeeks 做的筆記

https://www.geeksforgeeks.org/introduction-to-javascript/?ref=lbp

Description for JavaScript

  • lightweight, cross-platform, single-threaded, using interpreter
  • could use to develop webpages (both client-side and server side)
  • also be used in non-browser environment

Standard libraries

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects

這邊介紹比較完整,明天開始看這篇~

Client-side usage

  • Control DOM elements
  • Track events, e.g., mouse clicks, form input, page navigation
  • Useful libraries, e.g., jQuery, and popular framework like angular.js, vue.js, react.js

Server-side usage

  • Communicate with DB
  • Access file to do R/W on Server
  • Useful framework like node.js, and many package perform with node.js.

Programming aspect

Imperative language / Declarative programming

程式設計時,專注在如何得到想要的結果 (How)

⇒ 程式的語法在告訴電腦該透過哪些步驟來得到結果

大部分的程式語言都是這樣指令式的語言,如C/C++, Java, JavaScript, … etc.

反之,告訴電腦要拿到什麼樣的結果 (What)

⇒ 不需要描述拿到這個結果需要的過程,如 SQL, HTML, XML, … etc.

Link JS in HTML

  • use HTML tag <script> // JS code </script>
  • link to JS location <script src="location.js"></script>

Features of JavaScript

  • JS 起初是為了操控網頁上的內容而出現的,當時的大部分都是靜態網頁。有了JS後,才漸漸地有這些和使用者有大量互動的網頁(dynamic website)
  • JS 裏,function 也是一種 object,可以有各種屬性(properties)或是方法(methods),也可以作為其他 function 的參數
  • JS 可以用來操控時間、日期,可以用來驗證 HTML <form>
  • JS 不需要經過 Compiler 編譯 (用的是 Interpreter)

Applications of JavaScript

  • Web Development/Application: 增加使用者和網頁的互動性,有些 JS framework 甚至可以讓你用 JS + HTML 寫 Desktop/Mobile application。Node.js 讓 JS 在 server side 開發更強大
  • Non-web Development:
    • EaseJS ⇒ 開發遊戲
    • p5.js ⇒ 用 JS 在 HTML 5 canvas 上畫作
    • ml5.js ⇒ 機器學習
    • 族繁不及備載

Limitations of JavaScript

  • Security risk: 由於 JS 有能力可以操控 DOM 中的元素、透過 AJAX 獲取資料,因此有了 XSS (Cross-site script) Attack。攻擊者有機會透過 script 來盜取使用者的資料
  • Performance: JS 的效能表現沒有傳統程式語言來得好,但通常用來在瀏覽器裡做一些簡單的操作,這些操作並沒有太受到限制
  • Complexity: 要精通 JS (或這類型的腳本語言),程式設計師需要寫程式的概念、語言的核心、client/server side 物件都有一定程度的了解,否則很難使用 JS 來寫比較進階的腳本
  • Weak error handling and type checking facilities: 寫 JS 不需明確地對變數進行型別的宣告,compile的時候也不會檢查

為何 JS 被大家認為是個輕量的程式語言?

  • Low CPU usage
  • Easy to implement
  • Minimalist syntax
  • No data types (都是 object)
  • Easy to learn (因為文法跟 C++、Java很像)

就算用來執行 JS 的瀏覽器會耗些資源,也沒有其他語言來得多

JS 是編譯 or 直譯 or 兩者皆是?

  • 目前的版本 ⇒ 兩者皆是。早期的話就是直譯,逐行執行,結果會馬上跑出來。在有了 V8 之後,JIT compiler 提升了執行、輸出的速度。
  • V8 engine 一開始先做直譯,之後會去找到執行頻率高的pattern,編譯他們,藉此提升效能

上一篇
D8 - Review what I did in these days
下一篇
D10 - JS debugger, class
系列文
TypeScript 從0開始21
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言