为什么JSLint告诉我使用“=== undefined”而不是“typeof ... ==='undefined'”?

时间:2012-09-27 18:43:10

标签: javascript jquery jslint

我编码了以下内容:

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

但是JSLint说:

  

警告3 JS Lint:意外的'typeof'。使用'==='直接与undefined进行比较。

我应该如何更改我的代码?

3 个答案:

答案 0 :(得分:9)

可能使用

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

jslint没有问题(假设showTitles和showSelectGroup用var声明)

但是,我把它写成

var showTitles = showTitles || 'Y';
var showSelectGroup = showSelectGroup || 'Y';

答案 1 :(得分:8)

请注意,这是否是一般的最佳做法是值得商榷的,但如果您想使其适用于JSLint,您可以这样做

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

答案 2 :(得分:7)

此消息反映了最新的最佳做法。从ES5严格模式开始,undefined can no longer be changed的全局值和直接比较更简单,代码更快。简而言之,JSLint is aware of all this,并给你很好的建议。

在这种情况下,请将typeof showTitles !== 'undefined'更改为showTitles === undefined