【发布时间】:2011-05-18 10:25:09
【问题描述】:
是的,是的,我知道,严格模式还没有出现,但实际上,我正在为未来做计划......
那么,为什么会这样:
$('#'+ $(this).attr('id').replace('control-', 'legend-')).fadeIn();
...在 ES5 严格模式下不允许?
还是我误解了? JSLint:
第 516 行字符 18 处的问题:严格违反。
能不能再详细一点,我想知道...?
编辑:
为避免混淆,这里有更多的原始代码:
function displayLegend() {
$('#'+ $(this).attr('id').replace('control-', 'legend-')).fadeIn();
}
【问题讨论】:
-
只是好奇,
$('#'+ this.id.replace('control-', 'legend-')).fadeIn();是做什么的? -
哇,一个 100k 的人……以前从未见过这样的人。脱离上下文有点复杂......这是一个用户脚本,Manga ChapterReader,你可以在那里找到它。基本上,我有匹配的 HTML 元素,它们具有相同的 id 和不同的前缀。当您将鼠标悬停在控件上时,描述(图例)会淡出。我发现能够使用预定义的模式添加控件非常漂亮。
-
我不太了解严格模式,无法给出连贯的答案,但它似乎与在看起来像方法之外使用
this有关。如果我将代码更改为'use strict';var foo = {};foo.bar = function () {$('#'+ $(this).attr('id').replace('control-', 'legend-')).fadeIn();},那么它将通过 JSLint 的严格测试。 -
它可能与 developer.mozilla.org/en/JavaScript/… 相关(也可能是 JSLint 中的一个错误,只有在
window的上下文中调用该函数时它可能才会失败,并且作为你将它用作事件处理程序——这永远不会发生。不过,这一切都是我的猜测。 -
@David:这是否与我在回答中引用的规范部分有关,无论它的真正含义是什么?
标签: javascript ecmascript-5 strict use-strict