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

私的良スレ書庫

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

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

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
251 : Name_Not - 2014/11/16(日) 10:47:54.51 ID:???.net (+60,+29,-35)
>>250
どこからも参照されなくなったオブジェクトは定期的に掃除される
ガーベジコレクションという
252 : Name_Not - 2014/11/16(日) 12:54:20.11 ID:???.net (+52,+29,-16)
参照とコピーの違いもわからなさそう
253 : Name_Not - 2014/11/16(日) 12:57:58.72 ID:???.net (+13,-30,-27)
var a = 100;
var a;
console.log(a); // 100

使用済み変数を初期化したいのに100のままです
どうやって初期化できますか
254 : Name_Not - 2014/11/16(日) 13:06:38.72 ID:???.net (-1,-29,-29)
インスタンスを消したいならdelete a;じゃないっすか?
255 : Name_Not - 2014/11/16(日) 13:18:51.18 ID:???.net (-1,-29,-2)
何に初期化するのさ。
a=0とかか?
256 : Name_Not - 2014/11/16(日) 17:09:30.62 ID:???.net (+28,-28,+1)
>>253
a = void 0;
257 : Name_Not - 2014/11/17(月) 04:16:34.57 ID:???.net (+1,-21,+1)
a = Nothing;
258 : Name_Not - 2014/11/17(月) 05:27:40.80 ID:???.net (-6,-29,-11)
a=undefined;
259 : Name_Not - 2014/11/17(月) 07:54:37.12 ID:???.net (+4,-29,-19)
a=undefined; とすると内部的にはaを宣言してないのと同じになるのでしょうか?
260 : Name_Not - 2014/11/17(月) 09:36:06.40 ID:???.net (+38,-30,-91)
var a = 100;
a = undefined;
console.log(a); // undefined

var b = 200;
undefined = 300;
b = undefined;
console.log(b); // ?????????????????????????
261 : Name_Not - 2014/11/17(月) 09:59:24.54 ID:???.net (+40,+12,-4)
一度var宣言したら、宣言していない状態にすることはできない
262 : Name_Not - 2014/11/17(月) 10:31:12.17 ID:???.net (+67,+29,-25)
>>256
どういう意味があるのかなーって見てみたらundefinedって大域変数があるのか。
だから>>260は不定になっちゃうのね。ブラウザ依存?
263 : Name_Not - 2014/11/17(月) 10:36:15.78 ID:???.net (+4,-30,-145)
>>259
あなたの「aを宣言してない」に期待する結果による
>>253では var a; としていたから「値を初期化せずに変数宣言した状態」にしたいのだと考え、>>253と回答した

VariableStatement を実行したことすらなかった(aを参照したらReferenceError)ことにしたいのなら、不可能だ
一度、変数宣言したものをなかったことには出来ない
どうしてもなかった事にしたいのならオブジェクトのプロパティとして宣言すればよい
var obj = {a: 1};
delete obj.a;
console.log(obj.hasOwnProperty('a')); // false
264 : Name_Not - 2014/11/17(月) 10:41:46.38 ID:???.net (+6,-30,-80)
>>262
ES5 実装のブラウザであれば undefined は書き換え不可能なのでブラウザ依存(IE8- は未実装)
http://kangax.github.io/compat-table/es5/
IE8- もサポートするなら void 0 を使えばよい
266 : Name_Not - 2014/11/17(月) 12:10:28.75 ID:???.net (+51,+23,-17)
nullは予約語なのにな
なんでundefinedも予約語にしなかったんだろう
267 : Name_Not - 2014/11/17(月) 12:12:04.51 ID:???.net (+31,-29,-8)
昔はfunction start(){} とかエラーだったな
今普通にstart()とか使う
268 : Name_Not - 2014/11/17(月) 15:40:43.07 ID:???.net (-5,-30,+0)
世の中には、意図的にundefinedに変な値を入れているスクリプトが存在するかもしれない。
だからそういうスクリプトがあっても対応できるようにとundefined変数に
undefinedが入っていないことも考慮したコードを書くがいるが、

>>234を見てもわかるように、すでにundefinedは書き換え不可能なんだよね。
つまり、意図的にundefinedに変な値を入れるスクリプトは、既にまともに動かないということ
なので今は普通にundefinedを使って問題ない。

> なんでundefinedも予約語にしなかったんだろう
もともと(JavaScript 1.0、ネスケ2.0、IE3.0時代)にはundefinedなんて
キーワードはなかったんだよ。値を代入していない変数は「未定義」だった。

そしてJavaScript1.1で、typeof演算子ができたわけだが
この型名を返す関数に未定義変数を引数にした時の仕様を決めないといけなくなった。
そこでundefinedという文字列が返ってくるという仕様にした。
そしてtypeof演算子に、undefiinedという名前の変数を渡すと
"undefined"に、たまたま、なったという歴史

typeof演算子の結果が"undefined"だったからundefined変数が使われただけで
もしtypeof演算子の結果が"not_defined"だったならnot_defined変数が使われていたであろう。

最初からundefinedが存在したわけじゃなく、最初にtypeof演算子が作られて、
そしてtypeof演算子から返ってくるundefinedと同じ名前の変数を利用したってわけ。
269 : Name_Not - 2014/11/17(月) 17:02:53.59 ID:???.net (+3,-30,-28)
ループで1つずつ値を入れて二次元配列が作りたい
var a = [
[0,1,2],
[3,4,5]
]

書いたコード
var a = [];
for (var i=0; i<2; i++){
for (var j=0; j<3; j++){
a[i][j] = i;
}
}

できませんでした
270 : Name_Not - 2014/11/17(月) 17:11:05.36 ID:???.net (+33,+5,+3)
a[i] = [];
a[i][j] = i;
271 : Name_Not - 2014/11/17(月) 18:14:05.29 ID:???.net (-1,-29,+1)
a[i] = [];
a[i][j] = i * 3 + j;
272 : Name_Not - 2014/11/17(月) 18:16:09.10 ID:???.net (+3,-30,-61)
var a = [];
for (var i=0; i<2; i++){
a[i] = [];
for (var j=0; j<3; j++){
a[i][j] = i * 3 + j;
}
}
console.log(a[0].toString()); // => 0,1,2
console.log(a[1].toString()); // => 3,4,5
273 : Name_Not - 2014/11/17(月) 18:25:19.66 ID:???.net (+31,-29,-19)
折角なんで配列の初期化はnew Array()でお願いします。
274 : jagariki - 2014/11/18(火) 04:23:25.50 ID:k9TnErG5.net (+56,+27,-1)
自信作です!
評価お願いします><


冥府
http://jsdo.it/jagarikin/xwQu
275 : Name_Not - 2014/11/18(火) 07:39:47.65 ID:???.net (+61,+29,-17)
>>273
そのぐらいは自分で書き換えたら?
276 : Name_Not - 2014/11/18(火) 08:46:45.92 ID:???.net (+2,-29,-9)
型つき配列ってisArrayで判定できないのか…
277 : Name_Not - 2014/11/18(火) 09:52:39.86 ID:???.net (-10,-28,+0)
is型つき配列
278 : Name_Not - 2014/11/18(火) 12:28:01.09 ID:???.net (-1,-30,-26)
>>276
isArray は [[Class]] が Array でなければ true にならない
typed array には instanceof 演算子を使う
279 : Name_Not - 2014/11/18(火) 15:58:22.98 ID:???.net (+82,+29,-14)
>>274
ついにこっちのスレに来るように
280 : Name_Not - 2014/11/18(火) 16:20:44.79 ID:???.net (+55,-29,-81)
チャット系のアプリケーションを作っているのですが、
XMLHttpRequestオブジェクトは書き込みと読み込み用2つ用意しないとだめですか?
1つを使いまわそうと思ったのですがうまくいきませんでした。
281 : Name_Not - 2014/11/18(火) 16:54:29.52 ID:???.net (+52,+5,-17)
サーバー側のログの処理がわからんのでなんとも
282 : Name_Not - 2014/11/18(火) 17:02:02.49 ID:???.net (+34,+0,-22)
>>281
サーバはログに変更があったら応答するという、
ロングポーリングでタイムアウトまでリクエストを保留しています。
283 : Name_Not - 2014/11/18(火) 17:04:36.69 ID:???.net (+91,+25,-18)
>>280
同時発行リクエストが1なら使い回せない理由がない
284 : Name_Not - 2014/11/18(火) 17:16:59.20 ID:???.net (+70,+29,-52)
>>283
つまり書き込みをクライアント側で保留して、サーバ側からタイムアウトが返ってきてから書き込まないと無理ということですね。
おとなしく2つ用意することにします。
285 : jagariki - 2014/11/19(水) 15:32:08.95 ID:lBgHoTbB.net (+36,+29,-35)
>>279
以前からいるぜ?
ここにはメモリリークとか内部処理に詳しい人がいるから
助かってるぜ~


>>280
今は知らんけど
昔は一回sendしたら作り直さないとエラーだったような
286 : Name_Not - 2014/11/19(水) 18:17:07.59 ID:???.net (+9,-28,-6)
xmlhttprequestにラベルみたいなのを付けて
帰ってきた時に確認するみたいなことできませんかね?
287 : Name_Not - 2014/11/19(水) 18:44:49.45 ID:???.net (+66,+5,-1)
>>2
/nox/remoteimages/9d/ee/179d54ce87827bcb50e0bbf6c0dd.png
288 : Name_Not - 2014/11/19(水) 19:21:55.45 ID:???.net (+2,-26,-7)
>>286
readystate監視ではいかんのけ?
289 : Name_Not - 2014/11/19(水) 22:22:28.03 ID:???.net (+0,-29,-5)
>>286
xhrを参照比較するだけでいいのでは?
290 : Name_Not - 2014/11/20(木) 06:20:21.06 ID:???.net (+35,-25,-30)
メモリリークするオブジェクトの書き方ってどんなだっけ
292 : Name_Not - 2014/11/20(木) 11:59:08.65 ID:???.net (+0,-30,-23)
>>290
var i= 1;
var array = [];
while(i>0)array.push(i);
293 : Name_Not - 2014/11/21(金) 23:08:31.91 ID:???.net (+17,-30,+0)
IEを使ったとき、formボタンをクリックすると動くはずのstart()関数(下記HTML参照)が動きません。
ちなみにボタンクリックすると動くはずのkey_c(0)関数(下記参照)は問題なく動きます。

さらに自分のプログラムはキーボードの7を押してもstart()関数が動くようにしてますが、
IEで7キーを押した時にstart()関数が動いてるので、start()関数とIEの相性が悪いわけではなさそうです。

Google chromeではformボタンをクリックするとstart関数()とkey_c(0)関数どちらとも問題なく動きます。
下のHTMLプログラムを見て何が悪いかわかる方いませんか?

<head><script type="text/javascript">この部分は省略</script></head>
<body onkeypress="Key_on(window.event.keyCode)">
キー<br />
<div style="height: 450px; position: relative; width: 590px;">
<canvas height="450" id="canvas_1" width="590"></canvas>
<form name="test">
<input onclick="start();" position: absolute; top: 370px; width: 100px;" type="button" value="S" />
<input onclick="key_c(0);" position: absolute; top: 320px; width: 40px;" type="button" value="0" />
</form>
</div>
ルー<br />
</body>
</html>
294 : Name_Not - 2014/11/21(金) 23:29:32.25 ID:???.net (-1,-29,-6)
>>293
HTMLの開始とDOCTYPEがない。
295 : Name_Not - 2014/11/21(金) 23:30:39.37 ID:???.net (+5,-30,-20)
>>293
onclickやstyleは要素に直接書かない
<script>や<style>を使用する
296 : Name_Not - 2014/11/21(金) 23:35:09.28 ID:???.net (+57,+29,-11)
こういった基本的なことをやると
コードがシンプルになってバグが見つけやすくなるんだよ。
297 : Name_Not - 2014/11/21(金) 23:37:18.13 ID:???.net (-2,-30,-154)
HTMLの方だけ修正しておく、そうすりゃもうJavaScriptだけの問題になるさ

<!DOCTYPE html>
<html>
<head><script>この部分は省略</script></head>
<body>
キー<br>
<div>
<canvas id="canvas_1"></canvas>
<form name="test">
<input type="button" value="S">
<input type="button" value="0">
</form>
</div>
ルー<br>
</body>
</html>
298 : Name_Not - 2014/11/21(金) 23:42:52.91 ID:???.net (+63,+30,-55)
初心者は複雑なものを複雑なまま
じーっと眺めて考えてるから
いつまでたっても簡単な問題に気づけないんだよ。

目で見てわからなければ手を動かせ。問題となっているであろう部分を
けずってシンプルにしていけば自ずと何が問題か見えてくる。
299 : Name_Not - 2014/11/21(金) 23:46:54.55 ID:???.net (+3,-30,-274)
すみません。自分のプログラムのコピペのし忘れで、293のプログラムの初めに
<html lang="ja" xml:lang="ja" xmlns="http://www.w3.org/1999/xhtml">
を忘れてました。

あとは、自分のプログラムのコピペがおかしくなってました。(実際には下のように書いてました)
<input onclick="start();" style="font-size: 25px; height: 35px; left: 400px;
position: absolute; top: 370px; width: 100px;" type="button" value="S" />
<input onclick="key_c(0);" style="font-size: 18px; height: 30px; left: 40px;
position: absolute; top: 320px; width: 40px;" type="button" value="0" />
(実際には、改行なんてしてません)

>>295
すみません。どういう風にすればいいのかわからないです。
こういう書き方しか知らなくて
300 : Name_Not - 2014/11/21(金) 23:54:08.42 ID:???.net (+35,-26,-4)
startっていう関数名が悪いんじゃないの?
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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