blob: f123401d42aedc39b6f171943c8643d5a22a6df4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
---
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>
|