JavaScriptは消滅すべきだったよな (767レス)
1-

474
(3): 2013/02/01(金)02:48 AAS
言語とコンテンツをごっちゃにしてねえか?

JSは言語としては面白い。
配列すら存在しない、辞書と関数だけで全てを表現するストイックさにはシビれるものがある。

この愉快で面白くて異常に尖った言語を、
誰もが使うウェブブラウザで動かすのがナンセンスだって言ってる。

そのせいで、開発者じゃない一般の利用者ですら、JSの存在を意識せざるを得ない。
結果、利用者に「IE バージョンxx以上でご覧ください」って要求する現状はおかしいだろ。
475: 2013/02/01(金)05:41 AAS
>>473
景気良い時に作られた笹子トンネルは
杜撰な施工で後の世代に禍根を残した
476: 2013/02/01(金)06:11 AAS
ストイックどころかvar無しでグローバルとか変態な変数スコープとか変にカジュアルにした
部分がとても嫌。
477
(3): 2013/02/01(金)06:28 AAS
var無しは外側の関数スコープの宣言を探しに行くだけで、即グローバルになるわけじゃないぞ
クロージャとかを考えるとこの仕様のほうが素直だと思うけどね
478: 2013/02/01(金)07:26 AAS
varをmyにするセンスよりマシだけど
localとかprivateで良かった起臥す
479: 2013/02/01(金)08:08 AAS
varはスコープの内側で有効な変数を宣言するものであって、
ローカルな変数を宣言するっていう意味のものでは無いと思うのだよね
なのでlocalやprivateは不適切に思える

グローバルスコープでvar宣言すれば、それは一番外側にあるグローバルスコープの内側で有効な、
つまりグローバル変数になるわけだ

この辺を全部varだけで済ますのが>>474の言うようなストイックなとこだと思う
480
(3): 2013/02/01(金)08:46 AAS
varみたいな修飾子をつけると影響範囲が広くなる、ならまだ解るのだけれども「つけ忘れると意図せず
影響範囲が広くなる」と言うのは関心の分離という意味では筋の悪いデザインだと思う。
つけ忘れる可能性があるものは何時か必ずつけ忘れるのだから。
var一つで済ますのは良いのだけれども、使い方が逆なんだよね。
481: 2013/02/01(金)09:30 AAS
>>477
外を見に行くのはともかく見つからない場合はデフォで変数を一番大きなスコープに作成
する必要が合ったのが不具合きわまりない。
482: 2013/02/01(金)10:59 AAS
>>477
ん?グローバルになるんじゃないの?
グローバルにならないのなら、どんなスコープになるの?
483
(3): 2013/02/01(金)13:50 AAS
>>477
varって「ローカル変数を定義する」って説明されるし、現実にはその通り使うけど、
実際は「自分より上位のスコープにある、同名の変数を隠蔽する」機能なのよね。

「変数は暗黙に定義される」って軽量言語らしい所と、
クロージャが使えることを両立させようとすると、
素直っちゃあ素直な作りなんだよな。

純粋に言語として見れば、JSは面白いんだがなぁ……
484
(2): 2013/02/01(金)14:35 AAS
>>483
varは、同じ変数が上位のスコープにあったらそれを隠蔽するという仕様なだけで、
> 実際は「自分より上位のスコープにある、同名の変数を隠蔽する」機能
というのは変だぞ。
> ローカル変数を定義する
こっちが本筋の機能でしょ。
485
(5): 2013/02/01(金)15:57 AAS
別にvarが無くたって変数が暗黙的に定義できてクロージャが使える言語なんていくらでもあるでしょ。
>>483は曲解過ぎる。


JavaScriptのvar無しでの振る舞いの仕様がウンコであることはstrictモードの存在自体が証明している。
486
(2): 2013/02/01(金)17:29 AAS
>>485
varみたいなものが無い場合、
上位のスコープで使ってるかもしれない名前の変数をローカルで使いたいときはどうするの?
デフォルトでは上位のスコープを見に行かないとか?
487
(2): 2013/02/02(土)07:20 AAS
>>484
悪いが仕様を語るならまず仕様を読め。
「同じ変数が上位のスコープにあったらそれを隠蔽するという仕様」とやらで

alert(a)
var a = "A"



alert(a)
a = "A"

の振る舞いの違いを説明してくれ。

>>486
何を言いたいのか解らんがJavaScriptも変数宣言は環境ローカルしかないぞ。
488
(4): 2013/02/02(土)09:17 AAS
>>486
レキシカルスコープの中での変数名の重複を許していない言語が多い。つまり、宣言時に外の
スコープで既に宣言されている変数名は内側のスコープでは新たな変数名としては使えない。
そしてこれはクロージャが使える云々とは全く関係がない。
489: 2013/02/02(土)15:10 AAS
>>488
レキシカルスコープ上で変数名の重複を重複を許さないとか、そんな変態的な仕様な言語は多くないだろ
そもそもLISPがそんな仕様じゃないし

そういう言語だと、関数の仮引数も同じく関数スコープ上で重複をゆるされなかったりするのか?
490: 2013/02/03(日)06:47 AAS
varは変数宣言以外の何者でもないだろ。
491
(2): 2013/02/03(日)17:52 AAS
宣言しなくても変数は使えるんだから、varの実質的意味はスコープの制限にある
492
(1): 2013/02/03(日)18:21 AAS
実質的意味とか宣う頓珍漢な俺様曲解に実質的意味など何も無いからw

varの意味はローカル変数を宣言して実際に生成すること。
具体的には変数スコープに入ったときにスコープ内のvar以下の識別子を全て列挙して
スコープ内の変数名として扱い、値としてundefinedを代入する。これが仕様。

varによってローカル変数が宣言され生成された「結果の一部」がそれ以後の変数への
代入や参照でスコープが制限されているように見えるだけの話。しかしその理解も全体
の一部にしか過ぎないから、「隠蔽」とか「スコープの制限」とかいう理解に留まって
いる限り>>487の例ですら解釈出来ない。

そんな問題ありありの俺様曲解にこだわるメリットなんて何も無いと思うのだがwww
仕様通りの「ローカル変数を宣言」で何も困らん。
493
(2): 2013/02/03(日)19:47 AAS
>>492
そいで結局のところおまえはvarは不要と考えてるわけ?
Coffeescriptみたいにスコープ内側では重複した変数名を許さないのがお好み?
もしくはスコープ外側を参照する変数にはouterみたいな宣言をつけるとか
494: 2013/02/03(日)20:48 AAS
>>493
自分の感想ではvarの有無なんてどっちでも良いよ。ウンコな部分はそこじゃない。

JavaScriptに関してはstrictモード相当がデフォになることで暗黙のグローバル変数が
無くなって、結果として「宣言しなくても変数は使える」なんて宣う>>491みたいな
バカが根絶されれば当面は満足。
495: 2013/02/03(日)21:45 AAS
宣言無しで使えるのは事実だろうがw代入する必要はあるがw
496: 2013/02/03(日)22:17 AAS
宣言無しだとグローバル変数として使えてしまうのがウンコだと何度言ったら。
stirctモード相当がデフォになれば宣言無し変数への代入はエラーになる。宣言無しでは
変数は使えなくなるわけで、結果として>>491みたいなバカも根絶されて重畳。

非strictモードで宣言無し変数への代入が暗黙のグローバル変数扱いになるのは代入操作が
そういうウンコな仕様になっているだけの話であって、varの仕様自体とは直接は無関係。
こんなウンコ仕様が残っていることもvarはスコープを制限とか変な曲解を流布する>>491
みたいなバカが絶えん一因だとも思っている。
497: 2013/02/04(月)10:40 AAS
>>473
こういう発想でJavaが生まれたりWindowsが無駄に重くなったりしたのかなと思って感心した
個人的にはコピペにして語り継ぎたい
498: 2013/02/04(月)12:18 AAS
>どんなにDQNを生んでもいいんだという
>イカれた風潮ができあがってしまった

これはもう死語だと早く気づかなくちゃいけない
そして景気と同じで大量生産大量消費している時分が一番人類も伸びるんだよ
その証拠にDQNでなくとも躾に五月蝿い育て方はしなくなったしな

DQNが増える→犯罪が増える→治安維持が必要
はいいが、
DQN撲滅と仮定→犯罪が減る→??
これは人類がもつエントロピー的にまずい。

「節約」すれば世のため人のためになってるって勘違いしてる日本の経済と似ていると思う
NewTypeなんていってる人は人類の進化をわかっていないな
ま、嫌でも感じずには入られないからこんな不等式を書きたくなるんだろうけどね
499
(1): 2013/02/04(月)16:59 AAS
>>493
で、お前の
> 実際は「自分より上位のスコープにある、同名の変数を隠蔽する」機能なのよね。
という主張はどうなったわけ?
500: 2013/02/05(火)03:15 AAS
>>499
それはおれが言ってるわけじゃないけど
varは上位のスコープの同名の変数を隠蔽する機能を持ってるってことじゃないの?
それが本質かどうかはおれにとってはどうでもいい
var自体いらねーとか言う主張に文句があっただけだ
501
(1): 2013/02/05(火)04:33 AAS
そもそもvarいらね〜だなんて誰も言っていない件。
502
(1): 2013/02/05(火)04:54 AAS
>>501
>>480とか>>485とか>>488とかかな
503
(1): 2013/02/05(火)05:17 AAS
>>502
どれ一つとしてもvarいらね〜だなんて言っていない件w

>>480は暗黙の変数がグローバルスコープで作成されるのは筋が悪いと言っているだけだし
>>485は"「変数は暗黙に定義される」って軽量言語らしい所と、クロージャが使えることを
両立"するのにvarは必須ではないといっているだけだし、
>>488は言わんとする意味がわからんが少なくとも「varいらね〜」とは一言も言っていない
のはわかる。

var無しでの振る舞いに文句を言うのとvarはいらね〜と文句を言うのは全く別問題だぞ。
1-
あと 264 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.008s