function wrapper() {
var $R = {};
$R.expandFont = function (direction, max_time) {
// wtf? $R jslint error
var self = this,
el_prim = self[0],
$R = {};
alert(direction + max_time + el_prim + $R);
};
}
Run Code Online (Sandbox Code Playgroud)
此代码段会出错:
line 573 character 13
'$R' is already defined.
Run Code Online (Sandbox Code Playgroud)
我认为很明显它以前没有定义过.
$ R在外部范围内定义,但这不应该是相关的.我应该能够定义一个与JavaScript(语言)同名的局部变量是函数作用域.是的,我知道它不是块范围的,但它是功能范围的.
这是基本的范围规则.是什么赋予了?
这是一个jslint错误吗?
这是JSLint中的一个新功能.它是在2013年7月24日的提交中添加的.以下示例演示了错误的原因:
(function () {
var a = 1; // This declaration...
return function () {
var a = 2; // ... is shadowed by this one.
};
}());
Run Code Online (Sandbox Code Playgroud)
似乎只有在JSLint遇到在函数作用域中声明的变量(不在全局作用域中)时才会发出警告,该变量稍后被遮蔽(这可以解释为什么你问题的评论者无法重现它).
看来目前无法关闭此警告.
Crockford 对此新警告有以下说法:
JSLint现在会在定义var时与外部作用域中的某个名称相同时发出警告.这很令人困惑,因为读者不能轻易分辨出他正在看哪个变量.它有时是一个错误,因为新变量意外地隐藏了旧变量.在某些情况下,旧的是预期的.
一旦我有机会,我会在http://jslinterrors.com上得到一个完整解释的页面.
| 归档时间: |
|
| 查看次数: |
2181 次 |
| 最近记录: |