赋值表达式的标准格式是什么?
What's the standard format for assignment expressions?
我在 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循环中的内联赋值表达式。我认为双括号是标准的说法,"I'm expecting the returned value from the assignment expression to be type-casted to a Boolean
for the conditional." JSLint 似乎不同意,即使我启用了 "assignment expressions." 然后我尝试在前面添加一个 !!
,JSLint 抱怨它是 "confusing usage." 所以我的问题是,格式化这个的正确方法是什么?
编辑: "this",我指的是内联赋值表达式。我的问题的目的是澄清该特定行的可接受标准是什么,如果真的想使用它,虽然我同意 thefourtheye 的答案是编写函数的最正确方法,但它不是答案我问的问题。
根据 this article,对于 JSHint、ESHint 和 JSLint(从 2013 年 7 月之前开始),您可以将其强制为这样的条件:
do {
// ...
} while ((currentElement = currentElement.offsetParent) !== null);
对于较新版本的 JSLint,你运气不好,如果你看重全绿色,则需要将你的作业分开。
条件表达式中最好不要有赋值表达式。但是,我相信 while
比 do...while
更适合这种情况。您可以将代码转换为这个
function getPos(event, element) {
var x = event.clientX,
y = event.clientY,
currentElement = element;
while (currentElement) {
x -= currentElement.offsetLeft - currentElement.scrollLeft;
y -= currentElement.offsetTop - currentElement.scrollTop;
currentElement = element.offsetParent;
}
return {
x: x,
y: y
};
}
现在,条件表达式中不涉及赋值,我相信这看起来很干净。
我在 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循环中的内联赋值表达式。我认为双括号是标准的说法,"I'm expecting the returned value from the assignment expression to be type-casted to a Boolean
for the conditional." JSLint 似乎不同意,即使我启用了 "assignment expressions." 然后我尝试在前面添加一个 !!
,JSLint 抱怨它是 "confusing usage." 所以我的问题是,格式化这个的正确方法是什么?
编辑: "this",我指的是内联赋值表达式。我的问题的目的是澄清该特定行的可接受标准是什么,如果真的想使用它,虽然我同意 thefourtheye 的答案是编写函数的最正确方法,但它不是答案我问的问题。
根据 this article,对于 JSHint、ESHint 和 JSLint(从 2013 年 7 月之前开始),您可以将其强制为这样的条件:
do {
// ...
} while ((currentElement = currentElement.offsetParent) !== null);
对于较新版本的 JSLint,你运气不好,如果你看重全绿色,则需要将你的作业分开。
条件表达式中最好不要有赋值表达式。但是,我相信 while
比 do...while
更适合这种情况。您可以将代码转换为这个
function getPos(event, element) {
var x = event.clientX,
y = event.clientY,
currentElement = element;
while (currentElement) {
x -= currentElement.offsetLeft - currentElement.scrollLeft;
y -= currentElement.offsetTop - currentElement.scrollTop;
currentElement = element.offsetParent;
}
return {
x: x,
y: y
};
}
现在,条件表达式中不涉及赋值,我相信这看起来很干净。