[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 01/05 16:44 / Filesize : 199 KB / Number-of Response : 969
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

JavaScriptスレ



1 名前:デフォルトの名無しさん [2011/08/26(金) 13:32:13.80 ]
ないようなので立ててみました
初心者から上級者まで気軽にどうぞ

テンプレは今後決めていってください

関連スレ
★★Java質問・相談スレッド147★★
hibari.2ch.net/test/read.cgi/tech/1312958339/

Eclipse統合M31【Java/C++/Ruby/Python/Perl】
hibari.2ch.net/test/read.cgi/tech/1295886572/

809 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:22:23.56 ]
うぉおお、スコープの理解が完全に間違ってたことが判明した!!
ifやwhileはローカルスコープあると思ってたあああ
道理でイミフな謎のバグがでるわけだorz

810 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:23:02.92 ]
for (i=0;i < 10;i++)(function (num) {

})(i);

そう言えばこんな風に書く人は本スレにいたね


811 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:26:29.95 ]
JSとか最近触ったけど可読性がクソということだけは理解できた

812 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:27:53.56 ]
>>811
それはない

813 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:29:28.52 ]
>>810
ものっそい低速になりそうだな

814 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:31:36.69 ]
>>809
普通に書いていれば、ローカルスコープの内外の
変数名を一緒にしたりしないから問題が起きたことがないな。

>>810
それはクロージャーを作る必要があるから
そうしていただけ。

815 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:32:02.99 ]
ループは普通にループで書けばよろしい。

816 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:35:15.23 ]
>>807がじわじわくるw

817 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:43:18.11 ]
>>806
> それでwhileループを書いてみてくれないか
じゃあここらで模範解答

while (condition) {
 ・・・
}

これでよい。 即時関数使ってないって? それ必要なの?
俺は必要になったことがないけど、もし本当に必要ならこうすれば良い。
これはどうしても使えといったから使っただけで、俺なら使わん。

(function() {

while (condition) {
 ・・・
}

}())



818 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 23:24:25.98 ]
>>797
こっちこそ老害。
今そうなっているからそれでいいのだと主張してる。

819 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 23:26:29.10 ]
ろう がい らう― 0【老害】
企業や政治の指導者層の高齢化が進み,円滑な世代の交代が行われず,組織の若返りがはばまれる状態。

DAIJIRIN Third Edition

820 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 23:39:33.71 ]
>>652
> 今そうなっているからそれでいいのだと主張してる。
そんなことは主張してない
仕様は常に更新されるべきだ

821 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 23:45:47.21 ]
>>818
代替手段のない即時関数をバッドノウハウ扱いする理想主義的意見が否定されてるんじゃないの?

822 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 23:49:00.32 ]
>>821
代替手段あるだろw
おまえは>>817で書くのか

823 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 23:53:37.90 ]
>>817 は、周回ごとのスコープはできていない。

824 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 23:55:22.00 ]
周回ごとのスコープ作ったら駄目だろw

825 名前:821 mailto:sage [2012/02/20(月) 00:00:08.25 ]
>>822
ごめん、わかりにくい書き方だった
件の主はブロックスコープの代替手段として提案された即時関数がバッドノウハウと主張してる
ES5には関数スコープしかないんだから関数スコープで代替するしかないのに「ブロックスコープを使うべき、即時関数はバッドノウハウだ」と主張してる
彼の中では関数スコープ自体が受け入れられないんだと思うよ
そんなに嫌ならこんなところで主張してないでES.nextで策定予定のletがちゃんと定義されるように議論に参加すればいいのにね

826 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:06:46.79 ]
>>824
え?ブロックスコープのある言語では周回ごとのスコープになるやん。

827 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:10:07.05 ]
彼はバッドノウハウの意味わかってるのかな?
即時関数がバッドノウハウなら即時関数に代わるグッドノウハウがなくてはならない
全部が全部バッドノウハウならそれはもうノウハウの問題じゃない



828 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:18:08.41 ]
いや別に本当はああ書きたい/書けるべきなのに、現状代替案としてこう書かざるを得ない
というのを指してバッドノウハウという表現は、おかしくはないと思うけど

829 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:18:12.74 ]
>>826
その論拠は?

830 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:33:27.13 ]
>【bad know-how】ソフトウェアなどを使いこなすために、ストレスを感じながらも
>しぶしぶ覚えなければならないようなノウハウ。高林哲による造語。氏によると、
>バッドノウハウは、複雑な設定を「奥が深い」として有難がってしまうマニア独特
>の感性によってはびこるという。

これだとちょっと違う気がするな。


>バッドノウハウは、ソフトウェアの複雑怪奇な仕様が歴史的に引き ずられ、根本
>的な改善は行われないまま、そのノウハウが文書によっ て受け継がれることに
>よって蓄積が進行する。

これだとまさにバッドノウハウ。


ただ、let使うのはなんか気が進まない

831 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:34:32.39 ]
>>823
> >>817 は、周回ごとのスコープはできていない。
ん?

ブロックスコープがある言語の場合、
while(cond) {
 int a=0;
 b++;
}

aはwhileの中に閉じ込められて、
bはwhileの外を参照するよね?

(function() {
 var a=0; //同じだよね?
while (condition) {
 //var a=0; //ここでやってもいい
 b++; //同じくスコープの外
 ・・・
}

}())


832 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:35:53.30 ]
>>829
論拠?試してみれば?

833 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:40:46.11 ]
(function() {

while (condition) {
 var a=0; //こっちしかダメだったねw
 b++; //同じくスコープの外
 ・・・
}

}())



834 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:41:43.02 ]
>>831
それは流石にピントズレてるだろ
>>810>>814に答え書いてあるだろ

835 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:42:11.59 ]
>>832
ゴマかすなよw

836 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:42:37.97 ]
(function() {
var i=0; //こっちのパターンと勘違いしたw
for (var i=0; i<length; i++) {
 var a=0;
 b++;
 ・・・
}

}())


837 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:42:50.32 ]
>>831
前者の場合、変数 a は、(記号は同じでも) 周回ごとに異なる変数。

>>833
JavaScripit の場合、var a は while の内でも外でも同じ。

>>835
え?



838 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:43:18.56 ]
>>834
なぜ?

839 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:44:52.00 ]
>>837

> >>833
> JavaScripit の場合、var a は while の内でも外でも同じ。

うん、でも重要な点はvarの位置ではなく、

1.var aのスコープは閉じており、
2.ループの最初で0を代入しているから

実質同じ事になっているとこうこと

840 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:46:56.18 ]
>>839
それはこの場合の本質には関係ない

841 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:47:48.54 ]
>>832
Javascriptの<ような>言語じゃなきゃ
周回ごとにスコープ出来てるか否かという概念自体がなりたたないだろ

842 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:47:57.94 ]
>>840
お前の本質とは、
全く同じ動きをして
代替として使えること以上に
重要なことなのか?

843 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:49:11.23 ]
>>842
クロージャ。コレでわからなきゃ半年ROMってろ

844 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:49:20.53 ]
>>839
ブロックスコープのある言語だと、while 内で宣言した変数は、
(参照を格納しておくのでもない限り) 別の周回で参照できない、
という意味で >>823>>826

845 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:50:58.51 ]
>>843
即時関数も、クロージャーなんだけどw

無名クロージャーを定義と共にすぐに実行することを
即時関数(パターン)と読んでるだけ

846 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:51:40.29 ]
>>845
それと>>839のどこに関係があるんだ

847 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:52:46.52 ]
>>844
うん。だから最初に値を初期化することまで含めて

「 (function(){}())と初期化 」を使った
ブロックの実装例だよ。



848 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:53:38.60 ]
>>846
馬鹿?

(function() {

}())

↑これが無名クロージャの即時実行

849 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:54:03.37 ]
>>844
そうじゃない言語もあるよね

850 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:54:27.24 ]
C言語か?

851 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:54:32.56 ]
>>848
話つながってないことに気づけよ

852 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:56:35.68 ]
>>851
勝手に切るな。
どこから別の話なんだよw

853 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:56:36.09 ]
クロージャっていまだによくわからん
これって無効には出来ないの?

854 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:57:02.92 ]
今まさに、バッドノウハウが生み出されている、その瞬間であります!!

855 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:57:25.80 ]
>>853
関数の外に持っていけばいいよw


856 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:58:09.23 ]
ちなみに即時関数は
オライリー本のJavaScriptによるでも
紹介されている、グッドノウハウです。

857 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:59:29.77 ]
オライリー本に紹介されるとグッドノウハウになるそうです\(^o^)/



858 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:00:40.05 ]
オライリー本にはバッドパーツとして
紹介されているものもありますよ。

即時関数はもちろんグッドですがw

859 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:02:41.34 ]
>>844
具体的に何の言語か教えて欲しい

>>817
周回スコープが出来てない事が指摘されてるのにクロージャとか関係ない話を続けているのはなぜ?


860 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:02:51.61 ]
>>856
>>830
下の典型例

861 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:02:54.35 ]
>>858
おまえは何もわかってない

バッドノウハウとは、使い方の問題なんだよ
存在の良し悪しじゃないんだ

862 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:05:50.26 ]
>>859
クロージャにスコープは関係ありありだろ
ちなみに俺は817とかじゃないが

863 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:08:02.57 ]
>>858
どの本です?
www.amazon.co.jp/s/ref=nb_sb_noss?__mk_ja_JP=%83J%83%5E%83J%83i&url=search-alias%3Dstripbooks&field-keywords=JavaScript%82%C9%82%E6%82%E9&x=6&y=16

864 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:08:52.00 ]
>>859

843 名前:デフォルトの名無しさん[sage] 投稿日:2012/02/20(月) 00:49:11.23
>>842
クロージャ。コレでわからなきゃ半年ROMってろ

865 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:09:44.48 ]
>>863
www.amazon.co.jp/dp/4873114888

866 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:18:41.61 ]
ほかの言語じゃあまり見られないような議論だな
やっぱり自由度が高いからか。

867 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:20:27.91 ]
>>862
関係ないとはいわんが、前進してないだろう
>>834で「>>810で答えが出てる」と指摘を受けておきながら「クロージャだ、即時関数だ」と言葉遊びを続ける理由がわからん



868 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:22:46.10 ]
>>834=>>862なんだが。。。

869 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:24:48.10 ]
>>810はwhileじゃないじゃん。

870 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:28:23.38 ]
whileを>>810っぽく書こうとするとこうなるな。

(function() {
var condition;

while(condition) (function() {
  condition = ?; // 条件書き換え
})();

})();

871 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:29:40.77 ]
俺が整理してやるよ
Javascriptでスコープいったらクロージャは無視出来ない
ここまではいいだろ? で
>>807wwでは毎回クロージャが作られる
>>831では毎回クロージャが作られない
そこが周回ごとにスコープ出来てない、言われてるんだろ

872 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:30:03.57 ]
>>868
それはすまんかった
>>839- から続く不毛な議論に終止符を打ちたかったんだが、途中から入ると難しいな…

>>869
while でも出来る

873 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:30:43.17 ]
>>872
> while でも出来る

じゃあ、実際にやってみ。

?って思うぞ。

874 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:32:32.98 ]
>>871

> >>807wwでは毎回クロージャが作られる

お前根本的なところがわかってないんじゃないか?
>>807はループになってない。

875 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:33:07.20 ]
>>871
> >>807wwでは毎回クロージャが作られる
ちょwおまwww

876 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:33:13.29 ]
>>807のクロージャーの部分は
whileの( 条件 ) だ。

877 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:37:04.76 ]
>>873

var i = 0;
while (i < 10) (function (i) {
 console.log(i++);
}(i));



878 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:37:26.72 ]
whileにクロージャーを使えというレスに
対するボケを見抜けない人は辛いなw

879 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:38:45.15 ]
>>877
想定通り、無限ループやっちゃったねw

880 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:40:58.13 ]
ねぇねぇ 今どんな気持ち?
        ∩___∩                     ∩___∩   
    ♪   | ノ ⌒  ⌒ヽハッ    __ _,, -ー ,,    ハッ   / ⌒  ⌒ 丶|
        /  (●)  (●)  ハッ   (/   "つ`..,:  ハッ (●)  (●) 丶
       |     ( _●_) ミ    :/       :::::i:.   ミ (_●_ )    |
 ___ 彡     |∪| ミ    :i        ─::!,,    ミ、 |∪|    、彡____     ねぇ今どんな気持ち?
 ヽ___       ヽノ、`\     ヽ.....:::::::::  ::::ij(_::●   / ヽノ     ___/ ねぇねぇったらー
       /       /ヽ <   r "     .r ミノ~.    〉 /\    丶      
      /      /    ̄   :|::|>>877 ::::| :::i ゚。     ̄♪   \    丶    
     /     /    ♪    :|::|    ::::| :::|:            \   丶     
     (_ ⌒丶...        :` |    ::::| :::|_:           /⌒_)     
      | /ヽ }.          :.,'    ::(  :::}            } ヘ /        
        し  )).         ::i      `.-‐"             J´((
          ソ  トントン                             ソ  トントン


881 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:41:44.01 ]
0
0
0
0
0
0
0
0
0
0
0
0
0


882 名前:877 mailto:sage [2012/02/20(月) 01:47:11.21 ]
そういうことか
var i = 0;
while (i < 10) i = (function (i) {
 console.log(i++);
 return i;
}(i));

883 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:47:49.11 ]
(function(){
var i = 0;
while (i++ < 10) (function (i) {
 console.log(i);
}(i));
}());


884 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:49:30.70 ]
>>882
iがスコープに閉じてない。


885 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:49:56.89 ]
var i = 0;
while (i++ < 10) (function () {
 console.log(i);
}());

こうだろwww

886 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:50:31.07 ]
リロードしろとあれだけ(ry

887 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:52:35.57 ]
で話は>>831という最終形態に戻る。

普通はこれでいいし、
var i=0;
while(i<10) {
 console.log(i++);
}

どうしてもというのなら、

(function() {
 var i=0;
 while (i<10) {
  console.log(i++);
 }
}())

これだけでいい。へんなコード書くな。



888 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:54:07.31 ]
>>887
だから、それだとスコープが毎回できないだろ
毎回スコープを作るのがお題なんだから
そのお題の理由はわからんけどw

889 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:55:01.25 ]
結局のところ、>>800が正しいならむしろES.nextのletがバッドノウハウになる気がするんだがそこんとこどうよ?

890 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:56:45.03 ]
whileとかどうせループの最初で変数初期化するんだから
これでいいが
(function() {
 var i=0;
 while (i<10) {
  var j=0, k=0;
  ・・・
 }
}())

変数初期化サボるとかどうしてもやりたいのなら
(function() {
 var i;
 while (i<10) {(function() {
  var j, k;
  ・・・
 }())}
}())

こう書けば?

{ ・・・ } が JavaScriptでは (function() { ・・・ }()) に
なるってだけの話をいつまで続けてるんだ?

891 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 02:01:51.13 ]
>>884
そこまで求めるのか
while 文の体裁を崩して条件式に関数を入れないと無理だと思うのだが


892 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 02:09:23.12 ]
すごく変態です……ってことだろ

少なくともブロックスコープさえあれば自然に書ける(C++派)
あるいは末尾再帰が最適化されるなら開き直って全部再帰で書ける(Scheme派)
letがなくてどっちもできない現状のJavaScriptは中途半端だなって気はする
つーかブロックスコープなんていらんから末尾再帰の最適化しろと言いたい

893 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 08:57:39.20 ]
>>885のは無意味
(function() {
 var i=0;
 while (i++ < 10) (function (n) {
  console.log(i++);
 })(i);
}());
これと
(function() {
 var i=0;
 while (i<10) {
  console.log(i++);
 }
}());
これじゃ意味が違うだろ


894 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 08:58:16.95 ]
上の方のconsole.log(i++)はnに置き換えてねw

895 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 10:32:13.71 ]
while(i ? i < 10 : (i = 0, true)) (function(i) {
 console.log(i)
})(i++)

896 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 11:53:50.87 ]
Javascriptは、条件式の部分で変数宣言ができないから、
条件式まで含めなくても実用上は困らないと思う。

897 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 15:04:50.75 ]
>>889
es6はlet定義しかないけど

(function() { let x = 10; {let x = x + 20; console.log(x)}})() //->NaN
(function() { let x = 10; let x2 = x + 20; console.log(x2)})()//->30
(function() { let x = 10; {let( x = x + 20)console.log(x)}})() //->30
を理解してりゃ問題ないと思う。

letでブロックスコープになると思ってるのが間違い。
>>800の言いたいことは多分こういうのだと思う。



898 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 17:21:27.95 ]
>>889
>>800は正しくない。
全てObjectなんて言えるのはSmalltalkみたいに
制御文の中のbodyもObjectにできるような言語。

Javascriptは、Schmeに多くを担いながら、
Cのsyntaxを使い、なおかついろいろと削ぎ落してブラウザ向けに軽量にした言語。
ECMAScriptの仕様的にも”primitive value"は"Object"ではない。

899 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 17:23:21.85 ]
意識しないうちにboxing/unboxingをするんだっけか

900 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 17:31:02.68 ]
>>892
Schemeは、letに関しては、
ラムダ式さえあれば、letも簡単に実現できる。(当時はBLOCKマクロ)
意味論的にも問題ないし、コンパイラもシンプルになる。"RABBIT: A Compiler for SCHEME"
けどプログラム書く時に不便だからletは言語仕様に入れようね派。"RnRS"

901 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 17:45:36.88 ]
ちなみに、Brendan Eichは、Javascript(Mocha, Livescript)を設計した時に、
"RABBIT: A Compiler for SCHEME"にもろに影響を受けて、
言語を小さくするためletは導入しない決定をしたと思われる。
Schemeを実装する予定でNetscape社に入ったと後に語っているので。

ただ「小さくする」制約が、今では全く無意味になったので、
EichはECMAScript仕様策定ではかなり盛り込む派に立っている。
moduleも付け加えたほうがいいと考えている。
けどそれは現在のWebの世界を尊重して慎重にやらないといけないという立場。
だからHarmonyを仕切ってES4を一旦白紙に戻した。
けど捨てたわけじゃなくて個別の項目について継続審議中。


902 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 17:49:31.65 ]
letは、lambdaを使うマクロとして実装することもできるけど、プリミティブとして実装すると、
作ったらすぐその場で適用する関数として、最適化できるんだよな確か。

903 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 18:24:48.37 ]
let式じゃなくてlet文なら持ち運ばれる可能性ないからね。
エスケープ解析しなくてもクロージャ生成を端折れる。

904 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 21:28:25.03 ]
javascriptって結局lispのパクリemacsのパクリなんだろ
もうjavascript廃止してlispを標準にしろよ

905 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 22:11:25.64 ]
ブラウザ標準スクリプト言語として?
妄想は他の人の目に付かないところでやってくれ

906 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 22:31:42.97 ]
見た目がC言語っぽくないと拒絶しちゃう人がいかに多いかわかってないだろ >>904

907 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 23:09:13.62 ]
まあ、ブロックスコープがないC言語でも
UnixやLinuxが作れるように、合ったら便利だけど
無くても問題ないものなんだろうね。
関数にしておけばいいだけなわけだし。



908 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 23:18:17.08 ]
> ブロックスコープがないC言語
> ブロックスコープがないC言語
> ブロックスコープがないC言語

909 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 23:27:47.91 ]
早速一匹釣れたかw

910 名前:1/2 mailto:sage [2012/02/20(月) 23:27:57.98 ]
そもそもCはオブジェクト指向じゃない。その上、for文にブロック変数が作れるよ。ミスリー?
スコープが簡単に作れないってのはJavaScriptが根本に抱えてる問題の一つだよ
現実から目を背けたって意味ない

911 名前:2/2 mailto:sage [2012/02/20(月) 23:30:19.23 ]
JavaScriptは

他のオブジェクト指向言語のように直感的にブロックでスコープが作れないし
(ex.ループ内にスコープを作ろうとするだけで複雑なコードになる)

Function objectでスコープ作れるけど、Lisp/Schemeほどの便利さはない
(ex.末尾再帰最適化されない、高階関数が簡単にはできない)

912 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 23:55:05.01 ]
いや、高階関数は結構得意。
Javascriptの特徴といっていいくらい。
設計時にクロージャを導入する決断をしたのは素晴らしい。
Schemeと一緒で部分適用は苦手。(ML, Haskellは得意)

913 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 00:03:31.16 ]
玄人向きの機能が無駄に充実してるのに基本的な機能が足りない
でもそんなところが可愛いよJavaScript

914 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 00:20:58.15 ]
釣り人が足滑らせて溺れながら「釣れたか」とか言ってる?

915 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 03:24:10.03 ]
>>903
var x = eval("let (x = 20) { x }")
これで簡単に外に漏れる。
var xの実行コンテキストがGlobalならCallがメモリリークするのと同じ問題が起きる。

916 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 08:43:22.34 ]
evalはバッドノウハウだから
どうでもいい。

917 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 10:17:16.82 ]
次のテンプレ案これでどうかな。

【言語設計】JavaScriptスレ 2.0【限定】
言語としてのJavaScriptに関する議論のスレです。
Web製作におけるJavaScriptの質問はWeb製作板へ。



918 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 10:37:29.46 ]
せっかくのホイホイスレなんだから限定にすんなよ

919 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 10:53:08.81 ]
次スレイラネ
ECMAScriptスレで必要充分だろ

920 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 13:22:20.88 ]
無いと分かってない奴が立てるんじゃないかな。このスレみたいに。

921 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 13:28:03.39 ]
立てなくてもいいからdartスレのバカどもをちゃんと引き取ってくれよ

922 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 13:55:52.87 ]
おまえが誘導しろよ

923 名前:デフォルトの名無しさん [2012/02/21(火) 15:21:48.40 ]
2ちゃんねるはオワコン

質問サイトに移行したほうが俺らのため

924 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 16:00:52.24 ]
質問サイトもいいかげんオワコンだろがw

はてなはあいかわらずのはてなクオリティだし、他のサービスはほとんどの回答者がハズレ回答者だし。

925 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 20:40:17.66 ]
dartは別スレでいいだろ

926 名前:デフォルトの名無しさん [2012/02/21(火) 21:32:28.60 ]
連想配列をキーそのものでソートする方法を教えてください

927 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 22:31:52.58 ]
連想配列はソートできませんので連想配列のキーをソートしてください。



928 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 22:47:05.49 ]
javascrpitを使って、skypeのチャットのようなことをブラウザでやりたいのですが可能でしょうか?
サーバからの要求を受ける機能があるかどうかというところだとは思っているのですが

929 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 22:52:47.17 ]
>>928
Ajaxで検索

930 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 23:01:45.08 ]
>>929
早い返信ありがとうございます
www.openspc2.org/JavaScript/Ajax/Ajax_study/chapter02/001/index.html
↑ググってすぐに見つかった、ここをとりあえず見てました。

ざっと読んだ感じ、同期を取ることがJSでは不可能なため、setIntervalなどを使っていくしかないという認識でよいでしょうか?

931 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 23:07:09.36 ]
Push自体は無理なので
定期的なポーリングによるPushもどきになるのは仕方ない

932 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 23:14:36.15 ]
なるほど、やはりそうなりますよね

私はチャットのデータをMySqlで管理したく思っているのですが、
とすると、数秒起きに最新何十件のチャットを読み込みにいくということになりそうですね。
あとはどのようにレスポンスをあげていくか頑張ってみます。
ありがとうございました

933 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 23:35:17.53 ]
>>932
「何かあるまで応答を返さない」 という手もあるぞ

934 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 23:38:33.57 ]
ローカルストレージはブラウザによって作法が違うのでよく調べたほうが良い。
今後はHTML5 client-side database storageに集約されていくのだろうが。

935 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 00:15:40.04 ]
pushが無理とかHTML4時代の人間ばかりだなw

936 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 00:24:19.87 ]
スレがすげー伸びてるw

>>727
>>725が言っているのは、
var foo = function foo() {}
function foo() {}
と全く同じ意味だから前者は無駄ってことなんじゃ?


937 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 00:53:58.05 ]
>>930
よろしくありません
ピント:ggrks



938 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 01:59:31.06 ]
>>935>>937
まぁそう言わずに、勉強する気はありますので、せめて何という技術かくらいは教えていただけませんか

939 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 02:41:36.40 ]
>>936
どっちかと言えば
var foo = function(){};
と同じと言いたかった。
fooを二度書く意味あんのかよと。格好悪いし。

940 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 03:19:41.23 ]
>>939
同じじゃないよ
nameとスコープと変数の実体化に影響する

941 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 03:23:04.22 ]
>>936スタイルで書いてると(必ずしも同じ名前である必要はない)
幸せになれるよ

942 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 09:18:42.72 ]
>>936,939
var f = function (){};console.log(f.name);
var f = function hoge(){};console.log(f.name);
var f = function hoge(){},b = f;console.log(b.name);

この3つ実行すりゃ違いわかるよ

943 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 11:08:36.16 ]
>>941
後者で書いてると幸せになるの?

944 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 11:27:48.11 ]
>>938
横レスだけど、HTML5前提でよければ、WebSocketという技術がある
詳しくは、WikipediaなりGoogleで調べてちょ

945 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 11:32:34.23 ]
(>>944の補足)
WebチャットなりWebSocket技術はWebブラウザ前提の話題だから、
もし続きの質問がしたいのであれば、このスレよりも
WebProg板のHTML5スレのほうが期待するレスをもらえると思う

946 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 11:36:43.74 ]
こういうプッシュとかを使う物って、その間ずっとセッションを残してる訳だろ?
サーバ側が対応してないと実際使用するのは難しい

947 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 11:49:04.39 ]
WebSocketは(socketという名前が示すように)双方向通信技術であって、
プッシュ技術ではないし、さらにはサーバ側の対応は(最初から)必須



948 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 14:33:11.47 ]
>>939
それは違う。>>936の2つとは違う。

>>942
>>936の2つは同じ。

949 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 16:20:31.58 ]
>>948
var f = function hoge () {
console.log(hoge);
};
console.log(hoge);

まぁ両方fooだから同じとも言えるけど

950 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 16:59:58.57 ]
var foo = function foo() { alert(foo) }
var bar = foo;
foo = undefined;
bar(); // IE以外で動作

これならarguments.calleeで良い気がするけど、
他にメリットあるんだろうか。

951 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 17:02:02.86 ]
function expressionのnameはbody内で有効な識別子に過ぎないから当たり前。
再起その他、自己参照のある関数用。

952 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 20:58:44.24 ]
>>944-947
遅くなりましたが返信ありがとうございます
HTML5対応ブラウザはWebSocket、未対応ブラウザはsetIntervalで動くように試してみたいと思います
さっそく勉強に入ります
これから作るぞーという今の気持ちが一番楽しくていいですね

953 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 22:30:45.66 ]
arguments.calleeは使ったらダメ

954 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 22:31:31.36 ]
で、最終的にはアレを使えばいいから
作らなくてよくなるんだよなw

955 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 23:07:51.56 ]
アレってなんだよ
websocketはサーバー側が対応してないとどうにもならんしポーリングはラグるしcommetは接続数たらんくなるしなので同期はやるだけの価値がないというのが俺の結論

956 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 23:41:02.25 ]
サーバーは対応してるの使えばいいだけ

957 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 23:42:07.70 ]
>>955
やるだけの価値がない理由が
技術的制限の話しかでてないぞ。

価値というのはそれを使うユーザーが
必要かどうかだろ。



958 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 00:37:20.11 ]
>>953
なんで?

959 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 04:33:02.14 ]
>>953 これを見て思い出したけども、
そういや何でES5でarguments.calleeって使えなくなるの?
もともと自分自身への参照がargumentsの中にあるのは違和感があったけど。

960 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 09:51:34.43 ]
>>958-959
togetter.com/li/215907

961 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 09:56:02.34 ]
本来callerとかcalleeとか、スタックフレームから参照するはずのものを、
関数オブジェクト経由で参照するとか、設計が変だったからな、あれ。

962 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 11:52:37.38 ]
>>961
arguments.caller: call site依存 (要はスタックフレームへの参照)
arguments.callee: 自分のことだからセルフリファレンスがちゃんと定義されれば必要ない。












963 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 12:20:55.93 ]
callerが危険だから廃止なのは分かる。
calleeはargumentsにぶら下げるのが不恰好だから廃止って感じなのか。

964 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 12:39:51.85 ]
argumentsは動的に決まるのに、calleeは参照場所で静的に決まってるからね。
あまりいい整理の仕方じゃなかったね。

965 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 13:34:12.67 ]
関数名は__FUNC__で取得できるようにすれば良い。


966 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 13:49:03.73 ]
WMIをつかうとき、取得結果をEnumeratorに食わせなければいけない
理由をおしえてください。

967 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 00:24:37.57 ]
WMIのメソッドがコレクションを返すから



968 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 11:33:13.91 ]
コレクションは直接見れないの?






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<199KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef