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

我编码如下:

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

但JSLint说:

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

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

请注意,这是否是一般的最佳实践是有争议的,但如果您想使它与JSLint一起使用,您可以这样做

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

可能是通过使用

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

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

但是,我会把它写成

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

此消息反映了最新的最佳做法。 从ES5严格模式开始, undefined的全局值不再可以更改 ,直接比较更简单,代码更快。 简而言之, JSLint意识到了这一切 ,并为您提供了很好的建议。

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