のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,853人
昨日: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,-24)
    いや。客観的に見てクソ加減は著名な言語の中で平均以下だよ
    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,-23)
    >>606
    返すものがないから

    歴史的な問題でもあるから
    詳細は90年代からESに至るまで仕様書順に読んできて
    ここでこんなに引っ張るような話でもねえよ
    仕様なんだから
    609 : Name_Not - 2019/04/02(火) 23:53:56.37 ID:???.net (+126,+27,-26)
    ん?ただ一言、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 (+103,+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 (+88,+4,-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 (+32,-12,-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 (+22,-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,-7,-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,-10)
    >>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 スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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