js arguments

function foo() {
    var p = arguments.length > 0 && arguments[0] !== undefined ? arguments[0]: x + 1;
    console.log(p);
}

上面代码中arguments[0] !== undefined不是已经能保证arguments.length>0了吗?为啥还要先判断前面arguments.length>0,是因为先判断arguments.length>0arguments[0] !== undefined性能好吗?谢谢

阅读 3.1k
2 个回答

因为foo(undefined)中内部的arguments.length其实是等于1并不等于0

不是,你看一下以下代码的调用

foo(undefined);
  1. arguments.length = 1

  2. arguments[0] = undefined
    相信上面的代码尼应该明白意思了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题