克服JS奇怪的部分_ 陳述式與表達式

Huang Pei
2 min readSep 16, 2019

--

陳述式(Statement)/ 表達式(Expression) / 一級函數(First Class Functions)

本筆記出自:JavaScript 全攻略:克服 JS 的奇怪部分

表示式(Expression)

A unit of code that result un a value.

It doesn’t have to save to a variable.

表示式是程式碼的單位,會形成/回傳一個值,而這個值不一定要儲存在某個變數

a = 3 //回傳31 + 2 //回傳3
  • 陳述式:不回傳值、可hoist
  • 表示式:回傳值、不可hoist
-陳述式
已於記憶體預留空間宣告為fn
greet() //有hoistfunction greet(){
console.log(‘hi’) }
____
-表示式
因為是var變數
,未賦值前會被設定為undefined
anonymousGreet() // Undefined is not a function 不可hoistvar anonymousGreet = function(){
console.log(‘hi’) } //以下表達式會回傳一個函數物件(fn)
anonymousGreet() //hi 此時的anonymousGreet已被賦值,可呼叫函數

*一些觀念可參考之前這篇這篇

  • 函數:變數和函數已經存在於記憶體中,所以當程式被逐行執行時可以找到它們,函數已經全部在記憶體了,代表函數裡面的程式碼已經被執行了。
  • 變數:JavaScript為a空出記憶體空間時,它不知道a會是什麼值,直到它被執行才知道。因此先放上undefined的替代文字,表示「我還不知道他的值」,如果我們都不設值的話也會得到一樣的替代文字

一級函數:可傳入別的地方可以很快被創造、使用, 把函數給另一個函數,就像使用變數一樣,引入一個全新的型態到程式語言中,稱為函數程式語言 (functional programming)

function log(a){
console.log(a) }
log(function(){ console.log(‘hi’)}) //ƒ (){ console.log('hi')}
_____
function log(a){
a() }
log(function(){ console.log(‘hi’)}) //hilog參數可以帶入string, number, object..當然也可以帶入fn,因為fn就是物件

--

--

Huang Pei
Huang Pei

Written by Huang Pei

記錄用倉庫,歡迎指正。菜鳥前端,最菜的那種(超能力少女です)。

No responses yet