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

    私的良スレ書庫

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

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

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    801 : Name_Not - 2019/12/18(水) 12:11:04.53 ID:???.net (+7,-30,-30)
    >>842
    > 1から100までの値がランダムで配列される時に

    日本語を頑張れ

    > indexOf("1")>=0?"りんご"にすると
    > 10もりんごになっちゃいます。

    Array#indexOfは10にマッチしない
    802 : Name_Not - 2019/12/18(水) 12:21:29.03 ID:???.net (+38,-30,-26)
    [2,3,10] は、数値の配列でしょ?

    indexOf("1")
    "1" は、文字列じゃん

    型が異なると、バグる
    803 : Name_Not - 2019/12/18(水) 14:32:50.74 ID:???.net (+6,-24,-21)
    >>840
    まじで???

    デフォで送れないのは今でもそうだけど
    csedentialはどうなっちゃうの?
    804 : Name_Not - 2019/12/18(水) 15:00:48.35 ID:???.net (+56,-29,-52)
    >>846
    corsでcookieが扱えなくなるのは俺も知らんけど
    Ajaxするときのcredentialがなくなることはなかろう
    805 : Name_Not - 2019/12/19(木) 09:00:50.12 ID:???.net (+3,-30,-126)
    function hoge(callback){
    console.log( callback(10,20) );
    console.log("callbackの引数の名前を知りたい xxxとyyy");
    console.log(callback.toString().match(/^\((.*),(.*)\)/).filter((_,i)=>i%3!==0));
    }
    hoge((xxx,yyy)=>xxx+yyy);

    と、しましたがもっとスッキリ書けないものでしょうか?
    806 : 847 - 2019/12/19(木) 09:04:39.31 ID:???.net (-1,-29,-28)
    引数が一個のときも考慮したいし
    function()なんたらのときも
    _=> みたいに()が無いときも考慮するには
    やはり全部の場合分けしかないのでしょうか?
    807 : Name_Not - 2019/12/19(木) 10:55:15.25 ID:???.net (+87,+20,-92)
    引数の数が異なるなら、オブジェクト指向で言う、関数のoverload・多重定義だろ。
    JavaScript には無いけど、jQuery は、引数の型を調べて、場合分けして作っていたかも?

    デフォルト値ありの引数か、配列・辞書渡しにするか。
    オプションなどは、辞書で渡す

    引数の数が変わる、可変引数もあるのか?
    808 : Name_Not - 2019/12/19(木) 13:25:23.48 ID:???.net (+47,+29,-12)
    うるさい糖質
    809 : Name_Not - 2019/12/19(木) 16:02:12.63 ID:???.net (+68,+29,-81)
    >>850
    とりあえず引数名が何個で何かを判別するオプションを引数に入れて多重定義で一時的に対応することにしました
    ただ引数名は限定的になりそうなので渡す関数の書式を制限して関数そのものの文字列から判別する方法もやろうと思います
    ありがとうございました
    810 : Name_Not - 2019/12/19(木) 16:41:00.17 ID:???.net (+62,+29,-39)
    >>848
    関数の引数の定義上の文字列を知りたい
    という要望が特殊すぎるような気が

    ちなみにこの文字列を知って
    どのような使い方を考えているのん?
    811 : Name_Not - 2019/12/19(木) 17:03:32.67 ID:???.net (+12,-30,-45)
    >>853
    例えばforEachするときやmapするとき
    最初の引数はindexだったかそれともvalueだったか?忘れてしまうことが多かったので
    callbackの記述が
    function(index,value),function(index),function(value),function(value,index)だったら
    その通りに勝手に解釈してもらいたいなぁと思ったのです
    812 : Name_Not - 2019/12/19(木) 17:08:12.28 ID:???.net (+69,+29,-41)
    >>854
    ワロタ
    それは、JSでやるべきじゃないんじゃないかなあ
    テキストエディタとかトランスパイラとか
    JSコードになる以前の問題なんじゃないかと
    813 : Name_Not - 2019/12/19(木) 17:12:15.59 ID:???.net (+3,-29,-34)
    アロー関数使うときに、引数が一個しかなければ
    i=>{}みたいに書けるけど、引数が2個の場合
    (i,val)=>{}と書いて、valしか使わないのに・・
    みたいな場面に出くわしてじゃあ最初から
    val=>{}で書いたときはーーみたいな感じだったのです
    814 : Name_Not - 2019/12/19(木) 18:17:45.23 ID:???.net (+6,-30,-57)
    >>854
    物忘れ防止なら、JSDocでも書いておけ

    >>852
    重要なのは、「引数の数」の方だろ
    arguments.lengthやrest parameterを使え
    815 : Name_Not - 2019/12/19(木) 18:33:42.30 ID:???.net (+57,+29,-40)
    まぁ引数の数だけが問題ならイコール引数の順序を覚えている
    ということなので、普通に既存のライブラリ使うかなと。
    816 : Name_Not - 2019/12/19(木) 19:17:54.31 ID:???.net (+3,-30,-113)
    そういうのは型付言語ならできるだろう

    map(i:int=>i*2)
    map(val:string=>var+"abc")

    みたいな感じだ

    だが、valもintだったらどうなるだろうか?区別がつかない。
    そこでint型とindex型は分けるべきではないだろうか?

    map(i:index=>i*2)
    map(val:int=>val*2)

    つまりこういうわけだな

    そして思うのは、indexとかintという型は冗長というわけだ
    ならここで型名変数という概念があっても良いのかもしれないな
    型名をそのまま変数として使える書き方だ

    map(:index=>index*2)
    map(:string=>string*2)

    夢は膨らんでいくな!
    817 : Name_Not - 2019/12/19(木) 19:46:17.14 ID:???.net (+52,+29,-4)
    いやもうふつうにあるから。
    818 : Name_Not - 2019/12/19(木) 20:23:04.33 ID:???.net (+46,+28,-1)
    あるんかーい
    819 : Name_Not - 2019/12/19(木) 20:55:36.34 ID:???.net (+57,+29,-39)
    何を言ってるんだか ここは阿呆ばかりなのか?
    オーバーライドは関数と引数の取り回しが不自由なJavaのような言語で
    柔軟さをなんとか実現するための苦肉の策であってJSには最も必要ない部類の機能だろ
    820 : Name_Not - 2019/12/19(木) 21:10:06.71 ID:???.net (+37,-29,-10)
    オーバーライドじゃなくてオーバーロードな(呆)
    JavaじゃなくてC++の時代からあるよ
    821 : Name_Not - 2019/12/19(木) 21:48:09.28 ID:???.net (+10,-28,-9)
    オーバーライドじゃなくてオーバーロードな ←潔癖症
    JavaじゃなくてC++の時代からあるよ ←アスペ
    822 : Name_Not - 2019/12/19(木) 22:06:27.88 ID:???.net (+43,-30,-84)
    jqueryでアロー関数のthisがwindowになるのなんとかならんの
    $([3,4,5]).each(function(){ console.log(this) });
    $([3,4,5]).each(()=>{ console.log(this) });
    第一引数つかえっていう話ではなく
    823 : Name_Not - 2019/12/19(木) 23:34:40.44 ID:???.net (+106,+22,-43)
    >>865
    jQueryとは関係ない。DOM APIもそうだからどうしようもない
    824 : Name_Not - 2019/12/20(金) 00:14:23.85 ID:???.net (+57,+29,-4)
    どいつもこいつもどこから突っ込んでいいのやらw
    825 : Name_Not - 2019/12/20(金) 06:52:41.54 ID:???.net (+68,+29,-31)
    そういう毒にも薬にもならない表明はいらない
    826 : Name_Not - 2019/12/20(金) 08:38:34.48 ID:???.net (+12,-5,-3)
    827 : Name_Not - 2019/12/20(金) 09:38:36.23 ID:???.net (+52,+24,-27)
    ES6 のアロー関数は、たぶん、クロージャなんだろ。
    外の環境のthis を、そこまでの文脈で、静的に確定させて取り込んでしまう

    レシーバーのthis じゃない
    828 : Name_Not - 2019/12/20(金) 10:53:39.50 ID:???.net (+67,-29,-72)
    jQueryの基礎部分を書いてみたのですが
    http://jsfiddle.net/5nhoL081/
    これをclass構文で表現するにはどうやればいいのでしょうか?
    http://jsfiddle.net/kabn84sz/
    やってはみたものの動くには動いたのですが
    if(!f){return thisを外したらinitがnot functionだと言われたり
    腑に落ちない点がいろいろとあります
    829 : Name_Not - 2019/12/20(金) 11:41:18 ID:???.net (+3,-29,-137)
    >>865
    jQuery関係ない

    functionの中でthisはそもそもグローバル(かundefined)
    メソッドやイベントリスナとして発火するときは
    そのオブジェクトが束縛(バインド)される

    アロー関数はイベントリスナになっても
    束縛がないんだね
    830 : Name_Not - 2019/12/20(金) 11:43:11 ID:???.net (-1,-29,-44)
    あとjQueryのeachとかで使うthisは
    ピュアJSのものではなく
    jQueryが独自にバインドしているものなのでご注意を
    831 : 870 - 2019/12/20(金) 14:33:40 ID:???.net (+3,-30,-272)
    class Hoge{
    constructor(){
    console.log(new Fuga());
    }
    }
    class Fuga extends Hoge{
    f(){}
    }
    var hoge = new Hoge();
    //Maximum call stack size exceeded
    //となってしまうので
    class Hoge{
    constructor(f){
    if(!!f){
    console.log(new Fuga());
    }
    }
    }
    class Fuga extends Hoge{
    f(){}
    }
    var hoge = new Hoge(true);
    //ifをかますと親コンストラクタで子をnewできるみたいというのはわかりましたが
    //これはなんかのテクニックなのでしょうか??それとも普通はこんなことしないということでしょうか
    832 : Name_Not - 2019/12/20(金) 15:29:56 ID:???.net (+57,+29,-34)
    ifを咬ませてfalseのとき通らない説明はしようがないね
    自明だから
    833 : Name_Not - 2019/12/20(金) 15:34:17.63 ID:???.net (+52,+29,-20)
    >>874
    ちなみにこの循環にはどんな意味があるん?
    834 : Name_Not - 2019/12/20(金) 15:48:06 ID:???.net (+17,-30,-111)
    >>875
    >falseのとき
    !じゃなくて!!なので、つまり!!trueなのでtrueです
    >>876
    この循環とは?
    例えばライブラリにするときjqueryなら$()で何回も使えますがそれは
    $()で返ってくる中身がインスタンスで、かつinitが親のjqueryのprototypeを持っているからです
    別に毎回newを宣言するスタイルなら必要ないと思いますが
    835 : Name_Not - 2019/12/20(金) 15:55:27 ID:???.net (+21,-13,-10)
    ライブラリ内で$()を使っても循環してるわけじゃないだろ
    無知って恐ろしいな
    836 : Name_Not - 2019/12/20(金) 15:58:25 ID:???.net (+57,+29,-7)
    いやそもそも循環って何を指しているかがわからんのです
    837 : Name_Not - 2019/12/20(金) 16:54:52.49 ID:???.net (+9,-30,-137)
    Hogeがコンストラクタ関数でnew Fuga() してるのに
    FugaがHogeを継承しちゃってるからループして
    なんどもなんどもフガフガしちゃって
    Maximum call stack size exceeded なわけじゃん?

    なんでFugaはHogeを継承すんのかなって
    838 : Name_Not - 2019/12/20(金) 16:55:43.34 ID:???.net (-2,-30,-78)
    FugaからHogeを参照したいだけなら
    Hogeのコンストラクタ関数で

    new Fuga(this);

    ってするだけじゃいかんかね?
    839 : Name_Not - 2019/12/20(金) 18:28:27.93 ID:???.net (+75,+28,-126)
    >>876,880,881
    なるほど、心をまっさらにして改めて考えたところ、すんなり解決しました
    http://jsfiddle.net/4o3zq1v5/
    initをextendsするのはなぜなのかはわかりませんがそのバージョン
    http://jsfiddle.net/pmrhub5y/
    そもそもjQueryのソースコードをみるとなぜわざわざinitを継承させているのか
    はわかりませんが、つまり
    http://jsfiddle.net/rb5czox2/
    こういうふうにすればいいのに、と思うのですが・・
    $文字で静的なユーティリティ関数を使えるからでしょうか($=jQueryと置くとinitをnewしないといけないので)、わかりません
    840 : Name_Not - 2019/12/20(金) 18:36:34.84 ID:???.net (+21,-13,-18)
    一応ソースコードそのまま風にinitを継承したやつです
    http://jsfiddle.net/ca98kq0z/
    841 : Name_Not - 2019/12/20(金) 20:17:42.83 ID:???.net (+62,+29,-21)
    >>877
    いやいや、空呼びすることになるんだから評価はfalselyでしょ
    trueは最初だけじゃん何いってんの
    842 : Name_Not - 2019/12/20(金) 20:41:12.89 ID:???.net (+36,-9,-77)
    >>884
    空呼びとは?
    いつ、空呼び?(具体的な行なりを)
    最初だけ、とはいつ?(具体的な行なりを)
    >>875
    >falseのとき
    >874コードのどのタイミングで>falseのとき、なのか
    >通らない
    とは何が?
    843 : Name_Not - 2019/12/20(金) 20:59:38.09 ID:???.net (+63,+29,-82)
    なんでこれだけヒント上げてんのにconsole.log()を挟んだりして確認しないの?
    いつ何がなんて考えたら分かるし
    分からないのなら色々試して分かるように見つけるべきでしょ
    あんだけの短いコードなんだから

    それともnew演算子の挙動から丁寧に何レスも使って長大にド答えを書いてほしいの?
    844 : Name_Not - 2019/12/20(金) 21:04:57.57 ID:???.net (+57,+29,-22)
    あー…分かんないやつは無理して回答するフリしなくていいからw
    845 : Name_Not - 2019/12/20(金) 21:17:34.83 ID:???.net (+70,+30,-132)
    わからないことは
    >874コードの前半はエラーがでて、後半のコードでは、エラーが出ない、それはなぜか』
    ということで、わかってることは
    後半コードで『なぜかif()で一旦”間”をとると、エラーが出ない』
    ということと『仮に、親の中で子をnewするとエラーがでるなら、後半コードでもif通ったあとにエラーがでるのでは?』
    というところまでは、わかっています
    その状態で873を質問をしたわけなので
    >875で急にfalseの話が出て、ヒントとか以前の問題で
    どういうこと?っていう状態なので確認のために>885を聞いたんです
    ヒントが欲しいってことではないです
    846 : Name_Not - 2019/12/20(金) 21:18:47.10 ID:???.net (+29,-29,-37)
    訂正 >親の中で子をnewすると
    >親のコンストラクタの中で、子をnewすると
    847 : Name_Not - 2019/12/20(金) 21:21:21.72 ID:???.net (+72,+29,-47)
    じゃあ逆に考えてみたら良いじゃない
    デバッグの基本だよ
    後半コードでもif通ったあとにエラーがでるのでは?
    ならエラーが出てないのならifを通ってないのでは?
    あれどうして通ってないんだっけってなるでしょ
    848 : Name_Not - 2019/12/20(金) 21:25:46.38 ID:???.net (+34,-30,-32)
    >>890
    いえ、、それでconsole.log(new Fuga());
    が出力されたわけでして・・
    849 : Name_Not - 2019/12/20(金) 21:29:24.97 ID:???.net (-2,-30,-46)
    if(!!f){
    の前に
    console.log(f)
    でしょ
    if(!!f)の動作はfに依存してるのだから、fを調べないと始まらないでしょ
    850 : Name_Not - 2019/12/20(金) 21:31:44.48 ID:???.net (+49,-30,-200)
    >>892
    ええ、もちろんしてからの>874の質問ですよ
    で、>875でなんでfalseの話が出てきたのだろう??ってなったんです

    ちなみにもしかして
    class Hoge{
    constructor(f){
    if(!!f){
    console.log(new Fuga());
    }}}
    class Fuga extends Hoge{
    f(){}
    }
    var hoge = new Hoge(true);
    これが通るのっておまかんってことでしょうか?
    念の為、これ↓はtrueですよね
    if(!!true){ console.log(true) }else{ console.log(false) }
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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