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

私的良スレ書庫

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

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

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
152 : Name_Not - 2013/09/23(月) 14:57:24.00 ID:??? (+78,+29,-36)
>>149
その話がなんの話か具体的に言ってくれ
まさかJITがなんたらかんたらって勘違いしたネタじゃないだろうけど
153 : Name_Not - 2013/09/23(月) 15:15:22.00 ID:??? (-2,-30,-40)
var state = INIT;
if (already_init) state = PROC;

こういう時は別にいいよね?
154 : Name_Not - 2013/09/23(月) 15:29:27.87 ID:0ZAG49Mx (+42,+28,-43)
>>150
速い遅いのは無しなんかしていない。

>>152
再代入でぐぐったという証拠に
検索結果のトップ5つのタイトルを
ここにコピペしてくれ
155 : Name_Not - 2013/09/23(月) 15:35:00.90 ID:??? (+57,+29,-4)
何かを他人に伝える場合は自分の言葉ではっきりと伝えましょう
156 : Name_Not - 2013/09/23(月) 15:39:01.12 ID:??? (+64,+29,-5)
>>154
お前がぐぐった内容を盾に話がしたいならそれをここに張ればいい
157 : Name_Not - 2013/09/23(月) 15:40:07.31 ID:0ZAG49Mx (+0,+21,-15)
>>156
再代入の話をしたいだけだけど?
158 : Name_Not - 2013/09/23(月) 15:41:15.62 ID:??? (+57,+29,-4)
お前が主張したことをここ書けばいいよ
160 : Name_Not - 2013/09/23(月) 15:54:29.16 ID:??? (+26,-1,-50)
再代入でぐぐった記事やスライドにJavaScriptで再代入を使いたくない根本的に納得できる理由はなかったけど
161 : Name_Not - 2013/09/23(月) 15:57:34.71 ID:??? (+57,+29,-28)
ほんとにプログラム板から移民してきちゃったんだなあ
ここは質問用スレッドなんで、突っ込んだ議論をしたいならプログラム板に帰ってやってくれ
162 : Name_Not - 2013/09/23(月) 15:58:53.27 ID:??? (+29,+1,-19)
再代入が嫌なら関数型言語だけ使っとけば良いよ
163 : Name_Not - 2013/09/23(月) 17:22:55.72 ID:??? (+29,-30,-188)
同じnameのradioボタン5つに対してチェックが変わったらイベントを起こしたいのですが、

for (var i = 0; i < radio.length; i++) { //radio.length=5
 radio[i].addEventListener('click', func, false);
}

今こんな感じにしています。
lengthが大きくなるほど何かが間違ってる気がしてならないのですが、
こんなのでいいのでしょうか?
なんかもっといい書き方があったらどんな感じにするのか教えてください。
164 : Name_Not - 2013/09/23(月) 17:25:37.13 ID:??? (+32,-30,-36)
$.(document).on('click', "セレクタ", function(){func()}
165 : Name_Not - 2013/09/23(月) 20:25:23.30 ID:GLYpuDbM (-15,+29,-166)
どうもJSLintのサイトと同じような形式で
eclipseの問題ビューに一覧表示されるとばかり思ってたら、
各コード行の先頭に警告風のアイコンが表示されるっぽい。
アイコンにマウスを乗せるとツールチップで内容が表示される。
マニュアルと違う・・・というか見にくい・・・ツールチップ小さいし。
考えようによっては、わかりきったメッセージが繰り返し並ぶより
親切とも言えるんだろーか。

このプラグイン↓
http://www.htmlhifive.com/conts/web/view/tools/eclipse-jslint-plugin

とはいえ、ひとまず解決ということで
166 : Name_Not - 2013/09/23(月) 20:28:34.54 ID:??? (+125,+29,-49)
>>42の件についてですが、配列の連結を非破壊的/破壊的で計測したところ、
破壊的連結の方が圧倒的に速かったです
http://jsperf.com/concat-vs-apply-push1
オブジェクトの新規生成はそれほどコストが高いということでしょうか
ありがとうございました
167 : Name_Not - 2013/09/23(月) 20:41:09.69 ID:??? (+3,-30,-214)
以前prototype.constructorなんて使ってる人いるの?と書いた者ですが、
stackoverflowに以下のようなオブジェクトのcloneをするコードがありました

function clone(obj){
if(obj == null || typeof(obj) != 'object')
return obj;

var temp = obj.constructor(); // changed

for(var key in obj)
temp[key] = clone(obj[key]);
return temp;
}

obj.constructorで呼び出されるのってprototype.constructorですよね
つまり使われるが正解でした
ありがとうございました
168 : Name_Not - 2013/09/23(月) 20:54:30.00 ID:??? (+48,-30,-42)
>>166
concatさんの方は代入まで行ってるからそこまで遅いんだろ。

a.concat(b);
Array.prototype.push.apply(a, b);

処理内容だけを公平に比較するならこう。
169 : Name_Not - 2013/09/23(月) 21:00:03.87 ID:??? (+36,-30,-37)
function a(){
}

function b(){
}

function c(){
}

じゃだめなんですか?
thisとかconstructorとかapllyとか訳わかんないやつ使うメリットはなんですか?
170 : Name_Not - 2013/09/23(月) 21:06:05.02 ID:??? (+98,+29,-6)
>>168
最終的にaに連結した配列が入っていて欲しいのだから
それでは正確にはなりません
171 : Name_Not - 2013/09/23(月) 21:08:21.15 ID:??? (+62,+29,-2)
>>169
それで困らないプログラムを書いてるならそれでいい
172 : Name_Not - 2013/09/23(月) 21:11:49.53 ID:??? (+71,+29,-5)
>>170
> 破壊的連結の方が圧倒的に速かったです

この結論がおかしい。
173 : Name_Not - 2013/09/23(月) 21:17:28.73 ID:??? (+57,+29,-12)
目的ベースではなく処理単位ベースでの比較とすると
確かにおかしいかもしれませんが
現実的には有意味です
174 : Name_Not - 2013/09/23(月) 21:21:07.65 ID:??? (+40,+12,-5)
jsperf落ちてたと思ったら
全てのテストがふっとんだ?
175 : Name_Not - 2013/09/23(月) 21:21:18.37 ID:??? (+62,+29,-24)
> オブジェクトの新規生成はそれほどコストが高いということでしょうか

ベンチ内容と結論が全く結びついてないんだけどね
176 : Name_Not - 2013/09/23(月) 21:22:28.90 ID:??? (-1,-29,-4)
push.applyはスタックをクソ消費するからNG
177 : Name_Not - 2013/09/23(月) 21:24:53.07 ID:??? (+44,-28,-33)
>>175
concatではオブジェクトが新規作成されますよ
非破壊的メソッドとはそのようなものです
178 : Name_Not - 2013/09/23(月) 21:33:49.41 ID:??? (+113,+29,-61)
>>177
意味不明…。

> オブジェクトの新規生成はそれほどコストが高いということでしょうか

この結論は、>>166の比較で concat のコストが高い理由が、
まるでオブジェクトの新規生成のみが原因とでも言ってる様なんだけど。
公平な比較もできてないのに。
179 : Name_Not - 2013/09/23(月) 22:05:32.33 ID:??? (+78,+20,+0)
どなたかぁ~>>163お願いします
180 : Name_Not - 2013/09/23(月) 22:15:00.80 ID:??? (+82,+29,-134)
>>178
代入が遅いと思い込んでいるようですが、代入=名前へのバインドのコストなど、
オブジェクトの新規作成と比べたらごくごく微々たるものですよ
http://jsperf.com/dainyuu
このように代入が一つだろうが二つだろうが差はないのです
むろん差はありますが、ベンチマークの処理に飲み込まれてしまうほどその差は小さいのです
これが事実です
181 : Name_Not - 2013/09/23(月) 22:20:48.00 ID:??? (+95,+30,+0)
182 : Name_Not - 2013/09/23(月) 22:26:36.46 ID:??? (+73,+29,-51)
>>181
jQueryは使ったことないのですが、これはjQueryですよね?
具体的にセレクタって何をさせばいいんですか?
183 : Name_Not - 2013/09/23(月) 22:28:23.32 ID:??? (-2,-30,-25)
if ( ['a','b','c'].indexOf(a) < 0 ){}

このような命令をループの中で実行する場合、
ループのたびに配列は別に作成されるのでしょうか?
184 : Name_Not - 2013/09/23(月) 22:32:22.27 ID:??? (+56,-30,-31)
>>180
で、以下の 2つで比較しない訳は?

a.concat(b);
Array.prototype.push.apply(a, b);
185 : Name_Not - 2013/09/23(月) 22:36:03.14 ID:??? (+62,+29,-8)
>>184
面倒くさいからです
気になるなら比較してみたらどうですか?
186 : 184 - 2013/09/23(月) 22:44:15.57 ID:??? (+52,+29,-3)
いや、勘違いしてるのは俺の方だな。
187 : Name_Not - 2013/09/23(月) 23:09:37.26 ID:??? (+41,-29,-75)
>>182
<a>
<b>
</a>
だったら"a>b"がセレクタ
jqueryでああかいとけばわざわざradioをオブジェクトを入れなくてもいいし、radioを増やそうが減らそうがコードはあのままでおk
188 : Name_Not - 2013/09/23(月) 23:10:44.20 ID:??? (+55,+27,-2)
とにかくJavaScripterなら読むべき本をあるだけ教えて
189 : Name_Not - 2013/09/23(月) 23:14:24.82 ID:??? (+63,+29,-19)
>>187
おお!それはすごい
早速やってみます!
どうもご丁寧にありがとうございました
190 : Name_Not - 2013/09/23(月) 23:24:05.70 ID:??? (+5,-29,+0)
>>184
push.applyはスタック大食らいだからNG
http://code.google.com/p/v8/issues/detail?id=2896
191 : Name_Not - 2013/09/23(月) 23:25:19.24 ID:??? (-1,-29,-20)
オライリーJavaScript第六版
オライリーJavaScript Good Parts
オライリー ハイパフォーマンスJavaScript
オライリー メンテナブルJavaScript
192 : Name_Not - 2013/09/23(月) 23:27:28.37 ID:??? (-1,-29,+1)
O'Reilly以外には良本ないの!?
193 : Name_Not - 2013/09/23(月) 23:30:40.09 ID:??? (+156,+28,-21)
例えばこういう情報ってES5習得に必須だけど
オライリーの本には載ってるの?
http://constellation.hatenablog.com/entry/20101205/1291564928
194 : Name_Not - 2013/09/23(月) 23:34:13.69 ID:??? (+30,+2,-13)
JavaScript第六版に載ってるよ
195 : Name_Not - 2013/09/23(月) 23:40:35.12 ID:??? (+57,+29,-7)
いや、MDNレベルでしか乗ってなかったからあえて皮肉で言ってるんだけど……
196 : Name_Not - 2013/09/24(火) 00:10:12.24 ID:??? (+57,+29,-28)
俺はMDN読んでもいまいちよく分からんなぁと思ったけど、サイ本読んだら分かったけどね
そもそもさほどインパクトのある機能でもないと思う
197 : Name_Not - 2013/09/24(火) 00:14:53.99 ID:??? (+28,-29,-77)
esprima&escodegenで関数中のvarを集めて関数の頭に持ってくるスクリプトが形になりました
varの散在したコードが一瞬でスマートになってかなりいい感じです
ただesprimaはコメントを文法ツリーと分けたデータにしていて
文法ツリーの書き換えをした場合、コメントの位置情報を修正するのが困難です
コメントも文法ツリーに入れていてくれれば楽だったのに。
どうすればいいですか?
198 : Name_Not - 2013/09/24(火) 00:15:29.19 ID:??? (+57,+29,-39)
インパクトはないかもしれないがES5の数少ない機能の内の御三家だし、
ES5が下地になるES6やその先のためにも、この概念は中級者の必須項目として理解しておきたい
199 : Name_Not - 2013/09/24(火) 00:16:12.31 ID:??? (+64,+29,+0)
ES8ってなにもうそんな話がでてたよ
200 : Name_Not - 2013/09/24(火) 00:24:25.25 ID:9UbBiTed (+71,+29,+1)
>>193
いい加減宣伝やめてくれ。
うざいんだよ。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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