[表示 : 全て 最新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) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。

12 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 11:43:05.72 ID:Fup9czqT.net]
>>9
foo.barがどのような過程で生成されるかで違ってくるよ

13 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 12:18:09.22 ID:fTRdDZnU.net]
すみません、質問です。
サイトで時間で表示非表示のスクリプトを入れているのですが
非表示でもリロード時に一瞬表示されてしまいます。
このちらつきを防止する策はありませんでしょうか?

コードははこんな感じです↓

<script type=

14 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 12:23:18.22 ID:iG1UUWT4.net]
>>13
www
ごめんでも笑えた

15 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 12:24:06.53 ID:c4cnVHPj.net]
茶碗の中みたいだな

16 名前:13 mailto:sage [2016/05/24(火) 12:35:17.27 ID:fTRdDZnU.net]
ごめんなさい 途中で切れてしまいました

<script type="text/javascript">
<!--
window.onload = changeDisplay;
function changeDisplay(){
var objDate = new Date();
var now = (new Date()).getTime();//現在のタイムスタンプ(ミリ秒)を取得
var changeTime = (new Date("2016/05/25 20:00:00")).getTime();//切り替える日時のタイムスタンプ(ミリ秒)を取得
//切り替え前
if (now < changeTime) {
document.getElementById('hoge1').style.display = "block";
document.getElementById('hoge2').style.display = "none";
setTimeout("changeDisplay()", 1000);//1秒ごとに実行(◯秒ごとの場合は、第2引数に 「◯ * 1000」 と記述)
//切り替え後
} else {
document.getElementById('hoge1').style.display = "none";
document.getElementById('hoge2').style.display = "block";
}
}
// -->
</script>

17 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 13:16:31.22 ID:iG1UUWT4.net]
>>16
window.onloadじゃなくてDOMContentLoadedで処理するとか

18 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 13:21:28.18 ID:57joSblr.net]
>>16s
document.styleSheets で
#hoge1 { display: block; }
#hoge2 { display: none; }
を宣言する

19 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 13:47:40.17 ID:Fup9czqT.net]
>>16
var timer = 0;
function changeDisplay(){
clearTimeout(timer);
...
if (now < changeTime) {
...
timer = setTimeout("changeDisplay()", 1000);
} else {
...
timer = setTimeout("changeDisplay()", 1000);
}

方法は色々あるけどこれで良いんじゃない?

20 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 19:32:47.77 ID:cROy8nMz.net]
>>12
手元にある変数をhashtableとして使って
var model = {};
model[a][b][c] = value; // ←これができるような準備をしたい
みたいにして実行時に受け取ったkeyを使ってモデルを構築したいんですね
それをするためにデフォルト値の設定か、key所持の有無を知りたかったんです

>>11
> プロパティチェックには in 演算子か hasOwnProperty を使う

ありがとうございます。さっそくそれらをぐぐって学びました。
まさにそれです。hasOwnPropertyでピッタリのようです。

>>10
> if(!hoge.a) hoge.a='aaa';

ありがとうございます。タイピング量的にはこれがいいですね。
今回、厳密にプロパティ所持の有無だけをチェックする必要も実は無いですし。



21 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 21:04:07.49 ID:TKpsNxtt.net]
>>13 >>16
> すみません、質問です。
> サイトで時間で表示非表示のスクリプトを入れているのですが

<html class="ng">
<script>
if (new Date() < new Date("2016/05/25 20:00:00")) {
 document.documentElement.className = 'ok';
}
</script>
<style>
.ng #hoge1 { display: none }
.ok #hoge2 { display: none }
<style>
<body>
 <div id="hoge1">hoge1</div>
 <div id="hoge2">hoge2</div>
</body>
</html>

22 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 21:08:36.04 ID:TKpsNxtt.net]
一つ言っておきたいのは、ブラウザのJavaScriptでシンプルなコードを書こうと思ったら、
CSSの知識が必要不可欠ってこと。(もちろんHTML自体の知識も必要)
CSSを使ううちに不満が出てきて、SASS(SCSS)に乗り換えることだろう。

見た目に関する多くの処理をCSSでやることで
JavaScriptは驚くほどシンプルになる。

23 名前:デフォルトの名無しさん mailto:sage [2016/05/24(火) 22:57:09.14 ID:fFhHkZMI.net]
JSDocで、JSONを返すAPIなどのオブジェクトを定義出来ますか?

24 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 00:22:00.09 ID:oaeRtxYk.net]
>>23
JSON はただの String 型

25 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 00:38:42.00 ID:Jdaj3qLb.net]
>>20
それは、なんか関数用意したほうがいいんじゃないの?
model={}
keys=[a,b,c]
setModel(model,keys,value){
var k=keys.pop();
model[k]=keys.length==0?value:setModel(!model[k]?{}:model[k],value);
return model;
}
みたいな感じで。

26 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 01:02:30.80 ID:e2/1A4Vq.net]
お疲れさまです

板TOPに書かれているルール
>JSはweb管理板で


現行スレ
+ JavaScript の質問用スレッド vol.130 +
echo.2ch.net/test/read.cgi/hp/1463395557/50

27 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 01:49:09.77 ID:VNiDmyVP.net]
Web板って自演がウザイだけじゃん

28 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 07:14:03.46 ID:cVBZ9i9Y.net]
それができた経緯と現状を顧みずにルールに縛られるのはドアホのすること。
ルールのために我々があるのではない。

29 名前:デフォルトの名無しさん [2016/05/25(水) 07:23:06.88 ID:hMNMImmN.net]
>>24
JSONをパースしたオブジェクトの構造を定義しておけば、IDEの支援受けられるやろ?
だからソース上にはないクラスの定義できるかって聞いた
JSONが文字列って事くらい誰でもわかる

30 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 09:26:14.89 ID:Yyi7LTu7.net]
お前の使ってるIDEの仕様なんか知らねえw



31 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 09:59:51.34 ID:oaeRtxYk.net]
>>29
JSON は String 型なのでオブジェクトとしての補完機能は必要ない
String.prototype 系の補完機能が働けばそれでいい
まさかとは思うが、JSON をパースしたオブジェクトを JSON と誤解してないだろうな...

32 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 14:33:22.24 ID:Jdaj3qLb.net]
>>26
その頃のjsは、Webだけのためのものだったからなぁ

33 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 17:16:25.85 ID:hMNMImmN.net]
>>31
そうなんだ
例えば、TwitterAPIで返ってくるJSONをパースしたオブジェクトの構造をJSDcoコメントで定義しておけば、オートコンプリートの支援が受けられるやろ?
それみたいに、APIで返ってくる形式をDocで定義したい

34 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 18:20:50.93 ID:6lXHJSGu.net]
>>33
JSON.parse したオブジェクトは new Object か new Array のどちらかしかない
JSON Interface のオブジェクトというものは存在しない

35 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 18:30:33.44 ID:Rwgeje6L.net]
>>33

JSONデータにまで、インテリセンスを効かせたいの?

36 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 18:50:53.98 ID:hMNMImmN.net]
>>35
うん

37 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 20:50:05.00 ID:RmI4sgQT.net]
あきらめろん

38 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 23:00:15.35 ID:cOSJO7dH.net]
>>33
それなら、Object 型を指定するだけで済むはずだが(>>34)

39 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 00:59:59.52 ID:xmgEeB9V.net]
>>32
実質的に今も大して変わらず、9割以上ブラウザだろ。
それよりは、XHRがでかい。
あれで単なるブラウザ専用DSLからプログラミング言語へと脱皮した。

>>25
脱線するが、君はあいかわらずのコードを書いてるな。
指摘は正しいし、そのコードも悪くはないが、良くはない。8/10だ。
普通はshiftだろうし、keysが抜けているが、俺が言っているのはそういう文法的なことではない。

それはさておき、君はC++出身ということでいいのかな?
これをちょっと聞きたかった。

あと、君は ID:WwOYSBmy か?
これについては荒れるリスクがあるから、答えたくなければ無視でいい。
その代わり、回答があれば、そちらに有益な情報(と俺が思っているだけだが)を一つ出すことにする。

40 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 01:22:55.48 ID:cAjDmLh7.net]
>>25のコードに素人臭さを感じるのは
当たり前に入れるべきスペースすら無いからかな。
経験の低さがにじみ出てる



41 名前:デフォルトの名無しさん [2016/05/26(木) 01:48:29.92 ID:xw9RGDuQ.net]
質問です
初めてnodejsのexpress?というのでwebアプリ作成してみたのですが
非同期が難しすぎるし、IDEの補完がきかないのでメソッドもいちいち調べるの面倒です(以下コードです)
https://github.com/himanannyaga/angular2-express-mongo-quiz/blob/master/server/app.js
受け取ったJSONの型チェックとかバリデーション簡単にできる方法ってないんですか?
そもそもnodejs自体やめたほうがいいんでしょうか?
やめるとしたら今流行りのサーバーサイドのフレームワークってどれがいいんでしょうか?

42 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 02:21:24.67 ID:dKizvVLh.net]
>>41
>>34

43 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 02:55:58.29 ID:Zah1U3qm.net]
>>39,40
すまんな。スマホで書いてるから。
普段はそういう瑣末な事は、beautifyで綺麗にしてるよ。
俺はperlとgauche。
1ではないよ。

44 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 03:07:20.77 ID:cAjDmLh7.net]
なるほど。経験者はつい入れてしまうから
それができないってのはやはり初心者のようだね。

45 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 07:33:19.93 ID:QBGIcNJU.net]
>>42


46 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 07:40:08.69 ID:CRvI10Ce.net]
補完がどうとか型チェックがどうとか言ってるやつはtypescript使ったらいんじゃない

47 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 07:55:50.23 ID:clpr93dz.net]
>>46
ビルドしたらjsになるし開発時だけの機能じゃないんですか?

48 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 08:40:29.43 ID:Zah1U3qm.net]
>>44
つい入れてしまうが分からん。
どのみち機械が解決してくれる内容は手で修正なんかしないだろ。
瑣末な所を気にしすぎて納期的に死ぬ自称中級者みたいなこと言ってないでさ。
popじゃなくてshiftじゃね?ってのは凄く恥ずかしいが。

49 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 08:42:44.53 ID:wYXEPUUA.net]
>>41
JSON は String 型固定だから型チェックする必要はないよね

50 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 12:08:35.93 ID:z6iFNo2h.net]
>>41
JSON-Schemaで検索



51 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 12:12:08.35 ID:grnWiB9o.net]
補完は好みによるので自分で構築しろよ

52 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 12:54:37.58 ID:z6iFNo2h.net]
>>48
スマホじゃ仕方ないと思うが、その結論はどうなんだ
beautifierや規約強制系のツールは、必要最低限で人が意識して書くほどには綺麗にならないし
つかそもそも作業中に自分でも見づらいし、コード書いてたら普通は入れるだろうよ

53 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 13:13:53.91 ID:z6iFNo2h.net]
あとコードに補足するが !obj.prop の判定はfalsy値も含むから、
(obj.prop == null) のが良い

54 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 13:15:55.40 ID:Zah1U3qm.net]
>>52
うーん。タイプ数がとにかく減ってくれれば。
ショートカットもバインドしてあるから、2・3行書いて叩いて、って普段はしてるよ。
人の意識なんかそれぞれだから、規約で縛っちゃったほうが後から来る人に引き継ぎやすいし、rcファイルを撒いてる。
規約は真面目に決める。

55 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 13:19:24.85 ID:Zah1U3qm.net]
>>53
それは微妙では?
やるなら、
((typeof obj.prop === "undefined") || obj.pro===null)
で見てやったほうがいいと思う。

56 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 13:29:07.06 ID:z6iFNo2h.net]
>>55
それは初心者がやること
undefined == nullだからやらんでよろしい
少しは他人に突っ込む前に考えろって

57 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 13:31:26.42 ID:z6iFNo2h.net]
>>54
スタイル強制ツールも完全じゃないんだってば
それも本当に使ってりゃわかるだろ

58 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 13:44:38.38 ID:Z4ePso6q.net]
>>53
falsy な値を考慮するなら null, undefined だけ特別扱いするコードも微妙
in 演算子か hasOwnProperty を使う方がよい

59 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 13:47:14.61 ID:azrLOfn9.net]
処理の内容から想像するに
in演算子よりhasOwnPropertyメソッドのほうが処理が軽かったりもするのかな?

60 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 14:14:23.15 ID:z6iFNo2h.net]
>>58
一般にはデフォルト値を与える場合はnullを置き換える事が多いから、こうしてる
nullが入る事も考慮する場合ならそれに同意する
ただ、JSON相手ならinよりhasOwnPropertyのが良いぞ



61 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 14:16:43.93 ID:z6iFNo2h.net]
しまったJSONは別の人か
まあどちらにしろ in 使う場合はモンキーパッチとかしてる場合でも無い限りまず無いと思う

62 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 14:25:27.17 ID:tAENBh2t.net]
素朴な疑問なんだけどfor文の条件部の区切りってなんでセミコロンなの?
中でカンマ使うから?

63 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 15:08:38.61 ID:iU2f12RA.net]
誰に聞くべきだ
デニスリッチーとかブライアンカーニハンとかケントンプソンに聞くべきじゃねえのか

64 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 15:25:45.42 ID:7MaZAWY8.net]
>>56
==での比較とか、もう!の誤爆と発想のレベルが変わらなさすぎてなんと言うかだなぁ。

>>57
まぁ、完全じゃないってか少し冗長になる事は多いが、完全じゃない、ってのはどんなとき?

>>62
文だから。

65 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 15:34:27.62 ID:e0xtAfbK.net]
論理演算で不可能なケースが発生するのは
論理的なコードを書いていない証
パーフォーマンスが悪くなるよ

66 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 15:35:50.71 ID:DQmxlFQb.net]
なるほど
頭がパーだからパーフォーマンスか
ははは

67 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 15:38:36.64 ID:uxvxPhHy.net]
そもそもなんでfor文なの?
forってどういう意味なの?
なんでふんどしなの?

68 名前:デフォルトの名無しさん [2016/05/26(木) 15:50:42.51 ID:z6iFNo2h.net]
>>64
>==での比較とか、もう!の誤爆と発想のレベルが変わらなさすぎてなんと言うかだなぁ。
俺から言わせればお前さんが同レベルだよ
そうやって仕様をまるで把握していないから、そういう事を平気で言えるんだろうけどね

69 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 15:57:13.56 ID:VNKitGFp.net]
いつまでもうるせえな
どうでもいいだろこんな初心者がひっかかるような話
俺ら上級者様には一切関係ねえ話だろうが
undefinedなんて出すバカなんてほっとけや

70 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 16:03:05.34 ID:z6iFNo2h.net]
>>63
リッチー先生はもうこの世におらん…



71 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 16:09:23.69 ID:CcMPN8b7.net]
リッチのくせに不死じゃないだと?
そんなバカな

72 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 16:14:10.74 ID:z6iFNo2h.net]
リッチーにジョブズ、リーナスにゲイツ
最近は本当に惜しまれる人ばかりがいなくなってるな

73 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 16:36:33.73 ID:UN7L7nZy.net]
>>72
>リーナスにゲイツ最近は本当に惜しまれる人ばかりがいなくなってるな

2人とも生きているのでは?

74 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 16:39:58.63 ID:z6iFNo2h.net]
まさかこんなすべったレスにマジレスで突っ込まれるとは思わなかったぞ!

75 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 16:42:16.87 ID:rGVMPRNj.net]
名誉毀損

76 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 16:51:40.48 ID:7MaZAWY8.net]
>>68
あーあー、お前のコードでもういいよ。
obj.propがnullで初期化されてればそれで良くなったら、改修がめんどくさいとかほっとくよ。

77 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 17:01:57.05 ID:TSvbJ/YB.net]
伝説の呂布はあかん

78 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 17:22:20.13 ID:99YjRWAc.net]
2ちゃんでしか威張れないなんてなんてかわいそうな人たちなんだろう

79 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 18:50:41.26 ID:ZS10B00B.net]
nullとundefinedは違うの?

80 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 18:58:27.62 ID:etrunD2E.net]
んなもんぐぐれぼけ
いつからここは初心者レクチャー講座になったんだ鬱陶しい



81 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 19:23:51.43 ID:e0xtAfbK.net]
>>79
nullとundefined
視覚的な違いがある

82 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 19:26:21.87 ID:z6iFNo2h.net]
>>76
nullも欲しいならそもそも判定する必要すらないだろ
お前が何を言ってるのか、何を想定して何を問題としてるのかもわからん
はっきり言えよ

83 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 19:37:17.07 ID:e0xtAfbK.net]
いちばん不思議なのことは
obj.prop がどうしてnull になるのか?



84 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 19:42:34.13 ID:OguWhub7.net]
>>83
==を使った場合という意味?
だとしたら==で比較すりゃ型変換されるからでは

85 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 20:18:59.79 ID:7MaZAWY8.net]
>>82
あるわ。
未定義と、正しくnullで初期化しました、は相当違う。
要は、横着するならfalsyなオブジェクトを容認すりゃ良いし、
横着しないのであれば型と中身はチェックすべき。
null==trueはfalseで、null==trueもfalseで、余計な地雷を生む。
って話。

86 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 20:19:52.73 ID:WcKFKF+t.net]
よくアクセスランキングとかにaタグでリンクを貼って飛ばしたりすると思いますが、マウスでクリックした場合は、リンク先で正しくカウントされますが、ジャバスクリプトでページ変更した場合はカウントされないのは、どうしようもないのでしょうか?

87 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 20:31:24.69 ID:z6iFNo2h.net]
>>85
いやその違いが問題だと言うなら問題となる事例を出せと…
少なくとも自分の経験上では、効率考えるとこれが一番妥当
それ以上厳密な型が欲しいならそもそもJavsScriptなんて使わない []
[ここ壊れてます]

89 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 20:32:48.87 ID:iLE0aKXK.net]
質問者もいねえんだからもうよそでやれよクソッタレどもが

90 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 20:35:37.26 ID:z6iFNo2h.net]
>>85
>要は、横着するならfalsyなオブジェクトを容認すりゃ良いし、
まずこの結論が極端
0を容認するが、null/undefinedを容認しない事例なんてゴマンとあるのに対し、
nullを容認するがundefinedを容認しない事例はほとんどない



91 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 21:53:32.28 ID:7MaZAWY8.net]
しつこいやつだな。お前が正しいでもういいよ。

92 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 21:56:38.20 ID:cAjDmLh7.net]
これに従えばいいだろ
https://github.com/airbnb/javascript/

今時typeofつかって"undefined"と比較するのはアホ

93 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 22:11:08.45 ID:5gTTFtf/.net]
hasOwnPropertyでいいやん、ってだけの話を何をグダグダとw

94 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 23:10:54.73 ID:UjMbTLsx.net]
また、null, undefind の論争か

DBでも、null があって、3値論理で手一杯で、
偉い学者が唱えた、undefind も入れての4値論理は、ややこし過ぎて、否定されただろ

Rubyの偽は、nil, false だけ。
これが覚えるルールが少なく、最もシンプル

JSはおかしい。言語実装者用の内部ルールが、
一般のプログラマーにも見えてしまっている

95 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 00:40:25.02 ID:fXm66YRc.net]
>>90
よくねえよ
問題とするなら具体的にどう問題になるのか出せって
それが正しいならこっちだって改める

96 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 01:55:13.24 ID:10EzBfKp.net]
>>93
でもなぁ、現実問題便利なんだよ

null・・・データーベースの値としてnullを代入
undefined・・・省略(何も変化させない)

97 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 02:38:39.80 ID:5O2HSGrs.net]
>>94
改めて貰わなくて結構。
自分が正しいと盲信してる人間に説明し付けるほど無駄なことは無い。

98 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 02:58:22.81 ID:fXm66YRc.net]
>>96
なんだそれ、事例出すなんて一言で済む話だろ
それを虚勢で言っていないなら、ただ荒らしてかき回してるだけの嫌な奴でしかない

99 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 03:03:17.59 ID:fXm66YRc.net]
>>95
具体的に実装コードが見えないがそれ便利なのか?

100 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 04:27:40.50 ID:Ck73qeVz.net]
気持ち悪い奴が言い合ってるな。



101 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 08:31:12.52 ID:bXpUR2n8.net]
前のスレもそうでしたよ^^

102 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 08:44:39.94 ID:N6sFDxPG.net]
nullとundefinedはレイヤーが違う。

nullはオブジェクトに置けるNaNみたいなもので、
基本オブジェクトを扱う文脈で基本効果を持って取り扱われる値。
あくまで参照が同じな特殊な役割を持った偽性のオブジェクトのようなサインが共有されていると思えばいい。

undefinedはもっと広く、何も扱うべき値がない時に充てがわれる基本効果の無い値。

103 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 08:53:49.08 ID:UCpt+1On.net]
>>101
少し違う。
null 値の定義はES2015で定義されてる。

---
primitive value that represents the intentional absence of any object value
www.ecma-international.org/ecma-262/6.0/#sec-null-value
---

null 値は意図的にオブジェクトが存在しないことを表す値。
undefined は未定義値。文脈上、初期化される前の値を表す。

104 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 08:55:46.53 ID:u/p+Wu9Y.net]
>>101
そんなややこしい事考えるくらいならnullだけ有ればいいよね

105 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 09:10:27.24 ID:N6sFDxPG.net]
>>102
ESの範囲だけならそうだが、実際はESの範囲でnullは極めて限定的にしか表に現れない。
実際のnullのイメージというのは外様APIが作ってる面が大きい。
そしてprompt()みたいに基本文字列型を返す代わりにnullを返すものもある。
よって、nullは”明示的”な「サイン」と考えるのが一番現実に合っている。
undefinedもしかり。ただこちらはESの範囲でも様々に”暗黙的”に表に現れる。
そういう意味でレイヤーが違う。

>>103
どちらかというと内部的には両方の概念が合ったほうがいい。
表に出す時nullだけに絞ると言ったことは勿論可能。
nullだけあればいいというより、nullだけに絞る選択をすることも可能というべきか。
だが使える道具の大小というのはどっちもメリット・デメリットがあって、
個人的に考えるに両方ほぼ同価値で優劣は付けられないと思う。

106 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 10:14:21.43 ID:wAuO+eAi.net]
>>104
> null 値は意図的にオブジェクトが存在しないことを表す値。
> undefined は未定義値。文脈上、初期化される前の値を表す。
論理的にはこれが正しい
構文が論理的ではないからnullが必要になる

107 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 11:52:08.31 ID:5O2HSGrs.net]
真偽しか扱えない奴が多すぎるんだろ。
nullも、undefinedも、NaNもある理由があってあるんだから。
nullだけで良かったはずなんてアホみたいな事言われても困る。
nullを四則演算したら0として扱われるが、undefinedに四則演算したら、NaNになる。
NaNに四則演算しても、NaNのままだし、x=NaNでも、x==NaNはfalse。
当たり前。数値ではない事が確定しているが、「数値ではない」だけで、足し引きした結果は、「別の「数値ではない」もの」だから。

nullってのは、明確にnullだと代入ないし宣言されてるもの。
undefinedは、宣言すらされていないもの。
これを不要という人間は、そこまで考えないといかんシステム作ってないだけ。
mongoのdocumentを出し入れ返しれするapiなんか想定したら良いと思うが、少なくともnullで初期化されてるフィールドは使っても良い。
nullで初期化されていないundefinedなフィールドはもしかすると使うべきでないかもしれない。

それくらいの問題。

108 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 12:16:24.73 ID:9jKz8E7p.net]
取りあえず10億ドルの過ちをテメェで精算してから喋って、どうぞ

109 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 12:28:34.05 ID:AZKYjFu+.net]
window.open("localhost/1.html", "localhost", "width=100, height=100");
window.open("localhost/2.html", "localhost", "width=200, height=200");

window.openでウィンドウを開くときに指定したサイズで開きたいんですが
2回目のwindow.openでサイズが1回目のウィンドウサイズのまま変わりません
どうやってwindow.openで開いた時にウィンドウサイズを指定したサイズにできますか?

110 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 12:58:47.82 ID:5O2HSGrs.net]
nullable型の必要性だなんだって議論は、そもそもjsに明確な型がプリミティブなものしかないんだから無意味だろ。



111 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 13:35:54.88 ID:mSvZp4nB.net]
レスは繰り返す

112 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 14:02:06.44 ID:61QydpaF.net]
>>104
イメージというのは各々で異なるものだと思うのだが、他者に意見するほどのものがそこにあるのだろうか…。
prompt も getElementById も「存在しない事を表す」という意味ではES2015の範囲内でおさまっている。
(ES2015的には prompt が空文字を返した方が返り値が String 型で統一されてそれらしいとは思うが、イメージの話なら多少の誤差は許容されるだろう。ここでは文字列が存在しない事を null で表している。)

サインという表現を使うぐらいなら、それが定義済値(null)か未定義値(undefined)かで区別する方がES2015らしい。
関数が undefined を返すのは返り値が未定義(指定されていない)だからだ。
明示的にないことを表すなら定義済のnull が望ましい。
そうでなければ、その関数が初期値のundefined を返したのか、明示的にundefined を返したのかを区別できないだろう。






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

前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