《JavaScript 核心原理解析》学习笔记 Day 12 ECMAScript 中语句执行和表达式执行的统一

博客围绕 ECMAScript 和 JavaScript 展开,指出 ECMAScript 描述引擎实现,JavaScript 语句执行本质是表达式计算。语句执行返回完成记录,包含值或空值;表达式执行返回引用记录,无空值。还提到 eval() 执行语句,`${}` 执行表达式。

        ECMAScript 的目的是描述引擎如何实现,而不是描述语言是什么。在 JavaScript 语言层面,引擎是一个执行器,引擎的核心是一个表达式计算的、连续的执行过程。所以,JavaScript 的语句执行,本质上也是一个或一组表达式计算过程,而且所有的计算都必须能描述成“用操作符去处理操作数”这一基本的模式。即执行过程最终是表达式计算。而计算则有其返回,语句执行返回完成记录,表达式执行返回引用记录

        语句执行返回的完成记录,即语句的完成状态,该状态中包括值 value,值是 JavaScript 语言理解的类型,也就是 typeof() 所识别的所有的值;或者空值 empty,表示返回没有值。因此,语句就可以被执行,并且使用 console.log() 输出结果显示了。

        表达式执行返回的引用记录,其引用指向的值也是 JavaScript 语言理解的类型,和上述完成记录中的值一样,只是没有空值 empty。而根据表达式作为左右操作数的不同,在具体执行的运算中其分别会取引用(Reference)和引用指向的值(value)。同时还存在不可发现的引用(UnresolvableReference),表示返回没有东西

        所以,虽然都是对字符串的解析,eval() 是执行语句,`${}`是执行表达式。具体见如下代码:

// 执行语句
eval('{}')
// undefined

// 执行表达式
`${{}}`
// '[object Object]'

----- 极客时间《JavaScript 核心原理解析》学习笔记 Day 12 -----

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值