### 🔍小範例大學問👊 # [<font color="#f00">JavaScript</font>] 陳述式和表達式 ## 1. 基本定義 * 陳述式( Statement ) * 表達式 ( Expression ) * 函式陳述式 (Function Statement) * 函式表達式 (Function Expression) ## 2. 陳述式( Statement ) 陳述式一定會做一些事情,但陳述式不會產生數值。 所以不能被放在會產生數值的地方,例如函式的參數、函式的回傳值、或是宣告變數時等號的右邊。 ### JavaScritp 裡的陳述式: * if 判斷式 ```javascript= if(a === 1){ //doSomeThing }; ``` * while 迴圈 ```javascript= while ( ) { //doSomeThing }; ``` * for 迴圈 ```javascript= for (var i = 0 ; i<=10 ; i++ ){ //doSomeThing }; ``` * switch 判斷式 ```javascript= switch ( ) { case 1: //doSomeThing break; case 2: //doSomeThing break; default: //doSomeThing }; ``` * try catch 判斷式 ```javascript= try{ }catch (){ }; ``` * 直接的函式宣告 ```javascript= function square(number) { return number * number; } ``` * 變數宣告 ```javascript= let a = 1 ; ``` ## 3. 表達式 ( Expression ) 表達式是會產生結果值的程式碼,而且很常是運算式。 ```javascript= 1 + 2 functionInvocation() ture || false d true && true a = 1 a === 1 Array.isArray([]) ? doSomeThing() : doOtherThing() ``` ## 4. 函式陳述式( Function Statement ) 函式陳述式是藉由直接給定名字來直接宣告一個函式。剛剛有說到變數宣告會使 JS 引擎來幫你保留記憶體空間,所以是陳述式。像這樣子直接的函式宣告,跟變數宣告會產生的行為是一樣的,差別是整個函式內容在語法解析階段都會保留進記憶體空間,這個行為就是之前提到的提升 ( Hoisting ),所以屬於函式的陳述式。 ```javascript= function functionStatement (){ //doSomething } ``` ## 5. 函式表達式 ( Function Expression ) 另外一種宣告函式的方式是函式表達式,是把一個匿名函式指派給一個變數,這種宣告方式的函式內容不會在一開始就被提升,會被提升的只有該變數而已。在執行階段,才會把函式內容指派給變數,以下面程式碼為例,這個時候 functionExporession 才是一個可以用的函式,而變數的指派屬於表達式,因此這種方式也被稱為函式表達式。 ```javascript= let functionExpression = function(){ //doSomeThing } ``` --- #### 參考文章 [JS 原力覺醒 Day07 - 陳述式 表達式](https://ithelp.ithome.com.tw/articles/10218937) [陳述式 與 表達式](https://hoyis-note.coderbridge.io/2021/05/18/%E9%99%B3%E8%BF%B0%E5%BC%8F%E8%88%87%E8%A1%A8%E9%81%94%E5%BC%8F/)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up