14/12/05 12:20:14.04 fmzBASgG.net
【前スレ-2】
JavaScript ライブラリ総合質問所 vol.4
スレリンク(hp板)
Node.js + Express
スレリンク(php板)
【MVW】AngularJS {{2}}【Google】 [転載禁止]©2ch.net
スレリンク(php板)
enchant.js
スレリンク(gamedev板)
むしろjavascriptでゲーム作ろうぜ
スレリンク(gamedev板)
3:デフォルトの名無しさん
14/12/05 12:22:14.63 fmzBASgG.net
ああ、間違った。
>>2 は関連スレ-2です。
次スレは>>980あたりでお願いします。
4:デフォルトの名無しさん
14/12/05 12:28:49.65 S74tDLHo.net
板毎の整理までして戴いて超GJでござる
5:デフォルトの名無しさん
14/12/05 14:51:01.34 v8ZX4BwT.net
ノ ゚.ノヽ , /} ...
,,イ`" 、-' `;_' ' ..::::::::::::::...
,-、 _.._ ( (,(~ヽ'~ ..:::::::::::::::::::::::
)'~ レー' 〉 ヽ i`'} .:::::::::::::::::::::::
~つ '-ー、 i | i' ...:::::::::::::::::::::::
/ < / 。/ ! ......::::::::::::::::::::::::: これは>>1乙じゃなくて
/ ~^´ /},-'' ,●::::::::::::::::::::::::::::::::::::
i、 ,i' _,,...,-‐-、/ i :::::::: .:::::::::::::
..ゝ <,,-==、 ,,-,/ .::::::::::: 放射能がうんたら
) {~''~>`v-''`ー゙`'~ ..::::::::: ........::.
{ レ_ノ ..::::::::. ......:::::::::
ノ '' ..::::::: ...::.:...:::::::::
.::::::::: ...:......:::::::::::: .
.:::::::::::. ..... .. ..:::::::::::::::::::::::: :::.
::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. :: ::..
.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: ::.
::::::::::::::::: :::::::::::::::::::::::::::::: :::::
.:: ::. :::
6:デフォルトの名無しさん
14/12/05 20:23:41.06 JcHTtYO/.net
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(cisburger.com)
URLリンク(up.pangya.tv)
7:デフォルトの名無しさん
14/12/05 20:48:53.50 +TXyzC2W.net
ここはJavaScript4のスレです
URLリンク(ja.wikipedia.org)
ECMAScript 4
「JavaScript#JavaScript 2.0」も参照
ECMAScript 4 は過去2回仕様作成が挑戦されたが、仕様がまとまらず、失敗に終わっている。
1回目[編集]
2000年~2003年ごろ行われた。主に、旧Netscape社とMicrosoft社によって行われたが、意見がまとまらずに、打ち切りとなった。この時の案は ActionScript へと引き継がれた。
URLリンク(www.mozilla.org) - 昔のNetscape草案
2回目[編集]
2007年~2008年ごろ、2回目の仕様作成が行われた。大きく機能を追加される予定であったが、意見がまとまらず、2008年8月13日に、小規模の改善にとどまる、ECMAScript 3.1 を進めることとなった[3]。仕様は、URLリンク(www.ecmascript.org) にて公開されている。
以下のような予定があった。
大規模・大人数開発のための機能の追加[要出典]
型に関する機能の追加[要出典]
ジェネリックプログラミングの機能の追加
ECMAScript 3 が下位互換だが、互換でない仕様が一部に入る[要出典]
ActionScript 3 の上位互換だが、互換でない仕様が一部に入る[要出典]
8:デフォルトの名無しさん
14/12/06 00:47:10.87 katyEhxk.net
いやいやいやいやいやいやいやいやいやいや、
ただのPart 4ですからー残念!
9:デフォルトの名無しさん
14/12/06 00:52:42.22 katyEhxk.net
>>2
そういやWeb制作板の方にも質問スレがあったんだった。
+ JavaScript の質問用スレッド vol.121 +©2ch.net
スレリンク(hp板)
そして>>6は一体どこの誤爆?
10:デフォルトの名無しさん
14/12/06 13:37:22.95 ERRenF6X.net
ろ・ろ・ろりようじょちゃうわっ!
11:デフォルトの名無しさん
15/01/22 21:05:26.72 lh8u5jbd.net
lodash 3.0 リリース間近!
URLリンク(github.com)
3.0-preから-preが外れました!
スレが多すぎてどこに書けばいいかわからないので
関連スレすべてにマルチポストしています。m(__)m
12:デフォルトの名無しさん
15/01/23 04:56:10.36 Hr76SqrY.net
せっかく貼ってもらって恐縮だが
ここは関連してない
13:デフォルトの名無しさん
15/01/28 16:27:09.57 8HD8W7Zv.net
フェラチオ
14:デフォルトの名無しさん
15/02/11 21:37:34.73 z1YCt8TB.net
URLリンク(www.mpi-sws.org)
GoogleはJSに「新モードを追加する」という方向性に舵をきり始めた。
GoogleはSaneScript、SaneModeをV8上に今年上半期に実装する。
これはJSの機能を一部制限し、動作を変えることで強力な最適化を可能にする。
語弊を恐れずに言うと、asm.jsの発展版であり、
asm.jsがJSの10%の機能、ユースケースをターゲットにしたものなら、Saneは90%程度だ。
そして今年下半期にはSaneとシンクロする型システムを導入し、SoundScriptとなってharmonyの次の音色をJSにもたらす。
JSは静的&動的型付け、クラス&プロトタイプベース言語となってあらゆる人々の要求に答える言語へと成長する。
それは遠い未来の話ではない。1年の間にその変化が起こるのだ。
15:デフォルトの名無しさん
15/02/11 21:46:25.26 fVfIbgvg.net
つまり標準化をやめてオレオレ拡張するってことか
16:デフォルトの名無しさん
15/02/11 21:51:27.65 nRKk5Oa4.net
よくわかんないけどウェブプログラマがIEを恨む時代からChromeを恨む時代になる?
17:デフォルトの名無しさん
15/02/11 21:54:42.46 z1YCt8TB.net
違う。これを発表したのはまさにTC39Meetingでだ。
だからGoogleはこれがES7あたりで標準になることを望んでいる。
O.oのときと同じく先行実験をするということ。
しかしJSが徐々に「Living Standerd」化していってるのは否定しない。
これは良い悪いではなく抗えない時代の流れなのだと思う。
そういえばこれと同じようにMozilla陣営が実験を進めていたParallelsは、
共感が少ないということで白紙に戻ったそうだ。
この取り組みが成功し、標準になるかどうかは結局は我々開発者の評判次第ということだ。
18:デフォルトの名無しさん
15/02/11 22:07:33.80 z1YCt8TB.net
皆はasm.jsを手書きで書こうとして詰まったり、思ったよりパフォーマンスが上がらなかったことはないだろうか。
Saneなら違う。SaneはほぼJSの感覚で手で楽にかけるし、パフォーマンスだけでなくリーディングの面でも素晴らしい効果をもたらす。
問題はこのJSにモードを増やすという考え方が、開発者たちにとって歓迎されるかどうかだ。
このasm.jsについてのissueを見てほしい。
URLリンク(code.google.com)
10でも多いレス数は80。100で大人気のスター数は630。
当初Googleはasm.js向けの最適化はしないと言っていたのが徐々に主張が変わり、
今では新最適化エンジンで"use asm"を認識し、最適化モードを切り替えられるようにしたほどである。
今回の"use sane"アイディアはこういったことから開発者の受けがいいと判断してのことだろう。
19:デフォルトの名無しさん
15/02/11 22:19:43.31 TfFe/slw.net
asm.jsで目的は達成してるし他にはいらん
しかもasm.jsはソースがグチャグチャになるからアセンブラ並の難読化の役割も果たしてる
分かりやすくして欲しくない
20:デフォルトの名無しさん
15/02/11 23:07:43.53 z1YCt8TB.net
asm.jsはネイティブのコードをJS化するときに活用できるものであって、
"use strict"の強化版的なSaneModeとはユースケースが違う。
特にvarの使用位置にこだわる人やLint勢、クラスベース言語経験者からは喜ばれると思う。
21:デフォルトの名無しさん
15/02/11 23:21:05.94 z1YCt8TB.net
Sane/Soundで一番JSらしくなくなるのはオブジェクトが拡張できなくなる点だが、
sealedされて型のついたオブジェクトというのは、ES7で前々から提案されていたTypedObjectと同じだ。
コンストラクタがデフォルトでTypedObjectを返すようになるモードと考えれば、違和感も薄れるかもしれない。
22:デフォルトの名無しさん
15/02/11 23:31:26.15 TfFe/slw.net
pdf読んだが、ただのstrict modeの拡張レベルの話しだな
SoundScriptの方にいたってはTypeScriptのパクリだし
TypeScriptパクる奴は後を絶たないな
23:デフォルトの名無しさん
15/02/11 23:38:26.87 sJPqGjE7.net
パクってもらうのが目的な気がしてならない
24:デフォルトの名無しさん
15/02/12 04:27:00.28 vBHOZlzG.net
パクリも何もTypedScriptは元々ES6に向けたharmonyの機能を先行して実装し、
それに加えてES4の頃からアイディアがあってES7辺りでの実現が見込まれていた型注釈を組み込んだものだよ。
そしてTypeScriptの目標は自身(型注釈)がES7で取り入れられて最終的に用無しになることだからね。
CoffeeScriptなんかとよく並べられるが、どちらかと言うとtraceurや6to5みたいなトランスレーターの仲間と考えた方がいい。
とは言えTSの型注釈はコンパイル時の整合性チェックのためのもので、実行時に活用するSSとは少し有り様が違う。
25:デフォルトの名無しさん
15/02/12 13:51:21.11 sZL3z8VT.net
>>24
JavaScriptに型注釈が取り入れられるわけないし必要ない
それにブラウザ内蔵オブジェクトに正しく型を付けられるようにしたのはTypedScriptが最初だ
アイディアレベルのものと実際に実用的に動くものにしたのでは天と地ほどの差がある
実行時に活用するのは同じGoogleのAtScriptがあるだろ
26:デフォルトの名無しさん
15/02/12 15:31:26.12 vBHOZlzG.net
>>25
>>型注釈が取り入れられるわけない
そんなことはない
ただし、ESでの型注釈は現状無難なguardの方向になる可能性が一番高い
SSはもっと踏み込んでる
>>ブラウザ内蔵オブジェクトに正しく型を付けられるようにしたの~
DefinitelyTypedについて言っているのならそれは完全にTSの功績
だがそれはTSの型注釈がコンパイル時の検証のためのものだから必要なのであって
ランタイムのチェックには必要ないもの
>>アイディアレベルのものと実際に実用的に動くものにしたのでは天と地ほどの差がある
別にTSの実装が最初かどうかは論じてない
パクリかどうかについて言ったまでのこと
そういう論展開ならなおさら実装をパクったわけではないからぱっと見似ている機能を入れてもパクリでないということになる
>>AtScript~
もしguardのことを言っているのであればそれもまたES7アイディアの一つで別軸、別機能、別の話
27:デフォルトの名無しさん
15/02/12 16:52:25.34 sZL3z8VT.net
>>26
> ただし、ESでの型注釈は現状無難なguardの方向になる可能性が一番高い
guardはブレンダン・アイクにいらねー言われてたよ
> DefinitelyTypedについて言っているのならそれは完全にTSの功績
ブラウザ内蔵オブジェクトは単純なclassの定義だけじゃ型付け出来ないものがある
TypeScriptは若干独特な仕様のinterfaceを導入して正しく型付けしている
28:デフォルトの名無しさん
15/02/12 18:47:26.14 vBHOZlzG.net
>>27
guardそのものではないが、実行時の型チェック→エラー機能に留まる≒guardということ。
それと別に型が正しく型付けできない云々はあくまでTSの問題。TSが型をどのように定義し利用してるかの問題であって、一般的な話ではない。
そもそもTSにおける型とは架空のものだから。架空のものなのはJSが曖昧だから。
その点SSはそもそもクラスベースの世界だからインスタンスに紐付けられているクラス情報で判断できる。
で、ビルドインコンストラクタについてはどうやって外部の(プロトタイプベースの)世界と折り合いをつけるのかが示されていないから、
ランタイムチェックについては問題ないがAOT最適化をどうやるのかはなんとも言えない。
29:デフォルトの名無しさん
15/02/13 21:09:48.47 WDmbay81.net
jsonの日
30:デフォルトの名無しさん
15/02/14 03:59:43.76 TJAnvvXO.net
リア充の日
31:デフォルトの名無しさん
15/02/16 00:41:45.50 /X+NPUTO.net
Effective JavaScript読むとJSのきもさに眩暈がするな
元々ガチ向けじゃなかったものをガチ向けにした気持ち悪さ
まるで遊戯王
32:デフォルトの名無しさん
15/02/16 02:39:37.43 4iM7fmBu.net
どんな言語でもプログラムした事無い素人の典型的なレスだな(笑)
33:デフォルトの名無しさん
15/02/16 08:14:21.62 1Y+K6fCR.net
キモイだろ。普通に。
ここまで捏ね繰り回されたコードが普通に使われる言語は珍しい。
他の言語だとそういうキモイコードは、面白いけどさあ、で大体終わる。
34:デフォルトの名無しさん
15/02/16 09:39:29.51 o9E9nO+7.net
まあ皆キモイと思ってるから各種altJSが出てくるんだろうし
35:デフォルトの名無しさん
15/02/16 09:40:08.76 JcJgKv2l.net
>>34
そんなこと思ってる奴は全体でも1割もいない
36:デフォルトの名無しさん
15/02/16 11:42:38.28 8Z58kFg+.net
>>33
キモいってのは
(function() {
}());
ぐらいで他は特にないけど何がある?
37:デフォルトの名無しさん
15/02/16 12:09:44.82 G25umMgZ.net
やべえ、そのくらいじゃ全然キモいって思えねえ
まだobjectiveCのがキモい
38:デフォルトの名無しさん
15/02/16 12:57:21.51 AmwLqaSG.net
>>36
URLリンク(bonsaiden.github.io)
特に巻き上げとか意味不明
あと、自動セミコロン挿入関連の書き方の宗教とか
39:デフォルトの名無しさん
15/02/16 13:36:48.91 8Z58kFg+.net
>>38
巻き上げの説明でよく出てくる例
var myname = "global";
function func() {
console.log(myname); //出力内容は?
var myname = "local";
console.log(myname); //出力内容は?
}
グローバルと同じ名前のローカル変数を定義してる時点で問題があるが、別の言語だと
"global"
"local"
と出力されるだろうが、そもそもローカル変数にアクセスしようとしてたら
どっちみち意味不明なバグになる
JavaScriptは親切に
undefine
"local"
としてくれるから逆に分かりやすい
セミコロンの問題はわざわざヘンテコな書き方をしない限り誰も問題とは思ってない
しいて上げれば末尾カンマの方が問題だ
ただ全部jshintをすれば事前に分かるから普通に書けば問題にはぶつからない
>>36のイディオムだけは使いまくるからどうにもならんけどな
40:デフォルトの名無しさん
15/02/16 15:23:28.07 AmwLqaSG.net
>>39
C#とかPythonだと上位スコープと同じ名前が後でローカル変数として宣言されるときは、宣言前に使うと構文エラーになって100倍わかりやすいんだが
あと
b = 10
(function(){})()
とかくと10が関数でないってエラーが出るし、関数返したりするとエラーすら出なくなるんだけど、セミコロン省略派の人はjshintで問題を見つけられるの?
41:デフォルトの名無しさん
15/02/16 15:59:58.43 8Z58kFg+.net
>>40
根本的に仕様が違う言語を持ち出すなよ
巻き上げの話しをしてんだから、せめて同名ローカル変数を許す仕様じゃないと比較する意味無いだろ
そんな事言ったら
同名ローカル変数を許す言語<許さない言語という結論で終わる(それには同意する)
jshintのデフォ設定ではセミコロン省略すると大量に警告が出る(>>40で2つ警告が出てる)
> とかくと10が関数でないってエラーが出るし、
エラーになるならそれでいいだろ
> 関数返したりするとエラーすら出なくなるんだけど
どういうコードか分からんかったが、それはエラーじゃないんだろ
42:デフォルトの名無しさん
15/02/16 16:30:21.26 8Z58kFg+.net
>>40
URLリンク(github.com)
ちなみに↑このライブラリの人はセミコロンを一切書いてない(lib内のソースとか)
それだけで使う気は失せたが一応ちゃんと綺麗に書けてる
43:デフォルトの名無しさん
15/02/16 17:23:39.47 AmwLqaSG.net
同名ローカル変数は許すよ。javascriptで巻き上げてundefinedになる状況がエラーになる。
URLリンク(ideone.com)
セミコロンで挙動が変わるのは極端だけどこういうの
function test()
{
・・console.log("A")
・・return function(){
・・・・console.log("B")
・・・・return function(){ console.log("C") }
・・}
}
test() //無=>ABC 有=>AD
(function(){console.log("D")})()
もっと単純でこういうのもあった
var a = [["A","B"],["C","D"]]
[0].map(function(i){ console.log(i);})
あと、即時関数も書いた人の宗教によって
(function(){ console.log("test1"); })();
(function(){ console.log("test2"); }());
+function(){ console.log("test3"); }();
みたいにいろんな呼び方があってキモいじゃん?
想定外の書き方が来ると?になるから、統一してほしい
>>42
boostrapなんかもセミコロン省略教だったりする
上みたいな状況がどうしても出てくるなら、行の先頭にセミコロンつけろだとさ
44:デフォルトの名無しさん
15/02/16 17:32:57.59 8Z58kFg+.net
>>43
> 同名ローカル変数は許すよ。
お前何様だよ
> test() //無=>ABC 有=>AD
残念大間違いw
test() //無=>ABC 有=>ABC
45:デフォルトの名無しさん
15/02/16 17:38:33.32
46: ID:8Z58kFg+.net
47:デフォルトの名無しさん
15/02/16 22:06:33.25 AmwLqaSG.net
>>44
>お前何様だよ
いや、お前が同名ローカル変数を許す言語にしろって言ったんだろ
念のためだが、俺が許すんじゃなくて、(C#やPythonの文法が)許すだからな?
>どんな言語だってコーディングスタイルの違いで変な書き方なんてあって当たり前だ
>JavaScriptだけが特別じゃない
設計じゃなくて文法と仕様が奇怪なのがjavascript
しかも、ときどき理解せずに踏んでしまう可能性がある
どの言語もしない変数の巻き上げ、使い物にならないtypeof、未定義値と限らないundefined、なぜかスコープを作らないブロック、オブジェクトなどに演算子を適用してしまうとエラーも出さずする不可解な挙動
配列は連想配列のように使えるけどfor inが安全に使えない、lengthが要素数を返さないなどなど、歴史上しょうがないのはわかるが、きもい
funtion(){}()と書けない理由も知らないで使っている人が多そう
別にjavascriptが嫌いなわけではないんだけどな
48:デフォルトの名無しさん
15/02/16 23:08:49.01 UGQzThdk.net
>>46
変数の巻き上げは実際には問題にならないって言ってる(そもそもそのコードがバグってるから)
神経質なやつが騒いでるだけ
> 未定義値と限らないundefined
これは意味が分からん
undefineを代入出来る事が気に入らないのか?
> なぜかスコープを作らないブロック
これは
(function() {
}())
の事でこればっかりはしょうがないと最初に言ってる
> オブジェクトなどに演算子を適用してしまうとエラーも出さずする不可解な挙動
var o = {};
console.log(o + o); // [object Object][object Object]
そんな事するわけないけど何か問題あるのか?意味が分からん
> 使い物にならないtypeof
これなんか完全に嘘を言って誘導しようとしてるな
普通に使ってるコードを山ほど見るけど、全部バグか?
これで完全に化けの皮が剥がれたな
49:デフォルトの名無しさん
15/02/17 00:44:58.04 jqPQ5aJG.net
>変数の巻き上げは実際には問題にならない
エラーになったほうがバグがすぐわかるじゃん
巻き上げる利点が何もない
>未定義値と限らないundefined
かなり最近まで「undefined = 1;」とかできた。「undefined 判定」とか検索すると苦労の跡が見える。
最近は変更できなくなったが、古いブラウザへの対応と残されたコードを理解するために知る必要がある。
でも、予約語ではないので変数名には使えて
function(){
var undefined = 1;
console.log(0[0] === undefined);
}
とやると0[0]は未定義なのにfalseになる。本来予約語にすべき。
> 使い物にならないtypeof
それはさっきあげたJavaScript Gardenより
URLリンク(bonsaiden.github.io)
唯一有用なundefinedの判定は上に書いたとおり言語の欠陥がなければいらない記法
文句があるならこれ書いた人にpullreqでも送っとけ
>オブジェクトなどに演算子を適用してしまうとエラーも出さずする不可解な挙動
無論、わざと書くことはない。しかし、変数の中身の型を間違えていたりしても一見正常に動いて、中身が変わるとコケる場合がある。
初心者が===を==と書くともっと不思議な動作をするし、逆にこの手の処理がイディオムなってたりもする
50:デフォルトの名無しさん
15/02/17 00:46:09.01 jqPQ5aJG.net
以下長いが、これ全部結果の型と値わかる?これ全部結果の型と値わかる?
10*[5]
10*["5"]
10+[5]
10*[null]
10*[undefined]
10*[true]
10*[]
10*{}
10*[5,6]
10+true
10-true
10+[true]
Math.min(1,5,null,10);
Math.min(1,5,undefined,10);
Math.min(1,5,[],10);
Math.min(1,5,{},10);
[] === []
!![] === !![]
Nan === NaN
~NaN
-NaN
parseInt(true)
parseInt([])
Number(true)
Number([])
"aa" === new String("aa")
"aa" == new String("aa")
[1,5,10,50].sort()
["aa",NaN,[2],[1],["a"],[NaN],{"0":2},{"0": 1}].sort()
51:デフォルトの名無しさん
15/02/17 00:52:59.63 jqPQ5aJG.net
>>49
一番上の行はコピペミスです
52:デフォルトの名無しさん
15/02/17 01:09:47.26 ihqME62s.net
>>48
> エラーになったほうがバグがすぐわかるじゃん
だからundefinedになるからエラーになるって言ってんじゃん
> かなり最近まで「undefined = 1;」とかできた。「undefined 判定」とか検索すると苦労の跡が見える。
せめて"use strict"での話しをしろよ
> それはさっきあげたJavaScript Gardenより
> URLリンク(bonsaiden.github.io)
糞記事
"foo" String string
1.2 Number number
true Boolean boolean
少なくともこれが分かる時点で使い道はあるし、実際使われている
objectだったらinstanceof使えばいい
それで使いものにならないと言ってたら単なるイチャモン付けてるだけ
はっきり言って、ちゃんとコード書いてたら型判定なんて必要ない事に気づけよ
Booleanクラスが判定出来ないから困っちゃう?ちゃんちゃらおかしいなw
53:デフォルトの名無しさん
15/02/17 01:40:35.02 jqPQ5aJG.net
>だからundefinedになるからエラーになるって言ってんじゃん
その場ですぐエラーになるとは限らない
グローバル変数を使ったつもりで全く別のタイミングで問題が出るかもしれない
>せめて"use strict"での話しをしろよ
してるじゃん。use strictでも予約語にはならないし、古いコード読むときに謎のundefined判定に対する知識が必要
その書き方さえ何パターンもあり、少なくとも美しくはない
>使い道はある
使い道があるかどうかじゃなくて、きもいかどうかのお話をしてる
もっと使い勝手の良くて、Object.prototype.toStringとか不自然なことしなくてすめばいいのに
擬似的なオーバーロードみたいに使い道はあるのに、型よってころころ判定法を変える言語なんてそうないよ
54:デフォルトの名無しさん
15/02/17 02:17:19.61 52Ru56el.net
古いコードでもundefinedに代入するなら代入するなりの理由が無いとやらんと思うぞ
そんなコードはそもそも要注意コードだと思うの
55:デフォルトの名無しさん
15/02/17 08:36:36.32 T8d9Ogf5.net
全体的には ID:jqPQ5aJG に同意
>>48
> var undefined = 1;
これは本当に何とかして欲しい
スコープチェーン上で汚染されるのは ES5 仕様では回避しようがない
現状ではtypeof 演算子なり void 演算子を利用するしか選択肢がないわけだが、ES6 で Keywords に入れてもらえないものかね…
56:デフォルトの名無しさん
15/02/17 08:51:15.40 T8d9Ogf5.net
typeof 演算子の極悪さは Null 型、Object 型の判定にあると思う
typeof null === 'object'; // true
typeof new Function === 'function'; // true
typeof ActiveXObject('Excel.Sheet') === 'unknown'; // true
これらは全て ES5 に準拠しているわけだが、全く信じられない挙動だ
Null 型の判定は === で可能だからまだマシだが、Object 型の判定に Object() を利用しなくちゃならんのが面倒くさい
"type" の名を関する演算子なのに「型」以外の文字列が返すなと問い詰めたい
57:デフォルトの名無しさん
15/02/17 13:47:28.70 9i2JMVg5.net
> var undefined = 1;
そんな事するわけ無いだろ、誰も困ってねーよ
58:デフォルトの名無しさん
15/02/17 13:50:15.56 9i2JMVg5.net
>>55
なぜtypeofを使うかをちゃんと考えれば困ることはない
お前プログラム組んだこと無いだろ
59:デフォルトの名無しさん
15/02/17 14:14:32.83 MalAvpsB.net
>>56
「する」「しない」の問題じゃない
良いブログラムならそれ以前に「出来ない」
60:デフォルトの名無しさん
15/02/17 18:54:07.52 DEFQP+nD.net
>>57
君は仕様を読んで型の厳密判定をする方法について考えたことがなさそうだな
Object 型に限定した判定法が必要になるケースもある
ES の Native method がそういう設計だし、それに似せると必然的に型判定を厳密にするようになる
61:デフォルトの名無しさん
15/02/17 19:17:26.55 9i2JMVg5.net
>>58
出来ないから何?
やらないものを出来る出来ないなんてどうでもいいし気にもならない
当然キモいなんて全く思わない
>>59
> Object 型に限定した判定法が必要になるケースもある
取り合えず例をあげてよ
62:デフォルトの名無しさん
15/02/17 19:50:13.90 jqPQ5aJG.net
>>60
ローカル変数名にundefinedを使ったコードを読むときに仕様を知らないといけない
var undefined;
とすると、上のスコープと無関係にundefinedを未定義にできる
古いブラウザへの対応も含めてこれを利用したコードが残っている
だから、書き換え可能だった頃の対策コードを含めて、害しかない仕様を詳細に理解せざるを得ない
お前が熟知してても、勉強途中の理解がたりない人に優しい仕様ではないね。エラーにする言語なら間違えようがないところ
63:デフォルトの名無しさん
15/02/17 21:23:01.60 DEFQP+nD.net
var undefined; については他の定数と比較すれば違いがよくわかる
(function () {
var true = 1; // SyntaxError: Unexpected token true
var false = 1; // SyntaxError: Unexpected token false
var null = 1; // SyntaxError: Unexpected token null
var undefined = 1;
}());
true, false, null で変数宣言が出来るケースを考えてみるといい
ちなみに、null が書き換えられた場合は undefined の比でなく面倒になる
null は typeof 演算子の仕様バグがあるから固定値を取り出すには必ず、null を返すが決まっている関数or演算子を使うしかない
undefined と違って null には void 演算子のような便利な機能は用意されていないのでスコープチェーン上で
var null = /./.exec('');
を宣言するぐらいか
64:デフォルトの名無しさん
15/02/17 21:33:15.87 igbT8vqk.net
prototypeのおいしい使い方ってないかな
継承とか考えずにデコレータやアダプタとしてラップする方が便利かも
65:デフォルトの名無しさん
15/02/17 22:08:37.81 52Ru56el.net
>>61
それを利用してるんなら、その謎物体をundefinedとして扱って欲しいのでは?
66:デフォルトの名無しさん
15/02/17 22:35:27.98 DEFQP+nD.net
>>60
・{hoge: true, foo: false} のように Object 型でオプションを指定したい場合
・配列のようなオブジェクト(NodeList等)を判定したい場合
67:デフォルトの名無しさん
15/02/17 23:45:34.81 DEFQP+nD.net
>>64
var undefined; を宣言した場合、ES5 で書き換え不可能になった window.undefined をスコープチェーン上で参照不可能になり、書き換え可能なローカル変数として扱われる
書き換え不可能だった定数が書き換え可能な変数に置き換わるのは良いコードとはいえない
68:デフォルトの名無しさん
15/02/18 06:15:00.64 VrkW+sKk.net
>>66
もちろん悪いコードだと思う
でも敢えてそんな記述をする以上は、そいつをundefinedとして扱えってコードなのだろう
そんなコードを意識してわざわざ変な判定をするのは却っておかしなことになるんじゃ?と言いたい
69:66
15/02/18 08:03:14.70 fF9sUQWk.net
>>67
それは確かにそうだな
もっと他によい方法があると思う
- written: true の時だけ defineProperty を使う
- typeof undefined !== 'undefined' の時だけ this.undefined = void 0;
- undefined を使わず、typeof 演算子を使う
自分は>>61ではないので>>61の回答待ち
70:61
15/02/18 09:30:11.66 86t2mSil.net
これから書くときはほとんど気にする必要はない
不便なのは、初心者が人のコードを読むとき
・undefinedがキーワードでないこと
・過去にグローバルオブジェクトが書き換え可能だったこと
・「未定義値であることを保証する」というパターン(イディオム)数種類
を知らないと、そのパターンを見た時にすぐには理解できなくて手が止まってしまう
当然調べてundefinedの仕様を学べばいいんだけど、undefinedが最初から予約語ならそもそもこんなこと考える必要も、知る必要もなかったのにね、ということ
実際、jQueryとかでもほんの最近まで
(function(window,undefined){ 中身 })(window)
としてundefinedを上書きしてたし、プラグインとかではまだこの書き方が残ってるやつはかなりある
71:デフォルトの名無しさん
15/02/18 14:03:10.51 SiK8hGV0.net
>>69
> これから書くときはほとんど気にする必要はない
IE7 はまだサポート期間が残っているので「気にする必要はない」は語弊があるのでは?
72:デフォルトの名無しさん
15/02/18 15:06:09.95 9ZeaK8N0.net
文盲
73:デフォルトの名無しさん
15/02/18 17:28:09.82 yNLF/Zre.net
>>65
> ・{hoge: true, foo: false} のように Object 型でオプションを指定したい場合
直感的に思いついた通りに実装すればいいだろ
function test(hoge, foo) {
'use strict';
if (typeof hoge === 'boolean') {
console.log('hoge is', hoge);
} else if (typeof hoge === 'object') {
if (hoge.hasOwnProperty('hoge') && typeof hoge.hoge === 'boolean') {
console.log('hoge is', hoge.hoge);
}
if (hoge.hasOwnProperty('foo') && typeof hoge.foo === 'boolean') {
console.log('foo is', hoge.foo);
}
}
}
test(true, false);
test({hoge: true, foo: false});
test({hoge: 2});
test({hage: 2});
> ・配列のようなオブジェクト(NodeList等)を判定したい場合
「ような」なんだから
if (hoge.length > 0) {
// 配列の「ような」オブジェクト
}
で問題ないだろ
74:デフォルトの名無しさん
15/02/18 19:17:18.75 lIxPY8wl.net
>>72
それは Object 型の一部しか判定できてない
75:デフォルトの名無しさん
15/02/18 20:55:04.71 yNLF/Zre.net
>>73
変なコーディングをしてる訳でもなく目的は達しているんで問題無い
76:デフォルトの名無しさん
15/02/18 21:00:07.21 lIxPY8wl.net
>>74
特定の Object 型に制限する理由は全くない
それから Null 型が考慮されてない
配列も型判定がないからプロパティアクセス演算子でTypeErrorになる場合がある
ECMAScript でコードを書いた経験が少ないとしか思えないレベルだ
77:デフォルトの名無しさん
15/02/18 22:43:31.46 M4E75IrS.net
>>75
null(undefined)チェックを忘れた…
function test(hoge, foo) {
'use strict';
if (!hoge) return;
if (typeof hoge === 'boolean') {
console.log('hoge is', hoge);
} else if (typeof hoge === 'object') {
if (hoge.hasOwnProperty('hoge') && typeof hoge.hoge === 'boolean') {
console.log('hoge is', hoge.hoge);
}
if (hoge.hasOwnProperty('foo') && typeof hoge.foo === 'boolean') {
console.log('foo is', hoge.foo);
}
}
}
test(true, false);
test({hoge: true, foo: false});
test({hoge: 2});
test({hage: 2});
test(null);
test(undefined);
test([]);
test({hoge:[]});
単にnullチェック抜けてるって言えば済む問題を○型が考慮されてないとか
お前の方が素人丸出しだ
78:デフォルトの名無しさん
15/02/18 22:53:00.36 M4E75IrS.net
>>75
こっちもだった
if (hoge && hoge.length > 0) {
console.log('配列の「ような」オブジェクト', hoge[0]);
}
↓これらで問題無し
var hoge = null;
var hoge = undefined;
var hoge = [];
var hoge = {};
var hoge = {hoge:1};
var hoge = 1;
var hoge = "a";
79:デフォルトの名無しさん
15/02/18 23:37:18.13 86t2mSil.net
>>65 はそもそも何を持って配列のようなオブジェクトといいたいのだろう
さすがに{length:10}を配列のようなものとは呼びたくないけど
80:デフォルトの名無しさん
15/02/18 23:52:45.07 86t2mSil.net
>>76
これそもそも第2引数は一度も使ってないけど、何のためにあんの?
あと、
if (!hoge) return;
追加したら
test(false,false);
の時の挙動変わってんじゃん
81:デフォルトの名無しさん
15/02/18 23:55:34.69 M4E75IrS.net
>>78
いや{length:10}de配列ライクと言えると思われる
var hoge = {length: 10};
for (var i = 0; i < hoge.length; ++i) {
console.log(hoge[i]);
}
で全部undefinedが出力されるけど、それは普通の配列でも有り得る事だし
var hogeArray = Array.prototype.slice.call(hoge);
で配列に変換も出来る
82:デフォルトの名無しさん
15/02/19 00:01:52.76 4zgsUurY.net
>>79
直した…スマソ
function test(hoge, foo) {
'use strict';
if (typeof hoge === 'boolean') {
console.log('hoge is', hoge);
} else if (hoge && typeof hoge === 'object') {
if (hoge.hasOwnProperty('hoge') && typeof hoge.hoge === 'boolean') {
console.log('hoge is', hoge.hoge);
}
if (hoge.hasOwnProperty('foo') && typeof hoge.foo === 'boolean') {
console.log('foo is', hoge.foo);
}
}
}
83:デフォルトの名無しさん
15/02/19 00:46:16.03 +Jg4S+WS.net
>>80
JavaScript難しいなぁ
Array.prototype.slice.call(hoge);
ってするときに
hoge = {length:4.5} => 4コ
hoge = {length:Infinity} => 0コ
hoge = {length:99999999999 } => フリーズ
hoge = {length:-0.1} => 0コ
hoge = {length:-1} => フリーズ
hoge = {length:NaN} => 0コ
hoge = {length:true} => 1コ
うーむ・・・
でかいのはまだしも、負数を渡すとフリーズするのは内部で何をしているんだろう
84:デフォルトの名無しさん
15/02/19 01:00:49.63 4zgsUurY.net
>>82
sliceがマイナスの値は最後から処理するからな気がする
lengthがマイナスなのは配列とは言えないから
やっぱり
if (hoge && hoge.length > 0) {
var hogeArray = Array.prototype.slice.call(hoge);
}
ってのは必要だね
85:デフォルトの名無しさん
15/02/19 01:35:12.55 iPujbk1h.net
>>83
必要かどうかは仕様による。
>>83のコードが必要な理由は、lengthにマイナスが入ることが
プログラムの仕様的にありえるから、必要なのだろう?
lengthにマイナスが入った時どうするか?
例外を出すか、永遠と処理するか、hogeArrayをundefinedにするか。
それは仕様で決めること。
そのコードはhoge.lengthがマイナスの
86:場合、hogeArrayは undefinedになるという仕様のコード。 それの仕様でいいのかどうかを考える必要がある。
87:デフォルトの名無しさん
15/02/19 08:45:08.63 ACeVxkIV.net
>>76
> 単にnullチェック抜けてるって言えば済む問題を○型が考慮されてないとか
> お前の方が素人丸出しだ
そのコードは typeof 演算子の "Object (native and does not implement [[Call]])" しか対応できてないだろう?
URLリンク(es5.github.io)
前方互換性をふまえれば、ES6 でも正しく判定出来ることが望ましい
URLリンク(people.mozilla.org)
Null 型を誤検知するだけなら「Object 型の一部」とはいわない
あなたは ECMAScript 仕様書をまともに読んだことがないだろう?
ES 仕様に言及している意見に反論するなら仕様書ぐらい読んで欲しい
>>78
> >>65 はそもそも何を持って配列のようなオブジェクトといいたいのだろう
わかりやすくいうならば、 Array.prototype.forEach と同様の判定といえるかな
Array.prototype.forEach では ToObject, ToInt32 で型変換しているわけだが、型変換せずに TypeError を返したい状況もあるだろう
URLリンク(es5.github.io)
88:デフォルトの名無しさん
15/02/19 12:11:41.51 k55gX30E.net
>>85
> そのコードは typeof 演算子の "Object (native and does not implement [[Call]])" しか対応できてないだろう?
それで事足りてるという事は仕様的に問題ないという事だ
対応できてない事で実用的に問題があるコード例を挙げて説明してくれ
そもそもJavaScriptは
var obj0 = {hoge:true, foo:false};
var obj1 = {foo:false, bar:1, hoge:true};
function Hoge() {this.hoge = true; this.foo = false;}
var obj2 = new Hoge();
のどれを渡されても同じように機能する事が期待されている
!obj(nullとundefinedのチェック)とプロパティーの存在チェック(と最終的に'number'などの型チェック)以外に必要だとは思えない
89:デフォルトの名無しさん
15/02/19 13:17:52.04 VHEGaKii.net
実際、>>72が直感的にコードを書いて多数間違えたぐらいだからなあ
rypeof演算子に関しては良い仕様とは言い難い
90:デフォルトの名無しさん
15/02/19 15:27:06.03 /+bx2aTM.net
なにがArrayLikeかは難しいよ。どういう目的で区別するかで変わると思う。なぜなら何を配列と見立てられるかは用途によって変わるから。
例えば配列に変換したいという場合なら、ES6のArray.fromを参考にすると、
lengthを持っているか(オブジェクトでなくともラッパーのプロトタイプにあればいい)、イテラブルならOK。
これが広義のArrayLikeだろう。
またはArray.prototype.concatで、引数をSpreadすべきかどうかなら、実は配列かどうかというチェックだと問題がある。
だからES6からは@@isConcatSpreadableのチェックに変わった。
要するに「一般的なArrayLikeの判定」を定義するのは無理というか、しても役に立つものにならないと思う。
91:デフォルトの名無しさん
15/02/19 16:24:08.30 +Jg4S+WS.net
>>86
プロトタイプチェインはたどらないの?
92:デフォルトの名無しさん
15/02/19 19:11:01.43 FI1nksg/.net
>>88
> ES6のArray.fromを参考にすると、lengthを持っているか(オブジェクトでなくともラッパーのプロトタイプにあればいい)、イテラブルならOK。
Array.from は配列に変換する、つまり Object 型に変換するから変換元が Object 型であることを求めないだけな気がする
ierator を除くと Array.from は ToObject, ToLength(Int32への変換)をしている
URLリンク(people.mozilla.org)
変換後のオブジェクトが ArrayLike と考えられるので ArrayLike は「Object 型」「Int32のlengthプロパティを持つ」になる
Array.from の挙動は>>85で説明されている Array.prototype.forEach の挙動と一致する
Array.prototype 系メソッドを一通り読めばわかると思うけど、全てそういう挙動になってるよ
対象を isArrayLike で判定して例外を返すか、ArrayLike に変換するか、は意見が別れる(ポリシーに依る)だろうけどね
ES6 の挙動に合わせるなら変換する方になる
93:デフォルトの名無しさん
15/02/19 21:45:10.46 /+bx2aTM.net
ToObjectがかかっているのは、null/undefinedはじきや、Getやらもろもろの処理がObjectであることを期待しているためだからであって、処理の本質とはあまり関係ないけどね。
あとToLengthはInt32でなく2^53-1までの整数。
長さを拡張すべきという問題が出て、Arrayに関しては互換性問題で見送られたけど、型付配列は長さ2^53-1までになったから、ここに関しても絶対基準はないと思う。
別にこの範囲でなくともエラーになるわけではなくて、範囲に収まるように強制されるだけだし。
94:デフォルトの名無しさん
15/02/19 22:21:02.70 cTS5FQ8e.net
>>91
なるほど
ES6 の Array.prototype.forEach の length も 2^53-1 に拡張されてるんだな
URLリンク(people.mozilla.org)
今後、更に拡張される可能性を考えると、length に関しては Number.isInteger の判定ぐらいでいいのかもしれないな
URLリンク(people.mozilla.org)
95:デフォルトの名無しさん
15/02/23 05:03:25.31 m2dP1v8u.net
別に整数かどうかの判定は要らないだろう。
「"5"」だったら「5」、「true」だったら「1」になるのがJS流だし。
整数の長さが欲しければ「len = obj.length|0」とするのがJS流。
96:デフォルトの名無しさん
15/02/24 00:54:33.32 XD7S4Fuq.net
try catchって頻繁に呼び出す関数では最適化できなくて遅くなるから使っちゃいけないのか?
知らなかった…Chromeのプロファイラに出ていた警告を見て初めて知った
97:デフォルトの名無しさん
15/02/24 11:35:35.42 SsySdaPd.net
>>94
ループで、独自につくったルーチンなどを頻繁にそれつかって回すと激遅になる
ので、なるべく、どこかで検証用の別ルーチンで対処させるようにしてる。
98:デフォルトの名無しさん
15/02/24 12:16:53.92 lFZ8d0+y.net
関数全体を覆わなければ問題ない。
一番ベストな使い方は関数呼び出しの部分だけに使用する。
try{ func() }
そうでなくても全体で使用しなければ、tryの掛かっていない部分はfor文等一定のブロックごとに最適化が働く。
99:デフォルトの名無しさん
15/02/24 12:32:14.82 6vv1mCHr.net
>>94
try catchの使い方を間違えてるんでしょ。
try catchを正しく使うということは
try catchを使わないことを意味するw
何を行っているかわからないと思うが、
基本的に、windowのerrorイベントを使えばいいんだよ。
errorイベントは、誰もcatchしない時に呼ばれる所。
ここでまとめて処理すればいいし、普通はここで処理するもの。
例外的に途中でcatchしなくちゃいけない時だけcatchをする。
だからtry catchを正しく使う = try catchを使わないということになる。
逆に間違った使い方をしていると、catchしてalert()とかreturn falseとかするから、
間違った使い方 = try catchが多くなる。
100:デフォルトの名無しさん
15/02/24 12:48:11.36 wY5F80Ar.net
>>94
try-catch は例外を捕捉しなければエラー処理出来ない場合に使うもの
例外が発生する条件は確定しているのだから、 try-catch を使わなくても対応出来る場合が大半を占める
try-catch を使うのは new ActiveXObject() で対応する引数に応じて処理を分ける等の例外的なケースに限られる
101:デフォルトの名無しさん
15/02/24 16:54:22.71 gLNZIunY.net
netbeansを使ってるんだけど最初にテンプレが出ますよね?あれを編集する方法ないですか?
102:デフォルトの名無しさん
15/02/25 22:58:43.24 JtIRtORE.net
現行スレ
+ JavaScript の質問用スレッド vol.123 + [転載禁止](c)2ch.net
スレリンク(hp板)
103:デフォルトの名無しさん
15/02/25 23:20:48.35 JFD+ngFs.net
>>99
[ツール]-[テンプレート]
[エディタで開く]
104:デフォルトの名無しさん
15/02/27 18:16:56.06 6eP810Kn.net
>>101
テンプレのタグが分かり
105:ません・・・
106:デフォルトの名無しさん
15/02/27 19:56:27.10 Wvtuv0/g.net
>>102
それは自分で努力すればいいよね?
107:デフォルトの名無しさん
15/03/13 19:23:10.11 UBRcUR4y.net
jsonの日
108:デフォルトの名無しさん
15/04/05 02:51:05.42 Obp0DJ+Th
VBAがある程度できるようになったから、
JavaScriptを始めたんだけどデバックがわけわかめ。
Google ChromeのJavaScriptコンソールを使っているんだけど、
一行ずつ実行とかどうやればいいかわからない…。
109:デフォルトの名無しさん
15/04/12 11:08:10.55 7j69OB5F.net
『関数型プログラミングに目覚めた! IQ145の女子高校生の先輩から受けた特訓5日間』
URLリンク(www.amazon.co.jp)
せっかくだからJavaScriptで関数型プログラミングを学んでみるのも面白いかもしれないな。
110:デフォルトの名無しさん
15/04/12 17:02:14.80 PVRHL1t5.net
>>106
Qiitaアカバンされたポエマー、毛の壁先生じゃんw
111:デフォルトの名無しさん
15/05/18 15:33:55.56 lIw4CyOJ.net
JavaScriptが20周年。開発者のBrendan Eich氏が過去と未来についてのスライドを公開
URLリンク(www.publickey1.jp)
112:デフォルトの名無しさん
15/05/18 17:37:17.88 rf0kuBu1.net
>>108
たった10日で書いたのか。
通りでクソなはずだ。
113:デフォルトの名無しさん
15/05/19 14:42:25.57 k4tzDQ/5a
>>108
(円環はいま閉じた)と表しています。
114:デフォルトの名無しさん
15/05/20 01:48:48.87 zDiYcCDM.net
言語としてはかなりシンプルだったからな。
LexとYacc使っただろうし、スタックマシンな
バイトコードインタープリタはSchemeのインタープリタを
Cで書いたことがあれば難しくない。
コードを10日で書いたからクソというよりは、
書く前に言語仕様をきちんと練らなかったからクソなんだろう。
115:デフォルトの名無しさん
15/05/20 05:27:02.66 iajmjkjM.net
10日で書いたにしては良くできてるけど、もともとVBAみたいなものなのに、
後からいろいろ理屈を考えて素晴らしいものみたいに言いくるめようと
したのがいけなかったんじゃないの。
アプリに付属させるマクロだと思えば、納得の仕様だと思うけど。
元々そういうものなんだし。
116:デフォルトの名無しさん
15/05/20 11:19:23.20 0vsGwB+G.net
>>111
すまないが、ゴミをシンプルって言う風潮やめてくれるか?
117:デフォルトの名無しさん
15/05/20 12:06:13.47 D22K7RGs.net
ClojureScript使い始めたらJSのクソさが
気にならなくなってきた。
118:デフォルトの名無しさん
15/05/20 12:18:11.33 qzEPJuIN.net
誰でも10日で出来る作業なら
クソだろうさw
10日でとても出来ないような作業を
10日で作ったのならば、それは優秀ってことだよ。
優秀な人が作ったのだから、とても良く出来ている。
119:デフォルトの名無しさん
15/05/20 14:27:44.16 0vsGwB+G.net
>>115←こういうの権威主義の馬鹿っていうんだよねぇ。日本人に実に多い。
120:デフォルトの名無しさん
15/05/20 15:12:28.11 qzEPJuIN.net
どれだよ権威ってw
権威じゃなくて実力だろw
121:デフォルトの名無しさん
15/05/23 05:06:34.47 aWFfanUl.net
jsスレでdisるのもアレだけど
権威主義以外の何物でもない
10日で作ったのは凄いかもしれんが別に洗練されてもないしシンプルでもない
初期のjsって文字列演算、暗黙変換とか無駄に長いfunctionとか、
中途半端にvbやC++の真似もしてて、バージョン違いの挙動もあって普通にクソ
初期のを優秀とか言う奴はES6使わないで欲しい
本人はサブセット言語嫌いとかlisp嫌いとか好き勝手言ってるみたいだけど
素直にパクリ元のselfのサブセットを素直に実装すりゃよかったと思うわ
122:デフォルトの名無しさん
15/05/23 08:57:54.91 3bf42BAL.net
だいたい名前からしてクソだよ。
全然関係無いJavaパクってるんだし。
123:デフォルトの名無しさん
15/05/23 10:54:12.24 vTpQyjFi.net
>>118
お前こそ権威主義じゃねーかw
オリジナルは偉いんだ?w
124:デフォルトの名無しさん
15/05/24 00:11:51.40 hZNW9MV5.net
>>120
日本語読めないならそう言ってくれよな
噛み砕いて話してやるからさ
125:デフォルトの名無しさん
15/05/24 13:15:55.75 bCeKXRbu.net
>>121
じゃあどこが権威主義なのか
噛み砕いて説明してください。
その前に前提として権威主義とは何かを書いておきますね。
URLリンク(ja.wikipedia.org)
> 権威主義(けんいしゅぎ)とは、権威に服従するという個人や社会組織の姿勢、思想、体制である[1][2]。権威主義の反対は個人主義や民主主義である。
> 政治学上の用法では、権威主義体制とは非民主的な体制の総称であり、通常は独裁、
> 専制、全体主義などを含むが、権威主義体制を民主主義体制と全体主義体制の中間とする立場もある[5][6]。
URLリンク(d.hatena.ne.jp)
> 権威(人を服従、強制させる力)に価値をおき、それに対して自己卑下や盲目的服従をする態度のこと。
> また逆に人にそれを要求する態度のこと。心理学的には、権威や伝統、社会的に価値のあると
> されているものを無批判に承認し、これに服従、依存し、融通が利かないパーソナリティを指す。
126:デフォルトの名無しさん
15/05/24 15:11:00.39 9Q9ph3Hr.net
オリジナルがえらいのではなくて
パクリ損ないでオリジナルより劣化してるのがクソ、
っていう単純な話だと思うのだが……
127:デフォルトの名無しさん
15/05/24 18:48:24.27 hZNW9MV5.net
>>122
10日で作業したというだけで優秀として
優秀な人、その人が作ったからスバラシイ
全然中身に言及してねえじゃんw
どこに権威主義以外の要素があるんだよw
128:デフォルトの名無しさん
15/05/24 22:02:35.19 bCeKXRbu.net
>>124
権威はどこにいったの?w
129:デフォルトの名無しさん
15/05/25 17:36:12.90 2/V0nnt+.net
>>123
まさかここまで使われるとは思ってなかったんだろうな
130:デフォルトの名無しさん
15/05/25 18:03:08.64 MD5bLCSX.net
>>118
ユーザが100万人ほどの言語を10日で作ってから言え
131:デフォルトの名無しさん
15/05/25 21:15:36.88 Pr0+1HdK.net
>>127
権威主義万歳!
132:デフォルトの名無しさん
15/05/25 21:28:29.13 Pr0+1HdK.net
流石に初期JSの規模で大変とか言ってるのは
インタプリタの作り方もわからない初心者だけだよな?
クソ言語でも普及したPHPと違って言語そのものの需要で使われたわけでもなし
JSが普及したのはウェブブラウザが先進的だったから
そもそも本人も公開してるのに何マンセーしてんだかw
133:デフォルトの名無しさん
15/05/25 21:29:17.23 Pr0+1HdK.net
公開 -> 後悔
134:デフォルトの名無しさん
15/05/26 00:12:46.62 xYtlptqc.net
>>129
オレもそう思うんだけどねえ。
Schemeのインタープリタ書いたことがあればさまえ難しくはない。
135:デフォルトの名無しさん
15/05/26 15:21:59.38 jJpgaPYe.net
学部レベルのインタプリタよりエロ動画サイト作る方が難しい
136:デフォルトの名無しさん
15/05/26 18:58:13.73 CP1OCp5D.net
JavaScriptライブラリのスレにも書いたのですが,過疎っていたのでこちらで質問させてください
openlayers3についてです
URLリンク(openlayers.org)をそのままコピーして
ローカルで実行したのですが,サンプルのようにTimezonesが表示されません(地図は表示されます)
kmlファイルはURLリンク(github.com)にあるdataフォルダをhtmlと同じ階層に設置しました
他のkmlファイルを読み込むサンプルも同様に動かないのですが何が原因でしょうか
137:デフォルトの名無しさん
15/05/27 11:16:44.16 XkCb2CMh.net
馬鹿には無理
138:デフォルトの名無しさん
15/05/28 07:16:02.03 4DphScwy.net
>>134
だからあなたには答えられないんですね。なるほど。
139:デフォルトの名無しさん
15/05/28 07:59:14.48 616UB9cr.net
>>135←答えられない上にコードも書けないアホ
140:デフォルトの名無しさん
15/05/28 13:22:35.68 E8n2j0BJ.net
var vector = new ol.layer.Vector({
source: new ol.source.Vector({
url: 'timezones.kml',//url: 'data/kml/timezones.kml',
141:デフォルトの名無しさん
15/05/28 17:23:07.74 4ci5OfPn.net
>>133
普通に動く。timezones.kmlをhtmlと同階層に置いて>>137を書き換えても動く。
142:デフォルトの名無しさん
15/05/28 19:02:19.37 V96RG34r.net
>>137
>>138
ありがとうございます
IE,Opera,Chromeだと動かないのですが,firefoxだとサンプル通り動きました
これってコードにブラウザ依存の部分があるのでしょうか?
それともブラウザの設定の問題でしょうか?
143:デフォルトの名無しさん
15/05/29 07:06:31.36 hjMnAajE.net
>>139
firefox以外はデフォルトではローカルファイルへのアスセスが制限されているからでは?
URLリンク(tmlife.net)
144:デフォルトの名無しさん
15/05/30 07:45:51.67 xVK15s94.net
ローカルテストはサーバ立ててやるものだと思うが、fileスキームで実行してるのか
145:デフォルトの名無しさん
15/05/30 08:33:00.97 Rpgfw2oh.net
>>140
>>141
サーバたててやったらどのブラウザでも動きました
ありがとうございました
146:デフォルトの名無しさん
15/05/30 10:26:22.21 3Gf/DalK.net
最近やたらめったらモジュールに切り分けてたら共通部分の重複が酷いことになってた
現在のスコープ内にimport,requireできれば便利なんだが
147:デフォルトの名無しさん
15/05/30 12:21:21.30 skc6DNlZ.net
現時点でもやはりES3で書くべきですか?
ES5出てからもう何年も経ってるしObject.create()とか配列まわりの関数とか色々追加されてるのに使えないのが歯がゆいです。
ネット見てると結構ES5の機能使ってる人が多いですが、そういう方々はIE8とか切り捨ててるんですかね?
148:デフォルトの名無しさん
15/05/30 13:40:15.04 HkfQYaI5.net
>>144
サポートサイクルを見たらどうでしょう?
2016年1月まではIE8対応は切れません。
149:デフォルトの名無しさん
15/05/30 13:41:11.94 HkfQYaI5.net
IE8 でもpolyfillで何とかなる場面が多いとは思いますが
150:デフォルトの名無しさん
15/05/30 14:06:06.57 ebcCMrL3.net
>>144
lodash使ってる。なんとIE6以上から対応してる。
実装不可能なものを除いて、ES5で提供されている関数が提供されてる。
Object.create相当の�
151:<\ッドもある。 https://lodash.com/docs#create どうしてもES5だけでやりたいってわけじゃなく ES5で提供された便利な関数を使いたいならlodashオススメ。 lodashにはES5よりも多くの機能が追加されてる。
152:デフォルトの名無しさん
15/05/31 02:38:34.37 474JDHci.net
>>145
ありがとうございます。
ぐぐってみたら2016年1月以降は最新版のIEしかサポートされないんですね。
こういうのを境界にして考えるのですね。勉強になりました。
polyfillというのはes-shimsとかのことですよね?Object.createに対応してないので選択肢から外れました。
>>147
ありがとうございます。今回は素のJSでやりたかったのでlodashは使えません><
153:デフォルトの名無しさん
15/05/31 02:41:25.56 474JDHci.net
でももうすぐES6が出るしキリが無いですね
ブラウザ対応状況とか考えるの諦めてlodashとかunderscoreとかそういうのに完全依存する方が正しいのかも
154:デフォルトの名無しさん
15/05/31 08:20:05.87 6IDXNIVy.net
>>148-149
Object.create はES3の範囲内で完全実装は出来ない為、制限付きを理解した上で polyfill を書く必要がある
lodash は forEach 等で ES5 互換でないコードが見受けられるので ES 標準を目指すのであればお勧めしない
コードを読む限りでは 仕様に忠実なライブラリではなく、独自の世界を構築するタイプのようだから
155:デフォルトの名無しさん
15/06/01 15:26:03.49 dTiEpsP/.net
underscoreって可読性低下しない?
_から始まるってのがそもそも論外なんだけど…
知らない人間が見たら何だコリャ?ふざけてんのか?
これを考えた奴は保守性を考慮しないオナニー馬鹿なのか?って思うだろ。
156:デフォルトの名無しさん
15/06/01 16:19:05.72 fqMWxMza.net
>>151
ま、普通使わない。
オナニーって言えばその通り。少なくとも個人的に使うのだったら文句言う
アレはないが、プロジェクトなんかでこんなもの使ってる奴いたら、排除する。
157:デフォルトの名無しさん
15/06/01 16:49:15.47 4t8ilUI7.net
>>151
> 知らない人間が見たら何だコリャ?ふざけてんのか?
それを言い始めたら、$.hogeってなんだ?ってことにもなる。
>>152
> ま、普通使わない。
以外と使われてるよ?
URLリンク(www.infoq.com)
> JavaScriptユーティリティライブラリのlodashがバージョン3.5に達して,npmパッケージリポジトリの中で
> 最も多く参照されるライブラリになった。もはや代用品などではなく,信頼できる選択肢のひとつだ。
URLリンク(matsukaz.hatenablog.com) に上げられてるようなよく使う機能は、
オレオレ実装されるより、既知のライブラリのメソッド使って欲しい。
158:デフォルトの名無しさん
15/06/01 17:05:38.13 dTiEpsP/.net
javascript使いってエンジニアとして未成熟なのか文系が多いのか、
保守性を考慮しないのばっかりだよな。
多言語では保守性において禁忌とされている事を平気でやる
先人が築きあげたバグを排除するコツのようなものをを完全に無視してる
たぶん将来はjavascriptの仕様が整理されて、
jQueryとかunderscoreみたいな非直観的で腐ったキーワードを使うライブラリは完全非推奨になる。
159:デフォルトの名無しさん
15/06/01 17:20:57.79 4t8ilUI7.net
Javaの人かな
160:デフォルトの名無しさん
15/06/01 17:24:57.76 TGyjCQFp.net
hagedo
161:デフォルトの名無しさん
15/06/01 19:51:34.16 lFnhdSIE.net
>>154
だってJataScriptが使いにくいクソ言語じゃん。
細かいこと気にしてられないって、クソだから。
162:デフォルトの名無しさん
15/06/01 19:59:11.62 9HWSCI34.net
>>154
こういう関数の部分の保守性とかどうでもいいよw
単純に自分実装のライブラリに入れ替えれば済む話なんだから。
それより問題なのはフレームワークだ。
馬鹿が使うとフレームワークにガッチリ組み込まれて
別のものに変えるのがすごく大変になる。
163:デフォルトの名無しさん
15/06/01 20:00:16.98 9HWSCI34.net
>>153
> > ま、普通使わない。
> 以外と使われてるよ?
だよな。Node関連では一番使われているライブラリだったはず。
何処かにデータが有ったはずなんだが。
好き嫌いは個人の好みとして、一番使われているという
事実を知らないとしたら、モグリだろうw
164:デフォルトの名無しさん
15/06/01 20:02:41.82 9HWSCI34.net
あったあった。この記事だ。
lodash, あなたが既に使っているJavaScriptライブラリ
URLリンク(www.infoq.com)
JavaScriptユーティリティライブラリのlodashがバージョン3.5に達して,
npmパッケージリポジトリの中で最も多く参照されるライブラリになった。
もはや代用品などではなく,信頼できる選択肢のひとつだ。
何の根拠もない「使われてない」は無視していいよ。
だって、本人が無知だから、使われていることを「知らない」という
状態でも、自分の知ってる小さな経験だけから
使われてないって発言するだろうからさw
165:デフォルトの名無しさん
15/06/01 20:33:19.40 qMAgmJxR.net
そんなことよりもNode.jsのREPLでアンダースコアが使えないのはどうすればいいの?
REPL単体で使うぶんには別の名前を使っても気にならないけど、.loadで読み込むファイルでアンダースコアが
使われていた場合は、ファイルを書き換えなければならず、かなり気持ちが悪い
こんな定番のライブラリで、Node.jsのことを考慮していない名前をデフォルトにするとも思えないから、
何か解決策はあると思うんだけど…
166:デフォルトの名無しさん
15/06/01 20:42:18.22 e+Q3qVuq.net
>>151
perlのデフォルト演算子($_)の名残だと思ってた
167:デフォルトの名無しさん
15/06/01 20:49:28.66 9HWSCI34.net
>>161
グローバル変数とローカル変数の違いわかってる?
REPLで使うのはグローバル変数の_。
ローカル変数の_(lodash)が名前かぶっても
何の問題もないんだが。
名前かぶってわかりづらいというのなら、
var i だってずいぶん被ってるはずなんだが。
168:デフォルトの名無しさん
15/06/01 20:52:38.62 9HWSCI34.net
>>162
いやー、普通、_で思い出すのは、
C言語などで広く使われてる多言語の仕組みである
GetTextの_関数でしょw
あれだって、_で始まる関数なわけだけど、
何だこりゃの前に、普通GetText思い出すよね?
>>151は無知なんじゃないかって思うだけなんだが。
169:デフォルトの名無しさん
15/06/01 21:51:26.69 dTiEpsP/.net
>>164
_で始まるって言い方はおかしかったな。
C言語系の_は名前が続くから識別に問題ないが、_だけというのがクソだって話
これを初めて拝んだとき、_だけを変数名にするなんて一体このバカはどんな教育を受けているんだと思ったわ。
170:デフォルトの名無しさん
15/06/01 22:48:12.23 VQX8/s75.net
>>165
うん。それでgettextは、_ だけの
関数名なんだが、恥の上塗りしてどうするの?
171:デフォルトの名無しさん
15/06/01 22:56:29.23 qMAgmJxR.net
>>163
流石にそれくらいは分かってるけど、UnderscoreやLodashは普通グローバルに読み込むものじゃないの?
まさか関数ごとにrequireを書くわけでもあるまいし、少なくともvar iとは次元が違うものだと分かると思うんだけど…
172:デフォルトの名無しさん
15/06/01 22:59:26.58 VQX8/s75.net
lodash使うアプリでグローバルなんて聞いたことがない。
普通nodeでライブラリを使うときは、
ローカル変数に、略
いわんでもわかるだろ?
知ってるならなw
173:デフォルトの名無しさん
15/06/01 23:00:05.05 VQX8/s75.net
訂正
lodash使うアプリでグローバルなんて聞いたことがない。
node使うアプリでグローバル変数なんて聞いたことがない。
174:デフォルトの名無しさん
15/06/01 23:01:04.60 e+Q3qVuq.net
CakePHPなんかの__()ならともかく、underscore.jsでGetTextの方の_を、
どうすれば連想できるのかわからない
175:デフォルトの名無しさん
15/06/01 23:01:38.04 dTiEpsP/.net
>>166
そんなどうでもいい知識はどうでもいい
176:デフォルトの名無しさん
15/06/01 23:03:51.00 dTiEpsP/.net
_を変数名にするのはゴミだってのは100人に聞いて99人が納得する話。
ほんとjQueryといい、javascriptのライブラリ作ってる奴は基地外だわ。
177:デフォルトの名無しさん
15/06/01 23:06:02.95 qMAgmJxR.net
>> 166,167
何が言いたいのか分からんのだけど、ファイルの頭で
var _ = require('lodash'); // またはunderscore
とするのは十分、一般的な使い方じゃないか?
適当に検索したサンプルコードでも、ファイルの頭でrequireをしているものがほとんどだし
178:デフォルトの名無しさん
15/06/01 23:08:20.48 e+Q3qVuq.net
>>172
デフォルトに近い機能を誰もタイプしたくないから
179:デフォルトの名無しさん
15/06/01 23:08:27.29 VQX8/s75.net
>>173
はい、だからファイルの頭で
var _ = require('lodash'); // またはunderscore
とローカル変数に代入してるって言ってるわけですが。
180:デフォルトの名無しさん
15/06/01 23:12:31.08 qMAgmJxR.net
>>175
それで>>161に戻るんだが、そのファイルをREPLから.loadで読み込むと名前が衝突して困るという話なんだが
何かおかしいこと言ってるかな?
181:デフォルトの名無しさん
15/06/01 23:16:47.51 VQX8/s75.net
>>176
それは作り方が悪いだけだろう。
自分で作ったものを自分でロードして
問題が起きたって騒いでいるだけ。
182:デフォルトの名無しさん
15/06/01 23:18:28.56 e+Q3qVuq.net
>>176はqiitaのポストへの巧妙なステマ
183:デフォルトの名無しさん
15/06/01 23:18:37.37 VQX8/s75.net
ヒント
普通はREPLでライブラリを読み込むときはrequireを使う。
184:デフォルトの名無しさん
15/06/01 23:20:50.21 qMAgmJxR.net
>>177
だから、どのように作り方が悪いのかを>>161で聞いているわけ
>>178
何故qiitaが出てくるの?
なんか話が通じない人多すぎ…
185:デフォルトの名無しさん
15/06/01 23:20:51.76 e+Q3qVuq.net
URLリンク(stackoverflow.com)
186:デフォルトの名無しさん
15/06/01 23:21:19.02 dTiEpsP/.net
>>174
underscoreというものの存在を知ってる人間じゃないと、おふざけか本気なのか理解不能
知らない人でも直観的にわかるようにするべき。
_.なんていかにも意味ありげに書かれてたら、知らない人間はjavascriptに新しい構文でも出来たのかと勘違いする。
187:デフォルトの名無しさん
15/06/01 23:22:02.34 qMAgmJxR.net
>>179
それは別な名前を使うってことじゃないの?
それなら>>161で書いたよ
188:デフォルトの名無しさん
15/06/01 23:23:01.97 VQX8/s75.net
>>180
> だから、どのように作り方が悪いのかを>>161で聞いているわけ
簡単な話。
.loadでAというファイルとBというファイルの
二つを読み込んだ時を考えればいい。
同じ変数を使っていれば、混乱が起きる。
だから.loadなんかを使っては駄目だ。
REPLはAというファイルの前に
別のファイルを読み込んでいると考えればいい。
nodeの標準に合わせてrequireで読み込め。
.loadは簡易なツールにすぎない。
189:デフォルトの名無しさん
15/06/01 23:23:03.40 e+Q3qVuq.net
>>182
プログラマなら皆、知ってるから
190:デフォルトの名無しさん
15/06/01 23:23:55.32 VQX8/s75.net
>>182
_.なんていかにも意味ありげに書かれてたら、知らない人間は
普通調べる
191:デフォルトの名無しさん
15/06/01 23:29:50.29 qMAgmJxR.net
>>184
> .loadでAというファイルとBというファイルの
> 二つを読み込んだ時を考えればいい。
これに関しては自分の場合は混乱が起きたことは無いな
REPLで必要になるのは常に新しくロードされたものだから
> nodeの標準に合わせてrequireで読み込め。
.> loadは簡易なツールにすぎない。
その簡易なツールとしての使い方を聞いたつもりだが、まぁうまい方法は無いってことで
答えてくれたことは感謝するよ、ありがとう
192:デフォルトの名無しさん
15/06/02 07:22:03.36 ex2Jk34L.net
>>185-186
こんな記述を許すなんて、webプログラマはどうかしてるわ
C++等の堅牢な言語が理解できないからスクリプトに逃げたってのもあるのかねぇ
193:デフォルトの名無しさん
15/06/02 07:56:44.99 ex2Jk34L.net
javascriptって手作業感のあるかなりアナログな言語だよな。
コンパイルすれば型間違いやスペルミスを全部チェックしてくれるC++の方が楽だわ。
194:デフォルトの名無しさん
15/06/02 08:03:09.37 rgUwgwJK.net
デフォルトで存在しなければならないような機能の構文は
可能な限り軽くしたい、というだけの話なのだが、
まあ、キチガイみたいだし、相手にする必要もなさそう。
195:デフォルトの名無しさん
15/06/02 08:07:16.76 rgUwgwJK.net
>>189
>コンパイルすれば型間違いやスペルミスを全部チェックしてくれるC++の方が楽だわ。
静的検査なのに型安全じゃないクソみたいな型システム自慢されても……
196:デフォルトの名無しさん
15/06/02 10:18:05.55 JpMYfsQK.net
>>188
$と_を選択したjQueryとundersocreの作者は天才だと思うぞ
197:デフォルトの名無しさん
15/06/02 11:02:57.63 fIlyBYj2.net
>C++等の堅牢な言語が理解できないからスクリプトに逃げたってのもあるのかねぇ
ここ笑うところでOK?
198:デフォルトの名無しさん
15/06/02 11:03
199::56.96 ID:Liw06aa4.net
200:デフォルトの名無しさん
15/06/02 11:47:29.34 JpMYfsQK.net
>>194
検索してみた
『型安全性とは何か』
URLリンク(postd.cc)
201:デフォルトの名無しさん
15/06/02 12:47:31.17 qfQ5Cs59.net
スクリプト言語なら_とかもありだと思うよ
直感的に理解不能なのはむしろC言語のテクニカルすぎるポインタ操作とか、処理系依存処理
202:デフォルトの名無しさん
15/06/02 17:49:06.36 RKN2cQRO.net
>>192
思わない。逆にショボッと思うだけ。
203:デフォルトの名無しさん
15/06/02 17:53:04.66 4q1LDLUC.net
Yes, I do.
204:デフォルトの名無しさん
15/06/02 20:48:01.61 80AN9G/c.net
>>197
理由は?
205:デフォルトの名無しさん
15/06/02 20:57:50.64 ex2Jk34L.net
_なんて使わないで堂々と大文字でUNDERSCORE.でいいのに
面倒くさいから_にしたなんていっても、
UNDERSCOREのようなループ処理は他の頻出するキーワードに比べてそう頻繁に使うもんじゃないから、
UNDERSCOREと打ち込むくらい苦にはならない
むしろ見ただけでUNDERSCOREとわかるメリットのほうが大きい。
206:デフォルトの名無しさん
15/06/02 20:58:44.32 80AN9G/c.net
>>192
> $と_を選択したjQueryとundersocreの作者は天才だと思うぞ
天才じゃなくてズルいと思ったな。
そんな特等席を取るなんてw
でもjQueryとlodashなら許せるよ。
DOM操作目的が多いJavaScriptで標準よりも
優れたライブラリに仕上げたjQueryは高く評価できるし。
JavaScriptという言語自体に足りない(そして他の言語にはある)
基本的な機能を備えたlodashも一文字名前空間を与える価値はある。
これ以外に一文字を与える価値が有るものなんてまず無いだろう。
(あえて言うのなら多言語のためのgettextだろうね)
URLリンク(ja.wikipedia.org)
> まず、gettextが利用されるようソースコードの修正を行なう。これはほとんどのプログラミング言語において、
> ソースコード中の文字列がまずgettext関数へ渡されるよう、文字列をラップしていく作業となる。
> 読みやすさやキータイプの手間を省くため gettextには通常 _ のエイリアスが付けられる。C言語では、
>
> printf("My name is %s.\n", my_name);
>
> を以下のように変更する:
>
> printf(_("My name is %s.\n"), my_name);
207:デフォルトの名無しさん
15/06/02 21:00:08.82 80AN9G/c.net
>>200
開発効率と可読性が悪いだろw
なんで多く出てくるものに、
そんなに長い情報量を与えないといけないんだ?
圧縮の基本だぞ。
多く使うものに短いビットを割り当てるのは。
208:デフォルトの名無しさん
15/06/02 21:08:24.71 ex2Jk34L.net
>>202
そんなに画面を占領するほど出てこないだろ。
209:デフォルトの名無しさん
15/06/02 23:09:26.72 tDj3/Qmg.net
圧縮率が気になる人は var, a, b, c; でも使えばいい
_ が気にならないなら Java でも PHP でも同じように使えばいい
それが誰が見てもコードの意図を理解できるものであると思うのならな
210:デフォルトの名無しさん
15/06/03 08:42:27.59 tNzh/NJ7.net
> それが誰が見てもコードの意図を理解できるものであると思うのならな
ん? 馬鹿が見てもわかるコードなんてあると思うのか?
何の知識も持たない奴が、forとか見て、繰り返しだな。なんてわかると思うのか?
知識があるプログラマが見てわかれば十分だろw
211:デフォルトの名無しさん
15/06/03 09:13:26.09 L99ZSHzZ.net
>>205←こういう極論振りかざす馬鹿はプロジェクトから最初に外したいねぇ♪
212:デフォルトの名無しさん
15/06/03 09:32:01.02 HnGZ0ASm.net
そもそもjQueryの根幹を成していたcssQuery作者はJSに習熟していたから$なんて使わなかったが、
当時JS初心者が浅い知識で無茶苦茶に作ったprototypejsが流行っていてユーザーがそこで$にすっかり慣れてしまっていたから、彼らを取り込もうと図った時に敢えて$を使った。
213:デフォルトの名無しさん
15/06/03 09:41:02.46 HnGZ0ASm.net
jQueryリリース日から知っているのって、俺以外で何人いるかな、まあ、ライバル心が凄くて、露骨に他のライブラリーを威圧する画像を貼っていて苦笑ものだった。
実際、query api がなかった当時において、飛び抜けた存在だった。
誰も知らないだろうが、既に消した10年ほど前のブログで俺が日本で最初にjQueryにお墨付きを出したので、変な責任感があって、今や粗大ゴミと化したjQueryを徹底的に駆除しなきゃならないと思っている。
214:デフォルトの名無しさん
15/06/03 09:53:38.81 L99ZSHzZ.net
>>207
今じゃすっかり死に絶えたね prototype.jsは
未だに$使ってる奴は、PHPでもやってろって思うね。
215:デフォルトの名無しさん
15/06/03 09:53:42.15 HnGZ0ASm.net
どうでもいいが、underscorejsはグローバルで名前がかち合わないよう自動処理してるだろ。だから_にこだわりも何もないよ、あれは。あの作者はさすがだなと思う。
216:デフォルトの名無しさん
15/06/03 10:04:47.49 HnGZ0ASm.net
jQueryでみんなが慣れてしまったメソッドチェーンはOOPであるJSならではの妥協の産物であって決して素敵な何かではない。
217:デフォルトの名無しさん
15/06/03 12:44:14.29 rHgYCpopj
>>208
最近JQuery勉強し始めたのに
>>209
$ダメなのか
218:デフォルトの名無しさん
15/06/03 17:34:44.34 /Ca0vDfD.net
> jQueryでみんなが慣れてしまったメソッドチェーンはOOPであるJSならではの妥協の産物であって決して素敵な何かではない。
メソッドチェーン便利じゃん
メソッドチェーンを否定するなら、代わりに何を推すのだろうか
219:デフォルトの名無しさん
15/06/03 17:50:56.37 oCZofESS.net
CoffeeScript
220:デフォルトの名無しさん
15/06/03 21:53:47.03 tNzh/NJ7.net
>>208
> jQueryリリース日から知っているのって、俺以外で何人いるかな、まあ、ライバル心が凄くて、露骨に他のライブラリーを威圧する画像を貼っていて苦笑ものだった。
知ってるも何も、Internet Archiveに残ってるよ。
その画像ってどれのこと?
URLリンク(web.archive.org)URLリンク(jquery.com)
221:デフォルトの名無しさん
15/06/03 21:56:52.15 tNzh/NJ7.net
>>211
jQueryでみんなが慣れてしまったメソッドチェーンは
jQueryができるより前から知っていたが、はて?
222:デフォルトの名無しさん
15/06/04 07:09:21.45 p4ZTcGym.net
そもそも、$ や _ の話にメソッドチェーンは関係なかろう
223:デフォルトの名無しさん
15/06/04 07:56:18.16 0Z7pWiJ+.net
ただのライブラリの話を持ち込まれてもな
224:デフォルトの名無しさん
15/06/04 11:41:14.80 sc3w8p67.net
vue.js でelを指定しない時にHTMLを生成できるって書いてある記事を見かけたのだけど、どうやればいいんだ?
225:デフォルトの名無しさん
15/06/04 15:50:39.91 LzIda4YJ.net
そこの記事書いた人に聞けよゆとり
226:デフォルトの名無しさん
15/06/04 16:48:24.05 TldR44zJ.net
本人乙
227:デフォルトの名無しさん
15/06/04 17:08:20.45 JWskV460.net
まあ名前付けが傲慢な感じはあるね
prototypeとかqueryとかnodeとかbootstrapとか、
一般的なコンピュータ用語になんでもjs付ければ許されるのかと
ここ5年くらい、Web屋の無知と傲慢が招いた名前空間の汚染が激しいように思う
228:デフォルトの名無しさん
15/06/04 17:16:37.66 yVQOALuO.net
>>222
> ここ5年くらい、Web屋の無知と傲慢が招いた名前空間の汚染が激しい
という無知
229:デフォルトの名無しさん
15/06/04 18:11:41.00 JWskV460.net
>>223
おっWeb屋だ、元気?
ところでv8をビルドするときに使う
bootstrapスクリプトの機序をどうやって検索したらいいか教えてくれよw
230:デフォルトの名無しさん
15/06/04 21:53:09.33 PemmKaGK.net
>>224
v8のビルド方法で検索すればいいんじゃね?
検索したら、How to Download and Build V8っていうのが見つかったけど。
URLリンク(developers.google.com)
231:デフォルトの名無しさん
15/06/04 23:15:35.68 U3atrZZO.net
>>222
世の中の大半は、おまえより生産的で知識豊富な人たちが開発したと思ってるけどね
232:デフォルトの名無しさん
15/06/05 07:38:59.00 DEUjZ497.net
>>226
そういう話はキッチリソースつけて、話してくれや。
233:デフォルトの名無しさん
15/06/05 09:03:32.52 P0ImBG10.net
キッチ&リリース
234:デフォルトの名無しさん
15/06/07 07:11:03.31 ohZIkVP1.net
ま、ウェブ屋の大半が馬鹿なのは本当だろう
巨大なページに普通のjquery適用させて重い重い言ってるのよく見るしな
235:デフォルトの名無しさん
15/06/07 10:09:01.52 QDivtYyn.net
中古のスマホやタブレットでデザイナーに作られたようなjQuery満載の糞ページを表示させると電力不足を引き起こされてバッテリー残量が正確に認識されなくなってOSが緊急終了させられる。
今やスマホどころかタブレットもバッテリー内蔵で交換は困難/不可能だからバッテリーが寿命になっても使い続けられている端末はいくらでもある。
236:デフォルトの名無しさん
15/06/07 10:38:19.95 yTv0X04Z.net
はいはい
237:デフォルトの名無しさん
15/06/07 11:28:19.29 J7/rKSpK.net
>>229
とにかく書き捨ての糞プロジェクトが増えた
こんな流れはGoogleがつくった感じする
238:デフォルトの名無しさん
15/06/07 12:55:15.14 +aAn4ks1.net
誰かのせいにして安心するのは間違ってる
それは作った当人らの責任だろ
239:デフォルトの名無しさん
15/06/07 21:23:07.05 J7/rKSpK.net
詐欺業者が横行してて
姉歯的案件だらけだよ
年金記録流出も起こるべくして起きた
240:デフォルトの名無しさん
15/06/08 02:32:14.37 DLynV3iC.net
なんだお前ら生理か?
241:デフォルトの名無しさん
15/06/08 04:59:15.44 TkpGbpl3.net
ソフトバンクテレコム()
242:デフォルトの名無しさん
15/06/17 17:09:08.15 FiJHYwC6.net
関係無いけど久しぶりにJSLint使おうと思ったら随分変わってるのな
つーか何で x /= 3; でストップするんだ?わけわからんのだが
243:デフォルトの名無しさん
15/07/02 17:04:18.93 p+4VzYpK.net
他人が作ったコードをメンテすることになってJSDocアノテーションされてたので
ドキュメント化しようという話になった
開発時にはがJSDoc Toolkit(URLリンク(code.google.com))を使っていたようなのだが
それはすでにサポート終了してテンプレートも消えていた
それでJSDoc3(URLリンク(github.com))を試しているのだがデフォルトのテンプレートが
どうにも満足のいかないものだったので、テンプレートをいくつか探して試した
なかには not found のエラーを出すものがあり、そろそろ疑問に感じてきた
それで JSDoc を jsdoc -T としてテスト実行してみたところ大量の not found
えっ? テストしてないでリリースしてるの? それともこちらの環境の問題?
ちなみに Windows 7 環境で同梱のバッチで実行してるのだけれども
java 上で動くのだからその辺は一緒のはず?
javaランタイムのバージョン?
もし Windows 上で JSDoc3 を使っている方がいたら
安定して動作している環境を教えてほしい
244:デフォルトの名無しさん
15/07/02 17:09:48.72 eJl3FSc8.net
>>238
$ git clone URLリンク(github.com)
Initialized empty Git repository in /home/hoge/src/jsdoc/.git/
remote: Counting objects: 16429, done.
remote: Total 16429 (delta 0), reused 0 (delta 0), pack-reused 16429
Receiving objects: 100% (16429/16429), 16.16 MiB | 377 KiB/s, done.
Resolving deltas: 100% (8177/8177), done.
$ cd jsdoc/
$ ./jsdoc -T
Running tests...
.....(略)....
Finished in 4.993 seconds
1163 tests, 2965 assertions, 0 failures
.....(略)....
Finished in 0.054 seconds
33 tests, 60 assertions, 0 failures
245:デフォルトの名無しさん
15/07/02 17:10:25.70 eJl3FSc8.net
あ、これCentOS 6.6ね。
246:デフォルトの名無しさん
15/07/02 17:11:59.32 eJl3FSc8.net
ちなみに、
$ java -version
openjdk version "1.8.0_45"
OpenJDK Runtime Environment (build 1.8.0_45-b13)
OpenJDK 64-Bit Server VM (build 25.45-b02, mixed mode)
247:デフォルトの名無しさん
15/07/02 17:18:31.81 p+4VzYpK.net
同じ手順を Windows 上の Git Bash にて行ってみた
$ git clone URLリンク(github.com)
Cloning into 'jsdoc'...
remote: Counting objects: 16429, done.
remote: Total 16429 (delta 0), reused 0 (delta 0), pack-reused 16429
Receiving objects: 100% (16429/16429), 16.16 MiB | 1.17 MiB/s, done.
Resolving deltas: 100% (8177/8177), done.
Checking connectivity... done.
Checking out files: 100% (620/620), done.
$ cd jsdoc/
$ ./jsdoc -T
js: exception from uncaught JavaScript throw: Error: Module "c:/Users/xxxxxx/Documents/GitHub/jsdoc/jsdoc.js" not found.
うわーん
248:デフォルトの名無しさん
15/07/02 17:20:04.04 p+4VzYpK.net
$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b15)
Java HotSpot(TM) Client VM (build 25.45-b02, mixed mode)
です
249:デフォルトの名無しさん
15/07/02 17:21:39.94 eJl3FSc8.net
>>242
Windowsは、jsdoc.cmdを実行するみたいだよ。
ただ、俺には理解不能なエラーが出た。
Javaとか知らんし。
> $ .\jsdoc.cmd -T
> Running tests...
> org.mozilla.javascript.EcmaError: ReferenceError: "self" is not defined. (file:/C:/Temp/jsdoc/node_m
> odules/bluebird/js/main/captured_trace.js#464)
250:デフォルトの名無しさん
15/07/02 17:34:40.81 p+4VzYpK.net
やっぱ Linux環境を用意しないとダメなんかなあ
ただテストではエラー出るけど実際に使ってみた際にはエラーは出ないんだよなあ
テンプレートはデフォルトと
URLリンク(github.com)
URLリンク(github.com)
はエラー無しで通った
URLリンク(github.com)
URLリンク(github.com)
URLリンク(github.com)
はダメだった
251:デフォルトの名無しさん
15/07/02 17:43:03.98 eJl3FSc8.net
Macでもやってみた。
3年位使ってたけど、Java入ってないし。JDKのインストール方法をググる所から始めた。
Web開発にMac使ってる人が多いのは、こういうところかもね。
$ ./jsdoc -T
Running tests...
....(略)...
Finished in 3.486 seconds
1163 tests, 2965 assertions, 0 failures
....(略)...
Finished in 0.024 seconds
33 tests, 60 assertions, 0 failures
252:デフォルトの名無しさん
15/07/02 18:58:45.62 p+4VzYpK.net
あとでちゃんと JDK 入れてみるか
253:デフォルトの名無しさん
15/07/17 23:16:41.01 GZ2lmC/i.net
URLリンク(www.bluefoun.pos.to)
ここに出てくる関数gameBodyって意味あんのか・・・?
これ書いただけじゃ何も実行できんぞ
254:デフォルトの名無しさん
15/07/17 23:24:31.53 XR8NxmBX.net
はーい今日のおバカさん↑登場
255:デフォルトの名無しさん
15/07/24 23:57:05.40 QlYyU5j9.net
迷子なんでここでいいかな?
cordova(phonegap)で躓いてるんだけど、専用スレが見当たらない
誘導plz
256:デフォルトの名無しさん
15/07/25 00:05:32.97 385UensT.net
そもそもフレームワークスレがないんだわ
自分で建ててもいいんじゃない
257:デフォルトの名無しさん
15/07/26 00:45:58.44 Nu2ySp1+.net
webアプリの伝票を表示する画面のHTMLで、テーブルタグでエクセル方眼紙作ってあった
列とか必要以上に多くて無駄にセルの結合してあった
258:デフォルトの名無しさん
15/07/26 00:46:27.27 Nu2ySp1+.net
gbk
259:デフォルトの名無しさん
15/07/26 08:27:53.84 lKG+wP//.net
>>252
すごく重そうなサイトだなーw
260:デフォルトの名無しさん
15/08/02 18:40:44.98 mqZtRy/B.net
数字の1と文字の1が一致して笑った。
カス言語すぎる。
261:デフォルトの名無しさん
15/08/02 18:45:01.04 dTRZmQiN.net
たしかperlも一致してた気がする
262:デフォルトの名無しさん
15/08/02 19:22:32.84 sI4u8psA.net
=== とか !== を知らないのだろうか?
263:デフォルトの名無しさん
15/08/02 19:23:25.05 ea/y5J7a.net
JSは互換を安易に切れないからな
残りカスのような変な仕様は山ほどある
264:デフォルトの名無しさん
15/08/02 19:30:32.53 qmwBoa+Z.net
>>252
もしかしてマジでEXCELでデザインしたものを変換してるのかもな
265:デフォルトの名無しさん
15/08/02 19:34:25.89 56YeXZNf.net
===使わないとか狂ってるな
カス過ぎる
266:デフォルトの名無しさん
15/08/02 19:37:57.46 qmwBoa+Z.net
むしろ==の使いどころがよくわからん
267:デフォルトの名無しさん
15/08/02 19:41:23.07 mqZtRy/B.net
じゃあ、==の存在意義はなんだよ
268:デフォルトの名無しさん
15/08/02 19:49:47.26 dTRZmQiN.net
explicit宣言で==がsyntaxerrorになったりせんのけ
269:デフォルトの名無しさん
15/08/02 20:51:00.19 j05l/s8s.net
変数に型がない言語ではどうしても、
== と === 相当の機能が必要になる。
変数に型がない言語では全て同じ。
270:デフォルトの名無しさん
15/08/02 21:47:56.95 sI4u8psA.net
ID:mqZtRy/B は素直に静的な型宣言を必要とするコンパイル言語を使っとけ
271:デフォルトの名無しさん
15/08/02 22:13:12.22 dTRZmQiN.net
CoffeeScriptおすすめですお
272:デフォルトの名無しさん
15/08/02 22:15:15.51 j05l/s8s.net
言語としては悪くないが、
将来性として悪い。
BabelなどでES6が使えるようになった今、
CoffeeScriptの役目は終わった。
優位性が無くなったのだから。
CoffeeScriptはES6をつくるための
犠牲になったのだ。
273:デフォルトの名無しさん
15/08/02 22:36:51.46 +B7/KlLQ.net
>>262
null == undefinedがありますので
274:デフォルトの名無しさん
15/08/02 23:11:50.36 Q2Jrv
275:HPp.net
276:デフォルトの名無しさん
15/08/03 05:17:31.66 M3KvY+a0.net
>>264
luaならそんなクソ仕様ないけど
277:デフォルトの名無しさん
15/08/03 20:20:01.84 OzQ4PZKS.net
>>270
でもこういうクソ仕様はありますね。
2.2.1 - 変換
Luaは文字列と数値を実行時に自動的に変換する。 すべての数学演算は、
文字列に適用されると、一般的な変換ルールに基づいてその文字列を数値に変換しようとする。
ただし、例外があって
2.5.2 - 関係演算子
2.2.1 の変換ルールは等価比較には適用されない。 そのため、"0"==0 は false に評価され、
t[0] と t["0"] は異なったテーブルエントリを示す。
一貫性がない。
278:デフォルトの名無しさん
15/08/04 11:19:43.50 Wrx2TKJj.net
NaN !== NaN は他言語でもそうなのかな
これだけは直感的でないと感じてしまう
279:デフォルトの名無しさん
15/08/04 20:47:31.71 LaebqzUe.net
>>272
Rubyも同じ
URLリンク(docs.ruby-lang.org)
> ただし、NaN 同士の比較では常に false を返します。
Pythonでも同様
URLリンク(d.hatena.ne.jp)
> nanは非数(not a number)、infは無限(infinity)。通常、
> この表示になってしまったら、これにどんな演算を行っても、結果はもう変わらない。
PHPでも
PHP 型の比較表
URLリンク(php.net)
> この値を、自分自身を含む他の値と比較すると、緩い比較であっても厳しい比較であっても
> 結果は FALSE となります (つまり NAN != NAN であり NAN !== NAN であるということです)。
さらにPerlでも
URLリンク(perldoc.jp)
> NaN はどの値に対しても(NaN に対してでさえも) "<", "==", ">", "<=", ">=" の
> いずれも成立しないので、これらは全て偽となります。
SQLでも似た仕様がある。
NULL は NULL と等しくない!?
URLリンク(blog.livedoor.jp)
280:デフォルトの名無しさん
15/08/04 20:48:25.72 LaebqzUe.net
>>272
> NaN !== NaN は他言語でもそうなのかな
> これだけは直感的でないと感じてしまう
直感的じゃないという意見はわからなくもないが、
他言語でも同じなわけで、それを知らないということは、
君の経験不足ってのがよく分かるねw
281:デフォルトの名無しさん
15/08/04 20:50:43.13 LaebqzUe.net
ついでに調べた。
C#も同じ
URLリンク(d.hatena.ne.jp)
Javaも同じ
URLリンク(d.hatena.ne.jp)
C言語でも同じ
URLリンク(www.c-tipsref.com)
> NaN を使った算術演算の結果は常に NaN になる
282:デフォルトの名無しさん
15/08/04 21:03:34.53 SiN2Ipli.net
a = NaN, b = NaN
aとbを比較しようとしたときにどういう問題が発生するか考えれば納得出来るだろう
283:デフォルトの名無しさん
15/08/04 21:18:44.87 LaebqzUe.net
>>276
わかりづらいw
var a = "a";
var b = "b";
parseInt(a) == parseInt(b)
これがtrueだとおかしいだろ?
ぐらいのことを言えよ。
284:デフォルトの名無しさん
15/08/04 21:25:12.39 MmQrnXHp.net
は?
NaN という状態の意味を考えろよ?
言語でしか考えてなくてコンピュータで処理するってこと微塵も考えてないだろ?
285:デフォルトの名無しさん
15/08/04 21:34:13.30 SiN2Ipli.net
>>277
分かろうとする努力が大切
286:デフォルトの名無しさん
15/08/04 21:38:57.14 eMvPKlqH.net
NaNでそーなるのっ!? (ジャンプ)
287:デフォルトの名無しさん
15/08/04 21:56:56.46 2w4CQfTI.net
>>274
他言語の経験がないのは認めるけど、煽りとかどうでもいいから
NaN !== NaN が成立する合理的な理由があるなら教えて欲しい
「他言語でもそうだから」という教科書的な答えでは納得できない
>>276-277
その比較はする必要性を全く感じないので、そのコードの目的がわからない
null, undefined は等価なのに NaN だけ特別扱いする理由がわからない
288:デフォルトの名無しさん
15/08/04 22:14:51.15 SiN2Ipli.net
>>281
nullやundefinedは演算の結果でなるものではない
289:デフォルトの名無しさん
15/08/04 22:56:02.17 MmQrnXHp.net
>>281
null や undefined は言語上で特定の意味を与えられた値にすぎない
NaN はそれとは全く違う
不正な演算によって生じた結果を表す状態で、これは言語ではなくてコンピュータの仕組みから定義されているもの
「不正な値」だと理解してもらっていい
不正な値なので大小比較自体が成立しないのでその結果も不明となる
あとは自分で NaN をググるなり、コンピュータでの数値表現について勉強するなりしてくれ
290:デフォルトの名無しさん
15/08/04 23:21:37.01 2w4CQfTI.net
>>282-283
NaN は Number ではない不定値のようなものか
何となくだが、理解した
ありがとう
291:デフォルトの名無しさん
15/08/05 00:11:47.63 GLQwjMtk.net
しかし大小比較自体が成立しないんだったら
言語側では例外を投げてもいいような気もするが
IEEE754で演算上の振る舞いも規定されているのか
292:デフォルトの名無しさん
15/08/05 07:43:38.95 dSgZbAfK.net
>>284
NaNが何の略か知らないの?
293:デフォルトの名無しさん
15/08/05 07:46:27.13 PB1eetSA.net
NaNの略かだって?
294:デフォルトの名無しさん
15/08/05 09:03:37.80 HdJkl2eK.net
Number and Number
295:デフォルトの名無しさん
15/08/05 11:11:39.52 A+1+0YPe.net
>>286
"Not a Number" だろう?
"Not a Number" からは不定値か固定値かは読み取れないと思うが
296:デフォルトの名無しさん
15/08/05 13:37:35.99 PzT2XX1y.net
isNaN
297:デフォルトの名無しさん
15/08/05 16:16:26.21 xgMUKO3v.net
現行スレ
+ JavaScript の質問用スレッド vol.125 + [転載禁止]
スレリンク(hp板)l50
298:デフォルトの名無しさん
15/08/05 18:24:22.43 KU6oSpKD.net
ナンだって?
299:デフォルトの名無しさん
15/08/05 19:53:39.57 HdJkl2eK.net
/ {;;;;;;> _八_ :: :|
/) ..:::::::::::ヽ ( : |
, - ' .. '' {.. :::( 丶 _) |
/.... ,.... .. ::: ::: |
_/{:::::r‐ ,.::::::::::/ : : }
_ イ ::::: {:::::::::}. ... ::: . ´ ^}
_... , ィ ... :: .. :: , :::::::::::: .:. . ,'
/::: . ´ ゛ :::::: :: ::::::::) ...:::.::. }
.. イ:...:: ´ ,..::::::::::::::. ..::::.. :::"゛.. :::: ,'
,.´ ... .:. :: ´(::::::::: ゝ .:::::::ノ ;.. ハ .. ,′
. / {::::::::.. ::: :::: "" :: ...... ⌒ヽ { {
/:::. / .... -<:: :::::::(::::::: } レ:::::::::::... {
. {ヽ < ::: :: :: :::: { :::::::::::: ヽ
{:: .. ___{ ,....:.:.:.:.::ヽ ,. { i:::::::::::: |
ヾ:::: ´ ,'.:.:.:.:.:.:.:.:.:. :: .::. ゛"゛ .,′
\ y :.:.:.:: ヾ:: :: :: } .. /: `,´ /
. \ ..::.::.::.. ` ::::::ゝ :: ::: ::. /
\ ヾ:._.: .. ,:.: �
300:| _ン \ ::::: ... .. . "゛ ,..ィ ~ ヽ _ :::: ....:::. ::::::::::_ .ン  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
301:デフォルトの名無しさん
15/08/05 19:57:24.97 HdJkl2eK.net
/ ヽ
/ ヽ
/ 人 ト、 |
/ >‐ァ / _\ ! jノ
/ / / /,=彡'⌒ V ,=ミ \
/ / / r==彡tテ丁> ∨ /ヽ | \___,
// / __ /`¨´ ヽ.ゞ'′ リ ノ / _ノ
{' . ′ ⌒≫t示 / <
/ >ヘヽゞイ ∨ ヽ
/ ,, ’ ヽ丿 ∨ !
/ _ .. ´ `ー _,. -‐'’ / \f⌒ヽ. |
 ̄ ヽ ´ / \ ヽ!
\ / ! /`≫‐-
-‐…‐- \ / ! /`y'´
// ̄) `丶 _ア爪 .' /`y'
// / ‘, -‐</ノ ヽ ′/`y'
// / L ,-< ∨\ ! _, イヽ/
| し' 丿 | / ヽ. ヽ/ 丁 〉 //
| r-、 / / / .′  ̄  ̄
| ¦ `ー― - イ / / '
| ¦ | / !
若草物語 ナンとジョー先生