のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,432,662人
昨日: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
401 : Name_Not - 2013/12/26(木) 10:33:32.73 ID:??? (+90,+29,-23)
>>398
スコープは関数ごとにしかないんだから覚えろよ。圧倒的にシンプルだろ
402 : Name_Not - 2013/12/26(木) 11:24:59.11 ID:??? (+20,-11,-110)
>>401
書いてる人なら覚えれば済むことだが、
読まなきゃいけないときは、クラス図とかないとかなりきつくないか?
ある関数内でthis.format()という関数が呼び出されていました。
formatの定義位置を探したら30個の定義が見つかりました。
どのformatが呼ばれているのでしょうか?
newした後に予想外の場所でプロパティやプロトタイプチェーンが上書きされてたりするようなソースだと、
発狂したくなるんだが。
403 : Name_Not - 2013/12/26(木) 13:28:34.95 ID:??? (+4,-13,+0)
thisは死刑
404 : Name_Not - 2013/12/26(木) 13:33:05.09 ID:??? (+57,+29,-10)
thisとselfはどう使い分けたらいいの?
ここの先輩なら理由あって使い分けていると思います
405 : Name_Not - 2013/12/26(木) 13:50:59.08 ID:??? (+8,-9,+1)
thisは死罪
406 : Name_Not - 2013/12/26(木) 16:07:33.92 ID:+OPtIAmv (+69,+29,-201)
thisはそのメソッドを持ってるオブジェクトの参照ってだけじゃん
なので、いきなりメソッド名で検索って、あんまり賢くない気もする

> formatの定義位置を探したら30個の定義が見つかりました

> newした後に予想外の場所でプロパティやプロトタイプチェーンが上書きされてたり

ってのは、thisのありかたや関数スコープに根本的な問題があるわけではなく
全検索しなければならないようなコードの書き方や管理方法とか
コーディングの方針や規約に問題があるか、自分にあってないだけなんだよ
407 : Name_Not - 2013/12/26(木) 16:15:48.96 ID:??? (+72,+29,-101)
>>402
同じオブジェクトの定義を分散して配置したり、同名の異なる機能を過剰に混在させたコードを書く奴が悪い
真面目な話、IDEとかから実際に動かさないでそれらを把握できる解析機あったらJSエンジンの世界に革命来るで
408 : Name_Not - 2013/12/26(木) 16:43:20.53 ID:??? (+33,-30,-104)
極端だけど、こんな感じで関数作られてたらどうしようもないよね。

"one two three".split(' ').forEach(function (d, i) {
window['get' + d.substr(0, 1).toUpperCase() + d.substr(1)] = function () {return i + 1;};
});

console.log(getOne()); // 1
console.log(getTwo()); // 2
console.log(getThree()); // 3
409 : Name_Not - 2013/12/26(木) 16:56:36.84 ID:??? (+22,+30,-80)
>>406
読むときというのは、オープンソースだったり、プロジェクトを引き継ぐ時だったりの事だから、
管理方法やコーディングの方針、規約に問題あると言われてもな。
それはあくまで理想論だよ。
オープンソースならまだいいけど、人目に付かないようなソースだと、
コメントも手を抜いてたりかなりひどいのが現状でしょ。
410 : Name_Not - 2013/12/26(木) 17:15:13.24 ID:??? (+55,+27,+1)
>>408
結構好き
411 : Name_Not - 2013/12/26(木) 17:54:25.15 ID:+OPtIAmv (-9,+29,-14)
>>409
お、おう…

勝手に>>398 == >>402だと思い込んで
書き方がおかしいから糞なだけなのに、JSのスコープの仕様のせいだと主張している
のだと勘違いした
すまんこ
412 : Name_Not - 2013/12/26(木) 20:28:59.06 ID:??? (+145,+30,-76)
>>397
「読めた」んじゃなくて「読んだ」んだろw
そんなものがないのは明らかなんだからそれを意味しているはずがない
A級以上のプログラマーは普通に考えたらあり得ない可能性を最初から除外するが
C級を以下のプログラマーはそういう解釈をまず真っ先に採用する
低能には他人の有能さが脅威なので、無意識のうちに安心したい選択を取るのだろうな
413 : Name_Not - 2013/12/26(木) 20:38:47.98 ID:??? (+72,+29,-34)
>>412
お前が勝手に決めた一般的な環境を他人も同じように想定していると思ってるんだからそう読むしかないだろ
自分のコメントをもう一度読み直してこい
414 : Name_Not - 2013/12/26(木) 20:54:07.43 ID:??? (+55,+29,-23)
いや最初から並のIQのある人間には分かるようにしか書いてねーから
とはいえ馬鹿にもっと賢くなれといっても無理だから
せめて書き込むな
迷惑だから
415 : Name_Not - 2013/12/26(木) 21:03:38.46 ID:??? (+75,+29,-24)
>>412
終わった話をなに蒸し返してるの?
正真正銘のバカなの?
416 : Name_Not - 2013/12/26(木) 21:39:11.53 ID:??? (-5,-23,+0)
A級C級www
417 : Name_Not - 2013/12/26(木) 21:41:20.97 ID:??? (+57,+29,-24)
ありえない解釈をしての文句をやめればいいよ
本当に、なにひとつ得るものがないのでね
418 : Name_Not - 2013/12/26(木) 21:48:08.20 ID:??? (+57,+29,-5)
A級C級とか何?
闇プログラマーのランカー制度か何かっすか?
419 : Name_Not - 2013/12/26(木) 22:45:39.14 ID:??? (+2,-29,-32)
eventってどう書いてる?
e. aEvent. evt. ぐらいしか思いつかないけど
420 : Name_Not - 2013/12/26(木) 23:27:04.15 ID:??? (-1,-29,-5)
this が不安なら call / apply 使えや
422 : Name_Not - 2013/12/27(金) 01:01:05.65 ID:??? (+51,+23,-11)
文字を追加すると同時に、画面を下にスクロールする関数を自分で作って
その関数を使えばいいよ。
426 : Name_Not - 2013/12/27(金) 10:42:02.98 ID:??? (+8,-30,-200)
>>425
使い分けるというより
function eventHandler() { event.xxx; }
みたいに引数にeventを書き忘れたときに、
グローバルのeventが参照されちゃうとかそうゆう事を心配してるような気がしたけど違うのかな?
グローバルのeventにアクセスしたいときはwindow.event使えばいいわけだし。

この手の変数名論争は最終的には好みの問題で決着つかない事が多いから、
ソース内で統一して使われてたらどっちでもいいってのが個人的意見。
427 : Name_Not - 2013/12/27(金) 10:54:46.07 ID:??? (+3,-30,-179)
ただ、一般的な例だと、
引数はeでもeventでもどっちでもいいけど、
eventの場合はeに変換して使うみたいのが多い気はする。
サイ本にも書かれてるし。

function eventHandler(e) {
if(!e) e = window.event;
}

function eventHandler(event) {
var e = event || window.event;
}
428 : Name_Not - 2013/12/27(金) 11:15:45.50 ID:??? (+36,-30,-172)
>>426-427
命名規則は個人の主観だからどうでもいいんだけど、「window.event と重複しないように命名する理由」がわからないんだ。
仮引数に付け忘れたらReferenceErrorになるからその時に仮引数つければいいだけの話だし。
attachEventも仮引数に対応してるし、あえていうならHTML埋め込み型の onclick や document.onclick で古いIEが対応してないことくぐらいかね。
それも呼び出し側で event を指定すればいい話だから全く持って重複を気にする理由がわからない。

> サイ本にも書かれてるし。
そうしないと対応できない環境がわからないのよ。呼び出し側はどう書かれてる?
429 : Name_Not - 2013/12/27(金) 11:27:54.40 ID:??? (-2,-30,-54)
window.event を使用する必要があるのは document.onclick = listener; ぐらいかな
addEventListener を使えば済むからまず想定する必要がないが
430 : Name_Not - 2013/12/27(金) 11:30:40.19 ID:??? (+62,+29,-64)
>>428
だから、どっちでもいいと思ってる俺にたいして、
eventを使っちゃいけないという理由を聞かれても答えられるわけがない。
431 : Name_Not - 2013/12/27(金) 11:45:01.91 ID:??? (+3,-30,-98)
あえて考えるとするなら、IE向けサイトで
attachEvent()とonclickを共存させてて、
attachEventのlistenerに引数付け忘れた時とか?
複数人が自由気ままに開発してるような環境なら、
100%問題が起こらないとは言い切れない気もするので、
わざわざ重複する変数名を選ばないというのは良い選択なんじゃないだろうか?
432 : Name_Not - 2013/12/27(金) 12:12:47.08 ID:??? (-1,-29,-25)
CodeIQのFizzBuzzダンジョンのLv3とLv4の解き方がわかんないよおおおおおおおお
433 : Name_Not - 2013/12/27(金) 12:32:15.82 ID:??? (+12,+29,-110)
本当は安全なのかもしれないけど、そうゆう細かいことを考えるのが面倒だからeを使ってるのに、
eventを使ってる人がeを使ってる人に理由を考えさせるのがよくわからん。
あえてeventを使ってる人が、あらゆるパターンを検証して、
eを使うのと全く変わらないということを証明してから使わなきゃいけないことなのに。
検証しなきゃ使えないのと検証しなくても使える。
この差は大きいと思うけど。
435 : Name_Not - 2013/12/27(金) 14:15:28.05 ID:??? (-1,-29,-17)
i とか j とか使わないの?

言語は変わるけど、VSの自動生成でもイベント変数は e になってるし、e で十分分かると思う
436 : Name_Not - 2013/12/27(金) 14:57:54.92 ID:??? (+57,+29,-66)
グローバルで使われる可能性がある変数名と同じ名前にしてよいかというのが論点なんだから、
eがいやならevtとか好きなの使えば良いだけなんだけどな。
437 : Name_Not - 2013/12/27(金) 15:05:16.67 ID:??? (+31,+3,-16)
eがしっくりくる関数とeventがしっくりくる関数があるから困る
438 : Name_Not - 2013/12/27(金) 15:20:58.26 ID:??? (+3,-30,+0)
http://www.cypress.ne.jp/s-4/rpgtown2/charamaker.htm
こんな感じの「設定項目ごとに更新」「その結果を下の方にまとめる」というのをjavascriptで真似したいのです。
しかし関数を実行するボタンを作って押すと更新されたページにテキストのみが表示されてしまいます。ネットの講座等を見てもそこら辺が書いていません。
色々とググった結果拾い物で、
<script type="text/javascript">
<!--
function Sample(){
var x,n=100;
n+=1;
x = Math.floor(Math.random()*n);
document.getElementById("t1").value = x;}
//-->
</script>
<input type="button" tabindex="1" onclick="Sample()" value="乱数生成"><br>
<input type="text" tabindex="2" id="t1" name="t1" value="">
というのが理想に近いと分かりました。
この「ボタンを押すと結果が新しいページではなくテキストボックスに代入される」
というあたりの理屈を初心者に教えていただけないでしょうか。
439 : Name_Not - 2013/12/27(金) 15:34:04.36 ID:??? (-29,-30,-213)
ちなみにこれがコピペを混ぜて作ろうとして失敗しているものです
<script type="text/javascript">
<!--
function Sample(){
var x=new Array(
"ももたろう","さる","きじ","いぬ","おに"
);
document.write(x[Math.floor(Math.random()*x.length)]);

document.getElementById("t1").value = x;}
//-->
</script>
<input type="button" onclick="Sample()" value="乱数生成"><br>
<input type="text" id="t1" name="t1" value="">

別なページに文章だけ出てしまうのはdocument.writeのせいだとは思うのですが
document.writeの中身の計算をどこにぶち込めばいいものか…
441 : Name_Not - 2013/12/27(金) 17:16:47.03 ID:??? (-1,-29,+0)
Document.writeは不安定すぎ。
442 : Name_Not - 2013/12/27(金) 18:42:14.53 ID:??? (-6,-30,-176)
>>440
3時間近く格闘してようやくできました…。
function Sample(){
var x= new Array("ももたろう","さる","きじ","いぬ","おに");
n = Math.floor(Math.random()*x.length);
document.getElementById("test").value = x[n];
};
<input type="button" onclick="Sample()" value="登場人物">
<input type="text" id="test" name="test" value="">

2時間くらいかかってようやくx[Math.floor(Math.random()*x.length)]の意味を理解…。
ただ悩んで調べた事で、配列や代入のあたりについていくらか勉強になったように思います。
ありがとうございました。
444 : Name_Not - 2013/12/27(金) 19:07:48.71 ID:??? (+3,-30,-133)
>>443
そこまでやったら訂正する気になるな。

function Sample() {
 var x = ["ももたろう", "さる", "きじ", "いぬ", "おに"];
 var n = Math.floor(Math.random() * x.length);
 document.getElementById("test").value = x[n];
}
<input type="button" onclick="Sample()" value="登場人物">
<input type="text" id="test" name="test" value="">
445 : Name_Not - 2013/12/27(金) 19:15:10.15 ID:??? (+62,+29,-143)
>>443
一文字が使えるときって大抵ローカルで使うから気付かず衝突してトラブルになるって事はまず無い。
使えないって事は無いような……ああでも大半の関数にtry-catch付いてるようなケースだと駄目か。
だがグローバルで使ってる場合がありうるから(>>424)面倒を避ける(>>433)為に使わないってのも筋は通る。

既存コードやコーディングスタイルに依存して決まる問題で、一般的な正解はないって解答が一番しっくり来るな。
446 : Name_Not - 2013/12/27(金) 19:17:35.05 ID:??? (+8,-19,-1)
使えないっていうのは、エラー用に予約してるって意味。
これはC++やJavaの時からそうしてる。
447 : Name_Not - 2013/12/27(金) 20:18:01.16 ID:??? (-1,-29,-66)
仕様書の例だと、DOM4では e ev event が、DOM3では e evt がてきとーに使われてるね
448 : Name_Not - 2013/12/27(金) 21:10:14.42 ID:??? (-6,-29,-3)
try-catch は ex だわ
449 : Name_Not - 2013/12/27(金) 23:43:19.61 ID:??? (-1,-29,-3)
eはerrorとして
xはなんなんだ?
450 : Name_Not - 2013/12/27(金) 23:55:13.54 ID:??? (+52,+29,-3)
えくせぷしょん
 ↑
このへん
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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