元スレ+ JavaScript の質問用スレッド vol.128 +
JavaScript覧 / PC版 /みんなの評価 :
1 = :
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。次スレは>>950が>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください
■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合はhttp://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の話題は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
3 = :
■FAQ
http://fiddle.jshell.net/vSqKr/44/show/light/
◆開発者ツール(Developer Tools)の基本的な使い方 (全部はhttp://fiddle.jshell.net/vSqKr/44/show/light/#Browser-Developer-Tools )
▼諸注意
- 本説明では Google Chrome の開発者ツールの名称に従います。他ブラウザで使う場合は適宜読み替えて下さい。
- IE9- でコンソールを使うには予め開発者ツールを起動しておく必要があります(開発者ツールを起動しないと console.log() が機能しません)
- Safari はデフォルトで開発者ツールが無効な為、有効に設定する必要があります。
http://developer.apple.com/library/safari/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/GettingStarted/GettingStarted.html
▼要素を検証
1. ページ上で右クリックして [要素を検証]
2. [Elements] パネルが開き、対象のDOMノードが選択される(選択対象が目的の要素でなければ [Elements] パネル上で選択し直す)
3. 右側のサイドバーから知りたいステータス名のタブを選択する
- [Styles] タブ … CSSプロパティの指定値を表示 (※カスケードによって上書きされたプロパティは取り消し線で表示される)
- [Computed] タブ … CSSプロパティの算出値を表示("font-size: 1em" を指定していても算出後の "*px" で表示される)
- [Properties] タブ … 選択したDOMノードのプロパティを表示
▼コンソール
1. JavaScript コード上で console.log('Hello, World!'); と入力
2. [Ctrl] + [Shift] + [I] キー(IE は [F12])で開発者ツールを開き、[Console] パネルを開く
3. [Console] パネルに "Hello, World!" と表示される
(※window.alert() は String 型に変換されますが、console.log() は Object 型の中身をそのまま表示してくれます。)
4 = :
■FAQ(続き)
◆JavaScriptの実行速度
JavaScriptの速度は「ブラウザ名」「ブラウザのバージョン」「PCスペック」に依存します(ブラウザのバージョン毎に最適化具合が異なります)。
速度の疑問解消の為にhttp://jsperf.com/ にコードをUPしてブラウザ毎に速度計測する事を推奨します。
例外として、仕様における理論上の速度が明確になっている場合があります。
例えば、正規表現によるマッチング処理を考えた場合、「RegExp#test > RegExp#exec > String#match」は ES5 仕様で保証されています。
ES5 仕様において RegExp#test が最も処理数が少なく、String#match が最も処理数が多いことが明確だからです。
ブラウザによっては RegExp#test の最適化が十分でなく、String#match の最適化が RegExp#test より十分であれば逆転する可能性はありますが、各メソッドの最適化が一律であればこの前提が崩れる事はありません。
■各種仕様 (http://fiddle.jshell.net/vSqKr/44/show/light/#Link も参照 )
◆ Standard ECMA-262
http://bclary.com/2004/11/07/ (ECMAScript 3 HTML版)
http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/ (ECMAScript 3 和訳)
http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
http://tsofthome.appspot.com/ecmascript.html (ECMAScript 5.1 和訳)
http://www.ecma-international.org/ecma-262/6.0/ (ECMAScript 6 / ECMAScript 2015)
http://kangax.github.io/compat-table/es5/ (ECMAScript 5 compatibility table)
http://kangax.github.io/compat-table/es6/ (ECMAScript 6 compatibility table)
◆ HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/
http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20130528/Overview.html (HTML5.1 部分訳)
http://www.hcn.zaq.ne.jp/___/WEB/WebStorage-ja.html (Web Storage 和訳)
7 = :
以上でテンプレ終わりです
8 = :
>>1-7
乙
10 = :
ライブラリ禁止なのになぜ>>6があるんだ?
11 = :
>>6はhttp://fiddle.jshell.net/fH4cC/174/show/にもないから勝手に付け足されたようだね
12 = :
ライブラリ禁止だからこそあるんでしょ。
ライブラリの仕様・用法についてはそっちを見て下さいということで。
13 = :
そういうのはライブラリスレに誘導すれば解決する問題でしょ
ここにライブラリのリンクがあると許可されたと勘違いしたライブラリ質問が絶対に来るよ
まあ、ライブラリスレが今は落ちてるから立て直さないといけないという問題はあるけど
14 = :
>>ここにライブラリのリンクがあると許可されたと勘違いしたライブラリ質問が絶対に来るよ
あろうがなかろうが奴は来る。悪意を持ってるから。
15 = :
このスレたったタイミングで129とか建ってるしなw
どんだけ暇人なんだよ・・・
16 = :
>>5の注意書きと>>6が別になってるから>>6がライブラリ禁止の意味になってない
禁止なんだから>>6なんて要らんしバッサリ切っていいと思う
17 = :
彼が来るのは必然として勘違い質問ぐらいは防ごうよという話
>>6が必要な理由が特にない
18 = :
>>17
言ってることがおかしい。手段と目的が逆になってる。
目的は荒らしを防ぐためであって、ライブラリ禁止というのはあくまでその建前。
別にライブラリが大嫌いなコミュではないし、ピュアスクリプト信者の集いでもない。
別に勘違いして来る人を排除することを考える必要性なんてこれっぽっちも無いし、
仮にライブラリがいくらか関係するような質問と解答のやり取りが生まれても、
それを鬼の首を取ったように騒ぎ立てる必要性もない。
過剰な反応は誰に取ってもプラスにはならないよ。
書いてある通りに縛られるのではなく、その意味を汲んで臨機応変に対応するべき。
19 = :
6追加したのは129立てたヴァカだろ
時間見りゃわかる
擁護してるやつは無駄なことしなくていい
ただの悪意で深い意味なんてないから
ただスルーするのみ
20 = :
>>18
本当にそういう理由ならライブラリ質問全体を禁止する必要はない
「荒らしはスルー」と一言添えるだけでいい
ライブラリ質問は彼の宗教じみた回答を寄せ付けるから禁止されたんだよ
勘違い質問が彼を呼び寄せるならそれも防ぐべきでしょ
21 = :
あわよくばまたテンプレ乗っ取ろうとしたけど間に合わなかったのかね
今んとこ>>12以外は>>6不要で一致してるしこのままスルーでいいんじゃない
そもそも荒らしが紛れ込ましたノイズの必要性を議論するのがおかしい
22 = :
>>20
そう、「荒らしはスルー」に限るし、別にライブラリのリンク貼られたくらいで騒ぎ立てることもない。
理屈なくライブラリということそのものに反応するようになったらオシマイ。
23 = :
前スレ>>997
開発者ツールは長時間使用に耐えられないようです…
>>998
個別実装について聞けと言うのは確かにその通りだと思いますので、
別のスレで聞いてみます
ありがとうございました
24 = :
>開発者ツールは長時間使用に耐えられない
まずはいいパソコンでも買おうか
25 = :
>>23
は?メモリ調べたいだけならPerformanceAPI使えばいいじゃん
26 = :
>>21
そうするよ、ありがとう
28 = :
var test = new ArrayBuffer(1024*1024*1024)とかだとでかいだろ
29 = :
>>27
function hoge () { var test = 'test'; }
hoge();
なら関数実行終了後にGCが回収するから何もしなくても問題ない
GCが回収できないのはクロージャやグローバル変数等で参照が保持される時
そういう場合は不要になったら明示的に null を代入しないとページが unload されるまでメモリを消費し続ける
30 = :
原則参照が保持されてるということは不要ではないと言うことで。
不要な参照が保持され続けるようなコードをであるなら設計が悪いと言わざるを得ない。
nullを代入する云々は、明示的にしないとダメだから、ではなく、
>>28のような場合でCGにあえて任せず自分で明示的にリソース管理をする場合のみ有効。
31 = :
addEventListener('load', initialize, false);
に対して
removeEventListener('unload', initialize, false);
は必要なんでしょうか?
32 = :
必要ないです
33 = :
アホなことを聞くな
34 = :
>>32
ありがとう
removeEventListenerの使い道がよくわからないんですよね
35 = :
そりゃあ途中でイベントを取る必要が無くなった時だろ。
勿論リスナ側でフラグ管理しても良いが、丸ごと外す方がスマートなときもある。
36 = :
逆のタイミングで使うもんじゃないんですね
途中でイベントを取る必要がなくなっても別に放置しても都合が悪くなければそのままでいいんですか?
メモリなんかに考慮して積極的にremoveしてるのでしょうか?
37 = :
設計が悪くなければ問題ない。
例えば毎秒数十万のリスナを追加するような設計なら、removeを考えないといけない。
でもそれはwindowに1つ永続的なのを設定しとけばすむかもしれない。
38 = :
ありがとう
イベントターゲットでやるやつですね
テーブルでカレンダー組をして
セル1つあたりにマウスオーバーイベントとかつけたことある程度なので大丈夫そうですね
loadのときにaddしたので
それも意味もわからずunloadのときにremoveしてましたがw
39 = :
>>30
> 原則参照が保持されてるということは不要ではないと言うことで。
原則そうあるべきだけど、実際には無名関数を執拗に入れ子にしてるコードも良く見かける
参照を保持しないようにコードを組む方法が分かっていないんだろうけど
40 = :
Effective JavaScriptって本読んでるんだけど
その本の中でforループでよくやってしまうミスが紹介されてて
「for(var i = n; i >= 0; i--){ ... } // 最初の回を繰り返す」っていうミスがよくわからないんだけど、
これって最初の回を繰り返す?
ちゃんと変動していると思うんだけど・・・
41 = :
その n は何が入ってんだよ
42 = :
>>40
動くように全てのコードを抜粋しなければわからん
43 = :
n回繰り返したいのにn+1回繰り返してしまうということだろう。
よくやってしまうというより、初心者が最初一度は嵌るという類のものだな。
一旦理解すれば間違えることはない。
44 = :
>>41
このnの記述ないんだよね
>>42
省略してないよ
「for(var i = n; i >= 0; i--){ ... } // 最初の回を繰り返す」っていう1行だけしか書いていないんだ・・・
この行の上には
「for(var i = 0; i <= n; i++){ ... } // 1回余計に繰り返す」
「for(var i = 1; i < n; i++){ ... } // 最初の回が抜けている」
って書かれていて特に変なところもないんだよ
45 = :
これだな
http://books.google.co.jp/books?id=lT2g_y4VYx0C&pg=PT177
46 = :
つまり最初(i==n-1)から最後(i==0)まで本来回したいのだから、
最初の回(i==n)が余計と言いたいのだろう。
47 = :
買ってはいけない本だというのがよくわかる
いや煽りも冗談も抜きで
48 = :
まあ別に初心者が買う本じゃないんだろうし、
全てを参考にする類でもなく、自分の抜けてたところに気付くためのものだろう
>>40こういう質問をする段階じゃまだ早いと言えるかもしれない
49 = :
>>46
ありがとう!理解した
レスしてくれた人みんなありがとう
>>47
そうなんかな
自分の理解力の問題やと思うわ
50 = :
まあGood Partsよりはいい本だろうと思うよ
出た時期がまず第一に重要だからね
最新の情報であれば少なくとも取り敢えず読んで見る価値はあると思う
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.125 + (1001) - [97%] - 2015/10/7 17:45
- + JavaScript の質問用スレッド vol.108 + (1001) - [97%] - 2013/9/21 15:16
- + JavaScript の質問用スレッド vol.118 + (1002) - [97%] - 2014/8/29 22:30
- + JavaScript の質問用スレッド vol.120 + (1002) - [97%] - 2014/11/8 1:15
- + JavaScript の質問用スレッド vol.121 + (1001) - [97%] - 2022/11/29 16:30
- + JavaScript の質問用スレッド vol.121 + (1001) - [97%] - 2015/1/1 18:30
- + JavaScript の質問用スレッド vol.122 + (1004) - [97%] - 2015/2/14 4:45
- + JavaScript の質問用スレッド vol.122 + (116) - [97%] - 2018/5/2 18:30
- + JavaScript の質問用スレッド vol.123 + (966) - [97%] - 2020/10/20 2:30
- + JavaScript の質問用スレッド vol.138 + (1004) - [97%] - 2019/4/20 23:45
- + JavaScript の質問用スレッド vol.129 + (981) - [97%] - 2016/5/5 8:16
- + JavaScript の質問用スレッド vol.129 + (926) - [97%] - 2017/7/27 13:45
- + JavaScript の質問用スレッド vol.123 + (1002) - [97%] - 2015/4/27 23:30
- + JavaScript の質問用スレッド vol.127 + (1001) - [97%] - 2016/2/4 0:15
- + JavaScript の質問用スレッド vol.127 + (160) - [97%] - 2021/7/16 9:30
- + JavaScript の質問用スレッド vol.126 + (952) - [97%] - 2015/11/18 13:15
- + JavaScript の質問用スレッド vol.126 + (348) - [97%] - 2023/1/12 17:00
トップメニューへ / →のくす牧場書庫について