JavaScript Day 21. 陈述式 & 表达式

听说 JavaScript 的这两大类型「陈述式」与「表达式」也是很基本的观念,瞬间我感觉自己从来没有认真搞懂的基本观念真的不少,难怪每写一篇文章都会有豁然开朗的感受;那麽今天依然继续稳固自己的基本观念。

这里会划分五个区块来做讨论:

  • 陈述式(Statement)
  • 表达式 (Expression)
  • 函式陈述式 (Function Statement)
  • 函式表达式 (Function Expression)

陈述式 ( Statement )

会执行一些程序码,但不会回传结果,所以当预期这个地方要回传值,就不能使用陈述式。

常见的陈述式:

  1. Block ( 区块 )
  2. break ( 中断回圈 )
  3. if else ( 判断式 )
  4. var、let、const ( 宣告 )
  5. function ( 指定一个函式,函式陈述式 )
  6. for ( 回圈 )

陈述式可能是几个单词或是一个片段,但不会是一个字母,其中也会与表达式混合,因此会像下面这个范例:var dog,即是陈述式。

var dog;

另外要谈到 {} 这个大括号,他代表的是「物件」,因此如果只是放上这个大括号也不代表陈述式,必须在里面加入一段程序码才能成立陈述式的概念。

{
	console.log(dog);
}

这里要特别为区块陈述 ( Block ) 做一些说明,就像 if 区块一样,他会在里面运作,但却不会回传结果,区块陈述类似这样的概念。

表达式 ( Expression )

又可被称为表示式、运算式,表达式的特点就是会回传一个结果,任何可回传结果都可以称为表达式,常见的模式如下:

  • 纯值
  • 变数
  • 运算子
  • 执行函式
  • 正规表达式
  • 函式表达式

如何判断是否为表达式其实很简单,假设我们输入以下范例:

3 === 3

回传的结果为 true,符合我们上面所说的,只要回传结果都可以称做表达式的条件,所以 3 === 3 即为表达式。

函式陈述式 (Function Statement)

也是「具名函式」,经由给定一个名字宣告一个变数,使 JavaScript 为这个变数保留记忆体空间,与陈述式的概念相同,不同在於函式陈述式会将整个函式内容,在解析的过程保留在记忆体空间,这个部分可以称为「Hoisting ( 提升 )」,即是函式陈述式。

function callName(){}

函式表达式 (Function Expression)

函式表达式为「匿名函式」,使用一个变数,并且将函式赋予到变数上,中间插入一个 = 运算子;这种宣各方式的函式内容不会在一开始就被提升( Hoisting ),会被提升的( Hoisting )只有该变数而已,在执行阶段才会把函式内容指派给变数,变数的指派属於表达式。

var callName = function(){}

参考资料:

JS 原力觉醒 Day07 - 陈述式 表达式
JavaScript 表达式观念及运用 - JS Expression


<<:  day15_Linux ARM 的网站开发之旅

>>:  WordPress 如何使用 MailerLite 发送电子报教学-提高读者回访率

防火墙只允许 anydesk 通过

防火墙只允许 anydesk 通过 原则上只需要开一个 IP 239.255.102.18 到达 还...

为了转生而点技能-JavaScript,day7 (原始型态与物件型态在记忆体上的变化

前言:这篇文希望可以让自己更了解原始型态与物件型态在记忆体的Stack跟Heap上的变化,并了解物件...

认识CSS(六):CSS border边框

透过broder的语法可以让边框做多样化的设计变化, 边框的粗细、颜色、样式等数性质都可设定。 CS...

Day 24 Compose UI Test

今年的疫情蛮严重的,希望大家都过得安好, 希望疫情快点过去,能回到一些线下技术聚会的时光~ 今天目标...

GitHub Advanced Security - 程序码扫描 (Code Scanning)

在前一篇文章GitHub Security - 基本安全相关功能介绍 内文中我们有对於 Repo 内...