В большинстве ответов указано, что символ =
используется в качестве оператора присваивания.
Действительно, это соответствует тому, чему я научился во время изучения программирования.
Я столкнулся с этой проблемой при использовании программного обеспечения для сканирования SonarQube: CWE-481: присвоение вместо сравнения
Как показано выше, эта проблема обнаружена в более старой версии jQuery, и отрывок выглядит следующим образом:
Задание в этом сегменте находится в другом месте:
Какова цель этого подхода?
Всегда ли существуют ИСТИННЫЕ условия? (если я не правильно понял).
Является ли этот подход целям организации кода,
помогает ли это в будущем обслуживании и читабельности кода, или это просто ошибка в использовании?
@VLAZ Я не уверен. Пожалуйста, дайте мне знать, если это неправда.
@VLAZ да, согласен. Кажется, что это сделано намеренно, но я думаю, что версия while
— опечатка. В любом случае, это очень двусмысленно и неясно по смыслу. По крайней мере, это провалило бы мой обзор кода :)
Вы утверждали, что это всегда правда. Но я не могу это проверить.
@RoryMcCrossan if
тоже верно. Если есть значение — присвойте это значение объекту. Если значение ложно — не присваивайте его.
@RoryMcCrossan Не думаю. Если заголовок присутствует, он будет присвоен lastModified
и оценен как правдивый.
«Какова цель такого подхода?» - Краткость и чувство самодовольства.
Предположительно, если ответ не имеет этого заголовка, возвращаемое значение (и, следовательно, результат выражения присваивания) будет false-y. В противном случае вам придется сделать два шага: const lastModified = jqXHR.getResponseHeader("Last-Modified"); if (lastModified) { ... }
a problem found in ... jQuery
это их миссия
Чтобы научить меня этим знаниям.
if (lastMod = somefunc()) { ...
— это просто сокращение от lastMod = somefunc(); if (lastMod) { ...
. Большинство IDE (например, jsfiddle ) выдают это как предупреждение, поскольку это выглядит как ошибка. Добавление скобок может убрать это предупреждение: if ((lastMode=somefunc())) {
. См. MDN «выражение присваивания само по себе имеет значение», поэтому вы можете сделать let y; let x = y = 2
@fdomn-m Доброе утро. Спасибо.
function ifAssignment() {
let a,b,c,d;
if ((a = true)) {
console.info("a", a);
}
if ((b = false)) {
console.info("b", b);
}
if ((c = "c")) {
console.info("c", c);
}
if ((d = "")) {
console.info("d", d);
}
}
ifAssignment()
Результаты показывают, что присваивание в элементе управления if может быть либо истинным, либо ложным.
Или, другими словами, результатом задания является то, что было назначено. например. (a = 'hello')
результат hello
,. Тогда, конечно, результат этого может быть правдивым или нет.
Благодаря вашему дополнению кода. Это легко понять.
«Несмотря ни на что, это всегда будет Правдой». вы уверены? Можно ли присвоить ложное значение?