![](/img/trans.png)
[英]JsHint: “Expected an assignment or function call and instead saw an expression”, Switch statement
[英]JSHint expected an assignment or function call for multiple assignment
我正在整理一些現有的JavaScript,但收到錯誤消息“ Expected an assignment or function call and instead saw an expression.
對於以下。
var k, i;
k = 0, i = -1;
分配似乎正確進行,那么導致棉絨警告的問題出在哪里呢?
大局觀 如果有幫助的話,這就是函數開始的樣子。
var subgroups = {},
groupSums = [],
groupIndex = d3.range(n),
subgroupIndex = [],
k,
x,
x0,
i,
j;
chords = [];
groups = [];
// Compute the sum.
k = 0, i = -1; while (++i < n) {
x = 0, j = -1; while (++j < n) {
x += matrix[i][j];
}
groupSums.push(x);
subgroupIndex.push(d3.range(n));
k += x;
}
逗號運算符創建一個表達式 。 它是一個運算符,它評估左右兩邊的內容,然后產生右邊的那一項作為其值。 即使用逗號分隔的內容是分配,JS仍然將逗號運算符視為創建表達式。
JSLint和JSHint不喜歡只是坐在那里而不做任何事情的表達式,例如
0 !== 1;
對於短毛絨,
k = 0, i = 1;
是一個孤獨的表情,什么也沒做。
在您的特定情況下,這樣做可能會更容易
for (k = 0, i = -1; ++i < n; ) {
並完成它,盡管我個人會寫
for (k = 0, i = 0; i < n; i++) {
您可能已經知道,可以將其關閉(JSHint的示例):
/*jshint -W030*/
/*jshint expr:true*/
使用
(結果是OP 確實使用了var
關鍵字,錯誤就會消失。
var
關鍵字。)
使用逗號運算符將兩個單獨的賦值滾動到一個表達式中,如下所示:
k = 0, i = -1;
在JavaScript中合法可行。 但是,它不被認為是好的樣式。 只需使用分號作為語句分隔符即可:
k = 0; i = -1;
根據MDN的逗號運算符:
要在需要單個表達式的位置中包含多個表達式時,可以使用逗號運算符。
您的情況不符合要求。 巧妙地使用語言功能被認為是有害的。 盡量不要在代碼高爾夫比賽之外做聰明的事情。
您應該這樣做:
k = 0;
i = -1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.