为什么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
。
- TypeError getElementsByTagName不是函数问题
- Google Maps Javascript V3 Uncaught TypeError:无法读取null的属性’offsetWidth’
- Bootstrap Vue – 更改下拉背景
- javascript setInterval未按时运行
- 有什么方法可以检查变量是否是真正的jqXHR?
- 没有带有数据的iframe中的JSONP回调
- 使用box-sizing时,jQuery.height()在WebKit和Firefox中的行为有所不同:border-box
- 无法从JS表单调用servlet doPost方法
- 非jQuery相当于:在JavaScript中可见?