iT邦幫忙

2021 iThome 鐵人賽

DAY 9
1
自我挑戰組

JavaScript 核心觀念系列 第 9

【Day09】陳述式與表達式

  • 分享至 

  • xImage
  •  

陳述式(Statement)

JavaScript 語句類型,用於命令執行指定一系列操作,最大的特徵是不會回傳結果,

因為陳述式不會回傳結果,因此陳述式不能賦值到變數上

範例:

回傳結果可以藉由 Chrome 瀏覽器開發人員工具的 Console 來查看

  • {var a}
  • var a
  • if (1 === 1) {}
  • for 迴圈

上述結果只會顯示 undefined,而不會回傳結果,因此視為陳述式

如果將陳述式賦值到變數上會產生錯誤

var a = if (1 === 1) {}

上方範例會顯示 SyntaxError: Unexpected token 'if'

代表陳述式無法賦值到變數中

其他陳述式內容詳 MDN 參考文件

表達式(Expression)

又稱為表示式、運算式,經常透過一些符號結合上下語句並運算及回傳結果

範例:

回傳結果可以藉由 Chrome 瀏覽器開發人員工具的 Console 來查看

  • 1 + 1
  • name = 'weiwei'
  • 1 === 1
  • {name: 'weiwei'}

上述範例都會回傳對應的結果,因此會被視為表達式

其他表達式內容詳 MDN 參考文件

函式陳述式和函式表達式

函式陳述式中函式一定要賦予名稱,而有名稱的函式稱為具名函式,

函式表達式中函式可以沒有名稱,而沒名稱的函式稱為匿名函式,

兩者的差異在於提升(Hoisting)的效果不同

範例:

// 函式陳述式、具名函式
function a() {}
a();

// 拆解
// 創造階段
function a() {}

// 執行
a();
// 函式表達式、匿名函式
var a = function() {}
a();

// 拆解
// 創造階段
var a;

// 執行
a = function() {}
a();

block 範例

{} 在 JavaScript 中稱為 block,block 也是陳述式的一種,

但它也有物件實字的用法,在當成物件實字使用時,可以賦值到變數中。

// block
{
    var a = 'weiwei'
}

錯誤範例:

{
    const a = 'weiwei'
}
console.log(a);

此時會顯示 ReferenceError: a is not defined

因為 block 內使用 es6 定義變數時,作用域只在 {}

// 物件實字,此為定義物件的一種方式
{
    a: 'weiwei'
}

var b = {
    a: 'weiwei'
}

以上為陳述式與表達式內容,感謝觀看。


上一篇
【Day08】執行緒與同步、非同步
下一篇
【Day10】ASI 自動插入分號
系列文
JavaScript 核心觀念30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言