JavaScript-将未定义的作为参数传递与不传递相同吗?

JavaScript-将未定义的作为参数传递与不传递相同吗?,javascript,function,Javascript,Function,这个问题很简单。例如,这些是等价的吗 window.open('http://someurl.com) window.open('http://someurl.com,未定义) 我有一部分怀疑它可能取决于函数本身,但我不确定。简言之:在绝大多数情况下,传递undefined相当于忽略参数 但是,在函数中,可以区分省略的参数和作为未定义的传递的参数。虽然我不建议使用这种区别来改变行为,但如果访问函数中的特殊参数变量,您可以看到两者之间的区别: 函数logNumArgs(){ console.lo

这个问题很简单。例如,这些是等价的吗

window.open('http://someurl.com)

window.open('http://someurl.com,未定义)


我有一部分怀疑它可能取决于函数本身,但我不确定。

简言之:在绝大多数情况下,传递
undefined
相当于忽略参数

但是,在函数中,可以区分省略的参数和作为
未定义的
传递的参数。虽然我不建议使用这种区别来改变行为,但如果访问函数中的特殊
参数
变量,您可以看到两者之间的区别:

函数logNumArgs(){ console.log(arguments.length) } logNumArgs()//0
logNumArgs(未定义,未定义)//2
对于所有正常应用程序,是。但是,例如,对于非箭头函数,可以检测差异,例如使用
参数
对象。因此,不能保证总是产生相同的行为。它的正常行为是一样的,因为常规测试只检查
未定义的