繁体   English   中英

将单个参数传递给需要 javascript 中的多个 arguments 的 function

[英]passing single argument into a function that requires multiple arguments in javascript

我正在尝试阅读互联网上的一些源代码,但我很困惑,因为作者将 function 定义为:

var _0x80a1 = function (x, a) {...}

但随后只能使用如下语句调用它:

_0x80a1("0x0")

这是如何运作的?

JavaScript 参数是可选的,您不需要传递它们。 所以你可以做这样的事情:

function multiply(a, b) {
  if(typeof b === 'undefined') { 
    b = 10;
  }
  return a * b;
}

console.log(multiply(5));
// expected output: 50

在较新版本的 JS 中,您还可以执行如下默认参数:

function multiply(a, b = 10) {
  return a * b;
}

console.log(multiply(5));
// expected output: 50

否 function “需要” JavaScript 中的参数。 它不是一种强类型语言。

我可能是自己打出来的,但我认为函数的 arguments 是 JS 中的语法糖。 无论函数的“签名”如何,您始终可以传递任意数量的 arguments,因为在 JS 中唯一标识 function 的是它的名称(以及它的名称为 object)。 这就是存在arguments object的原因。

因此,正如其他人指出的那样,第二个、第三个或任何其他未给出的参数将只是undefined

用例子回答这个问题

In,JavaScript function parameters are optional.If your'e not making use of 'a' inside your function then JS compiler don't care about that.If your'e making use of 'a' inside your function then you will encounter some像“a 未定义”这样的错误。

function (x,a=10){

}

您可以像这样设置默认参数。现在,即使您将一个参数传递给您的 function,它也会运行而不会出现任何错误

我很好奇所以试图理解这一点,所以我可以尝试回答。

变量 _8x80a1 是一个文字位定义( https://www.hexadecimaldictionary.com/hexadecimal/0x80A1/ ),例如以十进制表示 32929。

JS 在运行时会在内部对所有函数进行编号。 这留下了整个 integer (32766) 'vanilla' 函数,可以在使用文字作为 function 名称之前进行编译,这可能会导致冲突。

所以 function def 中的“x”。 看起来它正在传递一个字符串,但它可能只是在 _8x80a1 var/function 中调用'Function #0'。 如果 function 包含多个“子函数”,这将是有意义的,因为“a”变量可以是 object 集合(例如参数),可以传递给子函数。

粗略地说,我认为.. 有一段时间没有使用 JS,只是想我会尝试帮助回答; ,-) 本质上是一种紧凑的方式来制作可以在项目之间复制的工具包,并且知道您的引用将按照您的工具的预期工作。 不破坏例如 jQuery 或其他脚本; (如果这实际上是 JS 的缩小方式,也不会感到惊讶。))。

克里斯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM