Why does JSLint tell me to use “=== undefined” instead of “typeof … === 'undefined'”?

后端 未结 3 1053
日久生厌
日久生厌 2021-01-11 09:46

I coded the following:

showTitles = (typeof showTitles !== \'undefined\') ? showTitles : \'Y\';
showSelectGroup = (typeof showSelectGroup !== \'undefined\')          


        
相关标签:
3条回答
  • 2021-01-11 09:56

    This message reflects the latest best practices. As of ES5 strict mode, the global value of undefined can no longer be changed and a direct comparison is simpler code and faster. In short, JSLint is aware of all this, and is giving you good advice.

    In this case, change typeof showTitles !== 'undefined' to showTitles === undefined.

    0 讨论(0)
  • 2021-01-11 09:57

    Probably by using

    showTitles = (showTitles === undefined) ? 'Y' : showTitles;
    showSelectGroup = (showSelectGroup === undefined) ? 'Y' : showSelectGroup;
    

    jslint has no issues with that (assuming showTitles and showSelectGroup are declared with var)

    However, I'd write it as

    var showTitles = showTitles || 'Y';
    var showSelectGroup = showSelectGroup || 'Y';
    
    0 讨论(0)
  • 2021-01-11 10:07

    Note that whether this is best practice in general is debatable, but if you want to make it work with JSLint, you could do this

    showTitles = (showTitles !== undefined) ? showTitles : 'Y';
    
    0 讨论(0)
提交回复
热议问题