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

    私的良スレ書庫

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

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

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    252 : Name_Not - 2014/02/09(日) 10:46:33.37 ID:??? (+12,+29,-55)
    >>250
    グローバル変数は使うな。
    コードが無駄に複雑になるというか
    使う必要がある時点で複雑な証拠でもある。

    そのコードが問題かどうかという以前に
    そういうコードが必要になってしまっているのが問題。
    253 : Name_Not - 2014/02/09(日) 12:24:47.22 ID:??? (+17,-30,-234)
    var str0 = new String('foo');
    var name = new String('foo');
    alert(str0 instanceof String); // true
    alert("str0=" + str0 instanceof String);//false★1
    alert(name instanceof String); //★2

    質問します
    ★1で何故trueでなくfalseになるのは何故なのでしょうか?
    (IE11とクローム(32.0.1700.107 m)で試したところfalseでした。)
    ★2の結果は、
    IE11はtrue、クローム32.0.1700.107 mではfalseでした。
    何故ブラウザで動作が違うのでしょうか?
    教えてください。
    254 : Name_Not - 2014/02/09(日) 15:41:21.64 ID:??? (+8,-30,-42)
    >>253
    "str0=" + str0 はObject型ではないから。
    name instanceof String === false は Google Chrome のバグとしか思えない。
    256 : 254 - 2014/02/09(日) 16:56:48.32 ID:??? (+3,-30,-64)
    >>255
    ありがとう、そういうことか。
    グローバルスコープでテストしたのかいけなかったのね。

    (function () {
    var name = new String('foo');
    console.log(name instanceof String); // true
    }());
    257 : 253 - 2014/02/09(日) 17:42:33.96 ID:??? (+3,-30,-91)
    var str0 = new String('foo');
    var name = new String('foo');

    alert(typeof str0);//object
    alert(typeof name);//★1
    ★1はIE11はobject、クローム32.0.1700.107 mではstringでした。
    クロームではnameがstring型になるのが原因ということですか。
    258 : Name_Not - 2014/02/10(月) 03:10:27.66 ID:??? (+67,+29,-34)
    >>241
    この件ですが、これもText URL Linkerというエクステンションのせいでした・・
    開発時はエクステンションを外せばいいですが
    エクステンションを入れている環境にどう対応すべきか、
    と考えると難しい問題です・・
    259 : Name_Not - 2014/02/10(月) 03:55:46.54 ID:??? (+55,+29,-13)
    オートリンク系エクステンションって定期的にHTML全体をパースしてるんだよな
    結構処理が重そう
    261 : Name_Not - 2014/02/10(月) 07:57:04.94 ID:??? (+3,-29,-22)
    そういや最近は背景色とかの指定までjqでやるキチガイ多いよな。CSSでやれよ。
    262 : Name_Not - 2014/02/10(月) 08:21:25.43 ID:??? (+46,+23,-4)
    動的に変更できるのがいいのでは?
    263 : Name_Not - 2014/02/10(月) 10:40:35.91 ID:??? (-1,-29,-5)
    selectionやrangeについて詳しく書いているJavaScriptの本があれば教えて下さい
    264 : Name_Not - 2014/02/10(月) 11:12:25.81 ID:??? (+13,-30,-79)
    >>261
    ほらもっと短くなった。

    $(function() {
     $(document).on('click', 'img', function(event) {
       $('#id1').removeClass('hoge');
     });
    });
    265 : 231 - 2014/02/10(月) 13:07:08.02 ID:??? (+57,+29,-62)
    えー遅くなりましたが、要するに現状矩形編集をする方法は事実上ない、ということでよろしいのでしょうか
    あまりニーズがないのでしょうかね? あると地味に便利なのですが
    266 : Name_Not - 2014/02/10(月) 17:17:56.55 ID:??? (-17,-29,-24)
    >>264
    これ、onclick が呼ばれる度に
    セレクタ生成処理が発生しますよね?
    違うのかな
    267 : Name_Not - 2014/02/10(月) 21:30:06.92 ID:??? (+60,+29,-94)
    それでなにか深刻な問題が?
    jQuery使っておいてパフォーマンスが~とか言わないでよね

    そもそもグローバルでもなんでもいいから
    そんなことで一々質問すな

    最近どうでもいいことに病的に凝るやつ大杉
    Chrome君とテキスト君はいい加減迷惑
    268 : Name_Not - 2014/02/10(月) 22:33:02.76 ID:??? (+62,+29,-20)
    >>266
    コードを長くする「すごく大きなデメリット」と比較しろって話。
    269 : Name_Not - 2014/02/10(月) 23:18:30.90 ID:??? (+57,+29,-39)
    クリック処理はクリックした時だけしか発生しないから少しくらいパフォーマンス悪くても問題ない
    タイミング的にシビアな処理、
    ユーザーを待たせるバッチ的な処理ではチューンすべきだけど
    270 : Name_Not - 2014/02/10(月) 23:21:55.65 ID:??? (+63,-30,-129)
    >>266
    パフォーマンスを気にするなら

    event.target.ownerDocumtent.getElementById('IdName')

    とするけどね。
    そもそも、キャッシュするにしてもグローバル変数にキャッシュするのはない。
    ローカルスコープに閉じ込めればいいのに、なぜ最も遅いグローバルスコープにするのか。
    271 : Name_Not - 2014/02/10(月) 23:28:43.90 ID:??? (+57,+29,-68)
    キャッシュは色んなところからアクセスするんだからグローバルで問題ない
    ローカルにキャッシュすることもあるけど、したいのはそういうことじゃないだろう
    272 : Name_Not - 2014/02/10(月) 23:58:15.28 ID:??? (+3,-29,-177)
    キャッシュするためにグローバルしているわけだよね。
    そのグローバルってだけでデメリット。

    安易なキャッシュはコードを複雑化させるだけだからやめた方がいい。
    本当にそれをやる価値があるかどうかを見極めてからやるべき。

    それに、キャッシュっていうのは合ってもなくても同じように動くのが理想。
    $('#id')をclickイベントが起きてから取得するのと、clickイベントが発生する前に
    取得しておくのとでは動きが違っている。
    一般的な使い方を考えると、clickイベントが起きてから取得するべきだろう。
    274 : Name_Not - 2014/02/11(火) 00:26:44.80 ID:??? (+3,-30,-113)
    JSでクラス・メソッドのネスト化ってどうやんの?
    function func1(){
    func1.prototype.func2 %3d function func2(){
    func2.prototype.func3 %3d function func3(){

    }
    }
    }

    がエラーになるんだが
    共通ライブラリとかまとめたいんだよな
    275 : Name_Not - 2014/02/11(火) 01:44:01.35 ID:??? (+12,+29,-127)
    >>273
    お前のほうがグローバル変数をわかってないんじゃね?

    どこからでもアクセスできるのが、いけないんじゃないんだよ。
    どこからアクセスされてるかわからないのが、いけないんだよ。

    名前空間に入れておけば、少なくともその名前空間を利用していないものは
    アクセスしないだろうってことが予想できる。
    これが大差ないわけがないだろ。

    privateという概念がない言語もあるが、そういう言語でも
    _をつけることでprivateを意味するという慣習があることが多い。
    これは実質publicなのだが、外部からアクセスされないということに
    なってることが大きな意味を持っている。
    276 : 270 - 2014/02/11(火) 02:15:42.76 ID:??? (+12,+29,-182)
    >>273
    > グローバルというだけで教条的に忌避するのはC級プログラマ
    この場合、画一的にグローバルを避けているわけじゃない。
    パフォーマンスを気にする人がグローバル変数にキャッシュするのは明らかに目的に合致してない。
    スコープの浅い場所にキャッシュする方が明らかにパフォーマンス上有利。
    プロパティアクセス演算子を複数回使うのもパフォーマンス上不利になる。
    277 : Name_Not - 2014/02/11(火) 02:37:02.03 ID:??? (+63,+29,-182)
    >>275
    >>273ではないけど「本質的にはグローバルと大差ない」を意訳すると多分こういうことだと思う。

    「プロパティアクセス演算子による擬似名前空間」はコーディング規約によって制限を加えているのであって完全に参照を阻止しているわけじゃない。
    関数スコープに変数を閉じ込める手法なら原理的に参照を阻止しているわけだから、プロパティアクセス演算子による擬似名前空間よりも明らかに安全性は上となる。
    278 : Name_Not - 2014/02/11(火) 08:05:30.64 ID:??? (+12,+29,-113)
    >>276
    スコープが浅くてもそこまで辿るのに一旦そのコンテキスト上の最上位空間まで上がる必要がある
    hoge.hoge.cacheにキャッシュを持たせたら
    最上位空間からhogeを探す→hogeを探す→cacheを探す
    となる
    最上位空間に持たせた場合は
    最上位空間からcacheを探す
    となる。
    キャッシュという性質上グローバルアクセスが出来ないと意味がないのだから
    「グローバル変数にキャッシュするのがおかしい」という言説は頓珍漢
    279 : Name_Not - 2014/02/11(火) 08:09:38.98 ID:??? (+57,+29,-97)
    アクセス速度で言えば一番速いのがローカル変数
    次に速いのがグローバル変数
    スコープチェーンは上位から辿って行くのだから
    非グローバル変数へのアクセスでもグローバル空間の探査は行なわれる
    280 : Name_Not - 2014/02/11(火) 08:14:13.25 ID:??? (+57,+29,-29)
    でもクロージャの場合はどうなるんかな?
    一つ外のクロージャへのアクセスとグローバルアクセスはどっちが速いだろう
    281 : Name_Not - 2014/02/11(火) 08:17:03.22 ID:??? (+57,+29,-54)
    いずれにしろ、
    キャッシュで浮かせるコスト >>>>>>>> スコープチェーン走査コスト
    なのでキャッシュなのにグローバル変数云々はおかしいけど
    282 : Name_Not - 2014/02/11(火) 08:32:11.52 ID:??? (+57,+29,-21)
    http://jsperf.com/closure-vs-global-variable
    クロージャの方が速いね
    てか、クロージャの性格を考えたら当たり前かw
    283 : Name_Not - 2014/02/11(火) 10:05:06.26 ID:??? (+2,-29,-47)
    DOMについてですが、
    childNodesを持ち、なおかつdataも持つような要素って存在しますか?
    284 : Name_Not - 2014/02/11(火) 11:00:14.89 ID:??? (+96,+30,-87)
    まったく、その些細な速度の違いを
    あーだーこーだいうのをやめろって言ってんだよ。

    そんな1ミリ秒も差がでないようなことのために
    コードを複雑にするなよ。

    複雑なコードというのは開発している間
    ずっと違いを感じることになるんだぞ?
    285 : Name_Not - 2014/02/11(火) 11:23:39.98 ID:??? (-1,-29,-11)
    windows8のアプリはJavaScriptで開発できるのは非常に便利
    286 : Name_Not - 2014/02/11(火) 11:38:33.46 ID:??? (+104,+29,-21)
    >>284
    そうやって過度の一般化をするのはC級プログラマ
    そもそもキャッシュは対して複雑でもない
    287 : Name_Not - 2014/02/11(火) 13:30:23.00 ID:??? (-1,-29,-5)
    >>283
    HTMLObjectElementとか?
    288 : Name_Not - 2014/02/11(火) 13:43:57.58 ID:??? (+71,+29,-29)
    >>286
    キャッシュが複雑だって話しなんかしてねーよ。
    意味が無いことするなって話だ。

    お前のほうが一般化しなくていいぞ。
    この場合は意味が無いって話をしてるんだから。

    本当にあほだな。
    289 : Name_Not - 2014/02/11(火) 14:10:59.99 ID:??? (-1,-29,-6)
    When in doubt, use brute-force.
    293 : Name_Not - 2014/02/11(火) 16:40:34.31 ID:??? (+63,+30,-101)
    一般的にキャッシュなんて言うものはベンチマークをしてからやるもの。

    キャッシュのためにコードを増やすのはちょっとの事に
    見えるかもしれないが見通しが悪くなる。あとから
    修正する必要がでたとき余計なコードがあると面倒になる。

    一行、二行コードが増えることが問題じゃない
    メンテナンス性が落ちるということが問題。

    だから、キャッシュしたほうが早くね?なんか良くね?なんて
    程度の考えなら、やらないほうが何倍も良い。
    294 : Name_Not - 2014/02/11(火) 16:58:58.33 ID:??? (+20,-7,-15)
    Jqueryで出来ることは生のJavaScriptで出来る。
    295 : Name_Not - 2014/02/11(火) 17:15:34.63 ID:??? (+57,+29,-30)
    うん。効率が違うだけ。

    それはJavaScriptでやれることは
    C言語でもアセンブラでもやれると言ってるようなもの。
    重要なのは、できるかどうかではなく効率。
    296 : Name_Not - 2014/02/11(火) 17:19:07.76 ID:??? (+57,+29,-6)
    自転車で行ける所は、歩いてでも行ける!
    日本横断。
    297 : Name_Not - 2014/02/11(火) 17:23:23.50 ID:??? (+57,+29,-21)
    枠組みを自分で作ればいい。世界でたった一つフレームワークさ。クロスブラウザで。
    298 : Name_Not - 2014/02/11(火) 17:24:53.97 ID:??? (+52,+29,-2)
    機械語からやればいいじゃん
    299 : Name_Not - 2014/02/11(火) 18:42:17.44 ID:??? (+55,+29,-33)
    デタラメな知識を押し付けようとするキチガイに注意
    よく使い回すDOMは変数に入れておいた方がいいし一般的にそうする
    >>260 のように書いておけばいい
    300 : 270 - 2014/02/11(火) 18:42:33.81 ID:??? (+63,+30,+0)
    >>292
    質問者がパフォーマンスを気にしているようだったので>>291を推奨しただけで、キャッシュしないならそれでいいと思う。
    原理的にはキャッシュすることで速くなるはずだからキャッシュが無意味には同意できないが。
    付け加えるなら jQuery(function($) { は不要。
    jQuery(function($) { はキャッシュする為に書いたのであってキャッシュしないのなら DOMContentLoaded を待つ必要はない。

    キャッシュの必要性は質問者が判断する事なので口を挟むつもりはないが、そこまで細かなパフォーマンス差を気にするようならグローバル変数を避けるべきだし、ネイティブ実装の関数を使うべきだとは思った。
    拘るなら徹底的に拘れといいたい。
    「何となく」という理由でパフォーマンス差が気になるようなら大した差はないから気にするな、ってのは同意。
    せいぜい同じ関数内で同じ要素を二度呼ぶ場合にローカル変数に格納するといいぐらいか。
    というか、パフォーマンスが気になるなら質問者が自分でベンチマークをとるべきなんだよな。
    自分にとって有意な差があるかを確かめる確かな手段が用意されているんだから、もっと積極的にテストしてもらいたい。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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