【问题标题】:What is the difference between a direct argument and a global parameter, in a function?函数中的直接参数和全局参数有什么区别?
【发布时间】:2017-11-18 10:38:29
【问题描述】:

函数中的直接参数全局有什么区别?

直接参数我的意思是我们直接在函数例程中传递的参数(而不是在基于例程参数的子例程中)。例如:

var x = (0, 1)=>{ // Routine.
    // Subroutine.
}; // Routine.

x();

全局参数我的意思是直接在函数例程中定义的变量(编辑,至少在 JavaScript 中这被正式称为 全局参数.例如:

var x = (x=0, y=1)=>{ // Routine.
    // Subroutine.
} // Routine.

x();

您将如何解释直接参数与全局变量之间的区别?

如果术语不准确,请见谅。

【问题讨论】:

  • 第一个代码不起作用。
  • 嗨乔纳斯,我不是故意的。我用它只是为了显示我所说的“直接参数”一词的确切含义。抱歉给您留下了其他印象。
  • 是的,但是你的问题根本没有意义。当 nkt 存在于 js 中时,我们如何比较两件事?
  • 第一个是语法错误,后者不是。
  • 你的意思是它在 JavaScript 或编程@JonasW 中根本没有意义。 ?我发誓我在过去的一些代码中看到过这样的例子,或者我在理解“不基于参数直接传递参数”的概念时混淆了某些东西并且有很大的错误。

标签: javascript arguments global


【解决方案1】:

这完全没有意义:

let x = (0, 1)=>{ // Routine.
    // Subroutine.
}; // Routine.
x();

因为如果你想有预定义的变量,你只需在你的函数范围内声明它:

let x = () => {
    const one = 1;
    const two = 2;
}

全局变量是您可以从程序中的任何位置访问的变量。在 javascript 中,您有全局对象窗口。全局变量通常是不好的做法。它会像这样工作:

one = 1;
two = 2;
let x = () => {
    // e.g. add one and two and return
    return window.one + window.two;
}
x();

请注意,声明的两个变量都没有 const、let 或 var。

从 ES2015 开始,您可以为参数提供默认值:

let x = (x = 1, y = 2) => {
    // do stuff:
}
x();
// or
x(2, 3);

在这种情况下,如果您调用函数而不在函数调用中声明参数,它将自动为 x 1 和 y 2

【讨论】:

  • “预定义变量”→“为参数提供默认值”
  • @Quentin thx,我实际上很难形成那句话。
  • 请注意:我知道全局作用域和函数作用域的问题......我只是想说我知道(而且我错了)let x = (x = 1, y = 2) => {} 中的 1 和 2 被命名为“globals ”。它们是如何命名的?
  • 根据MDN默认参数
  • @Arcticooling 也许你还不清楚你的问题需要澄清一下。
【解决方案2】:

直接参数 在 javascript 中不受支持。执行以下代码就可以看到了。

let x = (0, 1)=>{ // Routine.
    // Subroutine.
}; // Routine.

x();

【讨论】:

    猜你喜欢
    • 2015-08-09
    • 2021-01-29
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 2020-05-25
    相关资源
    最近更新 更多