2017-12-16 4 views
2

최근에 JavaScript (ECMAScript6)에서 var을 사용하지 말라는 내용의 게시물을 보았습니다. 항상 const 또는 let을 대신 사용하십시오. var을 사용하는 YouTube API 문서의 다음 코드 스 니펫이 있습니다. JavaScript에서이 경우 var와 같지 않은 이유

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; 
    } 
} 

내가 let colorvar color을 변경

내 린터 하단 ( if (color)) 근처 줄이 항상 true로 평가 것이라는 점을 시사한다. 그것은 "조건은 항상 사실입니다"입니다. let이 동작하는 이유를 이해하는 데 문제가 있으며 var이 아닙니다.

+1

시도'색 = 널 (null)을 할 수 있습니다.; ' – charlietfl

+1

@charlietfl는 문제를 해결하지만 실제로 var와 let이 왜 다른지에 대한 나의 질문은 아닙니다. – Pete

+4

나는 린터가 정직하지 못한 것 같아 – charlietfl

답변

2

린터가 잘못되었습니다.

마지막 if (color)let color 또는 var color을 사용했는지 여부에 전혀 영향을받지 않습니다. playerStatus에 대한 if 테스트에서 조건을 위반하는 여부에만 영향을줍니다. 다른 사람이 말했듯이

, 당신은 아마 let color = null; 같이 color에 기본값을 할당하여 린터의 버그를 해결 할 수 있으며 그 가능성이 린터가 자체있어 혼란을 피할 수