Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数中的直接参数和全局参数有什么区别?_Javascript_Arguments_Global - Fatal编程技术网

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

Javascript 函数中的直接参数和全局参数有什么区别?,javascript,arguments,global,Javascript,Arguments,Global,函数中的直接参数和全局参数有什么区别 直接参数是指我们在函数例程中直接传递的参数(而不是在基于例程中参数的子例程中)。例如: var x = (0, 1)=>{ // Routine. // Subroutine. }; // Routine. x(); var x = (x=0, y=1)=>{ // Routine. // Subroutine. } // Routine. x(); 通过全局参数,我指的是直接在函数例程中定义的变量(编辑,至少在JavaS

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

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

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

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

x();
通过全局参数,我指的是直接在函数例程中定义的变量(编辑,至少在JavaScript中,这正式称为全局参数。例如:

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

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

x();
您将如何解释全局变量的直接参数之间的差异

如果术语不准确,很抱歉。

javascript不支持直接参数。执行以下代码,您将看到

设x=(0,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();
请注意,声明的两个变量都没有常量、let或var

自ES2015以来,您可以为参数提供默认值:

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

在这种情况下,如果您在函数调用中没有声明参数就调用函数,那么
x
将自动为1,
y

将自动为2,第一个代码将不起作用。嗨,Jonas,我并不是说它有任何特殊意义。我使用它只是为了显示术语“直接参数”的确切含义。抱歉给你留下其他印象。是的,但你的问题毫无意义。如果js中根本不存在NK,我们怎么能比较两件事呢?第一件是语法错误,第二件不是。你的意思是,在JavaScript或@JonasW编程中根本没有意义。?我发誓我在过去的一些代码中看到过这样的例子,或者我很困惑在理解“不基于参数直接传递参数”这一概念时犯了很大的错误→ “为参数提供默认值”@Quentin thx,我实际上正在努力形成那个句子。注意:我知道全局范围和函数范围的问题…我只是想说我知道(我错了)让x=(x=1,y=2)=>{}
中的1和2被命名为“全局”.它们是如何命名的?根据默认值parameters@Arcticooling也许你需要在问题还不清楚的时候澄清一下。