質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

5回答

215閲覧

javascriptで代入演算子を使わないで変数の値を変更したい

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/07/28 02:17

=を使わないで変数の値を変更したいのですけど出来ますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

インクリメント演算子(++)やデクリメント演算子(--)を使えば、変数の値を1増やしたり、1減らしたりできます。
i++;
とか
--j;
というような式はJavascriptのプログラムで良く見かけると思います。for文の中でも使われますね。

また、代入演算子(例えば、 *= )でも、変数の値が変更できます。
例えば、
k *= 2;
で、変数 k の値を、2を掛けたものに変更できます。
(代入演算子には、"="という文字が含まれています。これが「=を使わないで」という条件に抵触するのであれば、代入演算子による変更は無理ですね)

投稿2019/07/28 03:00

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

できます。動機などにちゃんとした説明があればそれに合わせて答えます。

投稿2019/07/28 02:45

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/07/28 03:10

できる例 let a; // undefined a++; // NaN
Zuishin

2019/07/28 03:29

もうひとつできる例 for (let i of [1, 2, 3]) { console.log(i); }
think49

2019/07/28 03:47

> for (let i of [1, 2, 3]) { console.log(i); } 値を共有していないので、「変数の値を変更」というより「変数を生成」が近いかもしれません。 質問者さんがどこまで厳密に考えているかにも依りますが…。
Zuishin

2019/07/28 03:48

値を共有するというのは具体的にどういうことですか?
Zuishin

2019/07/28 03:52 編集

let i; for (i of [1, 2, 3]) { console.log(i); } たとえばこれならどうですか?
think49

2019/07/28 03:56

こういう事です。 for (var i = 0; i < 3; ++i) document.addEventListener('click', event => console.log(i), false); for (let i of [0,1,2]) document.addEventListener('click', event => console.log(i), false); for+var は関数スコープなので、変数 i を書き換える事で「3」を3回出力しますが、for+let はブロックスコープが3つ形成される扱いなので、「0 -> 1 -> 2」を出力し、お互いの値に干渉できません。 従って、let においては「変数 i を書き換えているわけではない」というのが私の認識です。
think49

2019/07/28 03:58

> let i; > for (i of [1, 2, 3]) { console.log(i); } これは書き換えが成功していると思います。
think49

2019/07/28 04:04

そういう意味では 下記コードは等価ですね。 i = 3; for (i of [3]); (個人的には、遠回りなだけで意義のあるコードとは思えませんが…。 そもそも、代入演算子で不都合が出るケースが想定できていません。)
Zuishin

2019/07/28 04:11

だから回答ではなくコメントに書いています。質問の意図がわからないので。 興味本位であれば、これで十分な回答になるのではないかと思いますが、ケースによってはまた別の方法を使わなければいけないかもしれません。
退会済みユーザー

退会済みユーザー

2019/07/28 06:20

ありがとうございました。 forステートメントで出来るんですね。勉強になりました。
think49

2019/07/28 07:05 編集

To: Zuishin さん Lint系ツールで一部の場所に代入式がある時にエラーが発生して回避策を悩んでいた事を思い出しました。 結局、そのエラーメッセージが意味するのは「代入する事に問題がある」としているので、「代入演算子を使わずに代入する」は機械的判定をごまかすだけで根本的解決ではありませんでした。 エラーメッセージの思想を受け入れるなら、代入してはなりませんし、無視しても良いと判断するなら、代入すれば良かったので、最終的には自分で判断する必要がありました。 今回のような「手段」だけを求める質問は「本当に目的に合っているのか」と常々、疑問に思っています。 もし、コメントを評価できたなら、Zuishin さんの2019/07/28 12:45のコメントに [高評価] していますね。
guest

0

javascript

1var x, y; 2x = [1, 2, 3]; 3y = x; 4y[0] = 9; 5console.log(x);

x に対しては二回使ってない、という屁理屈が通るなら…

投稿2019/07/28 04:12

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

=を1回も使わないで変数の値を変更したい
という意味であれば不可能です。

投稿2019/07/28 02:45

yasutomi

総合スコア2937

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

基本的にできないのだと思いますが、
具体的にどのような場面で、なぜそのようなことがしたいのでしょうか?

投稿2019/07/28 02:37

hisamitsu0723

総合スコア59

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/07/28 02:41

それは何故知りたいのでしょうか? よろしければ教えて下さい
y_waiwai

2019/07/28 02:47

まあ、なんとなく、とか興味あるから、という理由だけなら回答するのもアホらしいですからねえ
think49

2019/07/28 03:32

目的によっては、その質問内容が不要になったり、代替案が出てくるかもしれません。
hisamitsu0723

2019/07/28 03:42

回答する身としては、具体的な目的・動機が何なのかを知らないと回答しにくいためです。 それは、結果的に質問者さんにとっても好ましいことではないと思います。
Zuishin

2019/07/28 03:45

というか、できるできないで言えばできることは明らかなので、それが目的に沿うかどうかが最も重要な事項になります。それは目的がわからなければこちらで判断できかねます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問