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

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

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

    451 = :

    テクニカルwwww
    皮肉かwww

    452 = :

    >>447
    勘違いをしているようだが、関数型言語というのはオブジェクト指向よりも古い。そして不便。
    その証拠に関数型を謳っている某ライブラリでも破壊的な非関数型メソッドがいくつも入っている。
    ループ抜けるのにfalse返さないといけなかったら、関数型だとfalseしか返ってこないよねw

    453 = :

    >>442
    メソッドチェーンを中断させるのなら、例外しか無いんじゃね?

    var value = _(v).foo().bar().baz();

    のfoo()で中断させる場合、例外を出さないなら
    [なんかのオブジェクト].bar() は絶対実行されるから、
    それでvalueにundefinedを入れるようにするとなると、

    「なんかのオブジェクト」は、メソッドチェーンできるオブジェクトでありながら、
    barやbazを何をやってもundefined相当のオブジェクトを返すメソッドに
    すり替えないといけないわけで、出来ないことはない気もするけど
    そうとう無駄なことやる羽目になりそう。

    454 = :

    >>442
    > lodashではfalseを返せばループは終わらせられるようです
    > メソッドチェーンを中断させる機構があれば尚いいのですが・・

    中断の意味が二通りある。

    一つは、処理が続行できなくなって中断する場合(戻り値なし)と、
    もう一つは、これ以上処理する必要がないので処理を切り上げる場合(戻り値あり)

    前者は例外を使う。

    後者は、処理を切り上げることを意味する値を返す。
    falseだったり、nullだったり、undefinedだったり、
    この三つのどれかを処理を切り上げる値に使えばいいと思うけど、
    無理なら例外を使ってもいいと思うし、特別なオブジェクトを返すとかもある。

    asyncライブラリみたいに、引数にcallbackを渡してどう呼び出すかで
    続きをやるかどうか判定するなんてのも考えられるよ。
    http://qiita.com/takeharu/items/84ffbee23b8edcbb2e21

    一般的な方法ってのは無いと思う。

    455 = :

    「関数言語的ループ」って再帰ループのことだと思ったんだが違ったのか?
    メソッドチェーンの中断の話?どこで掏り替わったんだ?

    456 = :

    >>442の時点で二つの話がごっちゃになってるのです。

    457 = :

    >>452
    勘違いしてないよw
    時代的な並列処理の要請と、あとおそらく「伽藍とバザール」から、
    古い関数型言語の見直しが何年か前にあって、
    新しい関数型言語が生まれたり、関数型言語のパラダイムが既存の言語に流入してきた
    この新しい流れのことを言ってるんだよ

    458 = :

    >>441
    function exec(a) {
    return a;
    }
    function judgment(a) {
    return a!==10;
    }
    function loop(a,b,c,d) {
    var i = d || 0,
    r = b(a[i]);
    if (c(r)) {
    r = loop(a,b,c,i+1);
    }
    return r;
    }
    var arg = [0,1,2,3,4,5,6,7,8,9,10,11];
    result = loop(arg,exec,judgment);
    console.log(result);

    これですっきり。
    使えないライブラリを持ち出して、質問をそのライブラリの不備と掏り替えってアホかw

    459 = :

    >>458
    少しはましになったけど、引数dが余計だね。
    もし仮にIDEを使っていて、関数の仮引数を表示してくれるとしたら
    気持ち悪いよね。ということで消してみて。

    あと意味なく一文字変数にしない。
    わかりにくいから。

    460 = :

    やはり例外しかないでしょうかね~
    うまく呼び出し部分をラップして特別なオブジェクトを返したら中断するとか出来そうな気もするのですが

    461 = :

    >>458
    dが消えてから指摘しようと思ったけど、
    面倒なので私的。

    元々の質問者は、その例で
    exec,judgmentの二つに分けたくない場合の
    話をしてるんだよ。

    462 = :

    あと関数型なら、iというインデックスを使わずに
    「残りの引数」って感じで渡す気もするんだけど、
    まあそこはいいのかな。残りの引数を使う正当な理由が思いつかないし。

    463 = :

    function loop(a,b,c) {
    var arg = a.shift(),
    r;
    if (a.length>0 &&c(r=b(arg))) {
    r = loop(a,b,c);
    }
    return r;
    }

    d,iが嫌ならこうだな。
    exec,jugmentに分けなかったら戻り値がfalseしか返せないだろうに。
    そんな縛りをする意味がない。

    464 = :

    質問者がコードを出さないから具体案が出てきづらい事になる
    初めからこうなることは明白だった

    465 = :

    >>342
    document.write("<a href='"+article[n]+"'>");
    これは、ファイル名だけ?
    それなら、相対パスになる

    var artDir = "http://www.~.~/"
    記事が入っているフォルダのパスを、変数に入れておいて、
    ファイル名と連結して、絶対パスで指定する


    配列の宣言は、単に下のように書ける
    var article = new Array();
    var article = [];

    466 = :

    にわか関数型野郎はhaskellスレにでも行って打ちのめされてこい
    そして二度と来るな

    467 = :

    >>463
    こうすればいいんだよ。

    function loop(data, callback) {
     var i = 0;
     var stop = false;
     function recursive(i) {
      if (i < data.length) return;
      var result = callback(data[i], function() { stop = true });
      if (stop) return result;
      return recursive(i+1);
     }
     return recursive(i);
    }

    var data = [0,1,2,3,4,5,6,7,8,9,10,11];
    var result = loop(data, function(value, stop) {
     if (value == 10) {
      stop();
     }
     return a;
    });

    468 = :

    訂正

    function loop(data, callback) {
     var stop = false;
     function recursive(i) {
      if (i < data.length) return;
      var result = callback(data[i], function() { stop = true });
      if (stop) return result;
      return recursive(i+1);
     }
     return recursive(0);
    }

    var data = [0,1,2,3,4,5,6,7,8,9,10,11];
    var result = loop(data, function(value, stop) {
     if (value == 10) {
      stop();
     }
     return value;
    });

    469 = :

    即時関数をapplyで呼ぶというウルテクを見つけました

    (function (a){
    console.log(a);
    }.apply(this,['x']));

    これは普通に使っていい技でしょうか?

    471 = :

    http://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/try...catch
    ここに
    catch (e if e instanceof EvalError)
    のような書き方が載っていますが、
    注: この機能は ECMAScript 仕様の一部ではありません。
    と書いてあります。
    このような形でキャッチするエラーを指定出来ない場合もあるということでしょうか?

    472 = :

    >>471
    > 注: この機能は ECMAScript 仕様の一部ではありません。
    実装依存という事です。
    全ての実装で実装されている保証がありませんし、今後削除される可能性もあります。
    対象ブラウザ全てで実装されていることを確かめる必要がありますし、今後更新される度に該当機能が削除されていないか確かめる必要があります。

    473 = :

    ありがとうございます
    あまり使わない方が良さそうですね
    欲しいエラーではない場合、再びthrowする
    という判定処理を書くのがいいでしょうか?

    474 = :

    ontouchstartってスマホ用のイベントだとおもいますが、
    これをPCで閲覧した時にも記述することってやっぱりよくないことですか?

    475 = :

    C++の int operator()() {...} みたいなメソッドは書けますか?
    クラスインスタンスを関数のように使いたいのです。

    function Foo() { .. }
    var obj = new Foo();
    obj(); /* 関数としてコールしたい */

    http://ideone.com/zRugbf

    476 = :

    残念ながら出来ません

    477 = :

    >>475
    こういうこと?

    function Foo() {
    function bar() {
    console.log('a');
    }
    return bar;
    }
    var obj = new Foo();
    obj(); // a

    478 = :

    >>477
    クロージャーではなくprotptypeでなんとか出来ないのかと思いまして。

    >>476
    そうかぁ、出来ないのですね。

    ありがとん。

    479 = :

    javascriptがflashに大勝利するにはどうすればいいと思いますか
    ぼくはソースの暗号化が肝だと思うのですが

    480 = :

    意味不明
    flashなんてもうオワコンじゃん

    481 = :

    >>474
    PCかスマホかなんて忘れた方がいい。
    あるのは画面の大きさぐらい。

    タッチ装置がついててブラウザが対応していたら、
    ontouchstartが使われる。そうでなければ使われない。
    スマホかどうかは関係ない。

    482 = :

    >>479
    ソースの暗号化なんて、誰もほしがってなんかいない。

    483 = :

    >>481
    ありがとうございました!

    484 = :

    >>478
    function f() {
    console.log(this.a);
    }
    var o = {
    a: 1
    },
    obj = f.bind(o);
    obj(); // 1
    o.a = 2;
    obj(); // 2

    bind使えばこう書けるが。

    486 = :

    >>473
    try-catch のcatch節でthrowするという意味なら普通はあまりやりません。
    標準の例外を吸収しておいて別の例外を発生させるのは特異なケースですが、背景が不明なのでそれが正しいのかは何ともいえません。

    普通は標準の例外を見越して、例外が発生しないようにコーディングするので、try-catch は滅多に使いません。
    もし、「例外の発生条件がよくわからないのでとりあえず、try-catchで括る」という考え方なら良くない手法だと思います。

    487 = :

    lodashで、変数でキー名を指定してオブジェクトに値を設定したい場合は
    自分でプラグインを作成するしかないでしょうか?
    assignの引数はオブジェクトにしか対応していないようです
    jqueryのように
    assign(key, value)
    というような形でも指定できたら一番いいのですが

    488 = :

    >>485
    なんでlodashについては何も言わないんだ

    490 = :

    jsでhtmlのエレメントを取得し、属性値を設定します。例えばidとか。
    この時、自動的にnameにも同じ値が設定すされるようにする。

    みたいな仕組みを作ることは可能でしょうか?

    491 = :

    チェックボックスにidと同じname属性を付けたいのだと思うが、

    492 = :

    しまった、途中でカキコしてしまったw

    jQueryが使えるなら、

    $('input[type=checkbox]).each(function(){$(this).arrt("name", this.id)});

    でどうでしょうか?

    494 = :

    PCでスマホサイトの動作を確認したいんですが、
    Useragentを書き換えるだけじゃなくて、スマホ特有のイベントontouch系を発生させるツールとかないですか?

    495 = :

    >>494
    エミュレータを使えばいいのでは?
    最終的には実機で確認する必要がありますが

    496 = :

    >>490
    もう少し具体的に。

    要素と文字列を受け取って、idとnameとに設定する関数を作る
    っていうのでも仕組みって言えば仕組みだよね

    jQueryで$('.foo').setIdAndName('foobar') みたいな感じでしたければ、
    そういうプラグインを書けばいいし

    497 = :

    >>488
    あっちのスレは、jQueryだけじゃなかったのか
    ライブラリ総合か
    それなら、Lo-Dashの話もあっちで

    次から、スレタイも変えないと
    【jQuery】JavaScript ライブラリ総合質問所 vol.3【Lo-Dash】

    498 = :

    まあ>>488も分かってて言ってるんだろうけど

    jQuery他をこっちで聞いてるのはライブラリスレを知らないだけ
    lodashをこっちで聞いてるのは意図的な荒らしと自演レス

    499 = :

    >>497
    そのタイトルだとあなたと同じようにjQuery, Lo-Dashスレと勘違いされるから、特定のライブラリ名はタイトルに含めるべきではないと思う

    500 :

    でもJQueryも有名だしJQuery等でいいんじゃないか
    どっちにしても向こうのスレで話し合えば良いと思うが


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

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


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