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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:51:33.37 ID:WwOYSBmy.net]
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。次スレは>>950>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。

152 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:03:22.58 ID:5O2HSGrs.net]
>>147
LAMPと全然関係ないと思うが。
何社か医療渡ってるけど割と普通。

153 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:06:38.13 ID:Dt+fFMyq.net]
>>148
その実装はわかるけど、>>139の主張と結びつかない
>>136の「undefined と比較する必要ないよね、in 演算子で十分だよね」に対して>>139で「オブジェクトのマージ」を仄めかしてるよね
マージ処理なら in 演算子や hasOwnProperty で十分に実装できると思うけど
まあ、ディープマージでなければ Object.assign で十分ではあるけど

154 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:08:37.38 ID:5O2HSGrs.net]
>>151
物にもよるんよ。検査って。
2項目以上帰ってくるものの、片方だけ表させたいとか。

155 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:14:25.30 ID:fXm66YRc.net]
もう一回見てきたけど、
控えめに見てもundefinedの計算結果がNaNという部分は
「未定義値」という値を明確に容認してるよ
少なくともhasOwnPropertyだけで済むと言ってるのとは相容れないし
って…もう最初から何も問題なかったってことでいいや
面倒くせえわ

156 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:18:25.17 ID:Dt+fFMyq.net]
>>152
よくわからない
プロパティが存在しないことを判断する方法は大きく分けて3つある

1. obj.prop === undefined
2. !('prop' in obj)
3. !(obj.hasOwnPropery('prop'))

1. はあなたが推奨する方法だけど、obj.prop = undefined にも反応する
2. や 3. でも問題ないし、そっちの方が厳密
ここで 1. でなければマージできない理由は?

157 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:24:59.90 ID:fXm66YRc.net]
>>149
いやお前自分で
>そのまま列挙して設定したものを、
>未定義と判定して「未検査」と表示する話をしてるんだが。
>頭おかしいの?
と言ってるし
本来この未検査ってのはリクエストに対して、ちゃんと

158 名前:定義されたデータを返す物だろ、
適当なWeb環境じゃないんだから、ビュー側で判別して表示とかありえないだろ
つか取得時のコンテキストどうなってんだよ
[]
[ここ壊れてます]

159 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:26:20.32 ID:Dt+fFMyq.net]
ちなみに、Object.assign は [[GetOwnProperty]] でプロパティをマージするね
Polyfill も当然、Object#hasOwnPropery を使う
条件別マージだから Object.assign を流用できないとしても根幹となるマージ処理は同じで問題ないと思うんだよね
www.ecma-international.org/ecma-262/6.0/#sec-object.assign

160 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:30:34.70 ID:5O2HSGrs.net]
>>153
未定義じゃないんだって。さっきの例みたら分かるだろうけど、数値に変換できない検査結果はNaNにしてるの。
0/1で持ってて、インフルエンザの検査結果を何を血迷ったかグラフで見て、陰性と陽性がピコピコ蠢くグラフ見て楽しいか?
>>154
単に、「である」を否定を使って比較しない、ってコーディングルールの問題。



161 名前:デフォルトの名無しさん [2016/05/27(金) 21:32:08.16 ID:fXm66YRc.net]
>>157
いやお前は最初の方で undefined との四則演算を容認してただろ
つまり値としての undefined が必要と説いてる
こっちはその値としてのundefinedがいらんとさんざんそれを否定してるわけ

162 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:34:19.11 ID:5O2HSGrs.net]
>>155
未定義は未検査、検査したけど何らかの結果で…って話だよ。
ある検体検査の中で、結果無しと返してるものに対して、電カル側が持ってる項目リストをピンポイントで開いてきたりするんだよ。
適当なWebじゃねえからいちいち処理してんじゃねえか。

163 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:35:39.58 ID:5O2HSGrs.net]
>>158
してないから。
四則演算するとこうなるから、四則演算が成り立たないものは正しく判定しなきゃね、そのためには、null,0,undefined,NaN全部扱い違うよねって言ってんじゃん。

164 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:44:03.54 ID:h7QAH+sV.net]
うるせえ消えろゴミ

165 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:44:10.18 ID:Dt+fFMyq.net]
>>157
> 単に、「である」を否定を使って比較しない、ってコーディングルールの問題。
そのコーディングルールの話を初めからいっておけばここまでこじれなかったんじゃないの?
端的に言ってあなたは説明が下手だと思う
自分の主張が伝わらなくて憤慨している様子は伝わってくるけど、原因のほとんどはあなたの中で当然と思うコーディングルールが皆に伝わってないことにあるんじゃないかな

>>10 で ! (否定)を使っているのが気になるけど、何かしらのあなたなりのコーディングルールがあるんだろうね
自分のコーディングルールが万人受けするとは限らないことは気に留めておくといいと思う

166 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:46:10.68 ID:fXm66YRc.net]
>>159
それって本来は未検査、結果待ち、結果無しって
別の値を定義して分けるべき内容でしょ?
悪いけど普通にクソ仕様だと思います

>>160
四則演算できると言ってる時点で値として認めてる事になるよね、違う?

167 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:48:08.24 ID:UggnfNpm.net]
undefined | null の等価が必要な糞みたいな
構文書いているんじゃないよ
はっきり言ってゴミだ

168 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:48:48.08 ID:fXm66YRc.net]
いや、違うかそうは言ってないんだな
もうちょっと待ってくれ

169 名前:デフォルトの名無しさん [2016/05/27(金) 21:52:05.84 ID:OuviwO3+.net]
>>164がいきなり何を言ってるのか良くわからない件w

170 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:53:49.64 ID:7C5pluWz.net]
俺も>>164がなにをいってるかわからんwww



171 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:54:15.57 ID:Y3oSSTyA.net]
一人で10も20も連投するようなキチガイ説明云々以前に頭おかしいだろ

172 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 21:59:59.70 ID:/K+aNa26.net]
こういうやつって自分より明らかに上のヤツが面と向かって話きいてやるから出て来いっていうと出てこないんだよな
所詮その程度のカス

173 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 22:00:29.40 ID:fXm66YRc.net]
>>160
>nullも、undefinedも、NaNもある理由があってあるんだから。
>nullだけで良かったはずなんてアホみたいな事言われても困る。
これで適切に処理しましょうって事は、undefinedは使用禁止にしても良いでしょ?
別にhasOwnPropertyとかinで検査する事になるんだから
その事には同意してるの?

174 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 23:20:18.13 ID:Ajerz5wW.net]
>>43
おっと?ちょっと見立てが狂った。まあそれはさておき、回答ありがとう。

ちなみにリクエストある?
見立てが狂っていたので、俺が勝手に「君にとって有益」だと思っているのもゴミでしかないかもしれんし。
君はこの一連の会話には参加してないと思うけど、こいつらが駄目な点を指摘しろと言われればできるけど。
放置しておけば収まるかと思いきや、そういう感じでもないし。
ただ一番カスなのは、単発で煽っている奴だと思うが。
俺個人のスタンスは、この手の技術的応報は「気が済むまでやれ」だからね。

175 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 23:21:03.48 ID:Dt+fFMyq.net]
>>154のマップオブジェクト的なものの判定処理で最終的に行き着くのは 3. の hasOwnProperty
obj.prop = undefined とか、NaN の比較とか、定義順の列挙とか、諸々の問題は new Map で解消される
ID:5O2HSGrs が作る医療システムは構造が複雑なので単純なオブジェクトマップで対応するよりも、独自のインターフェースを作る方がいい
https://jsfiddle.net/oo1777o0/

176 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 23:51:31.16 ID:64E4c/Qq.net]
Rのデータでも、null, NaN は理解できるけど、
undefined はプログラムのバグじゃないの?

それは、アカン

DBでも、null, undefined を加えて、4値論理だと、SQLが複雑化して、バグが増える

177 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 23:56:13.71 ID:10EzBfKp.net]
undefinedは同じ関数名でsetter/getterを作るときに使うな。

たとえば、obj.data('name') だと getter、
obj.data('name', 'hoge') だとsetter。

nullだけいいかと思うかもしれないけど、
obj.data('name', null)という風にnullを代入するsetterがあるかもしれないので
nullとundefinedは区別がついたほうがいい。

178 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 00:01:17.19 ID:2CcTCqQn.net]
>>171
一番のカスは質問でも回答でもねえ話を続ける場違いなカスに対し
「俺個人のスタンスは〜」とかドヤ顔で言ってしまう脳味噌馬糞野郎だから安心して

179 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 00:03:07.76 ID:lIlkJ1va.net]
>>174
null と undefined は区別すべきだと思うけど、その場合はarguments.lengthで判定するのが普通

180 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 00:15:41.95 ID:Q7pM0tvA.net]
>>108おねがいします



181 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 00:17:23.16 ID:U+yYkFDL.net]
argumentsって展開できる?
rubyでa = [0, 1, 2]
def f(a, b, c); endに対して
f(*a)できるようなやつある?

もしくは
g = funciton () {/*arguments使う処理*/};
f = function () {/*g()にargumentsを渡す何らかの手段*/};
gを変更せずにf側の工夫だけで何とかなればいいんだけど

182 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 00:23:14.01 ID:UVJrtMwg.net]
>>177
次の開く前に前のcloseするとか

183 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 00:24:56.37 ID:6huP5UCX.net]
単発キチガイって >>79 なのか?
そうでなければここまで粘着する意味が分からん。

こいつらは質問にも答えた上で「技術的に」やり合ってるんだから、
文句言う必要も筋もないと思うが。
このスレがこの調子なのはいつものことだし。(少なくとも1年以上前からこう)

単発キチガイが「人格的な」批判だけをしている方がうざいし、
気に入らないのなら出ていけばいいだけだろ。

184 名前:178 mailto:sage [2016/05/28(土) 00:28:43.02 ID:U+yYkFDL.net]
>>178
自己レス
var g = function () {alert(arguments.length);};
//var f = function () {g(arguments);}; // ダメ
var f = function () {g.apply(this, arguments);}; // これでいい
f(0, 1, 2, 3);

185 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 00:45:35.77 ID:F7SYakCj.net]
>>172
ああーいい感じに簡潔にまとまってていいね
自分もMapと専用型派だから、そのまま便乗させてもらいたい

186 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 00:48:21.69 ID:lIlkJ1va.net]
>>178
Rubyは知らんが、Function#apply の事か?

187 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 00:50:15.08 ID:F7SYakCj.net]
>>177
俺なら考えるの面倒だからpostMessageでリサイズしちゃう

188 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 01:21:36.93 ID:4RY8P4hk.net]
>>162
10は、評価した結果falseでなければ、だよ。
undefinedである、もしくは、nullであれば、とはちと違う。
当然と思うコーディングルールというか、xxx==null、と書いておいて、実はnull以外にもundefinedも判定されます、という理屈の方が明らかに間違ってる。

>>163
だから、それは状態として持ってるの。
結果の話なんだよ。
状態と結果をごっちゃにしてはいかん。
結果がある見込みすら無い、少なくとも現時点ではまだ無いか有意では無い、有意な結果がある、のたった3つの、結果の値なの。
クソ仕様はお前の頭。

>>163
だから、してはいけないって言ってるんじゃん。
undefinedは状態で、nullは値なんだよ。

>>170
使用禁止って何だ?お前何言ってるか全く理解してないのか?
代入してないから、undefinedで、別にundefinedを突っ込んでる訳ではない。

>>178
apply

189 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 01:30:01.42 ID:4RY8P4hk.net]
>>172
確かに綺麗だと思う。
進捗と結果は分けた方が良いね。
進捗は、同じ検体でも検査によって異なるフェーズを辿るし、ひとつの検査で2つ以上の結果が帰ってきたり、2つ以上の検査でひとつの結果が帰ってくるので、そいつらは分割する必要がかる

190 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 02:00:19.58 ID:F7SYakCj.net]
>>185
未定義という概念だけが必要だから、jsのundefinedはいらないよね
言ってる意味わかる?
というか
>当然と思うコーディングルールというか、xxx==null、と書いておいて、実はnull以外にもundefinedも判定されます、という理屈の方が明らかに間違ってる。
ってfalsy判定するって言ってる人がそれ言う?酷すぎでしょ

>状態と結果をごっちゃにしてはいかん。
>結果がある見込みすら無い、少なくとも現時点ではまだ無いか有意では無い、有意な結果がある、のたった3つの、結果の値なの。
>クソ仕様はお前の頭。
いや糞仕様だよ普通に
つかなんでいちいち煽りを入れてくるかね…
俺は散々その未検査とかの状態をundefinedじゃなくて、
サービスの値として別で定義するべきと言ってるわけ
電カル云々ってのは結合って意味でしょ?
その結合するにしても、「undefinedを判定に使う」なんてのはやるべきじゃないでしょ?
アプリケーションレベルの話なのだから、きちんと「未検査」「なし」という値を定義すべきでしょ?
きちんとここまで理解できてる?



191 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 02:08:55.19 ID:F7SYakCj.net]
というか実際はどうかはしらないけどさ、
説明聞く限りだと、明らかにまともなシステムじゃないよ?
そんなのをお手本として語っちゃうのは駄目だと思うよ

192 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 02:42:07.52 ID:F7SYakCj.net]
もうこの話題は埒が明きそうにないからレスしないことにする
すみませんでした

193 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 03:04:53.76 ID:4RY8P4hk.net]
よほど指摘されたのが悔しかったんだなぁ。
らちがあかないおつむでご苦労なこった。
おつかれさん。

194 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 03:09:13.25 ID:4RY8P4hk.net]
undefinedという状態を使う、その行が無いという情報を使う、開始電文+データ長0+データ(ゼロバイトの)+終了電文。
全部、有意な「何もない」という情報なんだけどな。
0を発明する前の、指で数を数える原始人みたい。滑稽よね。

195 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 03:22:22.32 ID:4RY8P4hk.net]
jsのundefinedは要らない、もよくわからんな。オブジェクトとして存在していなくてもよい、予約語であれば良い、とでも言いたいんだろうか。
それとも、概念が必要ないんだろうか。

phpのissetも、perlのexistsも、Mの$Dも、はたまたcのプリプロセッサマクロのifdefも要らんというか、使いこなせないんだろうな。

196 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 03:43:50.37 ID:/MxDZHtX.net]
すでに「nullという値」という概念が存在してるんだから
「何もない」ものと区別する必要があるだろ。

197 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 04:51:05.16 ID:BWGRJTpr.net]
宇宙の真理として絶対に必要あるものでもないし、必要ないものでもない。

JS界では有意義に使い分けられてるのだからあってもいいと思う。
無い言語では別の機能で代替してそれは成り立ってるのだからなくてもいいと思う。

ただそれだけの無意味な議論。

198 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 05:52:30.30 ID:/MxDZHtX.net]
C言語なんかint型に数値以外入らないから
-1で代用したりでなんとかなってるしなw

ないならないで工夫次第で何とかなるが、
あれば楽になるっていうものなのだろう。

199 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 09:38:09.38 ID:PPUGo99f.net]
>>186
専門家でない自分が検査の詳細を知る由もないんだけど、必要であれば Interface を拡張するか、上位 Interface を作ればいい
例えば、検査フェーズ毎に結果が欲しかったら、上位に Interface MedicalCheckPhase を作る
https://jsfiddle.net/oo1777o0/1/
患者毎に管理したければ更に上位に Interface を作ればいい

---
あなたの管理法が否定されているのは「調査予定の有無」「調査の実施状況」を一つのプロパティにまとめているから

switch (obj.prop) {
 case undefined:
  console.log('本件は調査予定がありません'); // プロパティが存在しない === 調査予定そのものがない
  break;
 case null:
  console.log('本件は調査予定ですが、未調査です'); // プロパティが存在する === 調査予定がある / null === 未調査
  break;
 default:
  // なにがしかの処理
}

これは「調査予定の有無」「調査の進捗状況」の2つを別々のプロパティで管理した方がいい
MedicalCheck でいう implement, progress がそれにあたる

200 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 09:48:10.32 ID:UVJrtMwg.net]
>>196
まったく同意ではあるんだけど

>>127
> 病院の回線ってそんなに贅沢に使えないんよ。

ってあるから
やむをえずそうしたってことがあるのかねって思ってた



201 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 10:07:17.12 ID:oSugN8gY.net]
undefined は後で拡張し易くするためにある。
undefined 処理のロジックを入れておけば、新たなフィールドが追加されても
プログラムの修正はそのフィールドを直接扱う所だけで済む。
ゆえに、決して拡張されない領域内では undefined も不要になる
(null と undefined はむしろ全然関係ない話)

という理解でok?

202 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 10:17:45.97 ID:PPUGo99f.net]
>>185
> 10は、評価した結果falseでなければ、だよ。
>>10>>157の "「である」を否定を使って比較しない" のコーディングルールと接触しないのか、って事
「hoge.a が truthy である」の否定を使って比較しているよね?
if 文は内部的に ToBoolean を通して true と比較するから「肯定の否定で比較」してる
if 文に限っては ! を使ってもいいルールなら if (!obj.hasOwnProperty('prop')) も許可しなければおかしい
あと、改めて考えると if (obj.hasOwnProperty('prop') === false) で肯定式のみのコーディングが成立するから hasOwnProperty を敬遠する理由がなくなるね

203 名前:196 mailto:sage [2016/05/28(土) 11:11:02.33 ID:PPUGo99f.net]
>>197
「実施の有無」はInterfaceの内部処理として隠れるから実際のところはそれ程コード量は増えないと思うんだよね
Interfaceを作ればその後のコード量が少なくなるから相殺されるか、逆にコード量が少なくなる場合もあると思う
このぐらいのコード量ならzlib圧縮してminifiedしたら十分に小さくなるし

204 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 11:20:22.38 ID:6huP5UCX.net]
おい、一応言っておくけど>>172>>196もゴミだぞ。
それから>>189、お前は概ね間違ったことは言っていない。

お前ら、設計が出来るつもりなのなら、OPPのスレでも見てこい。
お前らにはいい教材になるかもしれん。
echo.2ch.net/test/read.cgi/tech/1463663267/

205 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 12:01:27.82 ID:oFxbpGnE.net]
ここは質問スレッドであって議論スレじゃない
スレタイも読めない阿呆は出て行ってくれ

206 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 12:12:29.14 ID:8NhNw/7c.net]
>>201
しょーもない宣伝するな
しかもOPPて

207 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 13:07:01.36 ID:6huP5UCX.net]
単発キチガイ粘着乙
お前の回答はどれなのさ?

こいつらは回答してるし、質問は掃けているのだから、回答もしていない奴が口を挟む筋はないよ。
最近、お前みたいな「筋をわきまえないキチガイ」は2ch一般に増えたけどね。

208 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 13:29:38.68 ID:GZb66p/J.net]
場を弁えないキチガイの方がいらねえは

209 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 15:14:44.57 ID:h5j9D0+l.net]
>>195-200
すまんが、否定派は結局何が主張したいのかがわけわからん。
true/falseはいらない、1と0でいいと言ってるのと同じでしょ。
無くてもどうにかなるからという論を散々されても、
無いほうがいいということにはならないからね。

でも最初の話はそうじゃなかったでしょ?
JSにおいてnullとundefinedの関係及び立ち位置がやや難しいという話だったでしょ。
undefinedが要るか要らないかのような単純な話じゃないし、
今からJS2を作ろうというのでもないのだからそんな話をしても全く意味が無い。

それよりも関係及び立ち位置をここで、またこれから振り返って整理していこうというのが
正しい論議だと思うよ。

210 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 15:34:39.73 ID:7z0JA/T2.net]
const obj = {
age: 1,
f: () => {
console.log(this.age);
}
};
obj.f();

functionじゃなくて() =>で関数を書いた時にf()の中からageの値を取得する方法を教えてください



211 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 16:01:02.90 ID:jKO2qa04.net]
ソースコードはヒューマンリーダブルなので
自己満足で解決

212 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 16:28:58.11 ID:6huP5UCX.net]
>>207
その場合はfunctionと書く方が正解

213 名前:196 mailto:sage [2016/05/28(土) 16:47:58.29 ID:PPUGo99f.net]
>>206
一緒くたにされてるけど、別に undefined 不要は唱えていない
自分が主張したのはプロパティが存在しない事を確認する為に obj.prop === undefined を使うべきではない、という事と
ID:5O2HSGrs が考える医療システムコードの問題点だけ
null, undefined の違いは>>102で説明したことが全て
undefined 比較はほとんどの場合において不要

214 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 16:53:14.43 ID:F7SYakCj.net]
すまん
レスしないと行ったけどむかついたから言わせて

>>192
なぜそう煽るの?しかもそのレスってこっちの内容まともに読めてないよね?
まず未定義の判定操作がいらないとは言ってないよ
未定義を値として扱う事全般が駄目と言ってる

まず大前提として、こっちは端的にBoolean、Number、文字列やユーザー定義の列挙型と、
Nullable、Undefinable(?)な型はそれぞれ直交した概念ときちんと分けて考えてるわけ
(NaNはNumber型の値の一つとして見てるから、その点でそちらとは考えが違う)

で君の言ってるシステムは本来アプリケーションの1つの型(もちろん値が直交した型なら複数)として実装する物を
変数の未定義状態を表す型(Undefineable)に対し、
なぜかアプリケーション側の定義値の一つをぶっこんでいるでしょ?
それ普通に糞仕様だよねって話

理解できてる?
違うと言うならズレた煽りを入れずに、何が違うか具体的に言ってね?

215 名前:196 mailto:sage [2016/05/28(土) 17:01:36.87 ID:PPUGo99f.net]
>>207
obj.age で可能だけど、そこでアロー関数を使う意図が疑問
アロー関数はthis値を変化させないときに使うもの

216 名前:196 mailto:sage [2016/05/28(土) 17:22:13.49 ID:PPUGo99f.net]
>>211
お疲れ様
多分、彼( ID:4RY8P4hk )はあなたの意見を誤読してるだけだと思う

あなたの主張「>>196の状況でundefinedと比較する仕様(設計)がNG」
彼が解釈したあなたの主張「JSにundefinedは必要ない」

217 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 17:31:05.73 ID:B2G67qEl.net]
nullは確かにESの範囲から追い出すことは容易。
でもってアプリレベルでは共通するシンボルを使えばいいとも考えられる。
但し、1つ理由のためnullは存在価値がある。
それは偽性だということ。
では偽性のシンボルを自由に作れれば良いのかというとそれは微妙。
偽性な値というのは各型に1つくらいしかなく限られてるからこそ、
その性質を活用しやすいと言うこともある。
nullはだいたいオブジェクト型の唯一な犠牲の値としての立場を振るう。

よって、nullという存在を用意しておくのは、
シンプルや汎用的にし過ぎて利便性を犠牲にすることがない
良いバランスを狙えていると思う。

218 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 17:37:37.39 ID:F7SYakCj.net]
>>213
すまないありがとう、落ち着いたよ
まさにおっしゃるとおりなので、>>196に便乗させてもらいます

よく考えたらコードに一切落としてないから、人に強く言える立場でもないなあ…

219 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 18:51:22.49 ID:bfGuDmoK.net]
>>214がなぜ今そんなことを言い出したのか意味不明。

220 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 19:13:15.00 ID:B2G67qEl.net]
>>216がなぜそんなことを気にするのかが意味不明。



221 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 19:21:59.51 ID:4RY8P4hk.net]
>>211
ぶっこんでないから、undefinedなんだけど、まぁいいや。
定義されていない、を定義してるっておかしいと思わないのかな。
クソ仕様は、undefinedを代入してる、って誤解してるババロアと取り替えても支障のないレベルの脳ミソだと思うけどね。

222 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 19:59:16.01 ID:1ecGmLwK.net]
ババロアバカにするとか許さないんだけど
てめえのあたま埃でも入ってんじゃねえの

223 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 20:06:57.74 ID:6huP5UCX.net]
>>218
いや違うぞ。
>>211の主張は、「undefinedを代入するな」ではなく、「undefinedを有効値(意味のあるもの)として使うな」だ。
プログラミング言語上のundefinedに対し、アプリケーション上の意味をオーバーロードしていることを問題視している。
といってもこの表現では君には伝わらないだろう。そこでさらに平易に言い換えると、

例えば、Ruby等、undefinedがない言語で組んだ時、
アプリ上で「未実施」「成功」「失敗」「情報無し」の4値状態が必要であれば、
当然 true/false/nil では足りないから何らかの対策をするだろ。
それをJavaScript(4値状態可能)であったとしてもやれと言っている。
まあ君はNaNも導入しているので5値状態まで行けるのかもしれんが、どこまでそれやるの?という話になる。

224 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 20:14:47.49 ID:19MLvfJY.net]
よかったこんな阿呆が身近にいなくて

225 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 21:13:45.88 ID:/MxDZHtX.net]
Scalaのnull/Nothing/Nil/Noneはやりすぎなのか?
bleis-tift.hatenablog.com/entry/scala-null-none-nothing-nil

似たような意味でも違う概念なら違うものに割り当てるべきだよ。

226 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 21:22:05.08 ID:ynWa4gys.net]
undefinedはcのdeleteと同じと思った方がいい
変数の初期化をしたいけど、いれる物がない時はnullを入れるべき
undefinedを入れるのは間違っている

227 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 21:34:27.07 ID:ubVCvz+a.net]
>>223
お願いだから書き込むのをもうやめてくれ
何いきなり「cのdelete」とか言い出しちゃってるの?

228 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 21:42:53.12 ID:ynWa4gys.net]
>>224
まだ一回しか書き込んでいない

229 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 21:43:39.30 ID:LvedKHwv.net]
>>223
俺c/c++メインだが、その例えは意味がわからん

230 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 21:44:56.20 ID:ynWa4gys.net]
俺がいいたいのは、undefinedをフラグや何もないという意味を表す物として使うなと言う事
c言語で、フラグの為にnullを代入することはあっても、deleteで消すことはないだろ?



231 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 21:50:45.87 ID:LvedKHwv.net]
>>227
言いたいことはわかったけど、それと例えが全くマッチしてない気が…

232 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 21:51:00.22 ID:ubVCvz+a.net]
cでnullとかdeleteとかお前頭の病気か?

233 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 21:52:08.66 ID:UVJrtMwg.net]
周回遅れ感になんかほっこりしたw

234 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 22:55:04.19 ID:4RY8P4hk.net]
>>227
何もない事を現すものに、何かを使うと、それは、「何もない事を現すもの」という実体になっちゃうでしょ。
1つ2つの欠けうるフィールドにであれば意味はあるだろうけど、
数千の項目のうち必要なものだけが帰ってくるというものに対して、
この項目は今回入ってません、って通信する意味はあるのかな。

235 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 23:20:30.96 ID:6huP5UCX.net]
>>231
とりあえずデータ取得はJSONでサーバからもらって、フォーマットは>>135みたいなのなんだろ?
つまりネットワークバンド幅をケチるためにundefinedは最初から抜けていると。

そこまではその実装で正しいと思うぞ。問題はその先だ。

あとついでに答えも言っておくと、どっちの実装でも一長一短あるんだよ。
だからそれぞれの利害得失を分かった上でその実装にしているのならそれでいいんだよ。(これを設計という)
ただ、お前らどちらも「俺の方が正しい」と思っているだけで、
相手側の実装も含めての利害得失をさらっと言えないだろ。
それじゃ駄目なんだな。
なお、俺ならお前らの中間の実装にする。でも君達はこれも想像できないだろ?
君達には実装時のオプションが足りてない。

まあ、でもこういう風に議論することは多分お互いのためになるだろうから、頑張れ。

236 名前:デフォルトの名無しさん mailto:sage [2016/05/28(土) 23:31:47.42 ID:viYscYES.net]
>>232
滑稽やなこいつw

237 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 00:46:26.74 ID:0W+JhSU+.net]
>>232
ネットワークからもらうのは通信電文だよ。
通信電文自体イメージできてないかもしれないけど。
意味のない中間の実装とか要らないの。
相手側の実装、結果の値の入っていないものに、わざわざ結果が入ってませんと入れていく、に文句つけるとすればただ一つで、

結果が入っていないことが問題になるのは、その結果を使用しようとするときで、電文をパースしてオブジェクトに乗せた段階では、
どれに結果が入っていて欲しいか、なんて事は把握してないんだよ。
だから、足回りが結果が入ってなかったと設定する事はできないし、
「知りうるすべてのフィールドに対して、これは入っていなかった」って設定する事も無駄すぎるの。
知りうるすべてのフィールド、も保守管理していくとなると、永遠に保守を続ける必要が発生するよね。

そうなると、話はシンプルで、貰っていない≒入っていない、の構造を維持するのが一番よね。

あと、検査結果に対して、(今のところ)結果無しを何か定数(文字列でも)で持つのはよろしくない。
その後、新しい検査結果として、同じ、またはとてもよく似たものが入ってきた時に、それと鑑別するのが不可能だったり後からデータコンバートが必要だったり、エスケープしていく必要があるよね。

であれば、データを解釈した結果未来永劫に渡って帰ってくる可能性の無い、かつどこにでもある定数としてのnullを使うべきでだよね。

進捗自体は、別のデータが貰えてるので、そいつでフィルタすれば良い。

238 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 02:13:36.39 ID:JYpYJI9w.net]
質問スレとして成り立ってねえ

239 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 02:33:08.25 ID:qvzR6wN9.net]
>>234
おいおい俺にレスを付けるかw
やり合ってるのは俺じゃないぜ。まあ、安価自体には大して意味がないかもしれんが。

> 無駄すぎる
> 貰っていない≒入っていない、の構造を維持するのが一番よね。
これらについては正解。相手側の欠点と、自分側の利点は言えた。
では相手側の利点と自分側の欠点は言えるか?つまり相手側が何故相手側の主張をするかだ。

まあこれは言えなければ相手側に言ってもらえばいいんだが。
そうすればお前らお互いに知恵を出し合ってブレスト出来て前に進めるだろ。
そうやって自分の中の実装オプションを増やしていけば、
仕様を聞いた瞬間に複数の実装が思い浮かんで選択できるようになる。
下らない文法争いからはいい加減に卒業した方がいい。あんな事をやっていても全く上達しない。

240 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 02:33:34.96 ID:qvzR6wN9.net]
nullアサインの理由付けはよく分からない。
というか正直、こじつけただけのように見える。ただ、それはそれでいいんだよ。
君の実装は軽量高速動作向きだ。
だからプリミティブで対応するというポリシーなら、それはありなんだよ。
問題はそれを分かってやっているのか?ということなんだよ。

あと、話を大きく考えすぎだ。身近な成功例があるのだから、それを参考にすればいい。例えば、
000: 未実施
100: 実施中、結果待ち
200: 結果良好、終了
303: 再検査中
304: 再検査終了、問題なし
404: 結果不良
とかな。何の事かは分かるだろ?それを参考に決めうちしたとして、ほぼ全部設定できるはずだ。
どうしても駄目なら 600: その他、で直接stringを指定すれば済むが、
まあこれは分かると思うが避けられれば避けた方がいいだろう。
いずれにしても、この方式は拡張するにしても容易だ。



241 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 02:34:17.67 ID:qvzR6wN9.net]
分かっていると思うが俺はあっちの>>1だ。
echo.2ch.net/test/read.cgi/tech/1449440793/
お前らが延々と文法の話しかできない事に辟易していた。
この手のプログラミングの本質についての話なら、当然歓迎する。
だからあっちで勝手にやってくれても構わないし、今回みたいに収拾つかない場合には助け船も出す。

とはいえ、今回は君らだけでもっと走れるはずだ。
上記のように、反対側サイドは相手側に出してもらってもいいのだから。一人で走りきる必要はない。
だからまあ、今話している連中で行けるところまで行ってみるべきだね。
場所は上記の通り、移動したければどうぞだが、個人的にはここでやって構わないと思うけどね。
役に立たないレスしかしないゴミは無視でいい。
君らがガンガン回答しているのだから、君らが牛耳るべきなんだよ。
回答者のレベルが分かるのは質問者にとっても有益だ。
質問も全部掃けている。
質問と混線してやりにくいということになったら、その時にスレ分割を考えればいいだけのことだ。


なお、ここは質問スレなのだから、質問者は議論の空気を読まずにいきなり質問を落としていい。
それで議論がぶった切られるのが嫌なら、議論は別の場所でやれってことでしかない。

242 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 04:35:50.01 ID:qTFaTssR.net]
>>218
もうお前が型の基本も読解力もなく煽ってるだけの存在ってのは理解したから良いよ
結局何も答えられずに煽るだけだったね

243 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 04:45:22.18 ID:qTFaTssR.net]
>>232
設計がUndefined許容になる事を秤にかけたら遥かに前者のがいいっしょ
利得がって言ってる拡張は、プロトコル上は1レスポンス1バイト〜高々数十バイト(項目数)程度の差で済む
ISDN相手じゃあるまいし、中は同軸使ってた頃のシステムでも1Mぐらいはあるから、そんなの問題にならないよ

単に古いからなし崩し的に使ってるだけだと思うよ
で、それをかの人はなぜか良設計だと思い込んでると
まあもうどうでも良いけどね、本人最後まで理解しなかったし

244 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 04:47:37.88 ID:qTFaTssR.net]
すまん、前者の方が抜けてたね
正しくは、プロトコルを拡張するのと、設計がUndefined許容になる事を秤にかけたら

245 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 05:02:06.30 ID:9ISBvfBu.net]
よーわからんが思考順序がおかしい奴が結構いるみたいだな

246 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 05:07:22.44 ID:qTFaTssR.net]
>>234
>知りうるすべてのフィールド、も保守管理していくとなると、永遠に保守を続ける必要が発生するよね。
全部フィールドを保守するのが無駄と言ってるけど、
ビュー側で分けてるんだから同じ事だよ?
なぜか保守してないことになってるけど

247 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 05:22:17.03 ID:qTFaTssR.net]
これ極端なこと言えば、そもそも専用のはずのプロトコルとサービスを、
末端でそれぞれ対応してるモジュール同士が理解できればそれで良いっていう体の
オブジェクト送信と保存のための汎用ミドルウェア扱いしかしてないって事だよね

そして結果と言う名の値にごちゃごちゃデータ入れてるから、
各値を読めない末端は何のメタ情報も取得できない

それで保守しにくいって当たり前じゃんよ、何も考えずに末端で適当に実装してるんだから
どういう体系なのかは知らんが、正直関わりたくない案件です

248 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 05:24:34.66 ID:uH1/jPAH.net]
ネットワークバンド幅をケチるなら
バイナリのプロトコルがいいよ。

たとえばJSONをgzip圧縮するとかNE!

249 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 05:32:26.63 ID:9ISBvfBu.net]
>>234の論だと
貰った明示的な空値と貰ってない暗黙的な空値を区別するために
両方の存在が必要ということだな

250 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 06:24:18.47 ID:0W+JhSU+.net]
なんのこっちゃ。
空論だらけで笑えるわ。
undefined許容と言うか、お前らの見識狭すぎるだろ。
ざっくり白本から引用すると
shirobon.net/22/ika_2_3/i_m_2_3.htm
こうあるわけだ。
中見るとわかるけど、ひとつの検体でも、凄まじく別れるわけ。



251 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 08:06:23.01 ID:7TpVCW1+.net]
>>247
JavaScriptスレの住人に医療知識を求める方がおかしいと思うけど、あなたは ID:4RY8P4hk ?
多態性が必要ならオブジェクト指向をすればいい
一つのオブジェクトでプロパティチェックを一つ一つやって確認していく方法は極めて無駄

252 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 09:08:45.76 ID:0W+JhSU+.net]
>>248
だから、知らないなら知らないで良いんだよ。
しったかぶって、この設計で大丈夫、クラスやら、インターフェイスでガッチガチに固めれば良い、なんて発想されても、それじゃ不便なんだよねえ、って話するしか無いじゃん。
DBにも実際にスキーマフリーなkvsのような物に入ってるんだし。

何を持っているかは、もの次第。
その上で、持っていないものに関しては、定義しない、
持っているけど、中身の入っていないものは、定義して中身にnullを入れる。
そんなけ。






[ 続きを読む ] / [ 携帯版 ]

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

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