---
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>