元スレ+ JavaScript の質問用スレッド vol.138 +
JavaScript覧 / PC版 /みんなの評価 :
601 = :
じゃあ他人にできることができないことがある
お前はクソということだな
602 = :
>>600
昔はthisは(他のクラスベース言語だとインスタンスを表すのでそれに習って)
オブジェクトでないといけないという縛りがあったので
undefinedのときは仕方がないのでglobalThisに置き換えられてただけ
ES5になってその制限を緩くして
strict modeだとthisがプリミティブになることができるようになった
603 = :
javascript人気だけど仕様がクソすぎるよな
604 = :
いや。客観的に見てクソ加減は著名な言語の中で平均以下だよ
605 = :
JSで未だに問題になり得る隠しきれない残念な部分ってtypeof演算子くらいでしょ
606 = :
>>602
うん。それはそれでいいんだけど、
JavaScriptのforEachでthisがundefinedもしくはwindowになる(strictかどうかで挙動が変わる)
という仕様は何が便利なのかなーって話
607 = :
>>606
人の話聞いてる?
forEachなんかでのthisValueは当然メソッド呼び出しでもないんだしundefinedでしょ
ただsloppy modeだとundefinedがglobalThisに置き換えられるってだけ
置き換えられる理由は前述の通り
608 = :
>>606
返すものがないから
歴史的な問題でもあるから
詳細は90年代からESに至るまで仕様書順に読んできて
ここでこんなに引っ張るような話でもねえよ
仕様なんだから
609 = :
ん?ただ一言、forEachでundefinedになってることに
メリットはないって言ってくれれば良いんだけど?
610 = :
>>609
foreachにアロー関数渡す理由が無い
foreachには無名関数渡せば良いだけで、
変な事してる人に配慮して言語仕様を貶める事は俺には出来ないな
611 = :
>>609
お前言ってることがおかしいよ
undefined以外だったらおかしくてむしろデメリットになり得るでしょ
thisは何にでも使えるとはいえ「THIS」なのだから
ライブラリやらが何をどうしようと勝手だが標準には秩序というものがある
612 = :
こいつ第10引数は何故いつも開いてるんだ!
undefinedの代わりに何か便利なものを提供しろ!
とか言いそうだな
613 = :
>>611
> undefined以外だったらおかしくてむしろデメリットになり得るでしょ
どんなデメリット?
> thisは何にでも使えるとはいえ「THIS」なのだから
forEachの中では、必ず undefined (またはWindow)になるんです。
「THISなのだから」とはどういう意味?
614 = :
>>612
便利なものが思いつかないなら、何も提供しなくて良いのでは?
615 = :
やっぱjavascriptの仕様がおかしい
おかしくなかったら揉めない
616 = :
>>613
必ずなるなんて誰も言ってないでしょ
forEachやmapは第二引数で指定できるでしょ
コールバックのthisが何になるかなんてJSの秩序では自明でないでしょ
それに利便性も含めて指定できるようになってるんだから
指定されていない時はundefinedが自然でしょ
それが嫌なら指定すればいいだけなのだから
617 = :
> 指定されていない時はundefinedが自然でしょ
いいえ、コールバックのthisが何になるかなんてJSの秩序では自明ではありません。
618 = :
まあ呼び出しが側が自由に設定出来るからな。jQueryがそうしてるように。
※ただしアロー関数は除くww
619 = :
>>615
なんかおかしいことあるか?
620 = :
>>615
あと揉めてるっていうか
変な人が居着いちゃってるだけのような気が…
621 = :
>>617
自明じゃね?
何かのオブジェクトのメソッドとして実行されないから
thisキーワードを参照しても返すべきオブジェクトがないわけで
622 = :
>>621
だからそのクラスベース脳捨てろよ。
hoge(function() {console.log(this);});
//=> undefined
が自明だって?バカいうな。
hogeの定義はこうだ!
function hoge(cb) {cb.bind('うんこ')();}
だから、
//=> undefined
じゃなくて、
//=> うんこ
なんだよこのうんこ!
jQueryだってやってることは同じだバカ!
623 = :
>>622
日本語でok
624 = :
>>621
> 何かのオブジェクトのメソッドとして実行されないから
> thisキーワードを参照しても返すべきオブジェクトがないわけで
その理屈だと、DOMのイベントは、
DOM要素オブジェクトのメソッドとして実行されないから
undefinedになるべきなんですよ。
625 = :
そろそろまとめてくれないか
626 = :
>>617
お前足りん子か?
デフォルト値がない限り引数に指定できるものを指定してない=undefinedと扱われるのはJSの秩序だろうが
627 = :
>>624
DOMはあくまでDOMで外様の仕様だから
そこには別のルールがある
628 = :
>>626
お前の言う「JSの秩序」によると
element.addEventListener('click', function() {
// ここのthis は
}, false) ;
undefinedとして扱われるべきということになってしまう
629 = :
jQueryはあくまでDOM用のライブラリだから
DOMの仕様に準拠している。と考えればいいのか
630 = :
なんにも分かってないのな
恥ずかしい奴
631 = :
自称わかってる君、登場。何も言えずに、退場。
634 = :
>>628
一つ上くらい読め
足りん子
635 = :
JavaScriptのforEachでthisを要素にする方法ないのかな?
636 = :
今日書かれた内容くらいは読んでから書こうぜ
637 = :
>>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 = :
>>635
[5, 4, 3].forEach(Map.call, function() { console.log(this); });
5
4
3
639 = :
>>637は分かるけど
>>638がまったく分からない…
バカにも分かるよう解説してほしい
640 = :
forEachの第二引数はthisの指定だって既出じゃん
641 = :
それだけじゃ>>638は全然分かんないんだけと…
バカ舐めてない?
644 = :
>>640
> forEachの第二引数はthisの指定だって既出じゃん
だから、その第二引数でどうやって、各要素がthisとなるように
指定するんですか?って話なんですが
645 = :
>>644
どうやってって指定するのかって
>>638が例出してるじゃん
647 = :
読んだ結果俺は>>637でいいや…
>>638だと読み直すたびに毎回そこで引っ掛かる自信あるw
648 :
すみません、ちょっと質問なのですが、javascriptはスタックサイズの変更は出来ないのでしょうか?
再帰関数を実装したらスタックが溢れてしまいます。スタックサイズを設定出来るコンパイラオプションみたいなものはないのでしょうか?
649 = :
スタックサイズを無限にでもしたいのか?
無限に必要だろ。お前のコードは。
650 = :
>>649
わからんのなら黙っとけ
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.130 + (1001) - [97%] - 2017/11/25 20:45
- + JavaScript の質問用スレッド vol.135 + (1002) - [97%] - 2018/11/23 10:30
- + JavaScript の質問用スレッド vol.130 + (974) - [97%] - 2016/10/26 14:18
- + JavaScript の質問用スレッド vol.108 + (1001) - [97%] - 2013/9/21 15:16
- + JavaScript の質問用スレッド vol.131 + (1004) - [97%] - 2018/3/7 13:30
- + JavaScript の質問用スレッド vol.132 + (1001) - [97%] - 2018/4/19 11:00
- + JavaScript の質問用スレッド vol.133 + (1001) - [97%] - 2018/6/8 10:45
- + JavaScript の質問用スレッド vol.128 + (1001) - [97%] - 2016/2/26 6:45
- + JavaScript の質問用スレッド vol.131 + (1000) - [97%] - 2017/1/25 8:01
- + JavaScript の質問用スレッド vol.134 + (1001) - [97%] - 2018/8/3 23:15
- + JavaScript の質問用スレッド vol.136 + (1001) - [97%] - 2019/1/8 11:30
- + JavaScript の質問用スレッド vol.137 + (1003) - [97%] - 2019/3/26 11:46
- + JavaScript の質問用スレッド vol.139 + (1001) - [97%] - 2019/5/27 15:15
- + JavaScript の質問用スレッド vol.118 + (1002) - [97%] - 2014/8/29 22:30
- + JavaScript の質問用スレッド vol.117 + (1009) - [95%] - 2014/8/5 3:30
- + JavaScript の質問用スレッド vol.116 + (1002) - [95%] - 2014/7/1 0:45
- + JavaScript の質問用スレッド vol.119 + (1002) - [95%] - 2014/10/3 15:30
トップメニューへ / →のくす牧場書庫について