JavaScript-将undefined传递为参数与将其省略一样吗?

时间:2018-08-08 21:30:57

标签: javascript function

一个非常简单的问题。例如,这些等效吗?

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

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

我当中有些人怀疑它可能取决于函数本身,但我不确定。

1 个答案:

答案 0 :(得分:1)

简而言之:在绝大多数情况下,传递undefined等同于忽略参数。

但是,在函数中,您可以区分省略的参数和作为undefined传递的参数。尽管我永远不建议使用这种区别来更改行为,但是如果您访问函数中的特殊arguments变量,则可以看到两者之间的区别:

function logNumArgs() {
  console.log(arguments.length)
}

logNumArgs() // 0
logNumArgs(undefined, undefined) // 2