私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ+ JavaScript の質問用スレッド vol.137 +
JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
で結局[1,2,3].map(v => (v += 2, v * v));のv += 2は副作用なの?副作用じゃないの!!??
>>896,901
既に説明されてるだろ
既に説明されてるだろ
>>902
悪いけど以下の(ア)に入るのは1か2か答えてくれる?1か2の一文字書くだけだから出来るよね?
[1,2,3].map(v => (v += 2, v * v));
のv += 2は(ア)である
1. 副作用である
2. 副作用ではない
悪いけど以下の(ア)に入るのは1か2か答えてくれる?1か2の一文字書くだけだから出来るよね?
[1,2,3].map(v => (v += 2, v * v));
のv += 2は(ア)である
1. 副作用である
2. 副作用ではない
やっぱり変数宣言は特別なんじゃん
さっき勉強してから書けとか言ったやつ出てこいよ
さっき勉強してから書けとか言ったやつ出てこいよ
>>905
Wikipediaの2つの成立条件を考えれば、2. は迷惑だろ
Wikipediaの2つの成立条件を考えれば、2. は迷惑だろ
× 2. は迷惑だろ
〇 2. であることは明白だろ
〇 2. であることは明白だろ
>>905
だから"再"代入だから副作用だっていってるだろ
それに対して、代入すべて副作用だって言ってるバカが居るから
一回しか行わない代入(つまりconstが使える場合)は
副作用じゃないって話をしてるんだが
その説明をしないと、お前がバカになりそうだからな
(代入は副作用っていったーって騒ぎまくりそうだからw)
だから"再"代入だから副作用だっていってるだろ
それに対して、代入すべて副作用だって言ってるバカが居るから
一回しか行わない代入(つまりconstが使える場合)は
副作用じゃないって話をしてるんだが
その説明をしないと、お前がバカになりそうだからな
(代入は副作用っていったーって騒ぎまくりそうだからw)
Numberで(値渡しで)考えるからおかしくなる
const xs = [[1], [2], [3]];
console.log(xs);
const ys = xs.map(v => (v[v.length] = 2, v.concat(v)));
console.log(xs);
これでわかるだろ
const xs = [[1], [2], [3]];
console.log(xs);
const ys = xs.map(v => (v[v.length] = 2, v.concat(v)));
console.log(xs);
これでわかるだろ
>>912
v[v.length] =2よりv[0] +=2にするべきだったな、ごめん
v[v.length] =2よりv[0] +=2にするべきだったな、ごめん
>>911
では、再代入が副作用の性質を持っている事を証明する実証コードを書いてくれ
では、再代入が副作用の性質を持っている事を証明する実証コードを書いてくれ
>>918
うん。再代入しても副作用の性質が現われてないよね。
うん。再代入しても副作用の性質が現われてないよね。
この質問者置いてけぼりでズレた議論かますのいかにもここの住人ぽいな
>>923
ローカル変数vのこと
ローカル変数vのこと
「2. 他のいかなる機能の結果にも影響を与えない」の意味を理解しようともしないで、「代入=副作用」で思考停止しているだけ
>>925
ローカル変数は内部変数なので、「2. 他のいかなる機能の結果にも影響を与えない」
ローカル変数は内部変数なので、「2. 他のいかなる機能の結果にも影響を与えない」
>>928
内部的動作なら副作用はない、って何度もいってる
内部的動作なら副作用はない、って何度もいってる
> だから、その動作は副作用ではないって何度もいってる
その根拠は?何処かで誰かがそう言ってるの?
その根拠は?何処かで誰かがそう言ってるの?
>>932
誰かさんが出した2つの条件
http://ja.wikipedia.org/wiki/%E5%89%AF%E4%BD%9C%E7%94%A8_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0)
誰かさんが出した2つの条件
http://ja.wikipedia.org/wiki/%E5%89%AF%E4%BD%9C%E7%94%A8_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0)
>>933
> プログラミングにおける副作用(ふくさよう)とは、ある機能がコンピュータの(論理的な)状態を変化させ、
> それ以降で得られる結果に影響を与えることをいう。代表的な例は変数への値の代入である。
って書いてますね。これが答えですね。
> プログラミングにおける副作用(ふくさよう)とは、ある機能がコンピュータの(論理的な)状態を変化させ、
> それ以降で得られる結果に影響を与えることをいう。代表的な例は変数への値の代入である。
って書いてますね。これが答えですね。
>>935
さすがwikipediaウソばっかり!信用できないな!
さすがwikipediaウソばっかり!信用できないな!
>>935
だから、それは後ろの方に書いてある破壊的代入のことじゃないのか?
しかも、その一文だと再代入どころか代入全てアNGと受け取れるが、再代入だけNGとしたのはどうしてなんだ?
参照代入なら分かるが、JavaScriptで他に影響がある再代入なんてないだろ?
だから、それは後ろの方に書いてある破壊的代入のことじゃないのか?
しかも、その一文だと再代入どころか代入全てアNGと受け取れるが、再代入だけNGとしたのはどうしてなんだ?
参照代入なら分かるが、JavaScriptで他に影響がある再代入なんてないだろ?
Wikipediaの件は>>876が補完してくれているのに
他板まで荒らしに行くとかやべーな
一昔前は毛の壁に目を付けられてたし、jsにはそういうのを惹きつける何かがあるんだろうな
一昔前は毛の壁に目を付けられてたし、jsにはそういうのを惹きつける何かがあるんだろうな
>>938
あのな? 「今回の例では問題ない」は副作用じゃないことの理由にはならないんだよ
> [1,2,3].map(v => (v += 2, v * v));
これじゃなくて
v += 2 だろ?
v += 2 に副作用があるかどうかだろ?
あるんだよ。
あのな? 「今回の例では問題ない」は副作用じゃないことの理由にはならないんだよ
> [1,2,3].map(v => (v += 2, v * v));
これじゃなくて
v += 2 だろ?
v += 2 に副作用があるかどうかだろ?
あるんだよ。
>>941
根拠を示せ
根拠を示せ
>>876が正解だと思うけどねえ
英文アレルギーの人はこれだから困る
英文アレルギーの人はこれだから困る
まとめ
カンマ演算子につき、
A, Bと書くとき、Aに期待できるのは副作用のみである。
カンマ演算子が取れるのは式(Expression)のみである。
変数宣言(VariableStatement)は宣言であって式ではない。
すなわち、
const a = 1, b = 2
は変数宣言であり、
またこのカンマはカンマ演算子ではない。
[1,2,3].map(v => (v += 2, v * v));
のv += 2は仮引数vを書き換える副作用である。
カンマ演算子は式(Expression)しか取れないので、副作用なく
[1,2,3].map(v => (const w = v + 2, w * w))
などと書くことはできない。
なぜならconst w = v + 2は変数宣言(Statement)であって式(Expression)ではないからである。
カンマ演算子を使わず
[1,2,3].map(v => {
const w = v + 2;
return w * w;
})
と書いたときはどこにも副作用がない。カンマ演算子もどこにもない。
カンマ演算子につき、
A, Bと書くとき、Aに期待できるのは副作用のみである。
カンマ演算子が取れるのは式(Expression)のみである。
変数宣言(VariableStatement)は宣言であって式ではない。
すなわち、
const a = 1, b = 2
は変数宣言であり、
またこのカンマはカンマ演算子ではない。
[1,2,3].map(v => (v += 2, v * v));
のv += 2は仮引数vを書き換える副作用である。
カンマ演算子は式(Expression)しか取れないので、副作用なく
[1,2,3].map(v => (const w = v + 2, w * w))
などと書くことはできない。
なぜならconst w = v + 2は変数宣言(Statement)であって式(Expression)ではないからである。
カンマ演算子を使わず
[1,2,3].map(v => {
const w = v + 2;
return w * w;
})
と書いたときはどこにも副作用がない。カンマ演算子もどこにもない。
まとめ
> カンマ演算子につき、
> A, Bと書くとき、Aに期待できるのは副作用のみである。
a = 1, b = a のような書き方ができるので間違い
単に A, B で Aの部分で代入ができることに気づいてないマヌケってだけ
> カンマ演算子につき、
> A, Bと書くとき、Aに期待できるのは副作用のみである。
a = 1, b = a のような書き方ができるので間違い
単に A, B で Aの部分で代入ができることに気づいてないマヌケってだけ
>>946
そのカンマが(変数宣言ではなく)カンマ演算子である場合、a = 1もb = aも必ず代入であり副作用。
そのカンマが(変数宣言ではなく)カンマ演算子である場合、a = 1もb = aも必ず代入であり副作用。
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.131 + (1000) - [97%] - 2017/1/25 8:01
- + JavaScript の質問用スレッド vol.135 + (1002) - [97%] - 2018/11/23 10:30
- + JavaScript の質問用スレッド vol.130 + (974) - [97%] - 2016/10/26 14:18
- + JavaScript の質問用スレッド vol.130 + (1001) - [97%] - 2017/11/25 20:45
- + JavaScript の質問用スレッド vol.117 + (1009) - [97%] - 2014/8/5 3:30
- + JavaScript の質問用スレッド vol.131 + (1004) - [97%] - 2018/3/7 13:30
- + JavaScript の質問用スレッド vol.132 + (1001) - [97%] - 2018/4/19 11:00
- + JavaScript の質問用スレッド vol.107 + (1001) - [97%] - 2013/9/7 10:16
- + JavaScript の質問用スレッド vol.133 + (1001) - [97%] - 2018/6/8 10:45
- + JavaScript の質問用スレッド vol.134 + (1001) - [97%] - 2018/8/3 23:15
- + JavaScript の質問用スレッド vol.136 + (1001) - [97%] - 2019/1/8 11:30
- + JavaScript の質問用スレッド vol.138 + (1004) - [97%] - 2019/4/20 23:45
- + JavaScript の質問用スレッド vol.139 + (1001) - [97%] - 2019/5/27 15:15
- + JavaScript の質問用スレッド vol.127 + (1001) - [97%] - 2016/2/4 0:15
- + JavaScript の質問用スレッド vol.127 + (160) - [97%] - 2021/7/16 9:30
- + JavaScript の質問用スレッド vol.113 + (1001) - [95%] - 2014/3/15 21:30
- + JavaScript の質問用スレッド vol.118 + (1002) - [95%] - 2014/8/29 22:30
トップメニューへ / →のくす牧場書庫について