为什么可以将参数传递给javascript中没有参数的函数?
今天我遇到了一个奇怪的decorator函数,它没有任何参数,但在其作用域内使用了参数。一开始我以为这是个错误 然后我在node中定义了这样一个函数:为什么可以将参数传递给javascript中没有参数的函数?,javascript,node.js,Javascript,Node.js,今天我遇到了一个奇怪的decorator函数,它没有任何参数,但在其作用域内使用了参数。一开始我以为这是个错误 然后我在node中定义了这样一个函数: noParameterFunction() { console.log(arguments) } 使用参数“a”调用此函数将得到以下结果: > noParameterFunction('a') [Arguments] { '0': 'a' } undefined 我以为会有一个错误,参数被传递给一个不需要抛出参数的函数,但我得到了这
noParameterFunction() {
console.log(arguments)
}
使用参数“a”调用此函数将得到以下结果:
> noParameterFunction('a')
[Arguments] { '0': 'a' }
undefined
我以为会有一个错误,参数被传递给一个不需要抛出参数的函数,但我得到了这个错误
有人能解释一下这种设计背后的原理吗?谢谢
注意:使用arrow声明函数将无法再现下面的结果。该[arguments]对象包含传递给函数的参数数组 参数是在定义方法的同时定义的变量,它将保存传递给它的参数,参数是传递给该参数的实际变量。
您正在打印参数,即调用函数时传递的值。由于您使用参数a调用它,因此它是打印的,实际上可以通过[arguments]对象使用,因此它不是错误,不会触发异常。该[arguments]对象包含传递给函数的参数数组 参数是在定义方法的同时定义的变量,它将保存传递给它的参数,参数是传递给该参数的实际变量。 您正在打印参数,即调用函数时传递的值。由于您使用参数a调用它,因此它是打印的,实际上可以通过[arguments]对象使用,因此它不是错误,也不会触发异常。: arguments是一个类似数组的对象,可在函数内部访问,它包含传递给该函数的参数值 arguments对象是所有非arrow函数中可用的局部变量 有人能解释一下这种设计背后的原理吗 arguments对象对于使用比正式声明接受的参数更多的参数调用的函数很有用。对于可以传递可变数量参数的函数,此技术非常有用 : arguments是一个类似数组的对象,可在函数内部访问,它包含传递给该函数的参数值 arguments对象是所有非arrow函数中可用的局部变量 有人能解释一下这种设计背后的原理吗 arguments对象对于使用比正式声明接受的参数更多的参数调用的函数很有用。对于可以传递可变数量参数的函数,此技术非常有用
见-。arguments对象是所有非arrow函数中可用的局部变量。您可以在Twitter上询问Brendan Eich,但他的答案很可能是。请参阅-。arguments对象是所有非arrow函数中可用的局部变量。你可以在Twitter上询问Brendan Eich,但他的答案很可能是。问题是:有人能解释这种设计背后的原理吗?【arguments】对象是在spread运算符存在之前使用的。问题是:有人能解释此设计背后的原理吗?[arguments]对象是在spread运算符存在之前使用的。