[英]why does JSLint recommend x === “undefined” vs. typeof x == “undefined”?
[英]Why does JSLint tell me to use “=== undefined” instead of “typeof … === 'undefined'”?
我编码如下:
showTitles = (typeof showTitles !== 'undefined') ? showTitles : 'Y';
showSelectGroup = (typeof showSelectGroup !== 'undefined') ? showSelectGroup : 'Y';
但JSLint说:
警告3 JS Lint:意外的'typeof'。 使用'==='直接与undefined进行比较。
我该如何更改代码?
可能通过使用
showTitles = (showTitles === undefined) ? 'Y' : showTitles;
showSelectGroup = (showSelectGroup === undefined) ? 'Y' : showSelectGroup;
jslint没有问题(假设showTitles和showSelectGroup用var声明)
但是,我会把它写成
var showTitles = showTitles || 'Y';
var showSelectGroup = showSelectGroup || 'Y';
请注意,这是否是一般的最佳做法是值得商榷的,但如果您想使它与JSLint一起使用,您可以这样做
showTitles = (showTitles !== undefined) ? showTitles : 'Y';
此消息反映了最新的最佳做法。 从ES5严格模式开始, undefined
的全局值不再可以更改 ,直接比较更简单,代码更快。 简而言之, JSLint意识到了这一切 ,并为您提供了很好的建议。
在这种情况下,将typeof showTitles !== 'undefined'
的showTitles === undefined
更改为showTitles === undefined
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.