作者:愁撒_651 | 来源:互联网 | 2023-01-17 12:56
在过去的几个小时里,我一直试图找到3之间的区别,而不仅仅是区别,我也一直试图找出哪些是同义词,MDN调用所有声明"语句",所以我认为这是真的.然而,我读过的文章和SO问题都没有提供一个类别的备忘单来区分3(或2,表达式与陈述).
我在语句中注意到的一点是它们都以某种方式涉及一个特殊的Javascript关键字,如break
或for
或var
.文章说,表达式评估某些内容,而语句执行操作.什么是功能呢?它是一个语句表达式混合(因为它在调用时都执行一个动作,并返回一个值)?现在,我假设情况并非如此,因为函数调用不涉及Javascript关键字.
然后有声明,是每个声明也是一个声明?
我也知道表达式声明20 + 5 * 2 / 3;
,但这些几乎没用吗?为什么有人会用这样的行污染他们的代码?
如果有人可以提出上述问题(或者至少其中一些问题),或者有人可以提供某种类型的备忘单,我会非常高兴.为什么在如此流行的语言中看起来如此简单的主题上的材料如此之少?
1> stybl..:
这些术语的标准定义包括所有语言,包括JS.我对它们的看法如下:
表达式生成一个值,可以在期望值的任何地方写入.
另一方面,声明是一个独立的执行单元.它没有返回任何东西.
声明是一个将值赋给变量的语句.
所有声明都是声明,但并非所有声明都是声明.
大多数语句和所有声明都包含表达式.
Javadoc还提供了漂亮,简洁的定义:
表达式是由变量,运算符和方法调用组成的构造,它们是根据语言的语法构造的,其值为单个值.
陈述大致相当于自然语言中的句子.声明形成一个完整的执行单元.
现在,关于必然涉及的关键字的理论是不正确的.这是一个包含关键字的语句:
break;
这是一个没有:
foo();
在第一个例子中,我执行a break
,而在第二个例子中,我调用一个函数.两者都是语句,但只有一个包含任何特殊关键字.
函数不是声明.函数调用是一个语句,如上所示.对于返回某些内容的函数,该调用也可以是一个声明:
var bar = foo();
对于你的最后一个问题,那里的材料很少的原因是因为这只是一个语义问题.人们不会徘徊在这些术语的确切定义上.
为了进一步说明,我建议看一下Axel Rauschmayer撰写的这篇博文,专门讨论JS中语句和表达式之间的区别.