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

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

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

    703 = :

    前提となる対象ブラウザがないから後出しになる
    以前のテンプレならテンプレ嫁で済んだのにな

    704 = :

    なんでJavaScriptのメソッドって
    長いものばっかりなんだろうか?

    誰が戦犯なん? Java?

    705 = :

    ショートコーディングの風潮はjQueryの功罪かな

    706 = :

    >>705
    rubyとかpythonとかもjQueryのせいで
    短いメソッドばかりになったの?

    707 = 694 :

    長くても分かりやすい方がいいじゃん

    709 = :

    ここ流れが早くて何番目で自分が質問したか分かんなくなった

    710 = :

    自分の質問内容ぐらい自己管理しろよ

    711 = :

    クラス作成で
    function C_ball(F){
    alert(F);
    }
    とするとエラーが出るのに
    function C_ball(name){
    alert(name);
    }
    だとエラーが出ませんでした
    もしかしてFは予約後なのでしょうか?

    712 = :

    function hoge(){
    function moge(){
    foge();
    }
    function foge(){
    console.log('foge');
    }
    return moge;
    }

    hoge()();

    こうすると、moge経由で、
    hogeの中で定義されているfogeが実行されます。
    今まで意識していなかったのですが、
    「関数の中から他の関数を呼ぶとクロージャになる」
    と考えていいのでしょうか?

    713 = :

    その行が関数の中にない場合は
    windowの代わりにthisって書いてもいいですか?

    714 = :

    >>713
    http://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/this

    715 = :

    リファレンスには、いいか悪いかは書いていないようです
    jshintに文句言われたので、windowと書くことにしました

    718 = :

    >>712
    JavaScriptのすべての関数はクロージャーだよ。
    クロージャーになるんじゃなくて、最初から全てクロージャー

    クロージャーが普通の言語しか使ったことがない人は
    なにがクロージャーなのかよくわからないと思う。
    クロージャーはあまりにも自然だからね。

    クロージャーを知るには、クロージャーではないものを知るのがわかりやすい。
    ということで、クロージャーがないJavaの例
    Javaにはクロージャーはなく、似たようなものとしてラムダ式がある。

    ラムダ式の変数のスコープ
    http://www.ne.jp/asahi/hishidama/home/tech/java/lambda.html

    ラムダ式は似たような形をしているがいろいろ制限があるよね?
    JavaScriptの感覚だと、できそうなことができない。

    この「できそうなこと」というのはコードを見てそう思うはず。
    このコードをみた感じ、つまりコードの構造をみて、できそうだなと思ったことが
    レキシカルスコープ(構文構造のみから決定できるため構文スコープ)という言葉の意味なんだ。

    719 = :

    クロージャーについて説明できる人いないでしょ

    720 = :

    ここにいるよ。
    クロージャとは、関数が外のスコープに存在する変数の参照を保持し続けること。
    はい論破

    721 = :

    関数オブジェクトは
    外のスコープに存在するオブジェクトへの参照を
    どこに持ってるんですか?
    それを一覧で見たりできないんですか?

    722 = :

    >>720
    中途半端な知識晒して論破てwwwwwwwww

    723 = :

    スコープチェーン?
    スコープチェーンに残っている場合はGCされない、ということでしょうか?
    だとしたら、
    function hoge(){
    var a = 100;
    return function(){};
    }
    のような処理でも、aはGCされないまま残り続けるのでしょうか?

    724 = :

    chromeのデバッガで確認したところ

    function hoge(){
    var a = 100;
    return function(){
    };
    }

    だとfunction scopeは空でした

    function hoge(){
    var a = 100;
    return function(){
    return a*2;
    };
    }
    だとfunction scopeにclosureがありました
    やはり参照の有無によりクロージャになるかならないか決まるようです

    725 = :

    最適化の可能性は?

    726 = :

    使わない変数を残し続けるのは不自然なので
    デフォルトで行われる合理化なのでは?
    内部の挙動は分かりませんが

    728 = :

    namespaceの書き方なんてjsには存在しない。

    そも、
    >>var top = top || {};
    が必ずしも正しいかは書くやつが自分で判断しなければならない。


    >>top || {} ってどういう仕組で動いているんですか?
    jsの論理演算は特殊というか、厳密ではないことを利用してるってだけだ。
    http://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators

    729 = :

    window.eventと
    window.onclick=click;
    function click(e){//このeは同じeventオブジェクトですか?

    }

    730 = :

    JavaScriptパターンを再読していますが
    S級著者のステートフルJavaScriptと比べると、やはり文章の精度が劣りますね

    ここでプロトタイプ連鎖を説明するのに使った __proto__ は
    (たとえば Firefox など) いくつかの環境では提供されていますが、
    JavaScriptは利用できません。

    こういう悪文がわりと出てきます

    731 = :

    >>729
    以前気になって調べたけど
    基本的に同じで、
    window.eventは古いブラウザでしか使えなかったと思う

    732 = :

    >>731
    ありがとうございます

    733 = :

    >>732
    同じだけど、書き方を工夫すれば使わなくて済むので基本的に使わない

    736 = :

    ちなみに、window.eventと引数のeventは似ているが同じではない。

    だからvar e = event || window.eventみたいに
    どっちかを使うというコードを書いていると変な所でハマることになる。

    jQueryのeventはこのどちらでもないjQuery.Eventという
    W3C標準に準拠されたeventオブジェクトになっている。

    737 :

    >>735
    なつかしーなおい

    738 = :

    結局jquery使えば問題ないんだろ
    はい論破

    739 = :

    >>730
    原文読めアホ

    740 = :

    >>739
    言いたいことは分かるし原文に当たるほどの文章じゃないから。
    ディスりたいだけの頓馬乙

    741 = :

    親クラスのコンストラクタを呼び出すにはどうしたらいいですか?
    this.__proto__.constructor
    で呼べると思いますが、__proto__は使わない方がいいので悩みます

    742 = :

    >>741
    なんかのライブラリ使ってみた?
    そういうソースコード見ると役に立つよ。

    743 = :

    >>741
    this.__proto__.constructor.call(this);は無限再帰になるよ
    直接親のコンストラクタ関数をcallするのが手っ取り早い
    superはES6のclass構文が実装されるまで待とう

    744 = :

    >>730
    S級著者じゃないから悪文を書いてるという勘違いしてるあたり、技術書をほとんど読んだことない初心者でしょ?

    749 = :

    jQueryでさくっとかいて、
    それを冗長に書きなおすのって流行ってるな。

    jQueryをどうしても使えない会社は
    このやり方をするしか無いのかな。

    750 = :

    >>735
    > そして、attachEventで登録する関数にはeventオブジェクト引数がない。
    そんな事はない。
    attachEvent にはhandlerの第一引数にeventオブジェクトを渡す機能が実装されている。
    Event Interface が DOMと完全な互換性はないのでクロスブラウザの為のコードが必要だが。

    > その代わりにあるのがwindow.event。
    window.eventは厳密に言えば代替にはならない。
    グローバル空間でeventを拾っている為、負荷の高い処理をしてタイミングを違えると別のイベントを拾ってしまう。
    その為、可能な限り使用を控えるべきだし、window.eventを使用しなければ書けないコードは少ないはずだ(少なくとも私は思いつかない)。


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

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


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