&引用;“论点”;JavaScript箭头函数中的变量不可调试?

&引用;“论点”;JavaScript箭头函数中的变量不可调试?,javascript,ecmascript-6,google-chrome-devtools,arrow-functions,Javascript,Ecmascript 6,Google Chrome Devtools,Arrow Functions,我在MDN上读到这个- 在一个标题为“无参数绑定”的部分中,我看到了以下内容,并在浏览器控制台上进行了尝试。工作 没有参数的绑定 箭头函数没有自己的参数对象。因此,在本例中,>arguments只是对封闭范围内参数的引用: 当我尝试调试arrow函数时,参数的值是不同的,并且是意外的。这是DevTools中的一个bug还是我忽略了什么 在下面的示例中,控制台中打印的参数.length为1。(值为1) 但是,当执行在断点处停止时,参数.length为4。(数值为1,6,7,8) jsFiddle

我在MDN上读到这个-

在一个标题为“无参数绑定”的部分中,我看到了以下内容,并在浏览器控制台上进行了尝试。工作

没有参数的绑定 箭头函数没有自己的参数对象。因此,在本例中,>arguments只是对封闭范围内参数的引用:

当我尝试调试arrow函数时,参数的值是不同的,并且是意外的。这是DevTools中的一个bug还是我忽略了什么

在下面的示例中,控制台中打印的
参数.length
为1。(值为1)

但是,当执行在断点处停止时,
参数.length
为4。(数值为1,6,7,8)


jsFiddle here-

也很奇怪:在控制台中,
这个
在断点处计算为
未定义的
(在严格模式下),并显示在scope inspector中,但是记录它会产生
obj
(如预期的那样)。您使用的是Babel还是本机ES6?在调试器中看到
4
确实看起来像个bug。@loganfsmyth native ES6。Chrome和Firefox都有这种行为。Chrome的调试器在评估当前范围内未使用的东西时总是有点不稳定。还有一些观察:如果我以草率模式运行此代码,范围窗格会显示
为窗口,但如果我在控制台中输入
,然后按enter键,则显示
未定义
。如果我添加
这个
console.log
行之后,重复上述操作,范围窗格继续说
this
是窗口,但如果我在控制台中输入
this
,然后按enter键,它会正确地记录
obj
的表示。我认为这个故事的寓意是,(1)不要信任Chrome调试器处理当前立即作用域中未使用的任何内容,除非您正在对其进行w.r.t.评估。某些全局变量(
window.something.somethingElse
)和(2)
参数
即使在当前立即作用域中使用,也不可靠。
(function() {

    var obj = {
        fn: function(a) {
            var f = v=> { 
                debugger; 
                console.log("Arguments length " + arguments.length);
            };
            return f(a, 6, 7, 8);
        }
    };
    obj.fn(1);
}
)();