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

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

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

    もはや再帰関係なくなった。
    var fibonacci = function () {
      var memo = [0, 1];
      var fib = function (n) {
        var result = memo[n];
        if (typeof result !== 'number') {
          for (var i = memo.length; i < n; i++) memo[i] = memo[i - 2] + memo[i - 1];
          result = memo[n] = memo[n - 2] + memo[n - 1];
        }
        return result;
      };
      return fib;
    }();

    fibonacciには後ろの関数が実行されてreturn のfibが入る。
    var a = function(){/*1*/};
    var b = function(){/*2*/};
    var c = a;
    こういうこと?

    602 = :

    これ実行すればわかるはず
    var a = function(){ return true }();
    var b = function(){ return true };

    alert(a);
    alert(b);
    alert( b() );
    //alert( a() ); ←実行するとエラーになる

    603 = :

    フィボナッチ数列なんか再帰いらないだろ

    604 = :

    ていうか再帰は使うべきでない
    勉強にはいいかもしれないけど実践では使えない

    for (i=0, j=1, k=0, fib=0; i<50; i++, fib=j+k, j=k, k=fib){
    document.write("Fibonacci ("+i+") = "+fib+"<br>");
    }

    605 = :

    フィボナッチ数列は再帰を説明するときに使われるだけで
    実際にフィボナッチ数列が必要な人なんかいないし、いても一般項使うだろうな

    実際に使うのは
    ファイルシステムやマトリューシカみたいな構造体へのアクセスが一番多いと思うわ
    フラクタル画像を描くときなんかは再帰がないとちょっときつい

    606 = :

    子孫ノードから特定のnodeTypeを持つノードを得るときにも再帰使うかな。
    再帰使わない方法も出来ると思うけど即座に思いつかない。

    607 = :

    末尾再帰はループで除去できる
    階乗とかフィボナッチ数列とかはこれ
    中間の再帰はスタックを使う

    でもライブラリ実装者とかでもない限り
    再帰のパフォーマンスが問題になるケースなんて滅多にないと思うなぁ

    611 = :

    少なくとも俺は聞いたこと無いな。
    自前で作るならこんな感じ。
    function StringBuilder(A){
    this.str = String(A);
    }
    StringBuilder.prototype = {
    append: function(A){
    return this.str += String(A);
    },
    toUpperCase: function(){
    return this.str = this.str.toUpperCase();
    },
    toString: function(){
    return this.str.toString();
    }
    }
    a=new StringBuilder("abc");
    a.toUpperCase();

    // まとめて移植。問題あるかも。.nameとか。
    // いや、すべて返り値になるのが問題だなw
    for (var method in String.prototype){
    if (typeof method === "function"){
    StringBuilder.prototype[method.name] = function(){
    return this.str = method.apply(this.str, arguments);
    };
    }
    }

    612 = :

    まとめて移植は動かんかったわ。ごめん。
    このスレか前スレぐらいにArrayのラップクラスのコードがあったからそれ見れば出来るはず。
    おやすみ。

    614 = :

    document.writeln(str.toUpperCase());
    document.writeln(num.toFixed(3));
    としないといけないというだけで十分じゃないのか?
    仕様書読めば確実

    616 = :

    JAVASCRIPTクイックリファレンスのStringの項みたら不変って書いてあるな
    英語でかっこつけてる癖に基本的な参考書も持ってないとか恥ずかしい

    617 = :

    そもそも数値型がmutableな言語なんて存在したっけ?
    あるのならぜひ知りたい。

    618 = :

    C言語…とか……

    619 = :

    変数は書き換え可能だけど数値という値は書き換え可能じゃないよね。
    num.toFixed(3) みたいなことはC言語でどうできるって?
    文字列にしてしまえばmutableだからできるのは分かっているけど。

    620 = :

    >何て言うか、imutableかどうかが一番知りたい質問かな。

    JavaScriptはクラスベースの言語じゃないと何度言えば…
    それ以前にtoUpperCase();の使い方がおかしい事ぐらい調べればわかるだろ

    http://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/String/toUpperCase
    >toUpperCase メソッドは、大文字に変換された文字列の値を返します。
    toUpperCase メソッドは、文字列の値、それ自身には影響を与えません。

    621 = :

    ECMAScriptにImmutableクラスなんて概念あった?
    String.prototype.toUpperCaseは非破壊的でFAだと思うけど。

    622 = :

    だからクラスという概念が無いから。もっとも書き換え可能/不能は
    クラスとは独立した概念なので、オブジェクトの種類ごとに
    どのような仕様になっているかをチェックすることはできると思う。

    624 :

    すみません
    >503の質問どうかよろしくお願いします

    625 = :

    >>624
    仕様ですが、実装がまちまちなので使うべきではありません。
    http://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html#named-access-on-the-window-object

    626 = :

    相変わらず回答きても放置する質問者が多いな

    627 = :

    2chなんてそんなものでしょ
    お礼でも期待してるの?

    628 :

    生ダコがくいてえええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええ

    629 = :

    >625
    ありがとうございました
    英語のサイトは半分くらい読めないので今年英語を頑張って来年くらいにまた読みます

    >626
    すみません…
    自分は使えるネット環境は携帯しかなく、その携帯もアクセス制限をかけられていて
    ibisというアプリブラウザの一日5ページのお試しを使って書き込んでいるので1日1か2レスしかできないのです
    大変すみませんでした

    630 = :

    2つの変数を文字列として連結するために、

    str = "" + a + b + "です";

    というように、先頭に "" を付けた式を JSLintにかけると以下のような警告が出ます。
    Problem : Expected 'String' and instead saw ''''.

    警告される意味が理解できないのですが、
    何が問題であって、どう書けばいいと言ってるのでしょうか。

    631 = :

    ダブルクオートをシングルクオートにしてみたらどうだろう

    632 = :

    >>631
    それはやってみましたが、違いは無かったです。

    633 = :

    空文字列で怒られてるんじゃね
    String(a) + String(b) + "です"
    とかできなかったっけ?

    634 = :

    a.toString() + b.toString() 

    635 = :

    >633
    そうかもしれないね
    「文字型が帰ってくることを(toStringで明示せずに)期待している。それとシングルクォーテーション4つに見える」
    っていってるみたいね。

    636 = :

    <form method="post">
    <input type='submit' name='hoge' value='1' accesskey='1'>
    <input type='submit' name='hoge' value='2' accesskey='2'>
    <input type='submit' name='hoge' value='3' accesskey='3'>
    </form>

    上記のようなボタンが3つある時、「1」のボタンをクリックする書式を教えてください
    この並び方なら
    document.getElementsByTagName("input").item(0).click()
    で大丈夫なのですが、順番が入れ替わった時にどうすればわかりません
    itemにvalue='1'を入れると押すことは押すのですが正しいボタンを押してるわけではないようです
    もしくはこの書式に詳しい解説サイトありませんか?

    637 = :

    >>635
    > シングルクォーテーション4つに見える
    それってどういう意味(どういうロジックでそう見えるの)でしょうか?


    こうすれば、エラーが出なくなりましたが
    str= String("") + a + b;
    奇妙に見えますが、これでも正しいですか?

    639 = :

    そもそも何故そんなにわかりにくくて見にくい書き方してるのかがわからない

    640 = :

    >>639
    わかりやすくて見やすい書き方って何?

    641 = :

    >637
    ごめん、あんまりjslintには詳しくないけど
    たぶんjslintは文法的な事だけじゃなく、
    スタイリング(インデントや=とか+演算子の前後にはスペースを入れたり)
    とかのコードの見た目のチェックしていると思う。それで紛らわしいのは警告を出してるじゃないかな


    変数strが文字列であることを保証したいなら>634さんみたいにa,bを先に文字列に明示的に変換しておいたほうがいいと思う
    638さんの式だと変数aかbに数値が代入されていると、期待した値にならないと思う。

    642 = :

    >>641
    >たぶんjslintは文法的な事だけじゃなく、
    >スタイリング(インデントや=とか+演算子の前後にはスペースを入れたり)
    >とかのコードの見た目のチェックしていると思う。

    そういうチェックはやってないと思うよ。

    643 = :

    >642
    ごめん、予想でかいちゃった。
    じゃあ何なんだろう、型のキャストは明示的に行えってことかなぁ

    644 = :

    >>642
    やってるよ。というかそこにこだわった人が作ってるlintだから
    オプション次第だと思うけど

    645 = :

    >>644
    ああ、意図的にオプション設定すれば警告するようになるのか。

    ==や!=演算子を使うなとか、parseIntの第2引数を省略するなとかの警告メッセージも
    オブション設定で外せるようにしてくれたらいいのに。

    646 = :

    >>645
    逆逆
    標準はほとんど警告出る
    > ==や!=演算子を使うなとか、parseIntの第2引数を省略するなとかの警告メッセージも
    > オブション設定で外せるようにしてくれたらいいのに。
    まさにそういうとこにこだわりまくった人が作ってるわけで

    javascript the good partsとか読んで共感した人だけが使うためのツールと思った方がいい。
    そうじゃなきゃ重箱の隅つつくような指摘されてかなりストレスたまると思う

    647 = :

    >>646
    >標準はほとんど警告出る
    いや、標準で >>642で言ってるような警告は出ませんよ。

    >> ==や!=演算子を使うなとか、parseIntの第2引数を省略するなとかの警告メッセージも
    >> オブション設定で外せるようにしてくれたらいいのに。
    >まさにそういうとこにこだわりまくった人が作ってるわけで
    そういう柔軟性が無いから、そのこだわりに賛同できない人にとっては
    使えないツールになってしまうんですよね。

    648 = :

    lintの目的わかってないんじゃねーの
    堅牢なソースコードを作るためのこだわりを無駄というなら最初から使うなよ

    650 = :

    ++, --は他の要素と組み合わさったとき副作用が生じる可能性がある
    continueは意図しない制御の流れを作る
    return文だって関数の末尾以外で呼び出すことはよくないとされている

    堅牢なソースコードの意味わかってないんじゃないか
    生産性よりも保守性を重視するってことだぞ


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

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


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