[表示 : 全て 最新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/

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