+ JavaScript の質問用スレッド vol.129 + [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-6のテンプレを読んだ上で質問してください。次スレは>>950が>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください
■規則/推奨ルール
・メール欄を空欄にし、名前にレス番を入れることを強く推奨(なりすまし防止)
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」だけでなく「意見」を出しても良い。
■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為(批判の代わりに「AよりBが良い」のような代案を出す事)
・回答者同士のレスは原則禁止(>>6を参照)
・ライブラリの話題の投稿(>>6を参照)
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/ いやね、実験するだけならそれで良いかもしれないけど
実用するなら対応してないブラウザのサポートをどうするのか?って
問題があるんだよ。だからそれを抽象化して対応してない
ブラウザにはエミュレートするような機能があるライブラリが必要なわけ 実際にはフラットケイジング処理でフレンジは皆無なんだけどね ポリフィルライブラリでエミュレートしなくちゃって言うのは、今回のようなパフォーマンス問題の場合には合わないかな
だって今回提案してる機能は、それを使う方が要件が楽に、スマートに実現できると言う物じゃなくて、確実に面倒にはなるけどパフォーマンスが良くなると言うものなのだから、
そもそもそれが同パフォーマンスで広環境向けにエミュレート出来るんなら最初からそっちを使えば良いと言うことになる
どちらかと言えばエンハンスメントかフォールバック式に考えた方が良い
まあただSABの場合はABの移譲として実装しても良いことも多いと思うよ >>890
var i=0;
var max=str.lengths; //124000回
var keyword="キーワード";
for(i=0;i<max;i=i+1)
hit(i);
}
function hit(i){
if(str[i].indexOf(keyword,0)!=-1){
// 特定の文字列が含まれているので置き換え
}
} 遅くなりました890です。
>>903
こちらの方法で改善できました。
ありがとうございます。 ワロタ
関数挟まない方が若干早くなるんじゃないか? 改善っていうかやり方すらわからなかったんだろうなぁ googleのコード短くするツール使うと
日本語が実体参照?数値参照?みたいなやつに置き換わるのですが
JavaScriptのコード中にそのまま日本語含めるのは好ましくないのでしょうか? >>911
単純にコードを短くするだけでなく、圧縮時のサイズ等も考慮されるため
圧縮しやすいように全角文字を変換し省くことで、圧縮性を高めています
日本語文字列の使用が好ましくないという事はありません 全角文字を省いたって数値参照?になるから
増やしてから減らしてるだけじゃん。意味ないよ 国際化しないのなら、日本語のコメント・文字列を書いてもよい
ただし、変数名などには、日本語を使うな。
誰も日本語でテストしていないから、バグるかも
国際化対応では、文字列に、ID_何々と付けておいて、
別のファイルで、IDと日本語文字列を対応させる おはようございます
>>912-915
レスありがとうございます
特別に何か不都合があってそうしてるわけではないということですね
これで安心できます プログラム板のスレが落ちて荒らしが移ってきたって言いたいんじゃない
元からどっちにも居着いてたと思うけど >>917
質問スレッドなのにスレルールも守れない人が書き込みしてる スレルール
> ・質問への「答え」だけでなく「意見」を出しても良い。 909です。
>>917
>>890 例えばこの主に対して
読解力が無いまたは技術がない。もしくは簡単ではないと判断したから以下のようなレスをする。
>>891
>>892
それに対して>>903はソース例を回答する。
主から連絡があり解決されるが、
回答もしてない人達がケチをつけはじめる。
回答しているなら意見として良いことだと思うが今回はソース例を出したのが1名だけ。
はたからみるとスレを劣化させる悪質な人達だと思ってしまうといった葉梨です。
917さんと919さんはどう思われますか? >>921
12400回ループを回すと重いどうにかならん?って質問に
12400回ループを回すコードを差し出してんだから
ネタじゃん そう?
俺は単純な判定に大袈裟な正規表現を使ってたり、
ループ内の処理に問題があったのならあの回答も良いものだと思ったけど
あと日本語変数は全く問題ないよ 何れにせよ主から解決された書き込みがあったのだから正解を導いたレスが正義なんだよな
俺も次回からはコードなり例なり出すようにしようかな 重いって言ってるんだから重いコードを出すか具体的にどう書いたのが書くべき
書かないなら ■禁止行為である「丸投げ質問」
正義を振りかざすな
質問者にとって正義かどうかとスレにとって正義かどうかは別だ わりとマジで書いたコード見せてくれるのが一番早いよなあ
書く方もJSを日本語に変換する手間もないし
脳内のJS→日本語インタプリタってよくバグるし
jsfeddleとかに貼ってくれるだけで十分なんだけどなあ 919だけど
>>921
以下の書き込みは一言余分な箇所がありスレの禁止行為に該当するとは思う。
>>905
>>906 禁止行為に該当したらなんだって言うんだ?
現在進行形で明らかに同一人物が荒らしを続けてるならまだしも 921です。
>>929
スレのルールを無視して荒らすような連中はスルーで良いんじゃないの?ワッチョイもなければIDも非表示のスレなんだし・・
そのへんは929さんはどう思う? _あいう__かき____さ__AB___
などの文字列1行があります。
_は全角スペースまたはアンダーバーで数不特定。混在の可能性あり。
よって行の長さも不特定。(30文字までなど制限は加納)
_で始まるとは限らず文字列で始まる場合や文字列で終わる場合もあり。
これを文字列はそのままで左右入替するにはどうしたらいいでしょうか?
___AB__さ____かき__あいう_ 正規表現で全角のスペースorアンダーバーかそれ以外の単位で分けて配列に入れる
ひっくり返す >>934
"_あいう__かき____さ__AB___ ".match(/[ _]+|[^ _]+/g).reverse().join('')
こうか jQueryで簡単にできなかったら
jQueryは正規表現置換もできない
クソライブラリってことだ jQueryはDOMライブラリだからという言い訳はするなよ
jQueryはどんなことにでも使える汎用ライブラリだって聞いた jQueryは何にでも使えるライブラリである(俺の定義)
もし何にでも使えると主張するライブラリが
それを満たさなければクソライブラリである(俺の定義)
故に俺の定義によればjQueryはクソライブラリである
反論したいなら、俺の定義が間違っていることを客観的に
指摘している情報をもってこいな >>937
[ _]と[^ _]をsplitで別の配列に入れてそれぞれreverseしてました
もっと簡単に書ける方法があるはずと感じながら・・・感謝です。 おいぃぃぃぃ!今の流れはjQueryを
馬鹿にする流れだろおよおぉぉ!! jQuery原理主義者はSOHOスレに誘導させない方向で頼む 誰もいかないだろw
そんな負け組が集まってるようなスレ jquery原理主義者なんているんだ。jqueryってそんなにいいものなの?
正直つまみ食い的な使いかたしかしてないけど
DOMを直接操作するのと何が違うのかよくわかんない。 React使わされるくらいならjQuery原理主義と謗られても構わん!
と思うくらいにはjQuery好きかも・・・ JavaScriptがデフォルトで遅延評価になる日は来ますか?
現状配列をmapしてfilterして…みたいな使い方だとループを2度回すことになり無駄が多いのが不満です 遅延評価って過程を事前にコンパイルしてできるだけ実行時の過程の処理を省略できるから意味がある訳で
スクリプト言語で実行時にそれをやっても良くはならないよ >>953
そうなんですね
素直にfor文使います
ありがとうございました >>950
> DOMを直接操作するのと何が違うのかよくわかんない。
できることが同じなら短いほうが良いでしょ?
それは可読性やバグ混入率にもつながる
jQueryを使わないで書く方法を見ればわかる。
どれもjQueryの方が短くなってるからw jQuery原理主義者はいるぞ。
否定されるとゴキブリのごとくほいほいわいてくるw jQueryはajaxを簡易に使うためくらいにしか使わないな
素のJavaScriptで全部できるし、jQuery使うと無駄に動作が遅くなる >>960
だからメリットがわからないんじゃね?
jQueryは3.0でSlim版っていうのができたが
これはAjax部分を取り除いたもの。
jQuey的にはAjaxはおまけ部分でしか無く
それだけしかお前が使っていないというならば
jQueryを分かってない人がjQueryを批判している図式にしかならないよ Ajaxも素のJavaScriptでできると思いますがねぇ >>955
コードが短くなるって利点は
typeScript使いの俺にはあんまり響かないなぁ
IDEで補完しまくるからそもそもほとんど打ち込まずに構築できるし。
なら極力使わないでいいかなと。
正直reactと言うよりreduxがしんどくなってきてelmに逃げたくなる自分がいる
仕事があるんかなw それってTypeScriptを使ってないとだめだよね? つまりtypeScriptを導入してないひとには
jQueryはメリットがあるってわけだな なんで抽象化の話が出てくるのかわからない。
関係ないだろ? いや、関係あるというのなら
どういう風に関係あるのかを説明してくれれば良いんだが >>961
単にajaxだけは素のJavaScriptだとコード量の差が大きいから、その部分だけ簡易にしたいだけで、
他は素のJavaScriptで全然いいやってだけなんだが
jQueryの良さを分かってないというか、別にajaxもjQuery使わずに実装できるし、なくても困らない
なんだフルにjQuery使う実装に固執しないとだめなんだ jQuery原理主義ってなんだ?
jQuery至上主義ならわかるが >>969
現代日本語での「原理主義」は
ファンダメンタリズムのことではなくただのレッテル貼りに使われる蔑称なので
特に意味は気にしなくていいんだよ >>968
> なんだフルにjQuery使う実装に固執しないとだめなんだ
逆だろ? jQueryを使わないことに固執してるだろ?
理由があってjQueryを使わないわけではなく
jQueryを使わないことが目的になってる
jQueryがDOMよりも使いやすい命令を提供しているのは事実。
それは昔も今も変わってない。
あとはjQueryを使うか、他のフレームワークを使うか
素のDOM APIだけで頑張るかはトレードオフの問題であって
使う理由がなくなったわけじゃないんだよ。
jQueryからDOM APIの置き換えは簡単なんだから
必要になるまではjQueryを使えばいいだろ
その方が簡単に記述できるんだから <!--reactみたいなコメントがずらーっと挿入されてるのはreactなの? >>971
文盲?頭が悪いんだろうな
jQueryの利点や使いやすい部分は理解しているが、JavaScriptでそれは普通にできてるしjQueryかますと当たり前だけど素より重くなるから使わないって選択肢なんだが
なんでわざわざ自分にとってデメリットになる方法を使わないといけないんだ
メリットあるとこだけ使えばいいだけで、
DOM操作だって、処理さえ理解していれば結局やってる事は同じだろう
DOM扱うのにjQueryが必須とか考えてるんだったら、それはjQueryに振り回されてるバカだ > JavaScriptでそれは普通にできてるし
そりゃjQueryもJavaScriptなんだから
できるできない、可能不可能の話なら可能に決まってるだろw
そんなこと始めっからわかりきってるんだよw
で、お前、jQueryのメリット書けないの?
やっぱり分かってないじゃん。
あぁ、あれだ。お前、歩いていくのも自動車で行くのも
どっちも目的地にたどり着けるから同じだって
考えてるやつだw jqueryってもともとブラウザ間の互換性確保のためのものなんでしょ?
今でも互換性がないDOM操作ってあるの? >>975
今でもIE8からEdgeまでがメンテ対象なんですよ。 ふふふ
いっそ殺してくれとも思いますよ、ええ > jqueryってもともとブラウザ間の互換性確保のためのものなんでしょ?
違う。jQueryのメリットはそこじゃない。
だからさ、自分で間違って理解しておいて
その間違った自分の理解が間違ってるって
まるで自分で自分の間違いを指摘するような行為ってなんなの? jQueryのメリットは、
脱jQueryの記事みればわかるよ。
jQueryを使わないことで
コードが2〜3倍に膨れ上がってる jQueryは簡潔に短いコードを書くことを目的としてるんでしょ
開発者によって面倒だったりポリシーであえてレガシーサポート切ったり様々だけど
ブラウザ間の差を吸収するってのはユーザビリティを過度に考慮した開発者の嗜みみたいなもんだ
つまりクロスプラットフォームなんてのはJavaScriptライブラリ全般に言えるっちゅうこと
んまあいくら簡潔っていってもメソッドチェーン多用しすぎ自由度高すぎで
人様の書いたjQueryのコードはあんま読みたくない > メソッドチェーン多用しすぎ
それは疑問がある。
メソッドチェーンができることは正しいがメソッドチェーンを多用することはないだろう?
それはjQueryの使い方を知らないだけではないか?
例えば、メソッドチェーンを使わずに3つのCSSプロパティを適用できる
http://js.studio-kingdom.com/jquery/css/css
$('div').css({
'background-color' : '#ddd',
'font-weight' : '',
'color' : 'rgb(0,40,244)'
});
例えば、メソッドチェーンを使わずに3つのイベントを適用できる
http://js.studio-kingdom.com/jquery/events/on
$("div.test").on({
click: function(){
//クリック処理
$(this).toggleClass("active");
},
mouseenter: function(){
//マウスが要素上に入った時の処理
$(this).addClass("inside");
},
mouseleave: function(){
//マウスが要素上から離れた時の処理
$(this).removeClass("inside");
}
}); 例えばDOM要素を生成する時にメソッドチェーンを使わずに
一気に属性やテキストやイベントを指定できる。
http://api.jquery.com/jquery/#jQuery-html-attributes
$( "<div/>", {
"class": "test",
text: "Click me!",
click: function() {
$( this ).toggleClass( "test" );
}
})
.appendTo( "body" ); 俺も気持ち悪いというか、プログラマ向けではないなと感じるな
classとtext子要素とイベントリスナを同列に扱っているとことか
そこはオプションオブジェクトにattributesやeventListenersと言ったオブジェクトを
生やしてそちらに付与させるのが自然
thisの勝手気ままな使い方も合わせてjQueryはjQueryだから許されてるけど、
設計も使用例も原則真似するのは良くないことだらけ
こりゃjQueryから入っちゃうとJSの学習を阻害するのは間違いないな
その必要のない、JSプログラマにならない人にとっては、とても有益だけどな 気持ち悪いというかDOM自体がこういう同列の書き方だからそれに倣ってるだけだろ jQueryはプログラムしてるというよりは設定してるみたいな感じだからね こういう流れになるからライブラリは他所でやれってテンプレに入ってたのに
いつの間にか消えてんな あーなるほど、DOMと一緒じゃんと考えるわけね
でも俺にとっては全然違うのよ
そもそもon〜は使わずaddを使うとかいうのもあるけど、それより先に
属性設定のアレはただのプロパティでなく特別なアクセサだからね?
もっと言えば継承元も違うしんだよ
そしてclassがclassNameのように属性と一対一で名前が対応しているわけでもない
じゃあjQの実装はどうかと言うと、classと指定できるから
汎用的に属性名を受け付けるために内部的にsetAttributeを使ってるのかなと思う。
もしそこまでならむしろ気持ちがいい良いAPIだが、実際は違う
要素のアクセサをそのまま利用しているわけでも無く、setAttributeをそのまま利用しているわけでもない
独自ルールに基いて内部的に特殊な場合分けをして要素に適応させてる
これは全然自然じゃないのよ、途轍もなく人工物の匂いが立ち込めてる
よって気持ちが悪いと言ったの これは勿論悪いことばかりだけじゃないんだけどね、
大抵のライブラリって実装が透けて見えると言うか、
ピュアJSやWebAPIとの馴染みがあるように設計するのよ
驚き最小と言うか、大胆な事はあまりしない
でもjQの場合別の言語かってくらい常識感覚が違うのよね
実はAngular並かそれ以上の超俺俺大規模フレームワークなのよ、本当は
それがデファクトのように扱われて、JSの代名詞になって、代名詞がJSとなってる自体はやはり良くないと思う
先の件でもDOMのこと全然理解してない人多そうだしねぇ あれだよね、DOMも並列とか、一緒くただとか、
もう完全に見た目でしかコードを見ていないよね
語弊を避けるために強調するがm悪いと言っているのではなく
これがデザイナー的発想なのかもしれない
でもプログラマだと内部構造や実体もかなり意識するからね
そういう違いなのかもしれない
俺は上でポリフィル云々という論を述べたけど
そもそもそういうこと考えてjQを使う人も稀なんだろうね
きっと、まずjQがあって、殆どそこから始まる感じなんだろうね >>979
使用量が増えれば増えるだけ実高速度がネイティブより遅くなる
これが正解 >>962
必要な箇所だけ呼び出せるようにすれば無駄な読み込みがなくなって速いよ jqueryはtriggerとonで内部イベント作れる所とか結構好き。 確かにネイティブが最速でjQueryは遅いになるわな クロスブラウザ問題も切り捨て時期に入りversion1の使う理由がなくる。
うちの会社では年内でjQueryをきることが決まったぞ。
遅いし無駄だし何よりもコードが気持ちが悪い 確かversion2と3合わせても使用率が全体の1割りもないんだよな アフィカス必須ツールのjQueryはWordPressの波にのった金魚の糞なんだが・・ JavaScriptのスレだからスレチになるのかなと次スレはワッチョイ希望です。 気持ち悪いコードを書くjQuery原理主義者は淘汰されますようにw レス数が1000を超えています。これ以上書き込みはできません。