函数中直接参数和全局参数之间有什么区别?

函数中直接参数和全局参数之间有什么区别?

问题描述:

在函数中,直接参数全局有什么区别?函数中直接参数和全局参数之间有什么区别?

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

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

x(); 

通过一个全局参数我的意思是直接在函数的程序(编辑定义的变量,至少在JavaScript这种正式的称呼全局参数

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

x(); 

你会如何解释直接参数与全局变量的区别?

对不起,如果在术语中有不准确的地方。

+0

第一个代码不会工作。 –

+0

嗨,乔纳斯,我不是故意有什么特别的意思。我用这只是为了显示“直接参数”一词的含义。对不起其他印象。 – Arcticooling

+1

是的,但你的问题根本没有意义。我们怎么能比较两件事情,一件事情根本不存在于js中? –

这是没有意义的:

如果你想有预定义变量,你只需要声明它在你的功能范围,像这样
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); 

在这种情况下,如果你调用该函数没有函数内声明的参数调用它会自动将1 x和2 y

+0

“预定义变量”→“为参数提供默认值” – Quentin

+0

@Quentin thx,我实际上正在努力形成这个句子。 –

+0

只是一个说明:我知道全局范围和函数范围的问题......我只是想说我知道(而且我错了),在let x =(x = 1,y = 2)= 1中的1和2 > {}'被命名为“全局变量”。他们如何命名? – Arcticooling

直接参数在JavaScript中不受支持。执行下面的代码,你会看到。

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

 
x();