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

私的良スレ書庫

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

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

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
751 : Name_Not - 2013/09/18(水) 08:25:58.55 ID:??? (+57,+29,-46)
その真のクロージャとか言ってる実装は、GCの関係で使い物にならんだろうな
752 : Name_Not - 2013/09/18(水) 08:33:57.36 ID:??? (-1,-29,-47)
英語Wikipediaの定義がまっとうなんだと思うが。
http://en.wikipedia.org/wiki/Closure_(computer_science)
753 : Name_Not - 2013/09/18(水) 10:08:03.38 ID:??? (+42,-30,-42)
>>747
>最近のエンジンは必要な変数しかコンテキストに付加しない

へーへー

var a = b = 0;
function f(){ alert(a); }

こうした時、f では b は使われない、みたいな感じでしょうか
754 : Name_Not - 2013/09/18(水) 10:13:37.57 ID:??? (+55,+26,-2)
>>753
そのbは何だよw
755 : Name_Not - 2013/09/18(水) 10:35:20.59 ID:??? (+84,+29,-11)
使わない変数を渡さないことでどんな不便があり得るの?
756 : Name_Not - 2013/09/18(水) 10:36:44.81 ID:??? (+43,+25,-4)
ないんじゃね?
757 : Name_Not - 2013/09/18(水) 10:51:11.91 ID:??? (+57,+29,-2)
じゃあ真のクロージャの意味ねーじゃん
758 : Name_Not - 2013/09/18(水) 10:58:58.62 ID:??? (+57,+29,-42)
クロージャにすれば100%静的スコープになるわけだが
クロージャにしなくても100%見えてるわけじゃない
みたいなことが言いたいのでは?
759 : Name_Not - 2013/09/18(水) 11:28:29.49 ID:??? (+47,+19,-33)
クロージャと動的スコープ変数は共存できるぞ
760 : Name_Not - 2013/09/18(水) 11:54:34.97 ID:??? (+115,+29,-7)
http://twitter.com/kyo_ago/status/380143189547438080
あごっちが言ってるこれのサンプルを誰かください
761 : Name_Not - 2013/09/18(水) 12:06:48.82 ID:??? (+0,-29,-9)
>>745
f(); // 1
f(); // 2
f(); // 3
だろ
762 : Name_Not - 2013/09/18(水) 12:15:42.86 ID:??? (+50,+27,-1)
あああお察しください
763 : Name_Not - 2013/09/18(水) 13:41:42.96 ID:??? (+3,-30,-95)
var a = 0;

var f = (function () {
  var a = 10;
  return function (c) { return eval(c); }
}());

console.log(f("a++;"));
console.log(f("a++;"));
console.log(f("a++;"));
console.log(f("a++;"));
764 : Name_Not - 2013/09/18(水) 14:36:54.69 ID:??? (+3,-30,+0)
var a = 0, b = 5;
eval('var c = 10;');

var f = (function (code) {
var a = 20;
eval(code);
f.self = this;
return function (code) {
return eval(code);
}
}('var d = 30;'));

eval.call(f.self, 'var e = 40;');

console.log(f('++a;')); // 21
console.log(f('++b;')); // 6
console.log(f('++c;')); // 11
console.log(f('++d;')); // 31
console.log(f('++e;')); // 41
console.log(f('var f = 50;')); // undefined
console.log(f('++f;')); // NaN or ReferenceError
765 : Name_Not - 2013/09/18(水) 14:39:26.97 ID:??? (+83,+28,-15)
ネストしている連想配列の指定キーの参照を得るにはどうしたらいいですか?
766 : Name_Not - 2013/09/18(水) 14:42:47.48 ID:??? (-6,-29,-12)
eval is evil
767 : Name_Not - 2013/09/18(水) 14:47:43.45 ID:??? (+54,+15,-18)
>>765
連想配列のネストをたどるコードを書け
768 : Name_Not - 2013/09/18(水) 14:48:10.18 ID:??? (+0,-28,-32)
eはグローバルだしevalにcallしても意味ないしあれだったな
769 : Name_Not - 2013/09/18(水) 14:51:30.19 ID:??? (+52,+29,-8)
えばる?いーばる?
770 : Name_Not - 2013/09/18(水) 15:08:18.09 ID:??? (-1,-29,-4)
大発見をしました

http://jsperf.com/var1-vs-var2

var a;
a = 100;

の方が

var a = 100;

よりも速いです
何故ですか?
771 : Name_Not - 2013/09/18(水) 15:13:00.87 ID:??? (+57,+29,-4)
どうもサンプル数が少ない時の偏りだったようです
772 : Name_Not - 2013/09/18(水) 15:15:29.73 ID:??? (+57,+29,-24)
しかし宣言と代入を分けた方が遅くなりそうなものですが、そうはならないのは何故ですか?
773 : Name_Not - 2013/09/18(水) 16:44:32.39 ID:??? (-3,-26,+0)
JITで最適化されるからでしょ
774 : Name_Not - 2013/09/18(水) 17:02:55.19 ID:??? (+53,+14,-38)
>>755
インライン関数がエラーで止まった時に上位スコープの変数確認できないから困る、
775 : Name_Not - 2013/09/18(水) 17:24:03.19 ID:??? (+3,-30,-90)
例えばこういうケースだとデバッガからaは確認できるけどbはできない

function test1() {
var a = 1, b = 2;
var f = function () {
throw 'test';
a;
}
console.dir(f);
f();
}

test1();
----console----
<function scope>
|
Closure
|
a: 1
776 : Name_Not - 2013/09/18(水) 17:24:47.90 ID:??? (+3,-30,-117)
ちなみにこれだとこうなる

function test2() {
var a = 1, b = 2;
var f = function () {
throw 'test';
eval('');
}
console.dir(f);
f();
}

test2();
----console----
<function scope>
|
Closure
|
a: 1
arguments: Arguments[0]
b: 2
f: function () {
777 : Name_Not - 2013/09/18(水) 17:56:13.42 ID:??? (+38,-30,-103)
いやおまえそれGoogle Chromeの開発ツールの機能だろw
Firebugとかじゃそもそもconsole.dir(f)からClosureとか辿れないし、
aとbの中身も見たいならconsole.log(a,b)しとけよw
778 : Name_Not - 2013/09/18(水) 18:13:52.16 ID:??? (+57,+29,-26)
表示されるか否かでデバッグのしやすさが段違いなんだが
デバッグしたこと無いのか?
779 : Name_Not - 2013/09/18(水) 18:21:25.48 ID:??? (+57,+29,-24)
デバッグ便利ですとか言われても余分な参照をクロージャにずっと引きずられたら困る
GCとか意識したコード書いたことないの?
780 : Name_Not - 2013/09/18(水) 18:23:21.98 ID:??? (+72,+30,-148)
>>777
分かってもらえなかったか……
console.dirはデバッガ使ったことない人でも表示がわかりやすいように入れただけで、
あってもなくてもどうでもいい部分なんだよ…

エラーで止まる設定にしたるとき
いざエラーが起きても最適化のせいで満足に状況を調べられないから困るってこと

あとChromeのデバッガはただV8のAPI叩いてるだけだからね
このことはV8コミュに何度もissueが挙がってる有名な問題なんだよ
でも根本的な仕組みの問題だから修正するのは難しい

まあ踏み込んだ話もどうでもよくて
言いたかったことはこれね>>747
781 : Name_Not - 2013/09/18(水) 18:26:59.26 ID:??? (+47,+29,-4)
本末転倒だな
782 : Name_Not - 2013/09/18(水) 18:28:04.39 ID:??? (+57,+29,-30)
最適化の問題じゃないよ?
参照が切れた変数をデバッグのためにずっと維持しておけってこと?
783 : Name_Not - 2013/09/18(水) 18:28:36.13 ID:??? (+57,+29,-45)
別にこれが良いとか悪いとか言いたいんじゃなくて
流れに沿った豆知識を書きたかっただけだからもう気にしないで
784 : Name_Not - 2013/09/18(水) 18:31:12.83 ID:??? (+90,+29,-3)
真のクロージャとか妙なこと言い出すからだろ
785 : Name_Not - 2013/09/18(水) 18:36:44.91 ID:??? (+57,+29,-31)
別にそこ突っ込むとこじゃないでしょ
対比のための強調語として「真の~」って書きたくなるものでしょ
そのくらい気持ちを組んでよ
786 : Name_Not - 2013/09/18(水) 19:17:44.97 ID:??? (+76,+29,-12)
対比のための強調語に「真の~」なんて使うやつは真の馬鹿だよ
787 : Name_Not - 2013/09/18(水) 19:32:13.70 ID:??? (+57,+29,-20)
真の~なんていう言葉は、真にそれ以外が偽者な場合か、
そうではないけどあえて突っ込んでもらうために使うかどっちかにしとけよ。
紛らわしい使い方すんな。
788 : Name_Not - 2013/09/18(水) 19:36:19.92 ID:??? (+31,-30,+0)
var idname = "v6";

var a1 = document.getElementById(idname);
var a2 = document.getElementById(idname);
var a3 = document.getElementById(idname);
var a4 = document.getElementById(idname);

var i1 = setInterval(function(){a1.click();}, 1000);
var i2 = setInterval(function(){a2.click();}, 1000);
var i3 = setInterval(function(){a3.click();}, 1000);
var i4 = setInterval(function(){a4.click();}, 1000);



同じ要素を複数のintervalで自動クリックするやつなんですけど
ここでは4つですが数は2個以上を想定してください
これを修正してください
789 : Name_Not - 2013/09/18(水) 19:47:39.00 ID:??? (+41,+13,+0)
>786-787
アスペ乙
790 : Name_Not - 2013/09/18(水) 19:53:38.04 ID:??? (+37,+11,+0)
>>788
日本語が意味不明
791 : Name_Not - 2013/09/18(水) 19:54:29.58 ID:??? (+7,-30,-54)
>>788

var idname = "v6";

var elm = document.getElementById(idname);

for (var i = 0, ivid = []; i < 4; ++i) {
ivid[i] = setInterval(function () { elm.click(); }, 1000);
}
792 : Name_Not - 2013/09/18(水) 20:00:16.44 ID:??? (-1,-29,-6)
複数のintervalとか言ってるんだから、intervalのリストが必要になるんじゃないか?
793 : Name_Not - 2013/09/18(水) 20:05:57.67 ID:??? (+11,-16,-1)
エスパーだが1秒ごとにクリックさせたいんだろう
794 : Name_Not - 2013/09/18(水) 20:08:15.30 ID:??? (+57,+29,-10)
同じくエスパーだが
たぶん一定間隔じゃなくある程度ランダムな間隔でクリックしたいのだろう
795 : Name_Not - 2013/09/18(水) 20:12:42.62 ID:??? (-2,-30,-42)
こうじゃないのか

for (var i = 0; i < 4; ++i) setTimeout(function () { elm.click(); }, 1000*i);
796 : Name_Not - 2013/09/18(水) 20:21:40.51 ID:??? (+57,+29,-4)
後で止める仕組みが必要なのかどうかも問題だ
797 : Name_Not - 2013/09/18(水) 20:27:51.88 ID:??? (+46,+18,-33)
元ソースから察するに要らないだろ
・i1、i2、i3、......単ローカル変数が何個あるか分からない
こんなもの使えない、意味もなくつけてるだけ
・精々数秒間程度、そもそもキャンセルがいることは稀
798 : Name_Not - 2013/09/18(水) 20:49:13.88 ID:??? (+57,+29,-4)
エスパーだが何らかのゲームの自動操作を行いたいんだろう
799 : Name_Not - 2013/09/18(水) 20:51:43.26 ID:??? (+35,-29,-36)
1つのintervalで1秒1クリックさせたいんですよ
そこでマルチスレッドぽく n数の分だけintervalを生成してそれぞれでクリックさせたいんですよ
さっきのコードの場合だとマルチスレッドで1秒間に4回くりっくすることになります
800 : Name_Not - 2013/09/18(水) 20:55:54.90 ID:??? (+59,+27,-12)
>>799
残念ながらJavaScriptでは、タイマーで呼び出される処理も含めて全部一つのスレッド上で実行される
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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