javascript中函数执行期间使用参数执行操作的规则
在JavaScript中,我们可以定义如下函数:javascript中函数执行期间使用参数执行操作的规则,javascript,Javascript,在JavaScript中,我们可以定义如下函数: function threePly(input_int) { return input_int*3; } threePly(12); //returns: 36 threePly(12+3) //returns: 45 然后像这样执行它: function threePly(input_int) { return input_int*3; } threePly(12); //returns: 36 threePly(12
function threePly(input_int)
{
return input_int*3;
}
threePly(12); //returns: 36
threePly(12+3) //returns: 45
然后像这样执行它:
function threePly(input_int)
{
return input_int*3;
}
threePly(12); //returns: 36
threePly(12+3) //returns: 45
但是,我们也可以进行如下操作:
function threePly(input_int)
{
return input_int*3;
}
threePly(12); //returns: 36
threePly(12+3) //returns: 45
在哪里可以找到使用函数执行参数执行这些操作的规则?如何知道这是可能的
在哪里可以找到使用函数执行参数执行这些操作的规则
从根本上说,答案是:In:调用函数主要由抽象操作完成,它在进行调用之前执行抽象操作以计算参数的值(“…让__;成为计算AssignmentExpression的结果”)。这告诉您,作为参数给出的表达式在传递给函数之前进行求值
但这是几乎所有其他编程语言所共有的一个基本问题:函数参数的值可以通过使用表达式来确定。上面的链接只是JavaScript规范的表达方式
在我所见过的任何带有函数参数的编程语言中,唯一不正确的情况是在相对较少的语言中,它们能够通过引用传递变量(例如
ref
或out
C#中的参数)。在这些语言中,不能使用表达式作为传递引用参数的参数,因为它需要引用一个变量。(您可以在这些相同的语言中使用传递值参数)JavaScript是一种纯粹的传递值语言,因此不适用。无论您在ParentHase中放置什么,都会在传递给函数之前进行计算。您甚至可以根据需要多次对其进行分层
var x=logE(双倍(三倍)(四分之一(12))代码>--它将在季度(12)运行首先编码>然后将结果传递给triple
函数,返回的内容将传递给double
,返回的内容将传递给logE
,返回的内容将分配给x
如果它不是这样设计的,那么做很多非常基本的事情将是非常乏味的。为什么你认为这不可能?您可以发送任何您想要的作为参数,由函数决定如何处理该值。任何操作都是允许的。@IslamElshobokshy在哪里记录的?鉴于JS是一种基于规范的语言,您能提供源代码吗?谢谢。考虑到正如您所概述的那样存在例外情况,应该在某处记录了解为什么这在JS中有效。我知道这是可能的,但我不记得我是如何得知这确实是可能的,我在ES5规范中找不到它。另外,MDN中没有提到它,或者可能我找的地方不对。@obinwanehill-JavaScript规范可能很难阅读。:-)我已经更新了答案,列出了几个部分。非常感谢,谢谢。难以阅读可能是对事物的轻描淡写。为12岁儿童可以阅读的规范文档的创建定义一个PlainSpecs标准可能是有意义的。在那之前,经验主义一定会占统治地位。@Obinwanehill-嗯,我不同意经验主义,但那没关系。:-)你也会发现这很有用:谢谢。但你从哪里知道这是可以做到的?说明在哪里?我正在寻找此功能的源代码。我。。。不知道。我可能在学习Python的时候读过一本基础编程书,并且假设了应用于javascript的相同概念,因为函数调用在javascript中看起来很相似——结果证明我的假设是正确的。正如T.J.Crowder在上文中指出的那样,这种功能并不适用于任何地方。所以我只是想在规范中找到一些东西,确定这样的事情是可能的。