JavaScript Arrow功能理解

时间:2016-06-09 15:12:25

标签: javascript jquery function arrow-functions

我有这个功能:

$(".tabstrip li").each(function () {
        $(this).attr("id") == "searchlist" ? $(this).addClass("selected") : $(this).removeClass("selected");
    })

现在我问自己,我是否可以缩短它。所以我尝试了这个:

$(".tabstrip li").each(() => $(this).attr("id") == "searchlist" ? $(this).addClass("selected") : $(this).removeClass("selected"))

它不起作用。我如何理解箭头功能这应该是正确的。

(也没有错误)

有人理解这个吗?它不重要,但我不能睡觉,直到我弄清楚为什么这不起作用;)

感谢您的时间^^

2 个答案:

答案 0 :(得分:3)

箭头函数在其中设置this的值,使其与它们之外的this的值相同。

这会破坏您的代码,因为each调用的常规函数​​的值将为this,基于当前循环的值(并且您的函数取决于具体情况)。< / p>

不要使用箭头功能&#34;使代码缩短&#34;。这不是他们的目的。箭头函数用于控制this的值。

答案 1 :(得分:0)

你可以像这样短。我不认为使用ES6 Arrow Functions最适合浏览器支持。

$(".tabstrip li").each(function () {
    $(this).toggleClass("selected", this.id == "searchlist");
})