请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于arguments的问题

setTimeout里面为什么用箭头函数 arguments才生效,用function () {} 就会报错

index.js:35 Uncaught TypeError: Cannot read property ‘offsetX’ of undefined

function throttle (func, wait = 100) {
  var timer = null
  return function () {
    if (timer) {
      return
    }
    timer = setTimeout(function () { 
	// 这里如果不用箭头函数,arguments不起作用
      func.apply(this, arguments)
      timer = null
    }, wait)
  }
}

正在回答

1回答

针对箭头函数和 function 两种情况,你分别打印一下 arguments 的值,看输出什么。

0 回复 有任何疑惑可以回复我~
  • 提问者 光天化日之下 #1
    function a () {
        console.log(arguments)
    }
    const b = () => {
        console.log(arguments)
    }
    a(1) // Arguments [1, callee: ƒ, Symbol(Symbol.iterator): ƒ]
    b(1) // Uncaught ReferenceError: arguments is not defined
    
    看了阮一峰的ECMAScript 6 入门关于箭头函数的注意事项:
    (3)不可以使用arguments对象,该对象在函数体内不存在。
      如果要用,可以用 rest 参数代替。
    
    明白了,谢谢老师!
    回复 有任何疑惑可以回复我~ 2020-01-08 15:05:23
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信