在JavaScript中,空函数调用是函数还是表达式?

时间:2018-08-16 18:38:01

标签: javascript

假设我在第1行声明了一个空函数:

1: function foo () {} 
2: foo() 

我在第2行执行了相同的操作, 第2行是语句还是表达式,为什么?

4 个答案:

答案 0 :(得分:2)

function foo () {} =>这是一个函数声明。

foo() =>您正在调用该函数,这是一个调用该函数的表达式

答案 1 :(得分:2)

第2行是包含(完全由)调用表达式组成的语句。如果您没有在语句末尾遗漏可选的分号,则可能更容易将其识别为一条语句:

/* 1 */ function foo () {} 
/* 2 */ foo();
//           ^

单独的foo()是调用表达式,它也可以在允许使用表达式的不同上下文中使用,例如作为console.logconsole.log(foo());的参数。

答案 2 :(得分:0)

第2行的 code Call Expression (Sec 12.3.4)

但是,第2行的整个Expression Statement (Sec 13.5)。此处执行Automatic Semicolon Insertion (Sec 11.9),将表达式变成表达式语句。

答案 3 :(得分:0)

函数调用是一个表达式。所调用函数的主体没有什么区别。实际上,即使定义了函数也没有什么区别(但是,如果您在定义函数之前尝试执行调用,则会出现错误)。

任何表达式也可以用作语句,只需单独编写即可,而不是其他某些语句或表达式的一部分。

第2行既是表达式又是语句。