nim*_*cap 12 javascript jslint
我正在检查是否定义了变量,如果没有明确定义,我将通过执行以下操作来定义它:
if ( typeof(aVariable) == 'undefined' ) {
var aVariable = value;
}
Run Code Online (Sandbox Code Playgroud)
因为没有定义变量,JSLint会在它被定义之前警告它被使用,这正是我想要的.
我怎么能克服这个?
我想启用显式定义这些变量:
<script>
var aVariable = value;
</script>
<script src="myScript.js"></script>
Run Code Online (Sandbox Code Playgroud)
所以每个要包含此脚本的人都可以自定义一些属性.而且我担心我无法改变这种逻辑,因为它已经被这种方式用于数百个网站.
向下滚动查找答案/解决方案,因为我已经回答了我自己的问题Stack Overflow没有显示出来.一定不要错过他们.
我认为JSLint告诉你的是你不应该在定义之前使用变量.如果您对自己的情况感到满意,可以忽略该警告.如果您不完全确定,请考虑一下为什么还没有定义此变量.
例如,你真的想测试aVariable是否有一个值集,而不是是否定义了?
var aVariable = null;
Run Code Online (Sandbox Code Playgroud)
... (一段时间以后)
if (aVariable == null) {
aVariable = value;
}
Run Code Online (Sandbox Code Playgroud)
我在JSLint邮件列表中找到了更多可接受的答案,抱歉Boldewyn :)
解决方案1
在IE中,在脚本级别(即每个文件或每个脚本块),如果它在解析阶段(执行前)看到"var"声明,它将重置该变量的值(如果它已经存在).
所以更好的方法就是这样做:
/*global foo: true */
if (typeof foo === "undefined") {
foo = "some value";
}
Run Code Online (Sandbox Code Playgroud)
通过不声明"var"并简单地指定foo,foo将自动获得全局范围.
解决方案2(特例)
如果显式设置变量不为零或为假
var foo = foo || "some value";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12586 次 |
| 最近记录: |