Я не уверен, определено ли это в стандарте, но я могу вам сказать, что это сложный вызов. Как говорит Феликс, это не стандартное поведение, но я могу понять, почему это так.
Как вы, возможно, знаете, undefined
- это значение, установленное для параметров, которые не передаются при вызове функции,Однако в вашем примере вы фактически передаете undefined, поэтому переданные аргументы на самом деле равны двум и отражаются в arguments.length
.
Итак, из того, что вы говорите, легко представить, что в Chrome второй параметрпроверяется с помощью typeof param2 == "undefined"
и в Firefox они используют arguments.length > 1
.Так что не (полностью) Firefox ошибся, как предполагает Феликс, они просто предполагают, что undefined
никогда не будет передано напрямую как второй параметр.
Вы, вероятно, столкнетесь с некоторыми из этих случаевиспользуя undefined
вот так, я бы порекомендовал вам его не использовать!