のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,645,764人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

元スレ+ JavaScript の質問用スレッド vol.138 +

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
601 : Name_Not - 2019/04/02(火) 12:48:28.74 ID:???.net (+57,+29,-7)
じゃあ他人にできることができないことがある
お前はクソということだな
602 : Name_Not - 2019/04/02(火) 21:21:24.17 ID:???.net (+10,-29,-80)
>>600
昔はthisは(他のクラスベース言語だとインスタンスを表すのでそれに習って)
オブジェクトでないといけないという縛りがあったので
undefinedのときは仕方がないのでglobalThisに置き換えられてただけ

ES5になってその制限を緩くして
strict modeだとthisがプリミティブになることができるようになった
603 : Name_Not - 2019/04/02(火) 22:19:18.56 ID:???.net (+23,-4,-2)
javascript人気だけど仕様がクソすぎるよな
604 : Name_Not - 2019/04/02(火) 22:26:07.77 ID:???.net (+57,+29,-23)
いや。客観的に見てクソ加減は著名な言語の中で平均以下だよ
605 : Name_Not - 2019/04/02(火) 22:44:24.58 ID:???.net (+40,+12,-37)
JSで未だに問題になり得る隠しきれない残念な部分ってtypeof演算子くらいでしょ
606 : Name_Not - 2019/04/02(火) 23:02:49.98 ID:???.net (+44,-29,-76)
>>602
うん。それはそれでいいんだけど、
JavaScriptのforEachでthisがundefinedもしくはwindowになる(strictかどうかで挙動が変わる)
という仕様は何が便利なのかなーって話
607 : Name_Not - 2019/04/02(火) 23:35:05.59 ID:???.net (+4,-29,-75)
>>606
人の話聞いてる?
forEachなんかでのthisValueは当然メソッド呼び出しでもないんだしundefinedでしょ
ただsloppy modeだとundefinedがglobalThisに置き換えられるってだけ
置き換えられる理由は前述の通り
608 : Name_Not - 2019/04/02(火) 23:46:04.80 ID:???.net (+63,+29,-22)
>>606
返すものがないから

歴史的な問題でもあるから
詳細は90年代からESに至るまで仕様書順に読んできて
ここでこんなに引っ張るような話でもねえよ
仕様なんだから
609 : Name_Not - 2019/04/02(火) 23:53:56.37 ID:???.net (+126,+27,-27)
ん?ただ一言、forEachでundefinedになってることに
メリットはないって言ってくれれば良いんだけど?
610 : Name_Not - 2019/04/03(水) 01:29:23.51 ID:???.net (+69,+29,-24)
>>609
foreachにアロー関数渡す理由が無い
foreachには無名関数渡せば良いだけで、
変な事してる人に配慮して言語仕様を貶める事は俺には出来ないな
611 : Name_Not - 2019/04/03(水) 06:24:40.86 ID:???.net (+102,+29,-44)
>>609
お前言ってることがおかしいよ
undefined以外だったらおかしくてむしろデメリットになり得るでしょ
thisは何にでも使えるとはいえ「THIS」なのだから
ライブラリやらが何をどうしようと勝手だが標準には秩序というものがある
612 : Name_Not - 2019/04/03(水) 06:53:42.50 ID:???.net (+91,+29,-39)
こいつ第10引数は何故いつも開いてるんだ!
undefinedの代わりに何か便利なものを提供しろ!
とか言いそうだな
613 : Name_Not - 2019/04/03(水) 09:31:07.53 ID:???.net (+85,+2,-54)
>>611
> undefined以外だったらおかしくてむしろデメリットになり得るでしょ
どんなデメリット?

> thisは何にでも使えるとはいえ「THIS」なのだから
forEachの中では、必ず undefined (またはWindow)になるんです。
「THISなのだから」とはどういう意味?
614 : Name_Not - 2019/04/03(水) 09:32:02.44 ID:???.net (+70,+29,-8)
>>612
便利なものが思いつかないなら、何も提供しなくて良いのでは?
615 : Name_Not - 2019/04/03(水) 11:59:54.22 ID:???.net (+125,+29,-3)
やっぱjavascriptの仕様がおかしい
おかしくなかったら揉めない
616 : Name_Not - 2019/04/03(水) 12:39:21.11 ID:???.net (+74,+29,-70)
>>613
必ずなるなんて誰も言ってないでしょ
forEachやmapは第二引数で指定できるでしょ
コールバックのthisが何になるかなんてJSの秩序では自明でないでしょ
それに利便性も含めて指定できるようになってるんだから
指定されていない時はundefinedが自然でしょ
それが嫌なら指定すればいいだけなのだから
617 : Name_Not - 2019/04/03(水) 13:10:19.03 ID:???.net (+52,+2,-44)
> 指定されていない時はundefinedが自然でしょ

いいえ、コールバックのthisが何になるかなんてJSの秩序では自明ではありません。
618 : Name_Not - 2019/04/03(水) 13:24:50.00 ID:???.net (+57,+29,-37)
まあ呼び出しが側が自由に設定出来るからな。jQueryがそうしてるように。
※ただしアロー関数は除くww
619 : Name_Not - 2019/04/03(水) 14:34:05.92 ID:???.net (+69,+29,-2)
>>615
なんかおかしいことあるか?
620 : Name_Not - 2019/04/03(水) 14:42:05.30 ID:???.net (+74,+29,-5)
>>615
あと揉めてるっていうか
変な人が居着いちゃってるだけのような気が…
621 : Name_Not - 2019/04/03(水) 14:46:24.68 ID:???.net (+31,-13,-40)
>>617
自明じゃね?
何かのオブジェクトのメソッドとして実行されないから
thisキーワードを参照しても返すべきオブジェクトがないわけで
622 : Name_Not - 2019/04/03(水) 15:03:32.42 ID:???.net (+13,-30,-124)
>>621
だからそのクラスベース脳捨てろよ。
hoge(function() {console.log(this);});
//=> undefined
が自明だって?バカいうな。
hogeの定義はこうだ!
function hoge(cb) {cb.bind('うんこ')();}
だから、
//=> undefined
じゃなくて、
//=> うんこ
なんだよこのうんこ!
jQueryだってやってることは同じだバカ!
623 : Name_Not - 2019/04/03(水) 15:04:39.23 ID:???.net (+14,-10,+1)
>>622
日本語でok
624 : Name_Not - 2019/04/03(水) 15:19:00.20 ID:???.net (+41,-29,-104)
>>621
> 何かのオブジェクトのメソッドとして実行されないから
> thisキーワードを参照しても返すべきオブジェクトがないわけで

その理屈だと、DOMのイベントは、
DOM要素オブジェクトのメソッドとして実行されないから
undefinedになるべきなんですよ。
625 : Name_Not - 2019/04/03(水) 15:22:50.44 ID:???.net (+52,+29,+0)
そろそろまとめてくれないか
626 : Name_Not - 2019/04/03(水) 15:22:52.93 ID:???.net (+23,-18,-46)
>>617
お前足りん子か?
デフォルト値がない限り引数に指定できるものを指定してない=undefinedと扱われるのはJSの秩序だろうが
627 : Name_Not - 2019/04/03(水) 15:24:00.52 ID:???.net (+63,+29,-33)
>>624
DOMはあくまでDOMで外様の仕様だから
そこには別のルールがある
628 : Name_Not - 2019/04/03(水) 15:26:05.17 ID:???.net (+43,-30,-90)
>>626
お前の言う「JSの秩序」によると

element.addEventListener('click', function() {
// ここのthis は
}, false) ;

undefinedとして扱われるべきということになってしまう
629 : Name_Not - 2019/04/03(水) 15:48:03.08 ID:???.net (+12,-15,-49)
jQueryはあくまでDOM用のライブラリだから
DOMの仕様に準拠している。と考えればいいのか
630 : Name_Not - 2019/04/03(水) 16:06:48.43 ID:???.net (+57,+29,-14)
なんにも分かってないのな
恥ずかしい奴
631 : Name_Not - 2019/04/03(水) 16:11:54.15 ID:???.net (+57,+29,-3)
自称わかってる君、登場。何も言えずに、退場。
632 : Name_Not - 2019/04/03(水) 17:14:50.60 ID:???.net (+0,-29,-32)
>>628
ん?
addEventListenerが特別な振る舞いするってだけじゃね?
なぜ特例を挙げる?
633 : Name_Not - 2019/04/03(水) 17:20:17.27 ID:3PPhuC92.net (+0,+29,-14)
もう質問じゃねーじゃん
言語の仕様と歴史の問題だから
仕様書読んでよ
http://www.planetpdf.com/codecuts/pdfs/tutorial/jsspec.pdf
634 : Name_Not - 2019/04/03(水) 18:08:36.79 ID:???.net (+63,+29,-2)
>>628
一つ上くらい読め
足りん子
635 : Name_Not - 2019/04/03(水) 18:10:26.05 ID:???.net (+8,-29,-15)
JavaScriptのforEachでthisを要素にする方法ないのかな?
636 : Name_Not - 2019/04/03(水) 18:54:20.51 ID:???.net (+57,+29,-4)
今日書かれた内容くらいは読んでから書こうぜ
637 : Name_Not - 2019/04/03(水) 19:02:49.56 ID:???.net (+70,-30,-86)
>>635
これでええやろ。
Array.prototype.forEach2 = function(cb) {
this.forEach((v, i, a) => { cb.bind(v)(v, i, a); });
};
コールバックにはfunctionつかうんやで?
アローはthis変えさせてくれへんいけずやからな。
[5, 4, 3].forEach2(function() { console.log(this); });
5
4
3
638 : Name_Not - 2019/04/03(水) 19:21:12.75 ID:???.net (+139,-30,-28)
>>635
[5, 4, 3].forEach(Map.call, function() { console.log(this); });
5
4
3
639 : Name_Not - 2019/04/03(水) 19:41:10.96 ID:???.net (+61,+29,-7)
>>637は分かるけど
>>638がまったく分からない…
バカにも分かるよう解説してほしい
640 : Name_Not - 2019/04/03(水) 20:03:03.80 ID:???.net (+13,-29,-5)
forEachの第二引数はthisの指定だって既出じゃん
641 : Name_Not - 2019/04/03(水) 20:20:48.57 ID:???.net (+39,+29,-9)
それだけじゃ>>638は全然分かんないんだけと…
バカ舐めてない?
644 : Name_Not - 2019/04/03(水) 21:19:54.11 ID:???.net (+60,-8,-15)
>>640
> forEachの第二引数はthisの指定だって既出じゃん

だから、その第二引数でどうやって、各要素がthisとなるように
指定するんですか?って話なんですが
645 : Name_Not - 2019/04/03(水) 22:09:35.97 ID:???.net (+70,+29,-6)
>>644
どうやってって指定するのかって
>>638が例出してるじゃん
646 : Name_Not - 2019/04/03(水) 22:10:37.53 ID:3PPhuC92.net (+0,+29,-9)
>>644
>>643さんが丁寧に説明してくれてるじゃないか
callが連続するのが分かりづらいかも知れんけど
落ち着いて一個ずつ読んでみ
647 : Name_Not - 2019/04/03(水) 22:42:42.04 ID:???.net (+111,+29,-26)
読んだ結果俺は>>637でいいや…
>>638だと読み直すたびに毎回そこで引っ掛かる自信あるw
648 : Name_Not - 2019/04/03(水) 23:25:13.34 ID:Ed8aFiP/.net (+29,+29,-29)
すみません、ちょっと質問なのですが、javascriptはスタックサイズの変更は出来ないのでしょうか?
再帰関数を実装したらスタックが溢れてしまいます。スタックサイズを設定出来るコンパイラオプションみたいなものはないのでしょうか?
649 : Name_Not - 2019/04/03(水) 23:46:27.85 ID:???.net (+89,+29,-13)
スタックサイズを無限にでもしたいのか?
無限に必要だろ。お前のコードは。
650 : Name_Not - 2019/04/04(木) 00:19:20.05 ID:???.net (+64,+29,-14)
>>649
わからんのなら黙っとけ
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について