
++ インクリメント(1増やす)ですよね。そうすると、
var i = 1;
i++1;
(・・・なら、出てくる値が2ということで、だから i は2と解釈するのですか?,でも i は var i = 1; から i = 1 と解釈するのでしょうか?わかりにくくて m(__)m )
それから
var i = 1;
j = i++;
(・・・なら、j =1 と解説してありましたが、1だとしても後ろに++ インクリメントがついているので、出てくる値が2ということになるのではないのでしょうか?、そうすると J はこんな書き方をしなくてもよいのでは・・・?何かこの辺がのみこめません。 j =1, i=2 なのでしょうか?これは講座の中の例に書いてあったものです。)また2増やす時は、++2なのですか?よろしくお願いします。
No.1ベストアンサー
- 回答日時:
まず、
i++1
という書き方はおかしいです。i++か、++iと書きます。
これを理解するには、「式の値」という考え方が必要になります。
例えば、3+5の式の値は8、などです。
通常は、計算結果 = 式の値、なのですが、このインクリメント演算子は少し特殊で、
例えばi==1であった場合、i++も++iも計算としては「iに1を加えてiに代入する」ということですが、
式の値は、i++は変更前のiの値(つまり1)、++iは変更後のiの値(つまり2)となります。
従って、i==1の時にj=i++;とした場合、演算子の優先順位に従って次のように解釈されます。
1.演算子の優先順位より、j=(i++);、つまりインクリメント演算子が先に評価されます。
2.i++により、iに1が加えられます。この演算の式の値は、先に述べたように変更前のiの値ですから、1となります。
3.2.の結果により、式はj=1;となりました。
4.この結果、jに1が代入されます。
結局、i==2, j==1となります。
時々、「i++は、他の処理が終わった後、最後に1を加える」という解説を見ますが、間違いですので注意してください。
(とはいえ、この解釈でも問題が起こることは稀ですが)
あくまでも処理の順序としては、i++はjへの代入よりも先に評価されます。
このことは、次のスクリプトで確認できます。
<script>
function foo() {
alert("i=" + i);
return 0;
}
i=1;
j=i++ + foo();
</script>
[出力]i=2
fooの実行途中で(jへの代入が完了していない時点で)すでにiには1が足されています。
また、2を加える場合には、i++を2回実行するか、i+=2を実行してください。
(i++)++という書き方はできません。これはi++の式の値が代入可能でないからです。
「式の値」と言う言葉が、大変わかりやすく、解釈する糸口になりました。自分に飲み込み易い言葉で書かれていないと、ホントお手上げです。有難う御座いました。
No.4
- 回答日時:
=関係の演算子については、
1.a=b
bの値をaに代入する。bがオブジェクト参照の場合はaが同じオブジェクトを参照するようにする。
式の値はbの値です(b自身ではない)。従って、a = b = 1;のような記法が可能です。
2.a==b
aとbが同じ値かどうかを型変換を含めて判定する。オブジェクト参照の場合には同じオブジェクトを参照しているかどうかを判定する。
判定結果はboolean型。
3.a===b
aとbが同じ値かどうかを型変換をせずに判定する。
判定結果はboolean型。
2と3の違いは、
1 == "1" はtrue
1 === "1" はfalse
です。
なお、下にもかきましたが、#2さんのご回答は、厳密には誤りですので注意してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- C言語・C++・C# C言語の質問です HTMLでこのようなコードを書いたのですがそれをC言語で同じように書きたいです < 1 2022/08/11 23:38
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 台形公式 2 2022/12/21 18:38
- JavaScript JavaScriptの即時関数の書き方 1 2022/11/29 09:52
- JavaScript gasについて 1 2022/05/31 21:51
- 大学受験 東北大学 英語 参考書ルートについて 2 2023/05/26 17:31
- 統計学 生物統計学の質問 7 2022/05/17 13:59
- JavaScript 定積分の近似値を計算する関数composite_newton_cotesをつくりたい 1 2023/01/18 14:09
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GASでチェックボックスを一括of...
-
スマホ上で、左右スワイプで次...
-
Cookieに保存されない
-
初心者です。gulpでコンパイル...
-
Adobe acrobat proでフォームを...
-
画面遷移を行わずに同一ページ...
-
変数宣言と初期値代入の場所に...
-
switch文のswitch(n)の部分を複...
-
jsでは、'で区切った部分を改行...
-
タグを教えてください。
-
ラジオボタンを複数選択したと...
-
jsで質問です。 formをsubmitし...
-
2025年相性がいい人のサイトの...
-
CookieをWebStoeageに変える
-
Outlookのアカウントがあるとメ...
-
jqueryのselect2で検索欄の文字...
-
<tr>指定した表の行要素をボ...
-
食材の期限を管理するためにGAS...
-
ビデオのJSについて
-
鍵盤アプリで、スマホの画面に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スマホ上で、左右スワイプで次...
-
タグを教えてください。
-
jqueryのselect2で検索欄の文字...
-
jsonテキストデータの並び替え...
-
初心者です。gulpでコンパイル...
-
ラジオボタンを複数選択したと...
-
階層別の組織図の自動作成について
-
jQueryで同じクラス名のものを...
-
二次元配列を使って順位をだす...
-
読み込んだQRコードをフォーム...
-
画面遷移を行わずに同一ページ...
-
セレクトを全て選択されていな...
-
【Google Apps Script】「ライ...
-
Adobe acrobat proでフォームを...
-
二次元配列の全要素の全要素を...
-
【GAS】WEBアプリでハイパーリ...
-
GASでGoogleフォームの自動返信...
-
フォームが空欄の時にフォーム...
-
セレクトボックスで配列を呼び...
-
イラストレーター、縦中横のシ...
おすすめ情報