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

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

    JavaScript覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    701 = :

    >>700
    バブリングに反対などない
    両j方対応している物を試しているだけだろう
    いい加減、煽って情報を得るのは止めろ

    702 = :

    そもそも、「バグリングでもキャプチャリングでも親ノードで持てるんだが」は何の反論にもなってないな
    この煽り癖は例の奴と判断した
    もう回答はしない

    704 = :

    >>702
    バグリングと親ノードで持てることの関係を言わないから
    こういうことになるんやで?自業自得だ

    705 = :

    こいつはバグリングといってるから別物なんだろうよ
    使い慣れない言葉を知ったかで使うからこうなる

    706 = :

    > そもそも、「バグリングでもキャプチャリングでも親ノードで持てるんだが」は何の反論にもなってないな

    バグリング、クソワロタw
    こいつバカやでwww

    707 = :

    うむ、引用元の>>700が糞バカだな。
    >>692とか>>704とか、しつこいぐらいに間違えているぐらいだからな。

    708 = :

    引用されている事に気が付かず、墓穴を掘るとはね

    709 = :

    これ文体がいつもの人だし、jQuery信者っぽいね
    今度から、バグリング君と呼ぼうか

    711 = :

    JQuery君かつローカル君かつバグリング君か
    もう去ればいいのに…

    712 = :

    彼は体をはって失笑ネタを提供してくれているのだろう

    713 = :

    煽ってくるからもう相手しちゃだめだよみんな

    714 = :

    document.querySelectorAll('.class').forEach(function(item){
     item.addEventListener('click', function(){
     }, false);
    });

    window.addEventListener('click', function(evt){
     if (evt.target.className == 'class') {
     }
    }, false);

    itemがいっぱいあるときはどっちがいいですか?

    715 = :

    要素を取得して、その要素の値を使ってあれこれしたいってとき結構多いじゃないですか
    なのでquerySelectorAllで取得してループさせてっていうのをやるわけですが
    querySelectorAll().forEachがどうみても便利なのにforEachは使っちゃダメみたいな雰囲気なのですが
    何か理由があるんですか??

    716 = :

    forEach使っちゃダメってどんな文脈で言われたの?

    717 = :

    >>714
    下は class="class foo bar" とか書いてある時に
    動かないので同等のコードになっていない

    718 = :

    >>715
    querySelectorAll() に forEach が必ずあるとは限らない

    719 = :

    >>714
    itemが後から増えるかどうかにもよる
    どっちがいいかは、速度とメンテナンス性、何を重視するかによる

    720 = :

    >>714

    $('.class').on('click', function() {
    });

    $(document).on('click', '.class', function() {
    });

    itemがいっぱいあるときは後者が速度とメモリ効率が良い
    itemが増減する時は後者がメンテナンス性が良い
    後者は少しタイプ数が多い。その程度。
    一般的には後者がいい

    jQueryを使わない場合は知らん

    721 = :

    filter関数について
    function isBigEnough(value) {
    return value >= 10;
    }

    var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
    というコードがあるとき(上記はMDNのサンプルコードです)
    var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);の行を
    var filtered = [12, 5, 8, 130, 44].filter(isBigEnough());としたらエラーが出てしまいました
    関数を呼び出す時は 関数名() で呼び出すのではないのですか?

    722 = :

    ()を付けると即実行されて、その戻り値がfilterに渡されるからエラーになる
    関数を渡すには関数名だけで

    723 = :

    実際はしらんが>>714の上はプロセスがいっぱい起動してるようなイメージがある
    リソース的にはちょっとなあという感じ

    >>717の指摘通り複数classを適用してると
    判定部分が複雑になって毎回クリックのたびにそこを通ると思うと
    ちょっとなあという感じ

    まあどちらにしても問題になるような次元じゃないと思うけどね

    725 = :

    >722
    ありがとうございます
    重ねて質問すみません
    ()を付けると即実行されて、
    というのはどういうことでしょうか?

    >filter() は、与えられた callback 関数を配列の各要素に対して一度ずつ呼び出し、
    >callback が真と評価される値を返したすべての要素からなる新しい配列を生成します。(MDNから)
    isBigEnough() と、()を付けると
    filter()がcallback関数を呼び出す前に実行されてしまうんですか?

    ググっていて下記サイトを見つけたのですが、その中で
    JavaScriptの「コールバック関数」とは一体なんなのか
    http://sbfl.net/blog/2019/02/08/javascript-callback-func/
    >関数を値として扱うには後ろのカッコをつけずに書きます。
    とあるのですが、isBigEnoughにカッコを付けてはいけないのも同じ理由でしょうか?

    変な質問ですみません
    たぶん、コールバック関数が何なのか解っていないんだと思います
    「filter()の引数にはコールバック関数を指定する、コールバック関数なので()を付けてはいけない」
    くらいの認識でも良いんでしょうか?この解釈は間違っていますか?

    726 = :

    >>717
    classListに変更すれば良い

    727 = :

    >>725
    ()を付ければ、呼び出される
    http://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Functions#Calling_functions

    730 = :

    >>725
    > たぶん、コールバック関数が何なのか解っていないんだと思います

    少なくともJavascriptにおいては、ただの関数です。
    var tadanokansuu = function() {
    console.log('hello, world!');
    };
    ただの関数を呼び出すとき、以下のように()つけて呼び出しますね?
    tadanokansuu();
    //=> hello, world!
    一方、世の中には以下のような、引数として関数を取る関数があります。
    var kansuuwotorukansuu = function(nanikanokansuu) {
    nanikanokansuu();
    };
    このような、引数として関数を取る関数に、引数として渡す関数、これを「コールバック関数」と呼びます。
    kansuuwotorukansuu(tadanokansuu);
    //=> hello, world!
    ↑の例ではtadanokansuuがコールバック関数『として』kansuuwotorukansuuに渡されています。

    このように、「コールバック関数」という特殊な関数があるのではなく、引数としてコールバック(関数)を取る関数kansuuwotorukansuuがある、kansuuwotorukansuuに引数としてtadanokansuuをコールバック(関数)として渡す、などと考えればよいと思います。

    731 = :

    >>718の話自分にはよくわからないのですがどういうことですか?
    見つからなかったら空の配列をまわそうとしてなんかエラーが出たりするってことですか?

    732 = :

    >>731
    http://developer.mozilla.org/ja/docs/Web/API/NodeList/forEach#Browser_Compatibility
    >>724

    733 = :

    >>732
    ああ、対応してないブラウザ(IE)があるってことですね
    ありがとうございます

    734 = :

    そういう細かいこと考えるのが嫌だからjQueryを使う

    735 = :

    もうそんな時代も終わるだろ
    っていいたいところだがIEがなかなかしぶとい
    IE11ならだいたいのネイティブコード動いたとおもったが
    forEachはだめなのか?まだまだ世話のかかる厄介なやつだな

    736 = :

    edgeにIEモードってことはMSもそろそろIE畳むつもりはありそうだが

    737 = :

    JSの文字列置き換えって正規表現によるreplaceとsplit+joinしか選択肢ないんですか?
    どちらも(;´゚д゚`)エエーって感じなんだけど

    738 = :

    http://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Syntax

    739 = :

    >>737
    他に例えば?

    740 = :

    >>739
    正規表現である必要がないので
    "2019-01-01".replaceAll("-", "/")
    こんなんでいいと思うんです

    741 = :

    Ruby では複数置換でも、ブロックを渡して、変形できる。
    $& はマッチした部分

    puts "1a23bc4d".gsub( /\d+/ ) { '<' + $& + '>' }
    #=> <1>a<23>bc<4>d

    JS でも同様に、replace に、callback 関数を渡して、変形できる

    function replacer( matched ) { return '<' + matched + '>' }

    var str = "1a23bc4d".replace( /\d+/g , replacer );

    742 = :

    Ruby のNokogiri とか、Selenium WebDriver などは、
    要素の発見を、1つだけのものは、find_one とか、
    複数みつかるものは、find_all など、関数名を分けている

    find_oneで、1つなら該当する要素を返すが、0個なら、nil を返すとか、
    find_allは、配列を返すとか、ややこしい

    jQuery だけは、すべて配列で返すから、0, 1, 複数のすべてで、同じ書き方ができる!

    だから、jQueryを使ってないと、バグだらけで、開発費が何倍も掛かる。
    リリースしてからも、しょっちゅうバグるから、やり直しばっかり!

    机上デバッグでも、手間が掛かる。
    ごちゃごちゃと何をやっているのか、説明できない

    743 = :

    jQueryはJavaScriptのラッパーだろ
    やってることはその域を超えない
    置換にしてもJavaScript同様無駄の多い処理をしてるはずだ

    744 = :

    >>743
    それを言ったら、高級言語はすべてアセンブラのラッパーだ
    ラッパーは素晴らしい。冗長で分かりづらいコードを
    わかりやすくしてくれる。

    jQueryはJavaScriptのラッパーだ
    つまりそれは素晴らしいものということだ

    745 = :

    > 置換にしてもJavaScript同様無駄の多い処理をしてるはずだ

    その仕事を、人間がやるか
    コンピュータにやらせるかだ。

    人間が楽になれば、コンピュータの仕事は増える
    コンピュータの仕事を増やすことこそ、正しい姿だ。

    746 = :

    いやいや正規表現エンジン通すとか配列に分割してまたくっつけるとか
    そういうのがイラネっていってるだけだろ
    例えば
    pos = str.indexOf(search);
    while(pos > -1) {
     str = str.substring(0, pos) + replacement + str.substring(pos + 1);
     pos = str.indexOf(search, pos);
    }
    こんなコードをネイティブで実装してないのか?って話じゃねーの

    747 = :

    >>746
    頼むから、バグリング君に関わるのは止めてくれ
    彼に話が通じるわけないだろう

    748 = :

    不特定多数のDOM要素を相手にしてごちゃごちゃやるのなら
    それをいい具合に扱えるjQueryが最高というのは分かるが
    今どきそれはナンセンス
    コンポーネントにわけて1つ1つの機能の担当範囲を分けて
    柔軟なことがしたいときはShadowDOMだったりHoudini系のAPIを使って
    中を詰めていくのが基本
    そういった技術にjQueryは適さない

    749 = :

    >>748
    > コンポーネントにわけて1つ1つの機能の担当範囲を分けて
    > 柔軟なことがしたいときはShadowDOMだったりHoudini系のAPIを使って
    > 中を詰めていくのが基本

    そこに「顧客が本当に必要だったもの」の観点は有るのかい?
    顧客にそうしてくれと言われたのかい?

    750 = :

    >>749
    君はどうか知らないが俺は言われたものを作るロボットではないから
    自分の作りたいものを自分がいいと思うように表現するためにWebを使ってる
    勿論どうして作りたいかの部分に顧客が含まれることはあっても
    作りたいものを作りたいから作ってるってことが俺にとっては一番大事だから

    あとここはお仕事お助け板ではないからね
    純粋にJSを学びたい人のためのスレ
    あんまり仕事でどうこうっていうのを持ち込むのは良い気はしないね


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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