--- title: 'SyntaxError: test for equality (==) mistyped as assignment (=)?' slug: Web/JavaScript/Reference/Errors/Equal_as_assign tags: - Error - Errors - JavaScript - SyntaxError translation_of: Web/JavaScript/Reference/Errors/Equal_as_assign --- <div>{{jsSidebar("Errors")}}</div> <p>JavaScript の警告 "test for equality (==) mistyped as assignment (=)?" は、代入 (<code>=</code>) が通常は等価性 (<code>==</code>) の検査をすべき場面にあった場合に発生します。</p> <h2 id="Message">エラーメッセージ</h2> <pre class="brush: js">Warning: SyntaxError: test for equality (==) mistyped as assignment (=)? </pre> <h2 id="エラータイプ">エラータイプ</h2> <p>(Firefox のみ) {{jsxref("SyntaxError")}} の警告であり、 <code>javascript.options.strict</code> の設定が <code>true</code> に設定されていた場合に発生します。</p> <h2 id="何がうまくいかなかったのか?">何がうまくいかなかったのか?</h2> <p>代入 (<code>=</code>) が通常は等価性 (<code>==</code>) の検査をすべき場面にあった場合に発生します。デバッグを行いやすくするために、 JavaScript は (厳密な警告が有効な場合は) このパターンについて警告を出します。</p> <h2 id="例">例</h2> <h3 id="Assignment_within_conditional_expressions">条件式内での代入</h3> <p>(<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/if...else">if...else</a></code> のような) 条件式内では、単純な代入を行わないことをお勧めします。コードを一目見たときに、代入は等価と混同しやすいからです。たとえば、以下のコードは使用しないでください。</p> <pre class="brush: js example-bad">if (x = y) { // 正しいことを実行する } </pre> <p>条件式内で代入を行う必要がある場合、一般的には次のように、代入の周りに追加の括弧を置きます。</p> <pre class="brush: js">if ((x = y)) { // 正しいことを実行する }</pre> <p>または、本当は比較演算子 (<code>==</code> や <code>===</code> など) を使用しようとしたのかもしれません。</p> <pre class="brush: js">if (x == y) { // 正しいことを実行する }</pre> <h2 id="関連項目">関連項目</h2> <ul> <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/if...else">if...else</a></code></li> <li><a href="/ja/docs/Web/JavaScript/Reference/Operators#equality_operators">等価演算子</a></li> </ul>