假设我在第-1行声明了一个空函数:
1: function foo () {}
2: foo()
我在第-2行执行了同样的操作,第-2行是语句还是表达式?为什么?
发布于 2018-08-17 02:40:18
function foo () {}
=>这是一个函数声明。
foo()
=>你正在调用那个函数,这是一个调用该函数的表达式
发布于 2018-08-17 03:16:48
第2行是包含(并完全由)调用表达式组成的语句。如果您没有省略语句末尾的可选分号,它可能更容易识别为语句:
/* 1 */ function foo () {}
/* 2 */ foo();
// ^
foo()
部分本身就是调用表达式,也可以在允许表达式的不同上下文中使用,例如作为console.log(foo());
中console.log
的参数。
发布于 2018-08-17 03:44:24
函数调用是一个表达式。被调用的函数体中的内容没有区别。实际上,即使定义了函数也没有区别(但如果您试图在定义函数之前执行调用,则会得到一个错误)。
任何表达式也可以用作语句,只需编写它本身,而不是作为其他语句或表达式的一部分。
因此,第2行既是一个表达式,也是一个语句。
https://stackoverflow.com/questions/51883438
复制相似问题