在JavaScript中,为什么在这种情况下与var不一样

时间:2017-12-16 17:20:23

标签: javascript ecmascript-6

我最近看到一篇帖子说从不在JavaScript(ECMAScript6)中使用var。始终使用constlet代替。我有来自使用var的YouTube API文档的以下代码段。

function changeBorderColor(playerStatus) {
    var color;
    if (playerStatus == -1) {
        color = "#37474F"; // unstarted = gray
    } else if (playerStatus == 0) {
        color = "#FFFF00"; // ended = yellow
    } else if (playerStatus == 1) {
        color = "#33691E"; // playing = green
    } else if (playerStatus == 2) {
        color = "#DD2C00"; // paused = red
    } else if (playerStatus == 3) {
        color = "#AA00FF"; // buffering = purple
    } else if (playerStatus == 5) {
        color = "#FF6DOO"; // video cued = orange
    }
    if (color) {
        document.getElementById('existing-iframe-example').style.borderColor = color;
    }
}

当我将var color更改为let color时,我的linter建议底部附近的行(if (color))将始终评估为true。那就是“条件总是如此”。我无法理解let导致行为的原因,var没有。

1 个答案:

答案 0 :(得分:2)

短信是错的。

根据您使用if (color)还是let color,最后var color完全不受影响。它仅受if playerStatus color次测试的影响。

正如其他人所说的那样,你可以通过在let color = null;中为Private Sub CommandButton1_Click() Me.Delete ThisWorkbook.Worksheets("MainMenu").Activate End Sub 分配一个默认值来解决linter bug,这可能会避免linter遇到的混乱。