2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

JavaScriptのlet宣言ってまじでいらなくね?

1 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:21:55.506 ID:uyUx6Wvx0.net
a、b:なんかの配列
x:なんかの値

for (let i=0; i<10; i++) {
 if (a[i] == x) break;
}
b[i] ・・・ ; // iはスコープ外なので未定義だから使えない

さて、どうしてた?

2 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:22:54.141 ID:nUtlyD/10.net
this.av

3 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:25:18.860 ID:uyUx6Wvx0.net
あげ

4 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:26:15.219 ID:B3XVI/o+0.net
変数にいれとけ

5 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:26:47.451 ID:E1zKeY0yd.net
要らないやつはvarでいい
使いたいやつだけ使えばいい

6 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:27:19.554 ID:eo9foVINa.net
まずfor文でlet iとかしてる時点であり得ない

7 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:28:10.620 ID:uyUx6Wvx0.net
だから、どうしてたんだよw

あとでおれの答えは書くよ

8 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:28:25.567 ID:8XuY59+z0.net
findIndexでググれ

9 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:28:33.047 ID:8NOqFO9Ad.net
Array#foreach使えよ

10 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:28:52.193 ID:eo9foVINa.net
for文ではfor ofかfor in以外使ってはいけない。

11 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:30:47.129 ID:IN6jkkEd0.net
どうしてたってなんだよ日本語話せよ

12 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:31:11.205 ID:uyUx6Wvx0.net
てかスレタイ見てる?w letいらないよな?って話だぞ

13 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:31:27.608 ID:1/LvTva40.net
恐ろしく頭悪そう

14 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:32:00.516 ID:vR6pYNTB0.net
日本語下手過ぎてワロタ
コイツまともなプログラム組めないだろうな

15 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:32:10.640 ID:eo9foVINa.net
というかfor文自体害悪。
map,reduce,filter等を使うべき

16 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:33:38.006 ID:uyUx6Wvx0.net
答え

(function(){
 var i;
 for (i=0; i<10; i++) {
  if (a[i] == x) break;
 }
 b[i] ・・・ ; //
}())

ポイント
・即時関数を使ってスコープを限定する
・スコープ内で使う変数を全て最初の行で宣言する

17 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:34:39.903 ID:uyUx6Wvx0.net
スレタイ見れば普通は分かるんだけど、これはスコープの話な
まともなレスは一つもつかなかったな

18 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:35:48.509 ID:eo9foVINa.net
>>16
こんなコードを書かれたらブチ○したくなる

19 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:36:23.958 ID:8NOqFO9Ad.net
例がつっこみドコロ多いってはなし

20 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:37:29.180 ID:1/LvTva40.net
>>18
なんで?

21 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:38:06.864 ID:8XuY59+z0.net
答え

{
 let i;
 for (i=0; i<10; i++) {
  if (a[i] == x) break;
 }
 b[i] ・・・ ; //
}

ポイント
・即時関数は要らない
・というかそもそもfor文を使うべきでない

22 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:41:18.046 ID:uyUx6Wvx0.net
>>21
これ言うやつ絶対出ると思ったw
即時関数を使いたくない理由は何?

23 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:48:05.669 ID:uyUx6Wvx0.net
まあw 即時関数は使うななんて言ってるやつ現実にはいないからなw
letは完全に不要なものなんだよな、なんでこんなもん実装しなきゃならんくなったのかな

24 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:48:53.630 ID:2cV4aUuyd.net
どっちでもええやろ
宗教戦争はやめろよ

25 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:53:50.419 ID:UJF0VsId0.net
結果が同じならシンプルな方で書くだけだろ

26 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:54:24.876 ID:uyUx6Wvx0.net
>>24
よくないんだよなあ
宗教戦争ではあるんだがlet支持者はJavaScriptが理解できてないか嫌いな奴なんだよ
そもそも即時関数を排除する必要がないのだから即時関数でブロックスコープ作ればletなんかいらないんだよな

27 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:57:51.268 ID:8XuY59+z0.net
流石にこれはネタくさい
マジレスして損した

28 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:58:07.223 ID:2cV4aUuyd.net
varでええやん

29 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 16:58:45.440 ID:uyUx6Wvx0.net
>>25
シンプルなのはどっちだと思う?
JavaScriptは変数宣言はvarしかなくてスコープは関数スコープしかなかった
とってもシンプルだったんだよ
letが導入されてシンプルさが失なわれたけどね

30 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 17:00:39.235 ID:uyUx6Wvx0.net
>>28
そう、JavaScriptの仕様を理解しているなら即時関数とvarで問題は起こらない

31 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 17:04:32.368 ID:uyUx6Wvx0.net
ID:8XuY59+z0 はマジレスしてたらしいw むしろバカの振りして煽ってるんだと思ってたよw

32 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 17:26:29.631 ID:ykTXSJ73d.net
let i;
for (i=0; i<10; i++) {
 if (a[i] == x) break;
}
b[i] ・・・ ;
これじゃダメ?

33 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 18:01:43.716 ID:uyUx6Wvx0.net
>>32
>>21と同じ答えだけど、即時関数でなくてletが必要な理由があるか?ということ

34 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 18:14:44.622 ID:ykTXSJ73d.net
>>33
即時関数だとわざわざ明示的に書かなきゃスコープが制限できない
letならとりあえず全部letにしとけばいい
っていうのが利点じゃない?

35 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 18:31:39.420 ID:uyUx6Wvx0.net
>>34
そんな雑なやり方はだめだと思うぞ
letを使うにしてもスコープは意識して{}で括らないといけない
c言語ならvoid main()とか書くのと同じで
JavaScriptは関数で囲う、変数宣言は全てスコープの先頭で行なう
ということをやればletは全くいらない

36 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 18:34:00.980 ID:IN6jkkEd0.net
>>35
そんな雑なネタレスはダメだと思うゾ

37 :以下、?ちゃんねるからVIPがお送りします:2018/08/16(木) 18:46:58.244 ID:yZ+wzf0xd.net
a.findIndexOf(x).map!(i => b[i]);

総レス数 37
8 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★