hou*_*se9 20 javascript jslint
我有以下javascript函数未通过jslint检查
function hasActiveX() {
return ('ActiveXObject' in window);
}
Run Code Online (Sandbox Code Playgroud)
jslint错误
Unexpected 'in'. Compare with undefined, or use the hasOwnProperty method instead.
Run Code Online (Sandbox Code Playgroud)
我应该忍受jslint错误,还是有更好的方法来确定ActiveXObject?我找不到跳过此检查的jslint标志?
Kas*_*tor 21
忽略错误."in"运算符在ECMA 262-5.1/June 2011 sec-11.8.7中明确定义
目前看来只有三种结果为'someProperty' in anObject这是一个:true,false或TypeError抛出异常.当它评估时true,肯定有'someProperty' in anObject.当它评估到false肯定没有'someProperty' in anObject.TypeError抛出a时肯定不会'someProperty' in anObject因为anObjectnull或者根本不是对象.这一切对我来说都很清楚.当我想知道对象是否有属性时,我不在乎该属性是对象自己的属性还是被继承,我不关心属性的值是什么,然后我只是寻找'someProperty' in anObject.
警告:有些人会检查你,anObject.someProperty !== undefined但这并没有真正检查对象是否具有该属性.它在做什么是检查对象是否具有属性和那个该属性的值是不是不确定的.有些人让你检查anObject.hasOwnProperty('someProperty');,但只会告诉你,如果对象具有属性和已不继承它以某种方式.不相信我?请尝试以下方法:
console.log(document.body.tagName);
// BODY
console.log(document.body.hasOwnProperty('tagName'));
// false, it's inherited
console.log('tagName' in document.body);
// true, it does have the property
document.body.wobbles = undefined;
// new property added to document.body
console.log('wobbles' in document.body);
// true, it does have the property
console.log(document.body.wobbles !== undefined);
// false, the value really IS undefined
Run Code Online (Sandbox Code Playgroud)
我写了一篇关于"in"运算符的文章,该文章更详细.如果您想阅读它,请访问:http://matthewkastor.blogspot.com/2012/09/Unexpected--in---Compare-with-undefined--or-use-the-hasOwnProperty-method-instead.html底线是你应该忽略如果对象可能为null或不是对象,则此错误并在try catch块中包装.
function hasProperty(prop, obj) {
try {
return prop in obj;
} catch(e) {
return e;
}
}
Run Code Online (Sandbox Code Playgroud)
Cᴏʀ*_*ᴏʀʏ 17
我认为JSLint要求你尝试:
function hasActiveX() {
return window.hasOwnProperty('ActiveXObject');
}
Run Code Online (Sandbox Code Playgroud)
或者与"未定义"进行比较的其他建议:
return (typeof(window.ActiveXObject) != "undefined");
Run Code Online (Sandbox Code Playgroud)
就个人而言,我更喜欢前者.
看完评论之后,in如果JSLint停止抱怨它似乎真的很有用,否则我会尝试上面的选项2.
| 归档时间: |
|
| 查看次数: |
6385 次 |
| 最近记录: |