我在 JavaScript 中有以下函数,当通过 JSLint 运行它时,它对我大喊大叫,正如我所说。
function getPos(event, element) {
var x = event.clientX,
y = event.clientY,
currentElement = element;
do {
x -= currentElement.offsetLeft - currentElement.scrollLeft;
y -= currentElement.offsetTop - currentElement.scrollTop;
} while ((currentElement = currentElement.offsetParent));
return {
x: x,
y: y
};
}
特别是关于 while 循环中的内联赋值表达式。我认为双括号是表达“我期望从赋值表达式返回的值被类型转换为条件的 Boolean
”的标准方式。 JSLint 似乎不同意,即使我启用了“赋值表达式”。然后我尝试在前面添加 !!
,JSLint 提示说这是“令人困惑的用法”。所以我的问题是,格式化它的正确方法是什么?
编辑:“这个”是指内联赋值表达式。我的问题的目的是澄清该特定行的可接受标准是什么,如果真的想使用它,虽然我同意 thefourtheye 的答案是编写函数的最正确方法,但它不是答案我问的问题。
最佳答案
根据 this article ,对于 JSHint、ESHint 和 JSLint(从 2013 年 7 月之前开始),您可以将其强制为这样的条件:
do {
// ...
} while ((currentElement = currentElement.offsetParent) !== null);
对于较新版本的 JSLint,你运气不好,如果你重视全绿色,则需要将你的作业分开。
关于javascript - 赋值表达式的标准格式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27873663/