[英]Execute function with semicolon in JavaScript
我有两个功能:
const functionA = function() {
return 30;
}
const functionB = function(num) {
return num*2;
}
const c = functionB(functionA());
我知道它的方式非常简单,但为什么我们不能像这样编写代码:
const c = functionB(functionA();); // with an semicolon in the inner braces
那个内部函数A也没有执行吗?
我有另一个功能:
const functionAnother = function() {
//does nothing
}
我们知道有一条空行执行是违法的,就像:
;
但我们可以编写如下代码:
functionAnother();
因为functionAnother什么都不返回,不是这样的:
;
分号与执行没有任何关系,只是标记语句的结尾。 Parens ()
实际上是调用执行的东西。
所以, const c = functionB(functionA(););
抛出一个错误,因为JS认为你开始新的一行除了);
在它之后的第一个分号(以及它之前的语句是不完整/无效的语法)。
但是,如果你删除那个分号......
const c = functionB(functionA());
...你有一些完全有效(和常见)的东西。 这将首先执行functionA
,并将其返回值作为参数传递给functionB
。
这有助于您理解吗?
将functionA()
的结果传递给functionB
,将functionA()
的结果视为表达式。 因为它是一个表达式(某些东西,它有一个值,在这种情况下是30)而不是一个语句(一个做某事的指令),你不会在它后面加一个分号。 那有意义吗?
我不确定你的第二个问题是什么。 如果你想要一个空行代码,你可以通过不在该行上写任何东西来制作代码。 我相信;
实际上是一个合法的JavaScript声明,请通过此页面访问: https : //docstore.mik.ua/orelly/webprog/jscript/ch06_19.htm
回答你的第一个问题:
在语句结尾处使用分号。 声明可以被视为将由程序执行/执行的动作或指令。 分号标志着该指令的结束。 因此,当您在语句中间使用分号(即未完成时)时,技术上会提前结束您的指令,因此您将收到语法错误:
function functionA() {}; function functionB() {}; const c = functionB(functionA(););
回答你的第二个问题:
当一个函数没有返回任何东西时,它实际上是隐式返回undefined:
function functionA() { } console.log(functionA());
因此,而不是:
;
就其本身而言,你有这样的事情:
console.log("foo"); undefined; console.log("bar");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.