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

    私的良スレ書庫

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

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

    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
    651 : Name_Not - 2018/05/24(木) 08:29:12.55 ID:???.net (+66,+29,-7)
    それより>>647が提示したコードがいろいろヤバい
    652 : Name_Not - 2018/05/24(木) 08:40:44.25 ID:???.net (+3,-30,-56)
    関数型っぽい書き方の方がイケてることに異論はありませんが
    パフォーマンスではforやwhileの方が勝ります
    ループ中で繰り返し呼び出されるような処理では、
    やはりforやwhileで書きますよね?
    653 : Name_Not - 2018/05/24(木) 08:46:04.44 ID:???.net (-1,-29,-60)
    パフォーマンスならforで書く。
    ボトルネックにならないならforEachで書く。
    書きやすいし読みやすいから。
    654 : Name_Not - 2018/05/24(木) 08:51:16.54 ID:???.net (+60,-30,-51)
    比較して見ると、複雑な箇所が分かりやすいかもね

    let i = 4;
    while (i--) obj.a();

    for (let i = 0; i < 4; i++) obj.a();

    for (let v of [4,3,2,1]) obj.a();

    [4,3,2,1].reduce(()=> obj.a());
    655 : 654 - 2018/05/24(木) 08:52:58.45 ID:???.net (+0,-29,-22)
    >>654は下にいく程、複雑化する
    for-ofがforよりも良いという人はおそらくいない
    reduceも機能の無駄遣い
    656 : Name_Not - 2018/05/24(木) 08:54:28.60 ID:???.net (+46,-30,-48)
    >>647
    おいおい、
    obj.a();obj.a();obj.a();obj.a();

    obj.a().a().a().a();
    は全然ちがうんだが。
    reduceの動作理解した上での批判ならまだしも、それじゃお前が理解できないものを僻みで批判してるだけじゃん。
    657 : 654 - 2018/05/24(木) 08:58:01.88 ID:???.net (+100,+29,-5)
    >>656
    >>643に言及してるんだけど、流れが読めない人?
    658 : Name_Not - 2018/05/24(木) 08:59:09.95 ID:???.net (+38,-30,-73)
    >>654
    おいおい、
    obj.a();obj.a();obj.a();obj.a();

    obj.a().a().a().a();
    は全然ちがうんだが。
    お前が書いたやつは全部
    obj.a();obj.a();obj.a();obj.a();
    になる。
    お題は
    obj.a().a().a().a();
    お前のだとアキュムレータ使ってないからそれこそreduceの意味まったく無い。
    初心者か?
    はじめてのjavascriptからやり直したら?
    659 : 654 - 2018/05/24(木) 09:00:38.95 ID:???.net (+64,+30,+0)
    660 : Name_Not - 2018/05/24(木) 09:04:01.46 ID:???.net (-2,-30,-25)
    obj.a();obj.a();obj.a();obj.a();
    の場合はreduceの意味まったく無い。
    なぜならforEachで十分だから。
    初心者がお題勘違いしたのを流れだとか言って誤魔化してるだけ。
    661 : 654 - 2018/05/24(木) 09:08:43.13 ID:XaJaBcs1.net (-3,+29,-14)
    いや、>>643を言葉通りに受け取れば、>>647>>654も問題ないでしょ
    >>625のダブスタといい、なぜ言外に定義していることがあると思いこむのかね
    662 : 654 - 2018/05/24(木) 09:15:49.85 ID:XaJaBcs1.net (+38,-30,-48)
    しかも、>>607の要件だとしても、本質は変わらないと思う

    let i = 4;
    while (i--) obj = obj.a();

    for (let i = 0; i < 4; i++) obj = obj.a();

    for (let v of [4,3,2,1]) obj = obj.a();

    [4,3,2,1].reduce(obj => obj.a(), obj);
    663 : Name_Not - 2018/05/24(木) 09:20:29.26 ID:???.net (+73,-30,-96)
    >>662
    全然違うわボケ
    それだとアキュムレータ使っているのでforEachではなくreduceを採用する意味がある。
    >>654のクソコードはreduceの意味がまったく無い。アキュムレータ使っておらずforEachで十分。

    eval擁護するわ
    [4,3,2,1].reduce(()=> obj.a());
    こんなクソコード書くわ
    ほんと酷いなお前
    664 : Name_Not - 2018/05/24(木) 09:29:57.82 ID:???.net (-6,-29,-18)
    whileとforは複雑度が逆だな
    665 : Name_Not - 2018/05/24(木) 09:43:20.29 ID:???.net (-4,-30,-22)
    どうでもいいが、どれも前提に
    var o = hoge; ないし var obj = hoge; が入ってるんだよな?
    666 : Name_Not - 2018/05/24(木) 10:15:11.97 ID:???.net (+55,+29,-2)
    そりゃそうだろエラーになるし
    どうでもいいけど
    668 : Name_Not - 2018/05/24(木) 13:59:22.27 ID:???.net (+95,+29,-27)
    >>663
    >>662>>614と同じに見えるが、なにいってんだ、おまえは?
    全否定するなら、他の回答も全て否定しろよ
    669 : Name_Not - 2018/05/24(木) 14:09:06.85 ID:???.net (+57,+29,-29)
    関数型の本読むと
    forより関数型の再帰のほうが抽象性が高くてよみやすいからいいと書いてたりする。
    自分も書き慣れたforでやっちゃうけど。
    670 : Name_Not - 2018/05/24(木) 14:13:54.83 ID:???.net (+89,+29,-24)
    >>612にレスしない=容認と思い込んで、ダブスタ扱い
    >>643の要件定義が甘いのを無視して、要件が違うとキレる
    >>614と同じ書き方をして、クソコードとキレる

    ボロボロだな
    671 : Name_Not - 2018/05/24(木) 14:21:14.83 ID:???.net (+74,+29,-16)
    >>668
    お前こそなに言ってんだ?
    >>>662>>614と同じに見えるが

    はぁ?>>663のどこに>>662>>614が違うと書いてあるんだ?
    672 : Name_Not - 2018/05/24(木) 15:51:35.41 ID:???.net (+57,+29,-2)
    いい感じで荒れてるな
    お前らちょろいわ
    673 : Name_Not - 2018/05/24(木) 18:29:29.36 ID:???.net (+1,-26,-26)
    暇つぶしに姉妹スレの方もよろしくおねがいします

    + JavaScript のお題用スレッド +
    http://mevius.5ch.net/test/read.cgi/hp/1526666703/
    674 : Name_Not - 2018/05/24(木) 18:52:46.43 ID:???.net (+57,+29,-9)
    有名になったら急に親戚が増えるのと似てるな。
    そんなクソスレは知らん!
    675 : Name_Not - 2018/05/24(木) 20:08:00.05 ID:???.net (+63,+30,-153)
    なんだかなぁ
    例えば配列の中身は使わないけど、ただ繰り返しのためにreduceを使うということも
    任意の長さの有効な中身が入った配列を作るハックも
    何らしかの理想形を目指す過程で1つだけ妥協してそういったテクニカルな物を入れるのはありだと思うけど

    例えば何かの絵でも文章でもいいから特定の理想スタイルに拘って作ってたとして、
    表現が困難な部分が1箇所くらいでてきてもあまり品質を損なわせること無くごまかせるけど、
    あちらもこちらもということになると元々目指してた理想とは随分形が変わってくるし、
    他人が見たときにそれが何を目指したものなのかすらわからなくなる
    苦労してそんなものしか作れないのなら
    最初からもっと楽してカッコつけなくて描く方法があるでしょってことになる
    676 : Name_Not - 2018/05/24(木) 20:27:09.34 ID:???.net (+1,-30,-85)
    質問

    reduceのアキュムレータで引き回して hoge.a().a().a().a() ... .a(); と実行させる方法
    引き回し用の変数oにhogeを入れたうえでforで o=o.a(); を実行させる方法

    見た目・行数以外で
    これら2つの方法で厳密に言うと何と何と何がどう異なる?
    要件としては>>607のとおり、function func(){}内で実行、returnしない、として
    677 : Name_Not - 2018/05/24(木) 20:36:22.86 ID:???.net (+3,-29,-92)
    重めのファイルを大量にダウンロードするパートがあるwebアプリで同時ダウンロード数3とか4とかに絞りつつ、それぞれのレーンはシリアルにダウンロードタスクこなしてくという処理に、
    ダウンロードのpromiseの配列をreduceの中でaccum.thenで繋いでく方法取ったな。forよりだいぶん簡単に書けたが、知らん人には何やってんのかさっぱりやろな。
    678 : Name_Not - 2018/05/24(木) 20:41:40.39 ID:???.net (+33,+12,-16)
    糞アプリですか違法アプリですか
    679 : Name_Not - 2018/05/24(木) 20:59:35.04 ID:???.net (+53,-8,-31)
    C++とか他の言語からさらにやってJSのクラス(プロトタイプ)とかみるとよくわからないってよくきくけど
    JSからはいってC++とかいくとどうなの?
    680 : Name_Not - 2018/05/24(木) 21:00:14.07 ID:???.net (+57,+29,-12)
    ちょっとアレだからノーコメントで…
    でも俺は頼まれて作っただけだからな。
    681 : Name_Not - 2018/05/24(木) 21:01:39.86 ID:???.net (+57,+29,-24)
    頼まれても作っちゃいけないモノってのがあるわけだが、そんなものを作ったと書き込むこともどうかと
    682 : Name_Not - 2018/05/24(木) 21:02:53.25 ID:???.net (+65,+29,-17)
    >>679
    ・盛大に混乱するがなんとか順応してやっていける
    ・C++に行こうとして挫折する

    どっちか
    683 : Name_Not - 2018/05/24(木) 21:05:58.31 ID:???.net (+42,+14,-25)
    実際はダウンロード数はブラウザが勝手に抑制して
    同時に発行しても一定以上はpendingとなるから気にしなくても良い
    684 : Name_Not - 2018/05/24(木) 21:11:43.38 ID:???.net (+57,+29,-39)
    決め打たなければならなかったんだよ。
    ブラウザの制限にまかせとくと弾かれてしまうという…案件。
    685 : Name_Not - 2018/05/25(金) 00:30:21.26 ID:???.net (+0,-28,-19)
    君たちUMLとか勉強した?
    したほうがいいのこれ?
    686 : Name_Not - 2018/05/25(金) 00:44:33.08 ID:???.net (+13,-30,-80)
    このスレのタイトルが数式になってるんだと思って実行してみたら
    Uncaught SyntaxError: Unexpected identifier
    というエラーが出ました
    どうすればいいですか?
    そもそもJSかくひとならJSで実行できるスレ体にするべきじゃないですか?
    アホですか?
    687 : 686 - 2018/05/25(金) 00:50:53.19 ID:???.net (+57,+29,-19)
    おい、無視すんな。面白いこと言ったんだから何か答えろ
    688 : Name_Not - 2018/05/25(金) 01:23:31.64 ID:???.net (-1,-29,-18)
    ""+ "JavaScript の質問用スレッド vol." + 133
    じゃあ次からこれで
    689 : Name_Not - 2018/05/25(金) 01:32:15.38 ID:???.net (-2,-30,-32)
    toStringやparseIntはきっちりやるべきだと思う
    無論parseIntの第二引数は忘れてはならない
    690 : Name_Not - 2018/05/25(金) 03:34:03.80 ID:???.net (+5,-29,-37)
    123abcという文字列をパースして
    123という数値に変換するのは
    バグだと思う
    691 : Name_Not - 2018/05/25(金) 06:47:04.90 ID:???.net (-1,-29,-52)
    それすなわちバグということはないが、
    CSSならTypedOM使ったり、input要素ならvalueAsNumber使ったり
    もっと適切というか上品な手段があることは多いと思う
    692 : Name_Not - 2018/05/25(金) 12:13:19.56 ID:???.net (+29,-29,-6)
    16px, 1em, 100% とか、

    こういうのを数字にする事を想定しているのだろう
    693 : Name_Not - 2018/05/25(金) 13:21:19.79 ID:???.net (+4,-23,+0)
    >>690
    そんな君にお勧めなのが Number()
    694 : Name_Not - 2018/05/25(金) 20:43:37.26 ID:???.net (+56,+29,+0)
    >>692
    きみあたまいいね
    695 : Name_Not - 2018/05/25(金) 21:02:02.63 ID:???.net (-3,-29,-40)
    ~気にくわない挙動があったとき~

    バカ「バグだ!」

    天才俺「0.1+0.2はisoに基づいた仕様、typeof nullは仕様バグ」
    696 : Name_Not - 2018/05/25(金) 21:34:26.59 ID:???.net (+9,-30,-32)
    let a = { let x = 0; (何か処理); x; };
    みたいな感じで書けないのはおかしい

    let a = (() => { let x = 0; (何か処理); return x; })();
    と書くしかないのか?
    697 : Name_Not - 2018/05/25(金) 21:41:23.18 ID:???.net (+80,-29,-92)
    typeof null -> "object"はべつに仕様バグだとは思わんな
    だって例えばtypeof null -> "null"になったところで、
    対象がオブジェクトかどうか一発で判定できるわけではないし、
    状況がハッキリ好転したりはしないもの

    あとやっぱりJSに本当に必要なのは正確な判定ではなくて、
    柔軟さを活用して問題を飲み込んで単純化することだと思う
    つまり具体的にはtypeofのような存在による正確なオブジェクトの判定ではなく
    今提案もされてるobj?.propのようなオプショナルなプロパティアクセスが重要
    698 : Name_Not - 2018/05/25(金) 21:47:26.99 ID:???.net (+4,-30,-36)
    >>696
    ECMA Stage 1. do expressions
    http://github.com/tc39/proposal-do-expressions
    Chromeで試すには「 --js-flags="--harmony_do_expressions"」
    699 : Name_Not - 2018/05/25(金) 22:01:06.33 ID:???.net (+94,+29,-14)
    思う思わないじゃなくて作者がそう言ってるんだが。
    700 : Name_Not - 2018/05/25(金) 22:23:42.41 ID:???.net (-1,-29,-9)
    typeof null === 'object' は ECMAScript 3 の仕様バグ
    http://d.hatena.ne.jp/think49/touch/20120114/1326554107
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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