2ch勢いランキング アーカイブ

+ JavaScript の質問用スレッド vol.120 + [無断転載禁止]©2ch.net


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

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

           ス   ル   ー   推   奨   。
デフォルトの名無しさん [sage] 2016/05/22(日) 20:14:45.33 :FTGg1fS8
荒らしってか三日間騒ぎ続けてるキチガイ
デフォルトの名無しさん [sage] 2016/05/22(日) 21:13:57.23 :5X2RDQPH
未だにお前らが何をやりたいのかさっぱり分からないが。

まず、次立てずに埋めた馬鹿は荒らしだろ。IDコロコロだし。
次に、このテンプレでいいのなら124を再利用すべきだろ。
そしてこのスレで行くつもりなら続きのテンプレも落とせよ。
ライブラリ禁止ならテンプレが異なるので立て直すべき。
個人的にはワッチョイの方がいいと思う。IDない頃よりはだいぶマシになってるし。

IDコロコロ埋め立て放置荒らしはWeb板に戻ってきて欲しいのかもしれないが、
どっちかというとお前らは議論したがっているし、(と言うよりは蘊蓄を披露したいだけか?)
正直今のお前らの日本語力でID無しでの議論は無理だから、この板が妥当だろう。

議論内容は正直どうでもいいものだけど、それでも議論したければするがいいさ。
ただ、あの内容については、500行程度のコードを書くようになれば自然に納得いくから、
もやもやしている奴は、こんな所で時間を消費するのではなく、コードを書いた方がいい。
お前らは本当に「50行のコードしか書いてないんだな」と思える展開が多すぎる。
デフォルトの名無しさん [sage] 2016/05/22(日) 21:26:22.79 :FTGg1fS8
長い3字で済ませろ
デフォルトの名無しさん [sage] 2016/05/23(月) 00:01:13.45 :nh4t1HCu
前スレの ID:WwOYSBmy を見てきたが、酷いな
デフォルトの名無しさん [sage] 2016/05/23(月) 09:44:02.18 :09f5J8xU
ワードサラダっぷりも誰かにそっくり
デフォルトの名無しさん [sage] 2016/05/23(月) 19:52:15.88 :aItG7/va
-
いきなりかよw
デフォルトの名無しさん [sage] 2016/05/24(火) 01:18:13.42 :1wjjU4Dv
プロパティを持っていないときに代入をしたいんですが
var foo = {};
foo.bar = foo.bar || "value";
こういう書き方意外になにかありますか?
もしくは、rubyのHash.new("value")みたいにデフォルト値を与える方法はありますか?
初心者なのでどうすべきなのかさっぱりわかりません
デフォルトの名無しさん [sage] 2016/05/24(火) 02:37:42.45 :wmKZ/4EE

if(!hoge.a) hoge.a='aaa';
がわかりやすくてよく使う。
オブジェクトなら、mergeObjって関数作ってて、デフォルト値のオブジェクトにマージする関数も作ってる。
デフォルトの名無しさん [sage] 2016/05/24(火) 11:09:37.02 :57joSblr

foo.bar || "value" は foo.bar に falsy な値が入っていた場合に上書きされる
プロパティチェックには in 演算子か hasOwnProperty を使う

if (!('bar' in foo)) {
foo.bar = 'value';
}

デフォルト値はプロトタイプで指定する

function Foo (bar) {
if (arguments.length > 0) {
this.bar = bar;
}
}
Foo.prototype.bar = 'value';
console.log(new Foo);
console.log(new Foo(1));
デフォルトの名無しさん [sage] 2016/05/24(火) 11:43:05.72 :Fup9czqT

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

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

<script type=
デフォルトの名無しさん [sage] 2016/05/24(火) 12:23:18.22 :iG1UUWT4

www
ごめんでも笑えた
デフォルトの名無しさん [sage] 2016/05/24(火) 12:24:06.53 :c4cnVHPj
茶碗の中みたいだな
13 [sage] 2016/05/24(火) 12:35:17.27 :fTRdDZnU
ごめんなさい 途中で切れてしまいました

<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>
デフォルトの名無しさん [sage] 2016/05/24(火) 13:16:31.22 :iG1UUWT4

window.onloadじゃなくてDOMContentLoadedで処理するとか
デフォルトの名無しさん [sage] 2016/05/24(火) 13:21:28.18 :57joSblr
s
document.styleSheets で
#hoge1 { display: block; }
#hoge2 { display: none; }
を宣言する
デフォルトの名無しさん [sage] 2016/05/24(火) 13:47:40.17 :Fup9czqT

var timer = 0;
function changeDisplay(){
clearTimeout(timer);
...
if (now < changeTime) {
...
timer = setTimeout("changeDisplay()", 1000);
} else {
...
timer = setTimeout("changeDisplay()", 1000);
}

方法は色々あるけどこれで良いんじゃない?
デフォルトの名無しさん [sage] 2016/05/24(火) 19:32:47.77 :cROy8nMz

手元にある変数をhashtableとして使って
var model = {};
model[a][b][c] = value; // ←これができるような準備をしたい
みたいにして実行時に受け取ったkeyを使ってモデルを構築したいんですね
それをするためにデフォルト値の設定か、key所持の有無を知りたかったんです


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

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


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

ありがとうございます。タイピング量的にはこれがいいですね。
今回、厳密にプロパティ所持の有無だけをチェックする必要も実は無いですし。
デフォルトの名無しさん [sage] 2016/05/24(火) 21:04:07.49 :TKpsNxtt

> すみません、質問です。
> サイトで時間で表示非表示のスクリプトを入れているのですが

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

見た目に関する多くの処理をCSSでやることで
JavaScriptは驚くほどシンプルになる。
デフォルトの名無しさん [sage] 2016/05/24(火) 22:57:09.14 :fFhHkZMI
JSDocで、JSONを返すAPIなどのオブジェクトを定義出来ますか?
デフォルトの名無しさん [sage] 2016/05/25(水) 00:22:00.09 :oaeRtxYk

JSON はただの String 型
デフォルトの名無しさん [sage] 2016/05/25(水) 00:38:42.00 :Jdaj3qLb

それは、なんか関数用意したほうがいいんじゃないの?
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;
}
みたいな感じで。
デフォルトの名無しさん [sage] 2016/05/25(水) 01:02:30.80 :e2/1A4Vq
お疲れさまです

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


現行スレ
+ JavaScript の質問用スレッド vol.130 +
ttp://echo.2ch.net/test/read.cgi/hp/1463395557/50
デフォルトの名無しさん [sage] 2016/05/25(水) 01:49:09.77 :VNiDmyVP
Web板って自演がウザイだけじゃん
デフォルトの名無しさん [sage] 2016/05/25(水) 07:14:03.46 :cVBZ9i9Y
それができた経緯と現状を顧みずにルールに縛られるのはドアホのすること。
ルールのために我々があるのではない。
デフォルトの名無しさん [] 2016/05/25(水) 07:23:06.88 :hMNMImmN

JSONをパースしたオブジェクトの構造を定義しておけば、IDEの支援受けられるやろ?
だからソース上にはないクラスの定義できるかって聞いた
JSONが文字列って事くらい誰でもわかる
デフォルトの名無しさん [sage] 2016/05/25(水) 09:26:14.89 :Yyi7LTu7
お前の使ってるIDEの仕様なんか知らねえw
デフォルトの名無しさん [sage] 2016/05/25(水) 09:59:51.34 :oaeRtxYk

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

その頃のjsは、Webだけのためのものだったからなぁ
デフォルトの名無しさん [sage] 2016/05/25(水) 17:16:25.85 :hMNMImmN

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

JSON.parse したオブジェクトは new Object か new Array のどちらかしかない
JSON Interface のオブジェクトというものは存在しない
デフォルトの名無しさん [sage] 2016/05/25(水) 18:30:33.44 :Rwgeje6L


JSONデータにまで、インテリセンスを効かせたいの?
デフォルトの名無しさん [sage] 2016/05/25(水) 18:50:53.98 :hMNMImmN

うん
デフォルトの名無しさん [sage] 2016/05/25(水) 20:50:05.00 :RmI4sgQT
あきらめろん
デフォルトの名無しさん [sage] 2016/05/25(水) 23:00:15.35 :cOSJO7dH

それなら、Object 型を指定するだけで済むはずだが()
デフォルトの名無しさん [sage] 2016/05/26(木) 00:59:59.52 :xmgEeB9V

実質的に今も大して変わらず、9割以上ブラウザだろ。
それよりは、XHRがでかい。
あれで単なるブラウザ専用DSLからプログラミング言語へと脱皮した。


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

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

あと、君は ID:WwOYSBmy か?
これについては荒れるリスクがあるから、答えたくなければ無視でいい。
その代わり、回答があれば、そちらに有益な情報(と俺が思っているだけだが)を一つ出すことにする。
デフォルトの名無しさん [sage] 2016/05/26(木) 01:22:55.48 :cAjDmLh7
のコードに素人臭さを感じるのは
当たり前に入れるべきスペースすら無いからかな。
経験の低さがにじみ出てる
デフォルトの名無しさん [] 2016/05/26(木) 01:48:29.92 :xw9RGDuQ
質問です
初めてnodejsのexpress?というのでwebアプリ作成してみたのですが
非同期が難しすぎるし、IDEの補完がきかないのでメソッドもいちいち調べるの面倒です(以下コードです)
ttps://github.com/himanannyaga/angular2-express-mongo-quiz/blob/master/server/app.js
受け取ったJSONの型チェックとかバリデーション簡単にできる方法ってないんですか?
そもそもnodejs自体やめたほうがいいんでしょうか?
やめるとしたら今流行りのサーバーサイドのフレームワークってどれがいいんでしょうか?
デフォルトの名無しさん [sage] 2016/05/26(木) 02:21:24.67 :dKizvVLh

デフォルトの名無しさん [sage] 2016/05/26(木) 02:55:58.29 :Zah1U3qm
,40
すまんな。スマホで書いてるから。
普段はそういう瑣末な事は、beautifyで綺麗にしてるよ。
俺はperlとgauche。
1ではないよ。
デフォルトの名無しさん [sage] 2016/05/26(木) 03:07:20.77 :cAjDmLh7
なるほど。経験者はつい入れてしまうから
それができないってのはやはり初心者のようだね。
デフォルトの名無しさん [sage] 2016/05/26(木) 07:33:19.93 :QBGIcNJU

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

ビルドしたらjsになるし開発時だけの機能じゃないんですか?
デフォルトの名無しさん [sage] 2016/05/26(木) 08:40:29.43 :Zah1U3qm

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

JSON は String 型固定だから型チェックする必要はないよね
デフォルトの名無しさん [sage] 2016/05/26(木) 12:08:35.93 :z6iFNo2h

JSON-Schemaで検索
デフォルトの名無しさん [sage] 2016/05/26(木) 12:12:08.35 :grnWiB9o
補完は好みによるので自分で構築しろよ
デフォルトの名無しさん [sage] 2016/05/26(木) 12:54:37.58 :z6iFNo2h

スマホじゃ仕方ないと思うが、その結論はどうなんだ
beautifierや規約強制系のツールは、必要最低限で人が意識して書くほどには綺麗にならないし
つかそもそも作業中に自分でも見づらいし、コード書いてたら普通は入れるだろうよ
デフォルトの名無しさん [sage] 2016/05/26(木) 13:13:53.91 :z6iFNo2h
あとコードに補足するが !obj.prop の判定はfalsy値も含むから、
(obj.prop == null) のが良い
デフォルトの名無しさん [sage] 2016/05/26(木) 13:15:55.40 :Zah1U3qm

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

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

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

スタイル強制ツールも完全じゃないんだってば
それも本当に使ってりゃわかるだろ
デフォルトの名無しさん [sage] 2016/05/26(木) 13:44:38.38 :Z4ePso6q

falsy な値を考慮するなら null, undefined だけ特別扱いするコードも微妙
in 演算子か hasOwnProperty を使う方がよい
デフォルトの名無しさん [sage] 2016/05/26(木) 13:47:14.61 :azrLOfn9
処理の内容から想像するに
in演算子よりhasOwnPropertyメソッドのほうが処理が軽かったりもするのかな?
デフォルトの名無しさん [sage] 2016/05/26(木) 14:14:23.15 :z6iFNo2h

一般にはデフォルト値を与える場合はnullを置き換える事が多いから、こうしてる
nullが入る事も考慮する場合ならそれに同意する
ただ、JSON相手ならinよりhasOwnPropertyのが良いぞ
デフォルトの名無しさん [sage] 2016/05/26(木) 14:16:43.93 :z6iFNo2h
しまったJSONは別の人か
まあどちらにしろ in 使う場合はモンキーパッチとかしてる場合でも無い限りまず無いと思う
デフォルトの名無しさん [sage] 2016/05/26(木) 14:25:27.17 :tAENBh2t
素朴な疑問なんだけどfor文の条件部の区切りってなんでセミコロンなの?
中でカンマ使うから?
デフォルトの名無しさん [sage] 2016/05/26(木) 15:08:38.61 :iU2f12RA
誰に聞くべきだ
デニスリッチーとかブライアンカーニハンとかケントンプソンに聞くべきじゃねえのか
デフォルトの名無しさん [sage] 2016/05/26(木) 15:25:45.42 :7MaZAWY8

==での比較とか、もう!の誤爆と発想のレベルが変わらなさすぎてなんと言うかだなぁ。


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


文だから。
デフォルトの名無しさん [sage] 2016/05/26(木) 15:34:27.62 :e0xtAfbK
論理演算で不可能なケースが発生するのは
論理的なコードを書いていない証
パーフォーマンスが悪くなるよ
デフォルトの名無しさん [sage] 2016/05/26(木) 15:35:50.71 :DQmxlFQb
なるほど
頭がパーだからパーフォーマンスか
ははは
デフォルトの名無しさん [sage] 2016/05/26(木) 15:38:36.64 :uxvxPhHy
そもそもなんでfor文なの?
forってどういう意味なの?
なんでふんどしなの?
デフォルトの名無しさん [] 2016/05/26(木) 15:50:42.51 :z6iFNo2h

>==での比較とか、もう!の誤爆と発想のレベルが変わらなさすぎてなんと言うかだなぁ。
俺から言わせればお前さんが同レベルだよ
そうやって仕様をまるで把握していないから、そういう事を平気で言えるんだろうけどね
デフォルトの名無しさん [sage] 2016/05/26(木) 15:57:13.56 :VNKitGFp
いつまでもうるせえな
どうでもいいだろこんな初心者がひっかかるような話
俺ら上級者様には一切関係ねえ話だろうが
undefinedなんて出すバカなんてほっとけや
デフォルトの名無しさん [sage] 2016/05/26(木) 16:03:05.34 :z6iFNo2h

リッチー先生はもうこの世におらん…
デフォルトの名無しさん [sage] 2016/05/26(木) 16:09:23.69 :CcMPN8b7
リッチのくせに不死じゃないだと?
そんなバカな
デフォルトの名無しさん [sage] 2016/05/26(木) 16:14:10.74 :z6iFNo2h
リッチーにジョブズ、リーナスにゲイツ
最近は本当に惜しまれる人ばかりがいなくなってるな
デフォルトの名無しさん [sage] 2016/05/26(木) 16:36:33.73 :UN7L7nZy

>リーナスにゲイツ最近は本当に惜しまれる人ばかりがいなくなってるな

2人とも生きているのでは?
デフォルトの名無しさん [sage] 2016/05/26(木) 16:39:58.63 :z6iFNo2h
まさかこんなすべったレスにマジレスで突っ込まれるとは思わなかったぞ!
デフォルトの名無しさん [sage] 2016/05/26(木) 16:42:16.87 :rGVMPRNj
名誉毀損
デフォルトの名無しさん [sage] 2016/05/26(木) 16:51:40.48 :7MaZAWY8

あーあー、お前のコードでもういいよ。
obj.propがnullで初期化されてればそれで良くなったら、改修がめんどくさいとかほっとくよ。
デフォルトの名無しさん [sage] 2016/05/26(木) 17:01:57.05 :TSvbJ/YB
伝説の呂布はあかん
デフォルトの名無しさん [sage] 2016/05/26(木) 17:22:20.13 :99YjRWAc
2ちゃんでしか威張れないなんてなんてかわいそうな人たちなんだろう
デフォルトの名無しさん [sage] 2016/05/26(木) 18:50:41.26 :ZS10B00B
nullとundefinedは違うの?
デフォルトの名無しさん [sage] 2016/05/26(木) 18:58:27.62 :etrunD2E
んなもんぐぐれぼけ
いつからここは初心者レクチャー講座になったんだ鬱陶しい
デフォルトの名無しさん [sage] 2016/05/26(木) 19:23:51.43 :e0xtAfbK

nullとundefined
視覚的な違いがある
デフォルトの名無しさん [sage] 2016/05/26(木) 19:26:21.87 :z6iFNo2h

nullも欲しいならそもそも判定する必要すらないだろ
お前が何を言ってるのか、何を想定して何を問題としてるのかもわからん
はっきり言えよ
デフォルトの名無しさん [sage] 2016/05/26(木) 19:37:17.07 :e0xtAfbK
いちばん不思議なのことは
obj.prop がどうしてnull になるのか?

デフォルトの名無しさん [sage] 2016/05/26(木) 19:42:34.13 :OguWhub7

==を使った場合という意味?
だとしたら==で比較すりゃ型変換されるからでは
デフォルトの名無しさん [sage] 2016/05/26(木) 20:18:59.79 :7MaZAWY8

あるわ。
未定義と、正しくnullで初期化しました、は相当違う。
要は、横着するならfalsyなオブジェクトを容認すりゃ良いし、
横着しないのであれば型と中身はチェックすべき。
null==trueはfalseで、null==trueもfalseで、余計な地雷を生む。
って話。
デフォルトの名無しさん [sage] 2016/05/26(木) 20:19:52.73 :WcKFKF+t
よくアクセスランキングとかにaタグでリンクを貼って飛ばしたりすると思いますが、マウスでクリックした場合は、リンク先で正しくカウントされますが、ジャバスクリプトでページ変更した場合はカウントされないのは、どうしようもないのでしょうか?
デフォルトの名無しさん [sage] 2016/05/26(木) 20:31:24.69 :z6iFNo2h

いやその違いが問題だと言うなら問題となる事例を出せと…
少なくとも自分の経験上では、効率考えるとこれが一番妥当
それ以上厳密な型が欲しいならそもそもJavsScriptなんて使わない
デフォルトの名無しさん [sage] 2016/05/26(木) 20:32:48.87 :iLE0aKXK
質問者もいねえんだからもうよそでやれよクソッタレどもが
デフォルトの名無しさん [sage] 2016/05/26(木) 20:35:37.26 :z6iFNo2h

>要は、横着するならfalsyなオブジェクトを容認すりゃ良いし、
まずこの結論が極端
0を容認するが、null/undefinedを容認しない事例なんてゴマンとあるのに対し、
nullを容認するがundefinedを容認しない事例はほとんどない
デフォルトの名無しさん [sage] 2016/05/26(木) 21:53:32.28 :7MaZAWY8
しつこいやつだな。お前が正しいでもういいよ。
デフォルトの名無しさん [sage] 2016/05/26(木) 21:56:38.20 :cAjDmLh7
これに従えばいいだろ
ttps://github.com/airbnb/javascript/

今時typeofつかって"undefined"と比較するのはアホ
デフォルトの名無しさん [sage] 2016/05/26(木) 22:11:08.45 :5gTTFtf/
hasOwnPropertyでいいやん、ってだけの話を何をグダグダとw
デフォルトの名無しさん [sage] 2016/05/26(木) 23:10:54.73 :UjMbTLsx
また、null, undefind の論争か

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

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

JSはおかしい。言語実装者用の内部ルールが、
一般のプログラマーにも見えてしまっている
デフォルトの名無しさん [sage] 2016/05/27(金) 00:40:25.02 :fXm66YRc

よくねえよ
問題とするなら具体的にどう問題になるのか出せって
それが正しいならこっちだって改める
デフォルトの名無しさん [sage] 2016/05/27(金) 01:55:13.24 :10EzBfKp

でもなぁ、現実問題便利なんだよ

null・・・データーベースの値としてnullを代入
undefined・・・省略(何も変化させない)
デフォルトの名無しさん [sage] 2016/05/27(金) 02:38:39.80 :5O2HSGrs

改めて貰わなくて結構。
自分が正しいと盲信してる人間に説明し付けるほど無駄なことは無い。
デフォルトの名無しさん [sage] 2016/05/27(金) 02:58:22.81 :fXm66YRc

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

具体的に実装コードが見えないがそれ便利なのか?
デフォルトの名無しさん [sage] 2016/05/27(金) 04:27:40.50 :Ck73qeVz
気持ち悪い奴が言い合ってるな。
デフォルトの名無しさん [sage] 2016/05/27(金) 08:31:12.52 :bXpUR2n8
前のスレもそうでしたよ^^
デフォルトの名無しさん [sage] 2016/05/27(金) 08:44:39.94 :N6sFDxPG
nullとundefinedはレイヤーが違う。

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

undefinedはもっと広く、何も扱うべき値がない時に充てがわれる基本効果の無い値。
デフォルトの名無しさん [sage] 2016/05/27(金) 08:53:49.08 :UCpt+1On

少し違う。
null 値の定義はES2015で定義されてる。

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

null 値は意図的にオブジェクトが存在しないことを表す値。
undefined は未定義値。文脈上、初期化される前の値を表す。
デフォルトの名無しさん [sage] 2016/05/27(金) 08:55:46.53 :u/p+Wu9Y

そんなややこしい事考えるくらいならnullだけ有ればいいよね
デフォルトの名無しさん [sage] 2016/05/27(金) 09:10:27.24 :N6sFDxPG

ESの範囲だけならそうだが、実際はESの範囲でnullは極めて限定的にしか表に現れない。
実際のnullのイメージというのは外様APIが作ってる面が大きい。
そしてprompt()みたいに基本文字列型を返す代わりにnullを返すものもある。
よって、nullは”明示的”な「サイン」と考えるのが一番現実に合っている。
undefinedもしかり。ただこちらはESの範囲でも様々に”暗黙的”に表に現れる。
そういう意味でレイヤーが違う。


どちらかというと内部的には両方の概念が合ったほうがいい。
表に出す時nullだけに絞ると言ったことは勿論可能。
nullだけあればいいというより、nullだけに絞る選択をすることも可能というべきか。
だが使える道具の大小というのはどっちもメリット・デメリットがあって、
個人的に考えるに両方ほぼ同価値で優劣は付けられないと思う。
デフォルトの名無しさん [sage] 2016/05/27(金) 10:14:21.43 :wAuO+eAi

> null 値は意図的にオブジェクトが存在しないことを表す値。
> undefined は未定義値。文脈上、初期化される前の値を表す。
論理的にはこれが正しい
構文が論理的ではないからnullが必要になる
デフォルトの名無しさん [sage] 2016/05/27(金) 11:52:08.31 :5O2HSGrs
真偽しか扱えない奴が多すぎるんだろ。
nullも、undefinedも、NaNもある理由があってあるんだから。
nullだけで良かったはずなんてアホみたいな事言われても困る。
nullを四則演算したら0として扱われるが、undefinedに四則演算したら、NaNになる。
NaNに四則演算しても、NaNのままだし、x=NaNでも、x==NaNはfalse。
当たり前。数値ではない事が確定しているが、「数値ではない」だけで、足し引きした結果は、「別の「数値ではない」もの」だから。

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

それくらいの問題。
デフォルトの名無しさん [sage] 2016/05/27(金) 12:16:24.73 :9jKz8E7p
取りあえず10億ドルの過ちをテメェで精算してから喋って、どうぞ
デフォルトの名無しさん [sage] 2016/05/27(金) 12:28:34.05 :AZKYjFu+
window.open("ttp://localhost/1.html", "localhost", "width=100, height=100");
window.open("ttp://localhost/2.html", "localhost", "width=200, height=200");

window.openでウィンドウを開くときに指定したサイズで開きたいんですが
2回目のwindow.openでサイズが1回目のウィンドウサイズのまま変わりません
どうやってwindow.openで開いた時にウィンドウサイズを指定したサイズにできますか?
デフォルトの名無しさん [sage] 2016/05/27(金) 12:58:47.82 :5O2HSGrs
nullable型の必要性だなんだって議論は、そもそもjsに明確な型がプリミティブなものしかないんだから無意味だろ。
デフォルトの名無しさん [sage] 2016/05/27(金) 13:35:54.88 :mSvZp4nB
レスは繰り返す
デフォルトの名無しさん [sage] 2016/05/27(金) 14:02:06.44 :61QydpaF

イメージというのは各々で異なるものだと思うのだが、他者に意見するほどのものがそこにあるのだろうか…。
prompt も getElementById も「存在しない事を表す」という意味ではES2015の範囲内でおさまっている。
(ES2015的には prompt が空文字を返した方が返り値が String 型で統一されてそれらしいとは思うが、イメージの話なら多少の誤差は許容されるだろう。ここでは文字列が存在しない事を null で表している。)

サインという表現を使うぐらいなら、それが定義済値(null)か未定義値(undefined)かで区別する方がES2015らしい。
関数が undefined を返すのは返り値が未定義(指定されていない)だからだ。
明示的にないことを表すなら定義済のnull が望ましい。
そうでなければ、その関数が初期値のundefined を返したのか、明示的にundefined を返したのかを区別できないだろう。
デフォルトの名無しさん [sage] 2016/05/27(金) 15:20:53.00 :fXm66YRc

だからそこまで考えないといかんシステムって具体的になんなんだよって
出してる例もデフォ値とか、Map返して列挙で十分なものばっかりじゃん
デフォルトの名無しさん [sage] 2016/05/27(金) 15:37:37.19 :fXm66YRc
あんまり細かく突っ込んでもなんだけどさ、
言語実装側が使う分には便利、という言い分は事例もすぐ出せるし納得はできるが
NaNになるとかのユーザー側の仕様ついては、
本来はundefinedの使用は全てエラーとすべき事で是とするものではないだろ
デフォルトの名無しさん [sage] 2016/05/27(金) 16:28:18.28 :5O2HSGrs

うち医療系のシステム屋。
NaNも、undefinedも、nullも検査なんかだと戻す値としてあり得る。
サチった、検査項目に入ってない、検査としては行ったが、検体の問題などで結果は出なかった。
デフォルトの名無しさん [sage] 2016/05/27(金) 16:41:32.15 :swGPgzcA
黙れゴミニートのくせに
デフォルトの名無しさん [sage] 2016/05/27(金) 16:46:54.76 :fXm66YRc

そんなので反論するのはいいけど、実際医療システムでそういう仕様にする?
しないっしょ?
全部専用の型用意すべきだし、未定義じゃ例外送出だし、
サチったらNaNとかInfinityじゃなくてエラー吐かせるし
デフォルトの名無しさん [sage] 2016/05/27(金) 16:47:23.18 :ftcnTlL4

> サチった、検査項目に入ってない、検査としては行ったが、検体の問題などで結果は出なかった。
これJavascriptで判定するの?
デフォルトの名無しさん [sage] 2016/05/27(金) 16:55:34.96 :fXm66YRc
飽くまで実装事例の話としての話だから、
そういうシステム実装はありえないとは言ってないよ
実際にあるなら黙るし
デフォルトの名無しさん [sage] 2016/05/27(金) 16:56:34.37 :7C5pluWz

戻す値としてあり得る……ってことは
return NaN;
return undefined;
とかがあるってことか

エラーコードでも例外ブジェクトでもなく
デフォルトの名無しさん [sage] 2016/05/27(金) 17:41:11.86 :5O2HSGrs
すごい食いつきだな。
あるよ。ビューアで。
サーバから返すけど、トラフィックの都合上昔ながらの電文でそれを解釈してるのは足回り。
専用の型って言うけど、オブジェクトのメンバがnullかundefinedかはだいぶ違う。

違うよ。
解釈した結果をobjectに入れるけど、
解釈した結果そのフィールドが無ければ単にそのフィールドを持ってないオブジェクトになる。
エラーでも、例外でもなく結果だからね。
エラーはエラーで吐くよ。
デフォルトの名無しさん [sage] 2016/05/27(金) 17:55:45.05 :7C5pluWz

if (なんか結果ある) {
obj.result = なにか(null含む)
}
return obj;

ってことか
呼び出し側はそのobj.resultがundefinedなのかnullなのか判断する
デフォルトの名無しさん [sage] 2016/05/27(金) 18:10:16.56 :fXm66YRc
なんだ表示だけか
それも結局Mapと列挙で済むからundefinedいらんな
デフォルトの名無しさん [sage] 2016/05/27(金) 18:11:25.03 :ftcnTlL4

> サーバから返すけど、トラフィックの都合上昔ながらの電文でそれを解釈してるのは足回り。
サーバ側でコンテキストに応じたコードなりなんなりを生成して戻すべきだ
と俺は思う
デフォルトの名無しさん [sage] 2016/05/27(金) 18:16:51.38 :fXm66YRc

>専用の型って言うけど、オブジェクトのメンバがnullかundefinedかはだいぶ違う。
でもそのビュワーの元データ受け取る時はundefinedなんて入れてないでしょ?
有効活用の事例としてはかなり微妙でしょ
わざわざ複雑な仕様にしてるように見えるもの
デフォルトの名無しさん [sage] 2016/05/27(金) 18:41:50.65 :zWRALPjL

文ではないけど、LexicalDeclaration や Expression に存在しない区切り文字として都合が良かったからかな
デフォルトの名無しさん [sage] 2016/05/27(金) 18:48:41.37 :fXm66YRc

ただのCの名残っしょ
デフォルトの名無しさん [sage] 2016/05/27(金) 18:53:39.13 :5O2HSGrs

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

undefinedを入れないよ。
受け取るときにと言うより、受け取っていないから、そのキーがundefinedで、nullチェックではなくて、undefinedチェックしないとならん。

台帳表示でも何でも良いが、患者/日/項目のピンポイントで見た時に、値/失敗/結果無しが取れる必要があるってこと。
RDBで言うと、
・行自体が存在しない
・行の中身がNULL
・行の中身に有意な値が入っている
と似たようなもんだよ。
デフォルトの名無しさん [sage] 2016/05/27(金) 18:56:39.91 :fXm66YRc

それって初期値のビューに対して、そのまま列挙して設定すればいいだけだと思うけど、
わざわざ未定義と判定する事で利便性が高まる事あるの?
デフォルトの名無しさん [sage] 2016/05/27(金) 19:02:06.07 :5O2HSGrs

expression(opt)
を2つ以上取るからで、expressionとexpressionの区切りはセミコロンだからじゃねえの?
言語仕様に書いてあったと思うけど。
デフォルトの名無しさん [sage] 2016/05/27(金) 19:03:11.34 :5O2HSGrs

そのまま列挙して設定したものを、
未定義と判定して「未検査」と表示する話をしてるんだが。
頭おかしいの?
デフォルトの名無しさん [sage] 2016/05/27(金) 19:04:16.73 :fXm66YRc
もしかして、相手の出力データ型が不整合な事があり、
その型チェックをJS側がやってるってこと?ひえー
それならまあ必要といわれても仕方ないか
デフォルトの名無しさん [sage] 2016/05/27(金) 19:08:24.93 :fXm66YRc

????
そのサービスから受け取ったrowにプロパティがなければ未検査なんでしょ?
なら普通に列挙していけば設定されないデータを、未定義か判定する必要ないっしょ?
それをわざわざなんで判定するの?
デフォルトの名無しさん [sage] 2016/05/27(金) 19:15:05.42 :fXm66YRc
簡単にいうと、初期値のビュー項目を「未検査」にしておいて、
列挙の度に設定していけば済む話でしょ?
わざわざ複雑にしてるように見えるけど
デフォルトの名無しさん [sage] 2016/05/27(金) 19:18:13.93 :IDoL/fjn
キチガイの共演
デフォルトの名無しさん [sage] 2016/05/27(金) 19:21:01.02 :7C5pluWz
たぶん、
[{"検査項目":"視力","結果":1},{"検査項目":"聴力","結果":"100db"}]
っていうデータじゃなくて、
{"視力":1,"聴力":"100db"}
っていうデータなんじゃないかな(実際はjsonじゃないんだろうけどとりあえず分かりやすさの為ね)

だから
{"視力":1}
ってデータがあると、JavaScript側は
kensa.tyoryokuがundefinedになるから
表示する際はundefinedチェックをするっていいたいんじゃないかな?

※その場合俺ならinを使うかも
デフォルトの名無しさん [sage] 2016/05/27(金) 19:29:01.92 :fXm66YRc

うん…その場合にundefinedのチェック付ける必要ないよねと
Viewを初期化し、各カラムに対応するView側項目を一個ずつ設定すれば、
無駄な処理もなくて効率いいでしょ?
デフォルトの名無しさん [sage] 2016/05/27(金) 19:37:17.42 :fXm66YRc
イメージとしては、Object.assign({初期値},{取得値})とすれば十分じゃないか?

それを敢えてundefinedを確認するようにするのは、
わざわざ複雑にしてるように見えるけど
言ってる事が伝わった上で、何か自分がわかってない問題があるのか?
デフォルトの名無しさん [sage] 2016/05/27(金) 19:47:32.72 :JIhds0M1
ちになみにxがundefinedかどうかを調べるベストな方法は
(x === void 0)でおk?
デフォルトの名無しさん [sage] 2016/05/27(金) 20:07:52.97 :5O2HSGrs

あ、そうそう。
ただ、何人も並べたり、何日も並べたり、そういう事する。
inでも良いね。コスト低そうだし。


、で既に俺言ってるけど。
その中で、ちゃんとオブジェクトをマージするか横着するかって話。
デフォルトの名無しさん [sage] 2016/05/27(金) 20:17:12.65 :Dt+fFMyq

ReferenceError になるケースを除けばそう
デフォルトの名無しさん [sage] 2016/05/27(金) 20:27:35.45 :fXm66YRc

いや別にオブジェクトのマージの話じゃないんだけど
まあどちらにしろ必要ないっしょ?
デフォルトの名無しさん [sage] 2016/05/27(金) 20:37:53.46 :fXm66YRc
まあ正直納得いってないけど
実際使ってる実装があるならundefined値も必要ってことでいいやもう
あとで消化しよう
デフォルトの名無しさん [sage] 2016/05/27(金) 20:38:54.16 :5O2HSGrs

どーしても必要ない事にしたいんだな。
手入力や、他システムから飛んでこられた時に、画面定義にもデータにもない、ってのはどう判断するのかね。nullを取りうる値を持ってんのに。
仕事として開発したこと無いんじゃねえの?
自分の無知が認められない人間とはみっともないもんだ。
デフォルトの名無しさん [sage] 2016/05/27(金) 20:39:37.88 :5O2HSGrs

undefinedを値として必要としてる訳じゃねえよ。
お前マジで頭おかしいんじゃねえの?
デフォルトの名無しさん [sage] 2016/05/27(金) 20:45:22.04 :Dt+fFMyq
ID:5O2HSGrs がいいたいのはの事かね

> undefinedは、宣言すらされていないもの。
これがプロパティの事を指すなら in 演算子か Object#hasOwnProperty で解決できるという事をでいってるんだろうけど、マージ云々は何を言いたいのかわからない
デフォルトの名無しさん [sage] 2016/05/27(金) 20:50:00.83 :fXm66YRc

なぜ急に煽る?
まあ言わせてもらうけどね、本当に仕事でやってるならそんなクソ仕様「ありえない」だよ
「医療システム」用なら本来は別途に未検査を表す値を用意するべき内容
でも実装してるってならそうなんだろう
デフォルトの名無しさん [sage] 2016/05/27(金) 20:51:42.45 :fXm66YRc
つか医療用でそんなLAMPみたいなシステム見たこと無いけどね…
デフォルトの名無しさん [sage] 2016/05/27(金) 20:56:48.42 :5O2HSGrs

そうそう。
検査はしたけど、まだ結果は出てない、だとか、
例えば尿検査だと、尿少なすぎて検査結果出せませんでした、って結果はnullが入ってる。
検査進捗は別に持つから。

それを、テーブルやらグラフに出すときに、
患者一日、みたいなテーブルにガサッと載せたいのであれば、
先に
daily:{
 koumokuA:"",
 koumokuB:"",
}
みたいなオブジェクト作っといて、その上に、ret.filter(hasKeyIn(daily)).map(convToStr)したものをマージしちゃえば、表は簡単に書けるよねって話。
グラフならconvToScaleとか、何とでもなる。
デフォルトの名無しさん [sage] 2016/05/27(金) 21:00:52.88 :5O2HSGrs

クソ仕様w
その、まぁ、未検査ではないんだが、結果の無い状態を現す値、がnullなんだけど。
何故別途必要なのか聞いてみたい。
さらに、その値が永劫、その値を返す検査が現れないか、と。
デフォルトの名無しさん [sage] 2016/05/27(金) 21:03:22.58 :5O2HSGrs

LAMPと全然関係ないと思うが。
何社か医療渡ってるけど割と普通。
デフォルトの名無しさん [sage] 2016/05/27(金) 21:06:38.13 :Dt+fFMyq

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

物にもよるんよ。検査って。
2項目以上帰ってくるものの、片方だけ表させたいとか。
デフォルトの名無しさん [sage] 2016/05/27(金) 21:14:25.30 :fXm66YRc
もう一回見てきたけど、
控えめに見てもundefinedの計算結果がNaNという部分は
「未定義値」という値を明確に容認してるよ
少なくともhasOwnPropertyだけで済むと言ってるのとは相容れないし
って…もう最初から何も問題なかったってことでいいや
面倒くせえわ
デフォルトの名無しさん [sage] 2016/05/27(金) 21:18:25.17 :Dt+fFMyq

よくわからない
プロパティが存在しないことを判断する方法は大きく分けて3つある

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

1. はあなたが推奨する方法だけど、obj.prop = undefined にも反応する
2. や 3. でも問題ないし、そっちの方が厳密
ここで 1. でなければマージできない理由は?
デフォルトの名無しさん [sage] 2016/05/27(金) 21:24:59.90 :fXm66YRc

いやお前自分で
>そのまま列挙して設定したものを、
>未定義と判定して「未検査」と表示する話をしてるんだが。
>頭おかしいの?
と言ってるし
本来この未検査ってのはリクエストに対して、ちゃんと定義されたデータを返す物だろ、
適当なWeb環境じゃないんだから、ビュー側で判別して表示とかありえないだろ
つか取得時のコンテキストどうなってんだよ
デフォルトの名無しさん [sage] 2016/05/27(金) 21:26:20.32 :Dt+fFMyq
ちなみに、Object.assign は [[GetOwnProperty]] でプロパティをマージするね
Polyfill も当然、Object#hasOwnPropery を使う
条件別マージだから Object.assign を流用できないとしても根幹となるマージ処理は同じで問題ないと思うんだよね
ttp://www.ecma-international.org/ecma-262/6.0/#sec-object.assign
デフォルトの名無しさん [sage] 2016/05/27(金) 21:30:34.70 :5O2HSGrs

未定義じゃないんだって。さっきの例みたら分かるだろうけど、数値に変換できない検査結果はNaNにしてるの。
0/1で持ってて、インフルエンザの検査結果を何を血迷ったかグラフで見て、陰性と陽性がピコピコ蠢くグラフ見て楽しいか?

単に、「である」を否定を使って比較しない、ってコーディングルールの問題。
デフォルトの名無しさん [] 2016/05/27(金) 21:32:08.16 :fXm66YRc

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

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

してないから。
四則演算するとこうなるから、四則演算が成り立たないものは正しく判定しなきゃね、そのためには、null,0,undefined,NaN全部扱い違うよねって言ってんじゃん。
デフォルトの名無しさん [sage] 2016/05/27(金) 21:44:03.54 :h7QAH+sV
うるせえ消えろゴミ
デフォルトの名無しさん [sage] 2016/05/27(金) 21:44:10.18 :Dt+fFMyq

> 単に、「である」を否定を使って比較しない、ってコーディングルールの問題。
そのコーディングルールの話を初めからいっておけばここまでこじれなかったんじゃないの?
端的に言ってあなたは説明が下手だと思う
自分の主張が伝わらなくて憤慨している様子は伝わってくるけど、原因のほとんどはあなたの中で当然と思うコーディングルールが皆に伝わってないことにあるんじゃないかな

で ! (否定)を使っているのが気になるけど、何かしらのあなたなりのコーディングルールがあるんだろうね
自分のコーディングルールが万人受けするとは限らないことは気に留めておくといいと思う
デフォルトの名無しさん [sage] 2016/05/27(金) 21:46:10.68 :fXm66YRc

それって本来は未検査、結果待ち、結果無しって
別の値を定義して分けるべき内容でしょ?
悪いけど普通にクソ仕様だと思います


四則演算できると言ってる時点で値として認めてる事になるよね、違う?
デフォルトの名無しさん [sage] 2016/05/27(金) 21:48:08.24 :UggnfNpm
undefined | null の等価が必要な糞みたいな
構文書いているんじゃないよ
はっきり言ってゴミだ
デフォルトの名無しさん [sage] 2016/05/27(金) 21:48:48.08 :fXm66YRc
いや、違うかそうは言ってないんだな
もうちょっと待ってくれ
デフォルトの名無しさん [] 2016/05/27(金) 21:52:05.84 :OuviwO3+
がいきなり何を言ってるのか良くわからない件w
デフォルトの名無しさん [sage] 2016/05/27(金) 21:53:49.64 :7C5pluWz
俺もがなにをいってるかわからんwww
デフォルトの名無しさん [sage] 2016/05/27(金) 21:54:15.57 :Y3oSSTyA
一人で10も20も連投するようなキチガイ説明云々以前に頭おかしいだろ
デフォルトの名無しさん [sage] 2016/05/27(金) 21:59:59.70 :/K+aNa26
こういうやつって自分より明らかに上のヤツが面と向かって話きいてやるから出て来いっていうと出てこないんだよな
所詮その程度のカス
デフォルトの名無しさん [sage] 2016/05/27(金) 22:00:29.40 :fXm66YRc

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

おっと?ちょっと見立てが狂った。まあそれはさておき、回答ありがとう。

ちなみにリクエストある?
見立てが狂っていたので、俺が勝手に「君にとって有益」だと思っているのもゴミでしかないかもしれんし。
君はこの一連の会話には参加してないと思うけど、こいつらが駄目な点を指摘しろと言われればできるけど。
放置しておけば収まるかと思いきや、そういう感じでもないし。
ただ一番カスなのは、単発で煽っている奴だと思うが。
俺個人のスタンスは、この手の技術的応報は「気が済むまでやれ」だからね。
デフォルトの名無しさん [sage] 2016/05/27(金) 23:21:03.48 :Dt+fFMyq
のマップオブジェクト的なものの判定処理で最終的に行き着くのは 3. の hasOwnProperty
obj.prop = undefined とか、NaN の比較とか、定義順の列挙とか、諸々の問題は new Map で解消される
ID:5O2HSGrs が作る医療システムは構造が複雑なので単純なオブジェクトマップで対応するよりも、独自のインターフェースを作る方がいい
ttps://jsfiddle.net/oo1777o0/
デフォルトの名無しさん [sage] 2016/05/27(金) 23:51:31.16 :64E4c/Qq
Rのデータでも、null, NaN は理解できるけど、
undefined はプログラムのバグじゃないの?

それは、アカン

DBでも、null, undefined を加えて、4値論理だと、SQLが複雑化して、バグが増える
デフォルトの名無しさん [sage] 2016/05/27(金) 23:56:13.71 :10EzBfKp
undefinedは同じ関数名でsetter/getterを作るときに使うな。

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

nullだけいいかと思うかもしれないけど、
obj.data('name', null)という風にnullを代入するsetterがあるかもしれないので
nullとundefinedは区別がついたほうがいい。
デフォルトの名無しさん [sage] 2016/05/28(土) 00:01:17.19 :2CcTCqQn

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

null と undefined は区別すべきだと思うけど、その場合はarguments.lengthで判定するのが普通
デフォルトの名無しさん [sage] 2016/05/28(土) 00:15:41.95 :Q7pM0tvA
おねがいします
デフォルトの名無しさん [sage] 2016/05/28(土) 00:17:23.16 :U+yYkFDL
argumentsって展開できる?
rubyでa = [0, 1, 2]
def f(a, b, c); endに対して
f(*a)できるようなやつある?

もしくは
g = funciton () {/*arguments使う処理*/};
f = function () {/*g()にargumentsを渡す何らかの手段*/};
gを変更せずにf側の工夫だけで何とかなればいいんだけど
デフォルトの名無しさん [sage] 2016/05/28(土) 00:23:14.01 :UVJrtMwg

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

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

単発キチガイが「人格的な」批判だけをしている方がうざいし、
気に入らないのなら出ていけばいいだけだろ。
178 [sage] 2016/05/28(土) 00:28:43.02 :U+yYkFDL

自己レス
var g = function () {alert(arguments.length);};
//var f = function () {g(arguments);}; // ダメ
var f = function () {g.apply(this, arguments);}; // これでいい
f(0, 1, 2, 3);
デフォルトの名無しさん [sage] 2016/05/28(土) 00:45:35.77 :F7SYakCj

ああーいい感じに簡潔にまとまってていいね
自分もMapと専用型派だから、そのまま便乗させてもらいたい
デフォルトの名無しさん [sage] 2016/05/28(土) 00:48:21.69 :lIlkJ1va

Rubyは知らんが、Function#apply の事か?
デフォルトの名無しさん [sage] 2016/05/28(土) 00:50:15.08 :F7SYakCj

俺なら考えるの面倒だからpostMessageでリサイズしちゃう
デフォルトの名無しさん [sage] 2016/05/28(土) 01:21:36.93 :4RY8P4hk

10は、評価した結果falseでなければ、だよ。
undefinedである、もしくは、nullであれば、とはちと違う。
当然と思うコーディングルールというか、xxx==null、と書いておいて、実はnull以外にもundefinedも判定されます、という理屈の方が明らかに間違ってる。


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


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


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


apply
デフォルトの名無しさん [sage] 2016/05/28(土) 01:30:01.42 :4RY8P4hk

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

未定義という概念だけが必要だから、jsのundefinedはいらないよね
言ってる意味わかる?
というか
>当然と思うコーディングルールというか、xxx==null、と書いておいて、実はnull以外にもundefinedも判定されます、という理屈の方が明らかに間違ってる。
ってfalsy判定するって言ってる人がそれ言う?酷すぎでしょ

>状態と結果をごっちゃにしてはいかん。
>結果がある見込みすら無い、少なくとも現時点ではまだ無いか有意では無い、有意な結果がある、のたった3つの、結果の値なの。
>クソ仕様はお前の頭。
いや糞仕様だよ普通に
つかなんでいちいち煽りを入れてくるかね…
俺は散々その未検査とかの状態をundefinedじゃなくて、
サービスの値として別で定義するべきと言ってるわけ
電カル云々ってのは結合って意味でしょ?
その結合するにしても、「undefinedを判定に使う」なんてのはやるべきじゃないでしょ?
アプリケーションレベルの話なのだから、きちんと「未検査」「なし」という値を定義すべきでしょ?
きちんとここまで理解できてる?
デフォルトの名無しさん [sage] 2016/05/28(土) 02:08:55.19 :F7SYakCj
というか実際はどうかはしらないけどさ、
説明聞く限りだと、明らかにまともなシステムじゃないよ?
そんなのをお手本として語っちゃうのは駄目だと思うよ
デフォルトの名無しさん [sage] 2016/05/28(土) 02:42:07.52 :F7SYakCj
もうこの話題は埒が明きそうにないからレスしないことにする
すみませんでした
デフォルトの名無しさん [sage] 2016/05/28(土) 03:04:53.76 :4RY8P4hk
よほど指摘されたのが悔しかったんだなぁ。
らちがあかないおつむでご苦労なこった。
おつかれさん。
デフォルトの名無しさん [sage] 2016/05/28(土) 03:09:13.25 :4RY8P4hk
undefinedという状態を使う、その行が無いという情報を使う、開始電文+データ長0+データ(ゼロバイトの)+終了電文。
全部、有意な「何もない」という情報なんだけどな。
0を発明する前の、指で数を数える原始人みたい。滑稽よね。
デフォルトの名無しさん [sage] 2016/05/28(土) 03:22:22.32 :4RY8P4hk
jsのundefinedは要らない、もよくわからんな。オブジェクトとして存在していなくてもよい、予約語であれば良い、とでも言いたいんだろうか。
それとも、概念が必要ないんだろうか。

phpのissetも、perlのexistsも、Mの$Dも、はたまたcのプリプロセッサマクロのifdefも要らんというか、使いこなせないんだろうな。
デフォルトの名無しさん [sage] 2016/05/28(土) 03:43:50.37 :/MxDZHtX
すでに「nullという値」という概念が存在してるんだから
「何もない」ものと区別する必要があるだろ。
デフォルトの名無しさん [sage] 2016/05/28(土) 04:51:05.16 :BWGRJTpr
宇宙の真理として絶対に必要あるものでもないし、必要ないものでもない。

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

ただそれだけの無意味な議論。
デフォルトの名無しさん [sage] 2016/05/28(土) 05:52:30.30 :/MxDZHtX
C言語なんかint型に数値以外入らないから
-1で代用したりでなんとかなってるしなw

ないならないで工夫次第で何とかなるが、
あれば楽になるっていうものなのだろう。
デフォルトの名無しさん [sage] 2016/05/28(土) 09:38:09.38 :PPUGo99f

専門家でない自分が検査の詳細を知る由もないんだけど、必要であれば Interface を拡張するか、上位 Interface を作ればいい
例えば、検査フェーズ毎に結果が欲しかったら、上位に Interface MedicalCheckPhase を作る
ttps://jsfiddle.net/oo1777o0/1/
患者毎に管理したければ更に上位に Interface を作ればいい

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

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

これは「調査予定の有無」「調査の進捗状況」の2つを別々のプロパティで管理した方がいい
MedicalCheck でいう implement, progress がそれにあたる
デフォルトの名無しさん [sage] 2016/05/28(土) 09:48:10.32 :UVJrtMwg

まったく同意ではあるんだけど


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

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

という理解でok?
デフォルトの名無しさん [sage] 2016/05/28(土) 10:17:45.97 :PPUGo99f

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

「実施の有無」はInterfaceの内部処理として隠れるから実際のところはそれ程コード量は増えないと思うんだよね
Interfaceを作ればその後のコード量が少なくなるから相殺されるか、逆にコード量が少なくなる場合もあると思う
このぐらいのコード量ならzlib圧縮してminifiedしたら十分に小さくなるし
デフォルトの名無しさん [sage] 2016/05/28(土) 11:20:22.38 :6huP5UCX
おい、一応言っておくけどもゴミだぞ。
それから、お前は概ね間違ったことは言っていない。

お前ら、設計が出来るつもりなのなら、OPPのスレでも見てこい。
お前らにはいい教材になるかもしれん。
ttp://echo.2ch.net/test/read.cgi/tech/1463663267/
デフォルトの名無しさん [sage] 2016/05/28(土) 12:01:27.82 :oFxbpGnE
ここは質問スレッドであって議論スレじゃない
スレタイも読めない阿呆は出て行ってくれ
デフォルトの名無しさん [sage] 2016/05/28(土) 12:12:29.14 :8NhNw/7c

しょーもない宣伝するな
しかもOPPて
デフォルトの名無しさん [sage] 2016/05/28(土) 13:07:01.36 :6huP5UCX
単発キチガイ粘着乙
お前の回答はどれなのさ?

こいつらは回答してるし、質問は掃けているのだから、回答もしていない奴が口を挟む筋はないよ。
最近、お前みたいな「筋をわきまえないキチガイ」は2ch一般に増えたけどね。
デフォルトの名無しさん [sage] 2016/05/28(土) 13:29:38.68 :GZb66p/J
場を弁えないキチガイの方がいらねえは
デフォルトの名無しさん [sage] 2016/05/28(土) 15:14:44.57 :h5j9D0+l

すまんが、否定派は結局何が主張したいのかがわけわからん。
true/falseはいらない、1と0でいいと言ってるのと同じでしょ。
無くてもどうにかなるからという論を散々されても、
無いほうがいいということにはならないからね。

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

それよりも関係及び立ち位置をここで、またこれから振り返って整理していこうというのが
正しい論議だと思うよ。
デフォルトの名無しさん [sage] 2016/05/28(土) 15:34:39.73 :7z0JA/T2
const obj = {
age: 1,
f: () => {
console.log(this.age);
}
};
obj.f();

functionじゃなくて() =>で関数を書いた時にf()の中からageの値を取得する方法を教えてください
デフォルトの名無しさん [sage] 2016/05/28(土) 16:01:02.90 :jKO2qa04
ソースコードはヒューマンリーダブルなので
自己満足で解決
デフォルトの名無しさん [sage] 2016/05/28(土) 16:28:58.11 :6huP5UCX

その場合はfunctionと書く方が正解
196 [sage] 2016/05/28(土) 16:47:58.29 :PPUGo99f

一緒くたにされてるけど、別に undefined 不要は唱えていない
自分が主張したのはプロパティが存在しない事を確認する為に obj.prop === undefined を使うべきではない、という事と
ID:5O2HSGrs が考える医療システムコードの問題点だけ
null, undefined の違いはで説明したことが全て
undefined 比較はほとんどの場合において不要
デフォルトの名無しさん [sage] 2016/05/28(土) 16:53:14.43 :F7SYakCj
すまん
レスしないと行ったけどむかついたから言わせて


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

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

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

理解できてる?
違うと言うならズレた煽りを入れずに、何が違うか具体的に言ってね?
196 [sage] 2016/05/28(土) 17:01:36.87 :PPUGo99f

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

お疲れ様
多分、彼( ID:4RY8P4hk )はあなたの意見を誤読してるだけだと思う

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

よって、nullという存在を用意しておくのは、
シンプルや汎用的にし過ぎて利便性を犠牲にすることがない
良いバランスを狙えていると思う。
デフォルトの名無しさん [sage] 2016/05/28(土) 17:37:37.39 :F7SYakCj

すまないありがとう、落ち着いたよ
まさにおっしゃるとおりなので、に便乗させてもらいます

よく考えたらコードに一切落としてないから、人に強く言える立場でもないなあ…
デフォルトの名無しさん [sage] 2016/05/28(土) 18:51:22.49 :bfGuDmoK
がなぜ今そんなことを言い出したのか意味不明。
デフォルトの名無しさん [sage] 2016/05/28(土) 19:13:15.00 :B2G67qEl
がなぜそんなことを気にするのかが意味不明。
デフォルトの名無しさん [sage] 2016/05/28(土) 19:21:59.51 :4RY8P4hk

ぶっこんでないから、undefinedなんだけど、まぁいいや。
定義されていない、を定義してるっておかしいと思わないのかな。
クソ仕様は、undefinedを代入してる、って誤解してるババロアと取り替えても支障のないレベルの脳ミソだと思うけどね。
デフォルトの名無しさん [sage] 2016/05/28(土) 19:59:16.01 :1ecGmLwK
ババロアバカにするとか許さないんだけど
てめえのあたま埃でも入ってんじゃねえの
デフォルトの名無しさん [sage] 2016/05/28(土) 20:06:57.74 :6huP5UCX

いや違うぞ。
の主張は、「undefinedを代入するな」ではなく、「undefinedを有効値(意味のあるもの)として使うな」だ。
プログラミング言語上のundefinedに対し、アプリケーション上の意味をオーバーロードしていることを問題視している。
といってもこの表現では君には伝わらないだろう。そこでさらに平易に言い換えると、

例えば、Ruby等、undefinedがない言語で組んだ時、
アプリ上で「未実施」「成功」「失敗」「情報無し」の4値状態が必要であれば、
当然 true/false/nil では足りないから何らかの対策をするだろ。
それをJavaScript(4値状態可能)であったとしてもやれと言っている。
まあ君はNaNも導入しているので5値状態まで行けるのかもしれんが、どこまでそれやるの?という話になる。
デフォルトの名無しさん [sage] 2016/05/28(土) 20:14:47.49 :19MLvfJY
よかったこんな阿呆が身近にいなくて
デフォルトの名無しさん [sage] 2016/05/28(土) 21:13:45.88 :/MxDZHtX
Scalaのnull/Nothing/Nil/Noneはやりすぎなのか?
ttp://bleis-tift.hatenablog.com/entry/scala-null-none-nothing-nil

似たような意味でも違う概念なら違うものに割り当てるべきだよ。
デフォルトの名無しさん [sage] 2016/05/28(土) 21:22:05.08 :ynWa4gys
undefinedはcのdeleteと同じと思った方がいい
変数の初期化をしたいけど、いれる物がない時はnullを入れるべき
undefinedを入れるのは間違っている
デフォルトの名無しさん [sage] 2016/05/28(土) 21:34:27.07 :ubVCvz+a

お願いだから書き込むのをもうやめてくれ
何いきなり「cのdelete」とか言い出しちゃってるの?
デフォルトの名無しさん [sage] 2016/05/28(土) 21:42:53.12 :ynWa4gys

まだ一回しか書き込んでいない
デフォルトの名無しさん [sage] 2016/05/28(土) 21:43:39.30 :LvedKHwv

俺c/c++メインだが、その例えは意味がわからん
デフォルトの名無しさん [sage] 2016/05/28(土) 21:44:56.20 :ynWa4gys
俺がいいたいのは、undefinedをフラグや何もないという意味を表す物として使うなと言う事
c言語で、フラグの為にnullを代入することはあっても、deleteで消すことはないだろ?
デフォルトの名無しさん [sage] 2016/05/28(土) 21:50:45.87 :LvedKHwv

言いたいことはわかったけど、それと例えが全くマッチしてない気が…
デフォルトの名無しさん [sage] 2016/05/28(土) 21:51:00.22 :ubVCvz+a
cでnullとかdeleteとかお前頭の病気か?
デフォルトの名無しさん [sage] 2016/05/28(土) 21:52:08.66 :UVJrtMwg
周回遅れ感になんかほっこりしたw
デフォルトの名無しさん [sage] 2016/05/28(土) 22:55:04.19 :4RY8P4hk

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

とりあえずデータ取得はJSONでサーバからもらって、フォーマットはみたいなのなんだろ?
つまりネットワークバンド幅をケチるためにundefinedは最初から抜けていると。

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

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

まあ、でもこういう風に議論することは多分お互いのためになるだろうから、頑張れ。
デフォルトの名無しさん [sage] 2016/05/28(土) 23:31:47.42 :viYscYES

滑稽やなこいつw
デフォルトの名無しさん [sage] 2016/05/29(日) 00:46:26.74 :0W+JhSU+

ネットワークからもらうのは通信電文だよ。
通信電文自体イメージできてないかもしれないけど。
意味のない中間の実装とか要らないの。
相手側の実装、結果の値の入っていないものに、わざわざ結果が入ってませんと入れていく、に文句つけるとすればただ一つで、

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

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

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

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

進捗自体は、別のデータが貰えてるので、そいつでフィルタすれば良い。
デフォルトの名無しさん [sage] 2016/05/29(日) 02:13:36.39 :JYpYJI9w
質問スレとして成り立ってねえ
デフォルトの名無しさん [sage] 2016/05/29(日) 02:33:08.25 :qvzR6wN9

おいおい俺にレスを付けるかw
やり合ってるのは俺じゃないぜ。まあ、安価自体には大して意味がないかもしれんが。

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

まあこれは言えなければ相手側に言ってもらえばいいんだが。
そうすればお前らお互いに知恵を出し合ってブレスト出来て前に進めるだろ。
そうやって自分の中の実装オプションを増やしていけば、
仕様を聞いた瞬間に複数の実装が思い浮かんで選択できるようになる。
下らない文法争いからはいい加減に卒業した方がいい。あんな事をやっていても全く上達しない。
デフォルトの名無しさん [sage] 2016/05/29(日) 02:33:34.96 :qvzR6wN9
nullアサインの理由付けはよく分からない。
というか正直、こじつけただけのように見える。ただ、それはそれでいいんだよ。
君の実装は軽量高速動作向きだ。
だからプリミティブで対応するというポリシーなら、それはありなんだよ。
問題はそれを分かってやっているのか?ということなんだよ。

あと、話を大きく考えすぎだ。身近な成功例があるのだから、それを参考にすればいい。例えば、
000: 未実施
100: 実施中、結果待ち
200: 結果良好、終了
303: 再検査中
304: 再検査終了、問題なし
404: 結果不良
とかな。何の事かは分かるだろ?それを参考に決めうちしたとして、ほぼ全部設定できるはずだ。
どうしても駄目なら 600: その他、で直接stringを指定すれば済むが、
まあこれは分かると思うが避けられれば避けた方がいいだろう。
いずれにしても、この方式は拡張するにしても容易だ。
デフォルトの名無しさん [sage] 2016/05/29(日) 02:34:17.67 :qvzR6wN9
分かっていると思うが俺はあっちのだ。
ttp://echo.2ch.net/test/read.cgi/tech/1449440793/
お前らが延々と文法の話しかできない事に辟易していた。
この手のプログラミングの本質についての話なら、当然歓迎する。
だからあっちで勝手にやってくれても構わないし、今回みたいに収拾つかない場合には助け船も出す。

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


なお、ここは質問スレなのだから、質問者は議論の空気を読まずにいきなり質問を落としていい。
それで議論がぶった切られるのが嫌なら、議論は別の場所でやれってことでしかない。
デフォルトの名無しさん [sage] 2016/05/29(日) 04:35:50.01 :qTFaTssR

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

設計がUndefined許容になる事を秤にかけたら遥かに前者のがいいっしょ
利得がって言ってる拡張は、プロトコル上は1レスポンス1バイト〜高々数十バイト(項目数)程度の差で済む
ISDN相手じゃあるまいし、中は同軸使ってた頃のシステムでも1Mぐらいはあるから、そんなの問題にならないよ

単に古いからなし崩し的に使ってるだけだと思うよ
で、それをかの人はなぜか良設計だと思い込んでると
まあもうどうでも良いけどね、本人最後まで理解しなかったし
デフォルトの名無しさん [sage] 2016/05/29(日) 04:47:37.88 :qTFaTssR
すまん、前者の方が抜けてたね
正しくは、プロトコルを拡張するのと、設計がUndefined許容になる事を秤にかけたら
デフォルトの名無しさん [sage] 2016/05/29(日) 05:02:06.30 :9ISBvfBu
よーわからんが思考順序がおかしい奴が結構いるみたいだな
デフォルトの名無しさん [sage] 2016/05/29(日) 05:07:22.44 :qTFaTssR

>知りうるすべてのフィールド、も保守管理していくとなると、永遠に保守を続ける必要が発生するよね。
全部フィールドを保守するのが無駄と言ってるけど、
ビュー側で分けてるんだから同じ事だよ?
なぜか保守してないことになってるけど
デフォルトの名無しさん [sage] 2016/05/29(日) 05:22:17.03 :qTFaTssR
これ極端なこと言えば、そもそも専用のはずのプロトコルとサービスを、
末端でそれぞれ対応してるモジュール同士が理解できればそれで良いっていう体の
オブジェクト送信と保存のための汎用ミドルウェア扱いしかしてないって事だよね

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

それで保守しにくいって当たり前じゃんよ、何も考えずに末端で適当に実装してるんだから
どういう体系なのかは知らんが、正直関わりたくない案件です
デフォルトの名無しさん [sage] 2016/05/29(日) 05:24:34.66 :uH1/jPAH
ネットワークバンド幅をケチるなら
バイナリのプロトコルがいいよ。

たとえばJSONをgzip圧縮するとかNE!
デフォルトの名無しさん [sage] 2016/05/29(日) 05:32:26.63 :9ISBvfBu
の論だと
貰った明示的な空値と貰ってない暗黙的な空値を区別するために
両方の存在が必要ということだな
デフォルトの名無しさん [sage] 2016/05/29(日) 06:24:18.47 :0W+JhSU+
なんのこっちゃ。
空論だらけで笑えるわ。
undefined許容と言うか、お前らの見識狭すぎるだろ。
ざっくり白本から引用すると
ttp://shirobon.net/22/ika_2_3/i_m_2_3.htm
こうあるわけだ。
中見るとわかるけど、ひとつの検体でも、凄まじく別れるわけ。
デフォルトの名無しさん [sage] 2016/05/29(日) 08:06:23.01 :7TpVCW1+

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

だから、知らないなら知らないで良いんだよ。
しったかぶって、この設計で大丈夫、クラスやら、インターフェイスでガッチガチに固めれば良い、なんて発想されても、それじゃ不便なんだよねえ、って話するしか無いじゃん。
DBにも実際にスキーマフリーなkvsのような物に入ってるんだし。

何を持っているかは、もの次第。
その上で、持っていないものに関しては、定義しない、
持っているけど、中身の入っていないものは、定義して中身にnullを入れる。
そんなけ。
デフォルトの名無しさん [sage] 2016/05/29(日) 09:18:33.91 :cJcPZgXw

> 中身の入っていないものは、定義して中身にnullを入れる
お前は雑巾で顔を拭くのか?
デフォルトの名無しさん [sage] 2016/05/29(日) 09:43:12.25 :BS/+K0m3
あるテキスト全体を、markdown形式の改行に変えたい(行末に空白を2つ入れたい)んですが、書き方を教えて下さい。
iPhoneのtextwellで使用したいです。
デフォルトの名無しさん [sage] 2016/05/29(日) 10:11:38.70 :pBCN0dYY
nullとundefinedのような二種類の形式が有るのは、他にどんな言語が有りますか?
デフォルトの名無しさん [sage] 2016/05/29(日) 10:29:29.44 :0W+JhSU+

喩えが下手すぎて何も伝わらん。。


(""+str).replace(/(\r|\n|\r\n)/g," $1")
でいいんじゃないの?


php(isset)
perl(exists)
なんかじゃないの?メジャーどころでは。
定義せずにいきなり代入できる言語にはたいていあると思うよ。
デフォルトの名無しさん [sage] 2016/05/29(日) 12:24:19.31 :7TpVCW1+

String(string).replace(/(?=\r\n|[\n\r])/g, ' ');


そのコードは \r\n にマッチしない
\r\n に対して2回置換処理を行う
デフォルトの名無しさん [sage] 2016/05/29(日) 12:26:53.13 :GuNB7bh5
池沼が正しいか正しくないかの話(議論ですらない)をしたところでどこにも何の影響も残らないのに
貴重な時間を数日間も潰してよく続けられるものだと思う
よほど時間の使い方を学習せずに育ったか、毎日が日曜日で暇なのだろうな
デフォルトの名無しさん [sage] 2016/05/29(日) 12:35:23.09 :0W+JhSU+

ありゃ、そうだっけ。
貪欲だと思ってた。
\r\n|\r\|\nならいいっぽいな。勉強になったわ、ありがとう。


だって先月ブッチギリでサブロクをオーバーして強制休暇で暇なんだもの。
デフォルトの名無しさん [sage] 2016/05/29(日) 12:36:31.11 :7TpVCW1+

何がどう不便なのか全く伝わってこない
悪いけど、情報を小出しにして情報アドバンテージを得ようとしているように見える
「持っているもの」や「持っていないもの」のような抽象的な概念で誤魔化さないで全体の処理の流れを具体的に説明したら?
DBからそのまま二次元配列に落とし込む訳じゃないよね
データベースから引き出しすデータのフォーマットがどのようなものなの
DBから引き出したデータをJavaScript出扱いやすいように構造化する処理があるはず
オブジェクト思考を推奨しつるのは後者の処理であって元のデータ構造がどうなっているかは関係ない
デフォルトの名無しさん [sage] 2016/05/29(日) 12:43:40.90 :qvzR6wN9

> プロトコルを拡張するのと、設計がUndefined許容になる事を秤にかけたら
> 遥かに前者のがいいっしょ
プログラミング的には、はいその通り。

> ビュー側で分けてるんだから同じ事だよ?
はいその通り。どこに書くかだけでコード量自体は大して変わらない。
だったら一箇所に纏めて書いている方が保守しやすいというのも事実。

> 汎用ミドルウェア扱いしかしてない
はいその通り。

というわけでまあ、プログラミング一般論として言うなら、君の実装の方がかなり「マシ」だし、「マトモ」だと思う。
言っていることも至極まともだ。プログラミングの腕前も、君の方が上だろう。
ただ、多分あの「軽量実装」が「仕様」なんだよ。
デフォルトの名無しさん [sage] 2016/05/29(日) 12:44:04.66 :qvzR6wN9
君が言っているのはかなりきっちりしたシステムだ。
低速だが安定堅牢に動作する。何か問題があればたちどころに検出できる、まさにエンタープライズソリューション。
しかし、悪く言えばSEが余分な機能をくっつけまくった、顧客にとっては使わない機能の固まりだ。

あれでどうにかなっているんだから、ビュワー自体は簡易的なもので、本体はDBだ。
これまで紙でやっていた物を、電子化することによって閲覧、検索をサクッと出来るようにしたい。
でも、それだけでいいんだよ。DBが壊れていたり、ネットワークが潰れたら、最悪紙で対応できる。
ただ、そういう非常時じゃない時は、サクサク検索閲覧したい、多分それだけ。

だからビューワーはつべこべ言わず、今あるDBにアクセスして、内容をサクッと表示できればいいんだよ。
そこであれこれ検出する必要はなく、DBアクセスして見えた内容を表示できればいい。
だからビューワーのためにプロトコルを拡張するなんてあり得ない。
今あるDBのデータを再構築とかもあり得ない。
今動いているシステムの上に「きっちり居候しろ」、ということなんだと思うよ。

DBも多分デタラメ投げ込み方式だが、それもありだろう。
もちろんITソリューションとしてはやや問題があるが、
現実的には、今時の医者は患者の顔もろくに見ずパソコン操作に忙しいと聞く。
本来は彼等の負担を減らす為の「ソリューション」が負担を増やしている、本末転倒な事態になっている。
だからIT側の都合ではなく、医療実務者の都合側に100%振ったら、多分彼が言っている感じになる。
登録だけはしておくから、あとはよろしく。検索と閲覧がサクサクできればいいです、ってところだろう。
(この「登録」ってのは整合性がある状態ではなく、情報漏れがない状態で登録されているだけ。
つまり検査によってnullの意味が異なったりもするが、それはIT側で辞書引きして対応しろということ)
デフォルトの名無しさん [sage] 2016/05/29(日) 12:44:27.00 :qvzR6wN9
とはいえ
> 設計がUndefined許容
これは大問題なのだが、NaNをbool値扱いしていることからも分かるように、彼はこれを理解していない。

さてこれについては、グローバルは禁止(キリッみたいなのは入門書でも触れている=全員一度は聞いたことがあるとして、
undefinedについては所詮入門書を書いている奴らはその程度だということなのか、
あるいはそもそもundefinedがあるようなゆるふわ言語で業務システムを構築することがこれまで無かったのか、
少なくとも(キリッとかやっている奴は見たことがないから、初心者が知る範囲にはそういう情報が無いのだろう。

てな感じか。では続きをどうぞ。
デフォルトの名無しさん [sage] 2016/05/29(日) 12:47:26.66 :7TpVCW1+

JavaScriptは貪欲(最長一致)だけど、貪欲でなくても結果は同じ
デフォルトの名無しさん [sage] 2016/05/29(日) 13:01:45.99 :0W+JhSU+

なんでそんなに突っかかるのかわからん。
アドバンテージもなにも、現にお前が無知なだけだし、だからといって臨床検査の事細かく説明したところで理解できんの?
お前が、卑怯な手段で叩かれてると思ってるのは、全部お前が単純に馬鹿で無知で加えて想像力と謙虚さを持ってない故の卑屈なコンプレックスだわ。

ほぼそのまま二次元どころか多次元配列に落とすよ。
誰もが受けたことあってわかりやすいところで説明すると、眼科のあの気球見るオートレフだと、球面度数と、乱視度数と乱視軸度の3項目が一発で出て、そいつらは同一時刻の検査結果としてひとつの結果にまとまってるもんなんだが、
左右の目を必ず測るとは決まってない。
右、左自体の結果が入ってない事がありうる。
ところが、左右測ったけど右だけ測れなかった、それは、測ったって事実は残さないとならん。
だが、右目のなんとか、が測れなかったわけではなく、右目の結果自体がまとめて、無い。
そしたら、右目の結果には詳細を入れようが無いわな。測れなかったんだから、何が測れなかったと言うわけではなく、右目が測れなかったという事実しか無い。
また、再トライして測れない、というわけでも無いので、端的に失敗で終わらせるわけにも行かん。
それは、測ったけど今のところまだ結果は入っていない、って状態でしかない。
それを、オートレフ計測失敗、と個別の定義値を持って管理したらあの項目数でどうなるんよ。
ホルター心電図なんかもっとめんどくさい。24時間の時系列データひとつながりが端子数ある。それが一まとまりのデータ。
デフォルトの名無しさん [sage] 2016/05/29(日) 13:07:42.96 :0W+JhSU+

ダメ。DBが最悪潰れていたら、は許容され得ない。
電子カルテ三原則というものがあって、真正性、保存性、見読性ってみっつの要素が保てていないものは、診療録、照射録たりえない。
なので、どんな入れ方をされても、後からなんとでもなるようなゆるふわ仕様で、それを確実に歴を含めて保存してる。

都合が悪くなったから、この定数はこの日から別の意味です、は使えない。
組み込みの型で、あとからかぶり得ない値である必要と、無いものは無い、無かったと勝手に書かないという原則もある。

測ってもない熱が、カルテに「熱無し」って書かれても困るっしょ。
デフォルトの名無しさん [sage] 2016/05/29(日) 13:24:29.14 :xy9Dpqm6
かわいそうにこういうこといいあえる相手いないんだね
こんな頭おかしいのがまともな職場にいられるわけないから当然か
デフォルトの名無しさん [sage] 2016/05/29(日) 13:30:53.09 :KqqGQ0oS
ちょっと勉強でvue-router触ってみてるんだけど
(※なおクライアント側でのルーティングフレームワークは初めて)

/fooと/foo/barと/foo/bar/baz
みたいなルーティング定義できるけど
これってよくやるもの?

これすると、<img src="../hoge.jpg">とかの相対指定がおかしくなる……
(1)mod_rewriteで弄る?
(2)それとも<img src="/img/hoge.jpg">みたいに相対指定やめる?
(3)そもそも複数階層を同一ページみたいなことはしない?

よろしくお願いします
265 [sage] 2016/05/29(日) 13:32:19.27 :KqqGQ0oS
補足です

/fooも/foo/barも/foo/bar/bazも同じhtmlファイル
で、/foo/bar/bazあたりでリロードしたときに
<img src="../hoge.jpg">がちゃんと出なくなるという現象……
デフォルトの名無しさん [sage] 2016/05/29(日) 13:33:37.15 :0W+JhSU+
なんのこっちゃ…。言い合わんでも、共通認識だよ。
デフォルトの名無しさん [sage] 2016/05/29(日) 13:35:41.41 :0W+JhSU+

どーしても同一ページを別の階層にルーティングしたかったら、
なんか画像パス返すcomputed定義したmixinでも用意したら?
でも何でも別の階層にルーティングしたいの?
デフォルトの名無しさん [sage] 2016/05/29(日) 13:45:07.54 :qvzR6wN9

いや、そういう話をしているわけではない。
というか、「電子カルテ」と「プログラム構造」の仕様は別物だから、別に考えてくれ。

多分な、君が担当している案件は、医者達は一旦「紙」に記録して、
それをおそらく別の人がDBに再入力しているだろ?
この場合は電子システム以外でのバックアップを持っていることになる。
また、別の人が入力する時に「明らかな間違い」はそこで検出される。それを言っている。
(これが「電子カルテ」として容認されるかどうかは俺は知らない)
この場合は君の実装でも悪くはないんだよ。
ただ、マスターがDBで、医者が直接入力、失われた場合に代替手段は無いというのであれば、
君の実装(というよりそのシステム全体)が駄目だろ、ってことになる。
(問題発生時の検出機構がないので危険)
とはいえ、常に全員が最新鋭の完璧システムを使えるわけもないのだから、
その場合は、それは懸案事項として挙がっており、予算が付けば改修されますって事なんだとは思うが。
デフォルトの名無しさん [sage] 2016/05/29(日) 15:26:36.97 :0W+JhSU+

しないよ。紙に。
紙に書いたものも正としたら、診療録が2倍になるでしょ。
そしたら、2倍の物を五年間保存するはめになる。
入力の間違いは、間違いとして明確に訂正をもって再度、訂正前の情報と共に保存するんだよ。
失われた場合に代替手段が無いって、そんなもの紙カルテでも火事で燃えたり、津波で流されたら終わりだよ。
だから、寸分のコピー劣化もなく複製できて、情報量が増えても物理的な量が増えない、デジタルな情報としてバックアップを他拠点に持っていける形にするし、それを保存するんだよ。
問題発生時の検出機構はあるよ。真正性の担保がそのもの。
とはいえ、それは医師がそう書いたならそれが正しいんだけど、なんにせよすべてをジャーナルとして保存してあるから、追えるし復元は出来る。

…おまえ業務系の経験無いんだろ。
デフォルトの名無しさん [sage] 2016/05/29(日) 15:59:45.12 :pBCN0dYY
あるソースを見ていたら、
setTimeout(func(), 0);
という記述を見たのですが、どういう効果がありますか?
func();
とやるとの同じだと思うのですが何か違うのでしょうか?
デフォルトの名無しさん [sage] 2016/05/29(日) 16:13:27.53 :KqqGQ0oS

回答ありがとう
こうしたいっていう要件があるわけじゃなく
ttp://router.vuejs.org/ja/nested.html
の説明で疑問に思った次第

ニュアンス的には
複数階層を同一ページなんてしない
→どうしてもするならパス構築するなんらかの仕組み(vueならv-attrあたり)
って感じなのかな
デフォルトの名無しさん [sage] 2016/05/29(日) 16:19:19.34 :uH1/jPAH


func()だとその場で実行される。
setTimeout(func(), 0)だと関数(正確にはクリックなどの
イベントハンドラ)が終わってから実行される。

setTimeoutを使った場合、関数が終わった後にすぐに実行されるわけじゃなくて、
暇になってから実行される。暇っていうのはブラウザがやれなければいけない
レンダリングなどの処理を行って何もしなくなってからということ。

だから
・クリックなどのイベント → func()実行 → イベントハンドラ終了
・クリックなどのイベント → イベントハンドラ終了 → ブラウザの処理 → func() 実行
という違いがある。
デフォルトの名無しさん [sage] 2016/05/29(日) 17:29:54.45 :s6IpqRgC

内容の真偽はともかく、そろそろ注意した方がいいんじゃね?
業務知識をこんなところに書くとか、社会人としての人間性を疑われてもおかしくないぞ。
デフォルトの名無しさん [sage] 2016/05/29(日) 17:34:17.73 :G8EDN3vd

それなりのブライドはあるけれども、散々他人をこき下ろしたあなたに謙虚さを持ってないとはいわれたくないなあ
あなたには謙虚さがかけらも感じられない

> ところが、左右測ったけど右だけ測れなかった、それは、測ったって事実は残さないとならん。
> だが、右目のなんとか、が測れなかったわけではなく、右目の結果自体がまとめて、無い。
「右だけ測れなかった」としておきながら、「測れなかったわけではなく、右目の結果自体がまとめて、無い」は意味不明
「測れなかった原因」がさっぱり書いてないのに「再トライして測れない、というわけでも無い」の根拠はどこにあるのか
「測らなかった」ならともかく、「図れなかった」のなら「測れなかった原因」を記録に残さないと同じ失敗の繰り返しになる
右目の計測結果については「計測不能」として備考欄にでも「測れなかった原因」を記録に残しておくのが妥当

というか、いきなりこの人は何を言い出してるんだろうね
null云々よりもundefinedの扱いに非難が集中していたと思うけど
デフォルトの名無しさん [sage] 2016/05/29(日) 17:38:12.13 :G8EDN3vd

func() の返り値となる関数オブジェクトが非同期に実行される
func() の返り値が関数オブジェクトではないのなら setTimeout は期待通りに動作しない
デフォルトの名無しさん [sage] 2016/05/29(日) 18:17:47.96 :eYOjmyco
const o = document.getElementById('hoge');
こういう風にdomをconstで変数に入れても大丈夫ですか?
o.innerHTMLを書き換えたりoの中の子要素が変化してもエラーにならないんですが・・・
constって書き換えるとエラーになるんじゃなかったんですかね?
デフォルトの名無しさん [sage] 2016/05/29(日) 18:27:43.87 :uH1/jPAH

書き換え不可能なCD-Rに、ttp://www.google.co.jp ってリンクが書いてあっても
それをクリックするたびに、表示される内容は変わるだろ?
それと一緒
デフォルトの名無しさん [sage] 2016/05/29(日) 19:30:52.11 :rcX9jYV5
変数に入れるというより、値への名付け。(共有渡し)
そのひも付けが固定化されるというだけで値の変化は関与しない。
デフォルトの名無しさん [sage] 2016/05/29(日) 20:10:17.52 :roFUTjZ8
結局undefined使うのはアリ?ナシ?

代入とか比較するのはダメ?
プロパティの有無を見るにはinやhasOwnPropertyで十分?
デフォルトの名無しさん [sage] 2016/05/29(日) 20:11:28.98 :qvzR6wN9

言っていることは分かるのだけど、それは常識的なことであって、ああそうですか程度でしかない。

そこではなくて、他の人が批判しているのは、(ガチの本番系で)君の実装は駄目だろ、ということなんだよ。
俺は実装を聞いて、多分本番系ではなくて傍系だと思った。だからそれもありだというスタンスだったんだ。
(出先で確認するためとか、或いは他システムで代替も出来る状態)
ただ、それが本当にガチの本番系なのなら、それはマジであり得ないくらい酷い仕様だよ。

だってプリミティブに状態を割り当てるとか、せいぜい5〜6個しか無いんだから、将来的にヤバイでしょ。
(というか最初から無理だと思うが、、、)
おそらくやたらある状態をstringでそのまま持っているっぽいけど、それだと検索もしづらい。
タグなりコードなりを割り付けておかないと、書き方の揺らぎだけで検索から落ちてしまう。
undefinedを残しても特段メリットもなく、デバッグがしづらくなるだけ。NaNについても同様。
だから本当に君が君の案件の状況を理解できていて、プログラミングの腕前もあるのなら、その態度はないんだよ。

最初から組めるのなら、ど素人でもしない程の酷い実装になっている。(というか逆にそれで組む方が難しい)
多分、これまで少しずつシステムを組み上げてきて、キメラ状態になっている物をそのまま使っているのだと思う。
一言で言うと、
> 単に古いからなし崩し的に使ってるだけだと思うよ ()
が多分当たってる。

冷静に考えてみればいい。今君はその案件の仕様を知っている。
そこでシステム刷新の機会があり、予算が十分付いたとして、今の実装を選ぶかい?
デフォルトの名無しさん [sage] 2016/05/29(日) 20:52:17.36 :pBCN0dYY

詳しい説明ありがとうございました。かなり分かってきました。

>func() の返り値となる関数オブジェクトが非同期に実行される
>func() の返り値が関数オブジェクトではないのなら setTimeout は期待通りに動作しない
と言う事は
setTimeout(func(), 0);
function func(){
  ...
  return "string";
};
これはダメで、
function func(){
  return function(){ 
  ...
  return "string";
 }
};
これならOKと言う事ですか?
デフォルトの名無しさん [sage] 2016/05/29(日) 20:58:12.35 :uH1/jPAH
の説明は意味不明で混乱するだけだと思っていたがやっぱりだったかw

は忘れたほうがいい。
意味不明だから。
デフォルトの名無しさん [sage] 2016/05/29(日) 21:22:43.29 :KqqGQ0oS

仕様的には第1引数は関数または実行したいコードの文字列

setTimeout(func, delay)
だとfuncそのものをdelay後に実行

setTimeout(func(), delay)
だとfuncを即実行してその戻り値をdelay後に実行

ってことだと解釈してる


というわけで前者("string"をreturnしているほう)はエラーが出ると思う
stringってなんやねんって
デフォルトの名無しさん [sage] 2016/05/29(日) 21:38:07.82 :bghshKck

それだけでは決められない。
例えばundefinedを直に扱わないようにhasOwn等を利用するスタイルにするとしたら、
他の部分でもそういう関数テスト型に揃えないとおかしい。
逆に言うとスタイルを揃えるのならどうだっていい。おかしくないように書け。
デフォルトの名無しさん [sage] 2016/05/29(日) 22:36:23.66 :9WOIUBG7

後者のコードで問題ないが、コールバックの返り値はどこにも返されない
もし、あなたがコールバック関数の返り値をどこかで受け取りたいのなら Promise のような仕組みを利用する事になる
関数の返り値が関数というロジックは同じ形式の関数を複数生成したり、関数スコープに値を閉じ込める場合に使われるわけだが、テクニックとして知っておくとコードの表現力が上がる
デフォルトの名無しさん [sage] 2016/05/30(月) 01:34:16.16 :Kp7czbyF

の言っているとおりで正しい。
加えて言うと、コーディング以前の段階でそれらは既に確定している。
逆に言えば、コーディング時に迷うようならそもそもそれがおかしい。(「設計」が出来ていない)
といっても多分君には通じないだろう。(その質問をすること自体がおかしい)
そこで平易に言い換えると、

その質問は、「車は右と左とどちらを走るのがいいの?」と等しい。
日本では「左」を走るように設計されているのだから、「左」なんだよ。
新車(新しい関数)をいくら導入しようが、「左」として設計されている場所では「左」なんだよ。
当たり前だが「右」として設計されている場所なら「右」になる。
「左」か「右」か選べるのは最初の「設計」時だけであって、基本それ以降は踏襲するしかない。
(コーディング時には決められているとおり記述するだけ)
変更するのは大手術が必要となる。



> 型の基本

> 揃えないとおかしい
レスをつまみ食いして悪いんだが、君達は何言語の出身?

前から思っているんだが、JavaScriptスレの連中は不思議なほど育っていない。
言語自体はいろんな事がお気楽に試せる面白い言語なので、普通にやっていれば普通に育つはず。
だからここまでヘボ揃いなのは確実に何かしらの理由があるはずで、
今ちょっと思っているのは、多分こいつらはダックタイピングに溺れているのではないかと。
具体的に言うと、 if (obj) がいいだ悪いだnullと比較すべきだいやundefinedも考えろとか永遠とやっているから
その先(データ/制御構造)に進めていないのではないかと思っている。
どうかね?
デフォルトの名無しさん [sage] 2016/05/30(月) 02:34:29.25 :ewV/OC7O
どうかねってお前がその「育ってない」やつの一人だろ
みりゃわかるよw
デフォルトの名無しさん [sage] 2016/05/30(月) 05:24:03.84 :NXhb520V
人間的に「育ってない」奴の多いこと多いこと。
デフォルトの名無しさん [sage] 2016/05/30(月) 08:05:58.62 :5tgErZe9
永遠?
もしかして延々っていいたかったの?
バカゆとり丸出し
デフォルトの名無しさん [sage] 2016/05/30(月) 08:35:34.56 :yN0jSRJK

> といっても多分君には通じないだろう。(その質問をすること自体がおかしい)
> そこで平易に言い換えると、
このスレでこの説明をしてくる奴よくいるが、平易に言い換えた説明が逆にわかりにくい場合がほとんど
物言いがいちいちくどくどしくて日本語力が足りてないというべきか
自分に酔った文章を書かず、簡潔に書け
デフォルトの名無しさん [sage] 2016/05/30(月) 09:30:20.73 :ewV/OC7O

まずお前から実践しろよw
デフォルトの名無しさん [sage] 2016/05/30(月) 09:34:30.19 :gPEMgWAi

知ったかぶってとか言ってるけど、最初からそう作ればいいだけだ
そういうのは設計や技術力が無いだけで手抜きとは言わん
デフォルトの名無しさん [sage] 2016/05/30(月) 09:36:25.96 :gPEMgWAi

僕が言いたかったのは永遠
デフォルトの名無しさん [sage] 2016/05/30(月) 09:41:35.60 :gPEMgWAi

正直真逆の印象
今は構造化プログラミング世代の言語でもLinuxカーネルのような洗練さが求められてる時代
このスレでお前さんだけ20年ぐらい遅れてる
デフォルトの名無しさん [sage] 2016/05/30(月) 09:42:51.04 :PwZzpqig
なるほど、node使いが、javascript(笑)と馬鹿にされる理由がわかったよ。今回は。
かつ、デザイナとしてもこいつらは害悪だしな。
放っておくと理由の伴わない感覚でのデザインしよる。
しかも、個人の「これは良くない」なんて感覚で。
デフォルトの名無しさん [sage] 2016/05/30(月) 09:45:48.62 :PwZzpqig
undefinedの扱いundefinedの扱いってやかましいけど、そのデータに入っていない、が、そのデータに本当に入れていない、で何がいかんのかなぁ。
入ってもないデータに、「入っていなかった」って書くと、それは「入っていない事を確認した」データになってしまうんだけどね。


法律で決まってる話だったり、厚労省の保険適用のものの話しかしてないから、この範囲は業務知識ですらないよ。
デフォルトの名無しさん [] 2016/05/30(月) 09:47:31.51 :gPEMgWAi
ついに無差別マシンガン打ち始めたな
盲目的に従ってるだけの無能が何勘違いしてふんぞり返ってるんだ?
デフォルトの名無しさん [] 2016/05/30(月) 10:06:14.30 :d3v2hj/G
永遠に繰り返すならあるが永遠とやるなんて日本語ねえし
デフォルトの名無しさん [sage] 2016/05/30(月) 10:21:11.46 :SiNcM0fD
なんかよくわからんけど、普通にforeachで処理できるようなデータ構造/Viewの実装仕様にしとけよと思った。
デフォルトの名無しさん [sage] 2016/05/30(月) 12:35:00.36 :REX8Pswd
var obj = {'視力': 1.5, '聴力': '100db'};
なら Object.keys
var array = [{name: '視力', value: 1.5}, {name: '聴力', value: '100db'}];
なら Array.prototype 系関数を使う
未調査などのステータスが必要ならプロパティを付け加えるだけ
undefined を使う必要はないな
デフォルトの名無しさん [sage] 2016/05/30(月) 12:36:07.87 :XUi+aAng
初心者なのですがオブジェクトxの何らかのプロパティを取り出す前にxがnullやundefinedでないことを確認する必要がありますよね?皆さんはどうしていますか?
デフォルトの名無しさん [sage] 2016/05/30(月) 12:36:56.29 :ysRBPLLz
自演してまで続けたいのかこのゴミ
デフォルトの名無しさん [sage] 2016/05/30(月) 16:54:37.32 :PwZzpqig

jsonっぽくすると
患者A:[{
 試験日:aaaaa ,
 シーケンス:bbbbb ,
 検査値:[
  {視力:{
   左右:右,
   近視度数:xxx,
   乱視軸:{値:yyy,単位:degree},
   乱視度数:zzz
  }}
  ,{カーブ:{
   ...
  }},
  {視力:{
   左右:左
   近視度数:zzz
  }}
 }
...
みたいなのかな。
       検査日..
氏名 左 近視度数
     乱視軸
     乱視度数
     カーブ
   右 ...
氏名 ....
みたいなグリッドに出すのに、無い場所の値を用意するだけで無駄。
定義されていない→無い、で充分。
デフォルトの名無しさん [sage] 2016/05/30(月) 17:20:40.14 :SiNcM0fD

別に検査してなければ項目なしでもいいんだけど、描画するコードでループの一番内側がセルの数に
なるようなループして、いちいちundefinedかどうか判定するようなロジックにするの?
デフォルトの名無しさん [sage] 2016/05/30(月) 17:43:51.15 :/sRU0ua4
乱視軸って何だ?
デフォルトの名無しさん [sage] 2016/05/30(月) 18:22:59.82 :ht1IyunN
凄くタイムリーな質問だと思うんですが
var a = [];
a.last = function () {
 let len = this.length;
 return 0 < len ? this[len - 1] : null;
}
みたいな、範囲チェック外はnull返すようなことは不要ですか?
これは仕様としてnullが必要だからそうしてるのではなくて、
まぁせっかくチェックしたんだから返すとしたらnullだろうな、
くらいの判断でそうしてます。

それとも a.last = function () {return this[this.length - 1];} で十分ですか?
「javascriptは単にundefinedを返してくれるので範囲チェックしなくていい」
っていうふうにポジティブな解釈していいですか?
デフォルトの名無しさん [sage] 2016/05/30(月) 18:31:32.90 :hoOpO478

nullを返すより0な
デフォルトの名無しさん [sage] 2016/05/30(月) 18:34:38.43 :SiNcM0fD

a[undefined]のときa.lastがundefinedになるということと、自分がなにをしたくてなにを求めているのかを
勘案すれば、どう実装すべきか決定できるのでは
デフォルトの名無しさん [sage] 2016/05/30(月) 18:48:17.09 :ht1IyunN

ありがとうございます。でもそれだと、
配列に整数を入れて使うとき悶絶しちゃうと思うんですがw
いや…それは結局nullのときでも一緒ですよね。
undefinedのときでも一緒ではありますね。
それらを代入できるという以上…。


ありがとうございます。
「a[undefined]のとき」っという表現が不勉強で分からなかったのですが、
いずれにせよ var value = a.last() のあとは単に
if (value) するくらいのことしか考えてませんのでundefinedで十分そうです。
デフォルトの名無しさん [sage] 2016/05/30(月) 18:53:42.83 :PwZzpqig

ループの内側の数とか言うより、描画用の項目定義は項目定義である。
医者が並べて見る時に、項目数が変わったり並び順が変わったら困るから。
それは医者次第だけど、内部的には
xpathみたいなもので指定する。

ごめん、軸度だな。

lastの用途次第だけど、popの仕様と合わせるならundefinedだと思う。
俺はpopしてundefinedじゃなければもう一回pushしておく。
そのためには、undefinedをpushしなくても良い実装にしておかなきゃならんけど。
デフォルトの名無しさん [sage] 2016/05/30(月) 18:59:41.70 :ht1IyunN

ありがとうございます。popに合わせておこうと思います。
あとはせっかくなんで使う側はせめて if (a.last())
するよりは if (a.last() === void 0) としてみようかと。
デフォルトの名無しさん [sage] 2016/05/30(月) 19:12:01.08 :/sRU0ua4

軸度とは
デフォルトの名無しさん [sage] 2016/05/30(月) 19:22:00.69 :PwZzpqig

なんて言うか、正直眼科は不勉強だけど、乱視がどの方向にあるかだよ。
メガネ作るとき、放射状の線見せられて、どの方向が濃いか聞かれるじゃん。
あれを答えてもらった方向に90°足した、何度の方向に対して焦点がずれてるかが乱視軸度だよ。
普通は度で持つけど、たまにラジアンで持ってたりする。
デフォルトの名無しさん [sage] 2016/05/30(月) 19:42:49.89 :4aFguERh
300すぎてまだやってんのかよ
頭おかC
デフォルトの名無しさん [sage] 2016/05/30(月) 20:20:03.03 :/sRU0ua4

そんな事聞かれるのかよ
知らなかった
デフォルトの名無しさん [sage] 2016/05/30(月) 21:22:29.72 :PwZzpqig

なんか話題提供してよ。
デフォルトの名無しさん [sage] 2016/05/30(月) 21:24:24.86 :PwZzpqig

こういったふうに、ただの視力検査でも、人によってやらないものもあるんだよ。
デフォルトの名無しさん [sage] 2016/05/30(月) 23:02:14.89 :Kp7czbyF

リクエスト無いみたいだし、もう無しで良いってことにさせてもらうぜ。
俺も大量にこのスレに書き込んだ。多分そちらにも多少は有効情報があっただろうし。
このスレは俺よりも20年先を行くスーパーハカーだらけらしいし、とりあえず引退してみよう。


多態しないのなら if (a.length>0) にしとけ


> 俺はpopしてundefinedじゃなければもう一回pushしておく。
おい!
ってかまじめな話、もうちょっと普通のやり方を覚えた方がいいぞ。
undefinedについて気になるのなら、他の知っている奴が回答するか、少し待つんだね。
それで出てこないようなら、俺のスレに聞きに来れば教えてやるよ。

とはいえ君は無駄に煽りすぎだ。だから出てこないかもしれない。
しかし、君は自力で辿り着けるレベルだから、ヒントを与えておこう。
君はNaNの仕様を知っている。で、それを便利に使っているわけだが、
あれはそういう仕様が必要だったからなんだよ。
だからNaNの正しい使い方を調べて、そこから推測すれば、
undefined許容/非許容のそれぞれの得失を理解できる。
その上でundefined許容を選択するのなら、それは「設計」なんだよ。やればいい。

ところで、俺および俺が立てたスレがどうにも気に入らない奴がこのスレに複数いるだろ?
君達がやるべき事は、に答えることだ。
そうしないと、俺のスレが流れ出しちゃうぜ?

あとついでだが、やはり君の案件は「正規」ではないよ。運用上「本番系」になっているだけだ。
読み出せないDBなんてあり得ないだろ?最初から何らかのビュワーが付いてる。
JavaScriptで受けるのなら、APIはJSON一択だろ?
今何かしら妙なAPIなのは、元々のビュワー用のAPIだからだよ。
そして何らかの理由で「正規」ビュワーが破棄され、今のビュワーになったんだよ。多分。
デフォルトの名無しさん [sage] 2016/05/30(月) 23:24:12.29 :ILfmqIwk
俺の予想ではarraybuffer
デフォルトの名無しさん [sage] 2016/05/30(月) 23:41:05.43 :Kp7czbyF

APIのことか?
ビュワーはexeまたはelf等バイナリで、古い機材では動くが、新端末では動かないから、JS化したと。
あり得るシナリオだね。
だとすればParserでラップして終わりだし、鯖は当然そのまま運用するわな。
今のところの証言と状況証拠とは一致するw
デフォルトの名無しさん [sage] 2016/05/31(火) 00:15:08.11 :KJUuPgzh

混乱を招く回答が追加されているので伝えるが、undefined を返す設計が妥当だと思う
例えば、Map.prototype.get は存在しないキーを検索したら undefined を返す
あなたがで気が付いたように配列の値に undefined が代入されていれば、値があるのかないのか区別付かない
では、なぜ Map.prototype.get が undefined を返す設計になっているのかといえば、未定義のキーを参照したら未定義値を返す暗黙の了解があるからだろう
オブジェクトでも存在しないプロパティを参照すれば undefined を返す
(少なくとも俺の知る限りでは)プロパティが存在して undefined が代入されている JavaScript の仕様は存在しない
よって、あなたが配列のプロパティに undefined を代入しなければ十分に区別できるだろう
それから蛇足ではあるが、のコードでは a === [,,,] な場合に意図せず、undefined を返す(の設計通りなら null を返すのが正しい)
Object.prototype.hasOwnProperty を使うことで期待通りの結果を得ることができるだろう

Array.prototype.last = function last () {
 var i = this.length;
 while (i && !this.hasOwnProperty(--i));
 return this[i];
};
console.log([1,2,,,,].last()); // 2
console.log([,,,,].last());   // undefined
console.log([].last());     // undefine
デフォルトの名無しさん [sage] 2016/05/31(火) 01:17:08.26 :l5PlpRpu

めんどくさいやつだなぁ。
煽りすぎた、って、煽られて沸騰した奴が言ったら二重どころか三重くらいにみっともないぞ。
煽って面白くなるだけ。

ビュワー用のAPIとか、だからさあ。。
電文だ、って言ってんじゃん。
電文、理解できない?知らないの?
のほぼそのまま、今もう一回そこ書くならもうちょい綺麗にパーズするけど、要は[通信開始][要素種][要素長]....[チェックサム][通信終了]みたいなもの。
そのまま、要素種が始まったら要素長取り出して、その中も要素種と要素長で出来てるから、って形。
正規もなんもないよ。妙なAPIって、これハード屋的には何一つ妙じゃないよ。
案件ってか、自社製品だけど、運用 上の本番系、ってどんな寝言だよ。
運用してるなら、それは即ち本番系だろ。
おまえ学生なの?コードとして落とした事無いとか、無意味な理想論語ったりとか、結構痛いよ。
デフォルトの名無しさん [sage] 2016/05/31(火) 01:56:46.28 :C610iy1k

あんさん2chフィルタ通して見ても尊大やし態度悪すぎやで
学生と比べて技術力高いわけでもなし、人を煽れる立場や無いやろ?
デフォルトの名無しさん [sage] 2016/05/31(火) 02:06:15.74 :C610iy1k
ちな電文はバイナリ転送形式の事やないで
JSONだろうと1メッセージ単位なら電文や
デフォルトの名無しさん [sage] 2016/05/31(火) 03:10:34.97 :24hp8pmx

お前、、、いちいち指摘するのが面倒なくらい色々読み間違ってるぞ、、、、
まあ俺の書き方もまずい点はあったが、、、

一応、俺は聞きに来れば答えるというスタンスだったんだ。
(出てこないってのは「他の知っている奴」のことであって、俺のことではないつもりだった。
ただこの点は俺の書き方が悪かった)
とはいえ、面倒だし、今回は他の連中も正解を知っていることが確定しているから、
天秤にかければ誰か答えるかと思ってな。
しかし、まあもう無理だと思うが。俺も面倒になってきたし。

学生の作品と企業製品では、検証レベルが全然違う。
undefined非許容というのは、まともに検証すれば自明なんだよ。だからみんな知っている。
逆にそれを知らないってのは、お前は検証してないって事なんだよ。
しかも医療系だろ?煽り抜きでヤバイと思うぞ。

> 電文
知らんよ。てかこれって一般用語か?ググッた限りはただの「パソコン」と同レベルの集合名詞だと思うが。
俺はWeb系ではないので、Web系のローカル用語は知らんよ。
XHRでArrayBufferなら最初からそう言ってくれたほうが良かった。
とはいえそこは本題ではないが。


おう、ありがとうよ。
俺は見ての通りこのスタンスだし、これくらいの粘着や煽りはいつも通りだ。
特段怒っているわけではないのだが、そう見えたのなら済まない。

というか、Web系の連中のこの自信はどこから来るのか、本当にかなり疑問だ。
お前ら、プログラミング一般からすると、かなり「ひよこ」だと思うぞ。
大口を叩くのは、10k行のコードを普通に取り扱えるようになってからにした方がいい。
そんな奴はこの界隈にはさらにいるのだから。
デフォルトの名無しさん [sage] 2016/05/31(火) 09:05:24.34 :l5PlpRpu

わざとこの態度だからなぁ。
逆に、沸点低いやつがよくわかっていいじゃん。
沸点低いやつが何言っても、反射的に言ってるだけなんだし。

おう。JSONとして流れてきたらそりゃJSONという電文だな。
バイナリパスカル文字列式可変長電文か。


undefined許容というか、ずっと読み間違えてない?
データとしてundefinedを入れるわけではなくて、
解釈した結果そのフィールドには値が入っていない→それをオブジェクトに起こしても、そのプロパティ自体が設定されていない、だよ?
可能な限りの、「データは入ってませんでした」を設定して回るほうが現実的で無いよ。

俺、あとウェブ系じゃないからね。
基本はDB屋だよ。
DBに入ってもない無い値を、入っていた事にされるのは許せんだけ。
デフォルトの名無しさん [sage] 2016/05/31(火) 09:19:18.21 :KJUuPgzh
> DBに入ってもない無い値を、入っていた事にされるのは許せんだけ。
誰もそんなことは言ってなかったと思うが、何が許せないんだろうな
このスレだと hasOwnProperty, forEach, keys で判定する処理は見かけたが
デフォルトの名無しさん [sage] 2016/05/31(火) 09:20:08.42 :EjSYfMvt
自演開始〜
デフォルトの名無しさん [sage] 2016/05/31(火) 09:40:27.01 :l5PlpRpu

そりゃいいよ。それはそれで。
最初に初期値で初期化しとけば良いとか、そういうアホに対しての反論だから。
デフォルトの名無しさん [sage] 2016/05/31(火) 10:16:07.42 :LdI3VN67

> DBに入ってもない無い値を、入っていた事にされるのは許せんだけ。
outer joinやcross joinについてはどう思うのかね
デフォルトの名無しさん [sage] 2016/05/31(火) 10:17:56.42 :d9LvTqQR
ttps://tpc.googlesyndication.com/simgad/16591006766826217033

これの答えは何なの?
デフォルトの名無しさん [sage] 2016/05/31(火) 10:21:15.79 :LdI3VN67

> ループの内側の数とか言うより、描画用の項目定義は項目定義である。
> 医者が並べて見る時に、項目数が変わったり並び順が変わったら困るから。
> それは医者次第だけど、内部的には
> xpathみたいなもので指定する。
なかなか話が通じないが、要は表示項目数×人数のループをしてundefinedかどうかを
判定するということだろ?表示項目数が30で20人分表示なら600回の処理をする。

そうじゃなくて、存在するデータ側を元に表示するか、あるいは全く別のアプローチをすれば
いちいちundefinedかどうかなんて判定は不要ではとうこと。
デフォルトの名無しさん [sage] 2016/05/31(火) 10:37:22.17 :wxR5ZVVT

無ければ困る事もわかるけど、凄く嫌い。
行列のDBは集合に対しての操作だと意識してないと最悪の結果に陥ると思うわ。


ふむ、では、その冴えたアプローチで綺麗にしたデータを、行と列、ないしはグラフにレンダリングする術を
提示してみてくれよ。
まさか、最初にレンダリング域全体のメモリを確保して、データ一つ一つに対して、RCや軸をデータから推測してその場所へデータを載せれば良い、最終的に残るのはundefinedだった項目だけ、とか考えてんのかな。
デフォルトの名無しさん [sage] 2016/05/31(火) 11:08:00.91 :LdI3VN67

> ふむ、では、その冴えたアプローチで綺麗にしたデータを、行と列、ないしはグラフにレンダリングする術を
> 提示してみてくれよ。
> まさか、最初にレンダリング域全体のメモリを確保して、データ一つ一つに対して、RCや軸をデータから推測してその場所へデータを載せれば良い、最終的に残るのはundefinedだった項目だけ、とか考えてんのかな。
グラフという単語がでてきたので話が根本的にかみ合ってない気もするが、基本的にはそういうことだよ。

テーブルで表示することを考えれば、項目が決まれば行あるいは列が決まり、人が決まれば列あるいは
行が決まる。それをメモリ上のデータ構造として作成して一気にテーブル化するとか、DOMを直接書き
換えるとか、あるいは、テンプレートを使うか、データバインディングしてModelが自動的にViewに反映
されるようにするとか、やりようはいくらでもある。

グラフのメタファーで言えば、定義域:0〜100, 値域:0〜100のグラフがあるとき、(1, 3), (2, 5)という二つの
データしか無ければ二回プロットすれば終了ということだよ。
デフォルトの名無しさん [sage] 2016/05/31(火) 12:25:58.83 :wxR5ZVVT

やりようはいくらでもある、な。
アホか。

データバインディングするにしても、いや、バインディングするならそれこそ、データは歯抜けでいいだろう。
データバインディングするってことは、ビュー側から、どの要素をとバインドすべきだし。

一気にメモリに載せてられるかww
デフォルトの名無しさん [sage] 2016/05/31(火) 12:33:55.20 :wxR5ZVVT
しかし、何故undefined(というか、値が無いもの)とnullを別物と理解するのがこれほど彼にとって難しいのかわからんな。
デフォルトの名無しさん [sage] 2016/05/31(火) 13:25:23.48 :LdI3VN67

なにか勘違いされてる気もするけど、歯抜けのデータが悪いとは一言も言ってないよ。
みたいなデータが戻るケースはありがちだし。

で、俺が疑問に思ったのは、undefinedかどうかを判定する必要があるということは、
こんなコード書くの?ってこと。
display_items.each (function(display_item) {
  data.users.each (function(user) {
    // block A: ここがループの一番内側
    output('<td>' + user.hasOwnProperty(display_item) ? user.item_value : '' + '</td>');
  });
});
これだと、いつでもdisplay_items.count * data.users.count回のhasOwnProperty()が呼び出される。
display_items.count * data.users.count = 1,000のとき、表示するデータ数が1個だったときでも
1,000回の実行が必要。

そうじゃなくて、逆からのアプローチはできないのという疑問。
逆というのは、「存在するデータを元にする」やりかた。
デフォルトの名無しさん [sage] 2016/05/31(火) 13:26:54.24 :LdI3VN67
君は君の問題を100%把握してるだろけど、俺(たち)は断片的な君の書き込み内容から
どのような問題なのかを想像することしかできないわけお。


> 一気にメモリに載せてられるかww
とか言われても、困惑するのみ。
デフォルトの名無しさん [sage] 2016/05/31(火) 13:49:49.08 :wxR5ZVVT

できないなら、自分には理解できない事だと納得して無意味な提案やめて寝ればいいのにり
デフォルトの名無しさん [sage] 2016/05/31(火) 13:54:56.19 :LdI3VN67

まぁ、ざっと読むと君の環境はこのスレ的には異端みたいだし、フロントエンドエンジニアでもないようだから
どうでもいいっちゃいいんだけどね。
デフォルトの名無しさん [sage] 2016/05/31(火) 14:14:48.43 :WCbBJW5L

想像でしかないんだけど表示項目1に対してデータ項目がn(n>0)って可能性とか

たとえば視力検査の欄に表示する際
{"視力左":1.0,"視力右":1.0}の両方があって初めて表示するとか

{"視力左":1.0,"視力右":1.0}→「おっけー」って表示
{"視力左":1.0,"視力右":null}→「右目は測りきれない4.0とか超いいかも」って表示
{        "視力右":1.0}→「左目測ってない」って表示
{"視力左":1.0        }→「右目測ってない」って表示
{                }→「視力検査してないっぽい」って表示
デフォルトの名無しさん [sage] 2016/05/31(火) 14:29:29.32 :mikttA8+
その例はちょっと良くないが、言いたいことはあっている。
undefinedはシステムからの処理上の値が無いですよという知らせ。
nullは誰かが明示的にそれを表明したもの。
デフォルトの名無しさん [sage] 2016/05/31(火) 15:57:03.36 :wxR5ZVVT

あー、それ一番的を射てる。
デフォルトの名無しさん [sage] 2016/05/31(火) 18:51:35.17 :znL0FvMW
jsやっている人はc、c++などのnullしかない言語ではundefinedが無いのはどうするのですか?困りますよね?
デフォルトの名無しさん [sage] 2016/05/31(火) 19:40:15.04 :e360ttrJ
undefinedを値として使ってるバカなんて知るかよ
大多数の人間はnull返せハゲって思ってるっての
デフォルトの名無しさん [sage] 2016/05/31(火) 20:00:07.25 :JD+3IcFi

ありがとうございます。

ちょっと本題から逸れるんですが、[,,,] の中身が新鮮ですね。
lengthは3で、キーは何も無いと言う。
一見、{0:undefined, 1:undefined, 2:undefined, length:3}
こういう中身になってていいじゃないかと思うんですがそうはしないんですね。
いや、まぁどうでもいいんですが。

あ、次にpush('foo')しときにlength見て{3:'foo', length:4}になるから嬉しいのか。
lengthだけ持ってても十分なのか。なるほどなるほど。
デフォルトの名無しさん [sage] 2016/05/31(火) 20:32:52.55 :wxR5ZVVT

nullしかない言語は、dbNullを扱えるようになってるような。
デフォルトの名無しさん [sage] 2016/05/31(火) 22:33:17.75 :C610iy1k

末端に判定ロジック大量に積んでるのか
ウンコですね
デフォルトの名無しさん [sage] 2016/05/31(火) 22:51:11.93 :ZB9BdGtV

そういった言語では例えば存在しないプロパティにアクセスすると例外となるので必要性が薄い。
JSがスクリプト言語だからこそ映える設計。


ぶっちゃけ歯抜けはよほどの場面じゃないと推奨しない。
言語エンジンの最適化試行ぶち壊しで気持ち悪い。
あと、Array.prototype.lastなんて夢でも死んでも使わないように。
その機能の標準化が一番危うくてデリケートで予測が付かない段階にきてる。
今最もprototype下に自作してはならない機能の1つ。
デフォルトの名無しさん [sage] 2016/05/31(火) 23:04:26.90 :VEM8svzW

> lengthは3で、キーは何も無いと言う。
[,,,] は Array.prototype 系と for 文で走査プロパティが異なるので注意が必要だ
Array.prototype.forEach はプロパティが存在する値のみを走査する為、[,,] では何も走査しない

[,,,].forEach(function (value) { console.log(value); }); // コンソールに何も出力しない
[undefined,undefined,undefined].forEach(function (value) { console.log(value); }); // undefined を3回出力する

少し、話がそれるが、プロパティの存在する値にだけ処理を行うというのは重要なことだ
の例でいえば、次のように書けるだろう
ttps://jsfiddle.net/b1x6nohm/
対象プロパティが String 型なので falsy な値として '' を使用している
null を使うのなら対象が Object 型である必要がある
デフォルトの名無しさん [sage] 2016/05/31(火) 23:13:56.84 :C610iy1k
これもう議論にならんやろ
本人以外は皆仕様知っててこの態度なんやし
デフォルトの名無しさん [sage] 2016/05/31(火) 23:17:06.49 :VEM8svzW

でprototype拡張されていなかったのでいわなくても伝わるだろうと思って伏せていたが、Array.prototype.last はあくまでも便宜上のサンプルねので念のため
Array.prototype 拡張は将来的に同名プロパティが定義されたときに互換性が崩れるのでお勧めしない
静的関数や独自オブジェクトによる拡張で代用するのが妥当だろう
何らかの理由でどうしても定義したいのなら一昔前のfor-inによる汚染問題を解消するために Object.defineProperty を使うべきだ
Object.defineProperty(Array.prototype, 'last', {writable: true, enumerable: false, configurable: true, function last () {}});
デフォルトの名無しさん [sage] 2016/05/31(火) 23:19:21.13 :VEM8svzW
は SyntaxError だったので訂正
Object.defineProperty(Array.prototype, 'last', {writable: true, enumerable: false, configurable: true, value: function last () {}});
デフォルトの名無しさん [sage] 2016/05/31(火) 23:20:01.54 :wxR5ZVVT
まぁ、何度、経験ないだろ、なんて煽ってもそこだけ返事がないところみると、
「本人以外は全員わかってる」んだろうけど、笑えるわ。
デフォルトの名無しさん [sage] 2016/05/31(火) 23:38:40.59 :24hp8pmx

お前はいつか事故るぞ。投薬履歴だって表示が間違っていれば死人が出るんだ。
Web系の「リロードすれば万事おk」のノリでは駄目なんだ。お前はそれですらないが。

ただ、検証を手抜きすれば単価はいくらでも落とせるわけで、このように、
一通りの知識すらない馬鹿を雇って一通りの検証すらせずに出荷する悪徳業者をどうするかは
今後の課題になるのだろうね。
契約上、ソフトウェアのバグについては責任追及できないようになっているのだろうけど、
これまでソフトウェア産業が培ってきた常識すら知らない奴がコーディングし、
まともな検証すらせずに出荷するというのは、業務上過失致死/偽計業務妨害に問われるべきだ。
AS IS WARRANTY を完全に悪用している。

とはいえ、普通に考えればこういう悪徳業者はいつか出てくるわけで、不思議ではない展開だ。
死人が出てこの構造が判明してからでないと、行政は動かない。
願わくば、お前がその最初の犠牲者となり、自業自得を以て業界の浄化に貢献してくれ。

というわけで君には「人殺し君」というあだ名をあげよう。
多分君は既に人を殺しているか、今後人を殺す。
無知も罪なのだよ、業界によっては。

それはさておき、ここに来て気づいたが、 AS IS WARRANTY って性善説ベースだったんだな。
こりゃ性悪説ベースの何かを導入しないと駄目だ。
とはいえ資格なんて糞の役にも立たない業界だし、なかなか難しい。
調べた限りではPL法も適用外だし、悪徳業者はやりたい放題だ。
(ただここまで来るとマ板の話題でスレチだが)

話を聞いている限りこいつは鯖屋で、ソフトウェアの知識は一切無い。
フリーソフト等を組み合わせれば悪徳零細学生レベルでも見目麗しいシステム()を構築でき、
素人を騙せる時代になった。そしてそれがすべて自分の能力で出来たものだと勘違いしている。
(組み合わせる能力はあるが、使われているソフトを記述する能力は無いことに気付いていない)
とはいえ、現実問題として、これを顧客に見抜けというのは不可能だろう。
なんだかなあ。
NAS6 ◆n3AmnVhjwc [] 2016/05/31(火) 23:43:38.27 :ZnwkUC0d
ttp://nas6.main.jp/htm000.htm
x3domのサンプル集とライブラリ
完璧な2/3D行列計算ライブラリに仕上がりました

x3domは簡単でいいよ
ポリゴンテスト&ライブラリヘルプ.htmでも見てください
完璧に計算されています^^
デフォルトの名無しさん [sage] 2016/05/31(火) 23:44:24.50 :+fB1tt6W
> 静的関数や独自オブジェクトによる拡張で代用するのが妥当だろう

そうやって作られたのがUnderscore(lodash)というライブラリで
わざわざ作らずとも、 _.last([1,2,3]) で取得できるんだよ。
デフォルトの名無しさん [sage] 2016/05/31(火) 23:50:20.60 :C610iy1k

RASISすら守っとらんみたいやし
RDB使ってる現場やけど、そんな場当たり的な実装の経験ないで
普通はリクエスト間違ったら全部エラーやしfail safe前提や
あんさんが無知すぎるんやで?
デフォルトの名無しさん [sage] 2016/06/01(水) 00:02:09.20 :J/AVgXyA
DB屋ならjoinできないようなデータ構造の時点で問題あると気づくやろ
なんでそんな無理して知ったかぶるんやろ
デフォルトの名無しさん [sage] 2016/06/01(水) 00:03:48.85 :XVpspPb0

行列のライブラリはどれが有名か知らんけど、
このglMatrix.jsはスター多くていいんじゃないかな?

ttps://spphire9.wordpress.com/2011/04/05/javascript%E3%81%AE%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E3%80%81%E8%A1%8C%E5%88%97%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA/

> 前に調べたときは全然見つからなかったけど、WebGL関係で調べていたら結構見つかったのでメモ。
>
> glMatrix.js
> ttps://github.com/toji/gl-matrix
> ttp://glmatrix.net/
> webgl-mjs ttp://code.google.com/p/webgl-mjs/
> Sylvester ttp://sylvester.jcoglan.com/
> CanvasMatrix.js khronosのWebGLのチュートリアルで使っているがどこでダウンロードできるのか分からなかった
> glMatrix.jsがシンプルなのでオススメ。
>
> 2014/01/19追記
> glMatrixの公式サイトができてた。
デフォルトの名無しさん [sage] 2016/06/01(水) 00:04:59.00 :XVpspPb0

> DB屋ならjoinできないようなデータ構造の時点で問題あると気づくやろ

どういうこと?
nullがあるとjoin出来ないとかそういう話?
なわけないよな。left joinとかあるわけだし。
デフォルトの名無しさん [sage] 2016/06/01(水) 00:11:15.87 :XVpspPb0
あとすべての項目をjoinに使うわけでもないし。
NAS6 ◆n3AmnVhjwc [] 2016/06/01(水) 00:18:19.22 :CPNT1MjH

ライブラリを作る前に探したけど
回転行列←→回転ベクトル、回転行列←→四元数
この相互変換を扱ってるのは見当たらなかったよ
デフォルトの名無しさん [sage] 2016/06/01(水) 00:19:48.60 :XVpspPb0

興味ない。
デフォルトの名無しさん [sage] 2016/06/01(水) 00:20:56.87 :XVpspPb0

もう少し丁寧に言うね。
githubで公開してもいないようなものを使う気にはならない。
デフォルトの名無しさん [sage] 2016/06/01(水) 00:21:24.97 :iqAUu6wp

なんだけど挙げたデータ構造は
あくまで俺がてきとーに想像しただけなので
それで誤解与えてしまってたらごめん
デフォルトの名無しさん [sage] 2016/06/01(水) 00:42:46.14 :JLTaiLCk

多分そちらも気づいていると思うけど、人殺し君には「信頼性を上げる」という感覚がないんだ。
だから俺たちが何を問題視しているのか、全く通じていない。

ただ、当たり前のように信頼性を上げようと努力してきた側からすると、
業界全体が悪徳業者に対して全く無防備だったってのが結構ショックなんだよね、、、
というかよくこれまでこれで回ってたなと。
デフォルトの名無しさん [sage] 2016/06/01(水) 00:43:15.64 :r3hfxk1X

必死すぎて笑えるw
おつかれさん、底辺学生さん。
デフォルトの名無しさん [sage] 2016/06/01(水) 00:46:19.01 :XVpspPb0

そちらってお前誰だよw
デフォルトの名無しさん [sage] 2016/06/01(水) 01:00:31.81 :+8Has+9Z

あなたは x3dom.js と比較して何がどう「完璧」なのかを説明する必要があると思うのだが
ドキュメントも簡易説明文のみで x3dom.org と比べれば雲泥の差があるように思う
ttp://www.x3dom.org/
デフォルトの名無しさん [sage] 2016/06/01(水) 01:02:19.24 :J/AVgXyA

関連があるのに関連を付けずに
見つからない場合もright joinと同じ事するんやろ?
破綻しとるやん
デフォルトの名無しさん [sage] 2016/06/01(水) 01:05:25.70 :XVpspPb0

関連つければいいだけだよね?
まさか片方にnullが入っていると関連がつけられないとでも?

left joinでもright joinでも、別に使うことに問題無いし
問題ないから標準機能なのだし、どこが破綻?

DB素人なら、すいません、素人だから
勘違いしてましたって謝れば許してあげるよ?w
デフォルトの名無しさん [sage] 2016/06/01(水) 01:10:30.88 :+8Has+9Z
言い争っている人、所詮は机上の空論なのでコードを書いて語り合ってくれ
各自にとっては空論ではないのであろうが、持論が相手に正しく伝わっているとは思えん
デフォルトの名無しさん [sage] 2016/06/01(水) 01:12:17.78 :XVpspPb0

今はRDBMSの超基本レベルことを分かってないやつが相手みたいだから
そこまでやる必要ないかなw
デフォルトの名無しさん [sage] 2016/06/01(水) 01:22:41.36 :JLTaiLCk

いや十分通じてるよ。表面的には。
ただ、根本的な部分で人殺し君は分かってないから、通じない。
とはいえこれは、ここでなんとかなる話ではないよ。これではどうやっても平行線だ。
デフォルトの名無しさん [sage] 2016/06/01(水) 01:25:01.12 :+8Has+9Z

お互いに相手が低レベルと思っているように読めるんだがな
相互理解が目的なら言葉を選べ
馬鹿にしたいなら他の人の邪魔になるから口を慎め
デフォルトの名無しさん [sage] 2016/06/01(水) 01:31:01.82 :XVpspPb0

質問に答えられない方はどちらか?
それを見ればわかるでしょ。

まだ、レス帰ってきてないよw
デフォルトの名無しさん [sage] 2016/06/01(水) 02:20:52.04 :r3hfxk1X
なんか敵を見間違えてるんじゃねえの?
余裕無い奴は大変だな。
そりゃ、せっかくundefinedなのを無意味にnullで初期化とかドヤ顔で言っちゃうわけだ。
デフォルトの名無しさん [sage] 2016/06/01(水) 09:21:35.68 :jwFJ9KH2
こんなにもめるんならundefinedは廃止してnullのみにすべき。
デフォルトの名無しさん [sage] 2016/06/01(水) 09:26:09.02 :P2FwW4b5
社会から未定義の連中が未定義値に物申すとか1万年早い
デフォルトの名無しさん [sage] 2016/06/01(水) 09:33:08.65 :wzx/dknC
嫌なら定義するなよ
デフォルトの名無しさん [sage] 2016/06/01(水) 13:31:22.60 :KEu/R4xX
まぁ、null統一、すべてのプロパティは埋めて、ビューから相当するデータ座標を取らずに、データからビューを定義しよう、そのためには、
ビューの状態全体に対して、必要か不必要かは置いておいてすべてのビューが表示しうる形での裏画面を持っておこう、
って大富豪の主張がありうる、って話だよね。
面白い事に。

XMLDBとか、KVSとか、多次元配列DBに向いてない人なんだろうけど。

そもそもJOIN出来ないからなんたら、なんていう人は、そもそもそういうDBに向いてないけど。
デフォルトの名無しさん [sage] 2016/06/02(木) 01:24:38.27 :g2tgMhPe

犬の糞と猫の糞。
デフォルトの名無しさん [sage] 2016/06/02(木) 02:42:13.57 :XqRYmg3l

関連つければいいだけだよね
その通り
つけてないけど
デフォルトの名無しさん [sage] 2016/06/02(木) 02:43:59.04 :XqRYmg3l
自分の説明してる仕様で実現できてる事が何かも把握してないみたいやね
こりゃ周りの奴らは大変やで
デフォルトの名無しさん [sage] 2016/06/02(木) 08:36:48.79 :8VCgKElP
前提知識で合意のとれてない議論に意味があるのか
端から見たらどちらも相手を見下す事が主論になってる
どちらの方が正しいとか、もうどうでもいいから
デフォルトの名無しさん [sage] 2016/06/02(木) 08:39:24.52 :I85Xb9LU
バカに議論はできない
壁に向かって話してろゴミ
デフォルトの名無しさん [sage] 2016/06/02(木) 08:51:25.41 :0vkxmVo8
脳味噌がnullってことで解決
デフォルトの名無しさん [sage] 2016/06/02(木) 09:15:26.93 :oJukbexp
nullほど。納得
デフォルトの名無しさん [sage] 2016/06/02(木) 13:24:04.29 :BtmdPReZ
結局nullは要るとして、undefinedが無ければ代わりにissetみたいなのが要る。
内部を露出して活用を許すのと、メタ的に内部に干渉するの、どちらが良いかという話。
デフォルトの名無しさん [sage] 2016/06/02(木) 13:58:00.69 :tGqw3Zei


上手いこと云うな
オレのコピペにしますん
デフォルトの名無しさん [sage] 2016/06/02(木) 15:58:54.65 :gjH3g/Dc

その通り。特に動的言語なら。
mallocした結果をどの型として使うか論にも近いけど。
デフォルトの名無しさん [sage] 2016/06/02(木) 16:21:31.47 :0vkxmVo8
nullなことばっかり言ってるんじゃないよ
デフォルトの名無しさん [sage] 2016/06/02(木) 16:42:37.48 :T7FoO03Y
(´∀`) ぬるぽ
デフォルトの名無しさん [sage] 2016/06/02(木) 16:44:57.76 :tGqw3Zei
ガッ
デフォルトの名無しさん [sage] 2016/06/02(木) 17:03:14.89 :E1oCL6WJ
      .r'"''、          _,,,.. -ー''''''ー、   ./゙'=@._ ―ー-,        /\        /\         ┏┓┏┓
  .,iー-、 .゙l  l,,_     /      _  . l   !  .!./     ゝ-、     /:::::::ヽ____/::::::::ヽ、       ┃┃┃┃
  .!,  .゙'"     ヽ.    ヽ,,,,.. -''ン゛  .}   .|  .゛ ,,、  〔゙|.ο !    丿 ::.__  .:::::::::::::  __  ::::ヽ_      ┃┃┃┃
   l   , r  .iヽ  l     . ,/   .,./    l   / _|  ‘'ヽ /    / /。 ヽ_ヽv /: /。ヽ  ::::::ヽ     ┃┃┃┃
  ./   .l/  / .!  .!  .... ‐゛    ‘''-,   .!  .i| ´     |┏━/ / ̄ ̄√___丶  ̄ ̄\  ::::|━━┓┃┃┃┃
  .l゙ ,    .i′亅  !  /   .x;;'''''''、 . !   ! │ゝ―i  .厂 ┃  | .:::::::::: / / tーーー|ヽ     ..::::: ::|   ┃┃┃┃┃
 │ i゙.l   ,ト--″ l  .!_ .,,、 ゙'、 |  .,!  !  .|., ―┘ /  ┗━| .:::::.  ..: |    |ヽ        ::|━━┛┃┃┃┃
  .! .∨   .,..、   l゙   .| .l. l  ∨  !  .|  .] i‐ 、  .ヽ、   | :::    | |⊂ニヽ| |      :::::|      ┗┛┗┛
  . l.  : ,i┐゙‐'゛   ゙l    l. `″   /    .!  .! ゝ./    . l //| :    | |  |:::T::::| !      .::|     ┏┓┏┓
   `''''" ヽ,,,,,,..-'―′   \,,,,,,,,,.. '"     ゝ ノゝ、,,,,,./ -.../// \:    ト--^^^^^┤      丿 \ . ┗┛┗┛
デフォルトの名無しさん [sage] 2016/06/02(木) 17:41:24.84 :tGqw3Zei
      ∧
    <  >_∧
= ()二)V;・∀・)
    \ヽ ノ )
    ノ(○´ノ  ガッ
   (_ノ(__)
デフォルトの名無しさん [sage] 2016/06/02(木) 19:45:18.42 :foj8oVvi
                     __        、]l./⌒ヽ、 `ヽ、     ,r'7'"´Z__
                      `ヽ `ヽ、-v‐'`ヾミ| |/三ミヽ   `iーr=<    ─フ
                     <   /´  r'´   `   ` \  `| ノ     ∠_
                     `ヽ、__//  /   |/| ヽ __\ \ヽ  |く   ___彡'′
                      ``ー//   |_i,|-‐| l ゙、ヽ `ヽ-、|!  | `ヽ=='´
                        l/| | '| |!|,==| ヽヽr'⌒ヽ|ヽ|   |   |
  ┏┓  ┏━━━┓              | || `Y ,r‐、  ヽl,_)ヽ ゙、_ |   |   |.         ┏━┓
┏┛┗┓┗━━┓┃              ...ヽリ゙! | l::ー':|   |:::::::} |. | / l|`! |i |.        ┃  ┃
┗┓┏┛     ┃┃┏━━━━━━━.j | l|.! l::::::ノ ,  ヽ-' '´ i/|  !|/ | |リ ━━━━┓┃  ┃
  ┃┃    ┏━┛┃┃       ┌┐   | l| { //` iー‐‐ 'i    〃/ j|| ||. |ノ        ┃┃  ┃
  ┃┃   ┃┏┓┃┗━━━.んvヘvヘゝ | l| ヽ  ヽ   /   _,.ィ ノ/川l/.━━━━━┛┗━┛
  ┃┃  ┏┛┃┃┗┓     i     .i  ゙i\ゝ`` ‐゙='=''"´|二レ'l/″           ┏━┓
  ┗┛  ┗━┛┗━┛    ノ      ! --─‐''''"メ」_,、-‐''´ ̄ヽ、              ┗━┛
                   r|__     ト、,-<"´´          /ト、
                  |  {    r'´  `l l         /|| ヽ
                  ゙、   }   }    | _|___,,、-─‐'´ |   ゙、
                    `‐r'.,_,.ノヽ、__ノ/  |  |      |、__r'`゙′
                            |   |/     i |
                             |          | |
デフォルトの名無しさん [sage] 2016/06/02(木) 23:25:10.25 :3RkkmY6H

> 関連つければいいだけだよね
> その通り
> つけてないけど

ってことは、ORM使ってないのか?
ORM使ってプログラム言語でモデルを定義していってその関連もモデルで定義する。
その結果をマイグレーション機能を使ってデータベースに反映、
ついでにER図も生成しちゃうっていうのが今時の開発でしょう?

モデルに関連を定義しておかなければ、あるモデルから関連している
別のモデルのデータを取得するのができないわけで開発効率下がりまくりでしょ?
(厳密に言えば手動でコードを書けば取得できるがそれだとORMを使う意味がない)
デフォルトの名無しさん [sage] 2016/06/03(金) 00:32:44.38 :1GfBsi1m
出尽くし感があるので纏めておく。

人殺し君は悪徳業者に勤めており、検証不十分のソフトウェアを出荷している。
そのソフトウェアでは競合系のバグ等は完全に放置されている。
平たく言えば、間違った内容/値が表示される事が偶に発生する。
とはいえ、再現確率は低く(1日〜1週間に1回程度)、再び確認すればほぼ常に正しい値が表示されるため、
「見間違いだった」として処理されているはず。
結果、このバグによって発生した医療ミスは本当は医者のミスではないのだが、
「医者の過労または不注意による見間違い」として処理される。
また医療ミス自体も隠蔽される方向のため、二重に隠蔽されることになる。
医療系は単価が高いため、悪徳業者にとっては甘い汁状態だ。
医療関係者は金を吸い取られた上に、ぬれぎぬを着せられている可能性がある。

もし仮に医療系の人がこれを見ていて、「表示がおかしかった」事に気づいたことがあった、
また「最近『見間違い』事故が多すぎる」というときは、この類の悪徳業者の製品でないか確かめた方がいい。
悪徳業者の技術レベルは信じられないほど低い。普通のIT関係者なら絶句する。
JavaScriptの場合ソースは確認可能な事が多いので、非公式にでも知り合いのIT実務者を頼り、
ソースを確認してもらえば、すぐに判明すると思う。

このスレのこれまでの議論およびここに記載した情報で十分だと思うが、
もしもっと詳細を確認したい医療関係者がいれば、
以下スレで問い合わせてくれれば対応するかも。
> ttp://echo.2ch.net/test/read.cgi/tech/1449440793/


技術的には、
undefinedの何が問題なのか自分で判断できないような馬鹿はundefinedを活用(キリッするなって事だ。

では続きをどうぞ。
デフォルトの名無しさん [sage] 2016/06/03(金) 00:47:09.21 :ZgLr+wQe
JSONってundefinedがないけれど、
じゃあ存在しない値にアクセスした時各言語ではどんな挙動をするのだろう?
デフォルトの名無しさん [sage] 2016/06/03(金) 01:00:55.33 :4VbjelCP

例外が発生する
デフォルトの名無しさん [sage] 2016/06/03(金) 01:57:17.93 :qC3of5q8
そうじゃない言語もあるんじゃないの?
デフォルトの名無しさん [sage] 2016/06/03(金) 08:37:03.10 :yTlzgE6f

例えば?
デフォルトの名無しさん [sage] 2016/06/03(金) 08:38:53.12 :oIsEebnB
おまえの頭ん中
デフォルトの名無しさん [sage] 2016/06/03(金) 08:41:45.97 :WTDDDw9O

検証不十分とか人殺しだとか言ってくれるよなぁ。
試験中ですら、稀にも発生したらハンコリレーで大変な目に遭うよ。
医療ミスがどうとか言ってるけど、隠蔽されるわけないじゃん。
見間違いだった、もあり得ないよ。

お前ら一般側には隠蔽されているように見えるんだろうけど、製造業のラインからの不良品混入程度に、委員会とかで裁かれるよ。
表示内容の確認に対して不足があった、って話になるだろうね。
これ判例もある。医者の判断と機械の値が一致しない場合は、医師の判断が優先され、かつ医師がその間違った値を信じ込んだ場合は「治療行為が行えるのは医師のみ」という原則に則ると、医師が医師である理由を満たせていない、ってやつ。


undefinedはたくさん存在してるじゃん。
書いてないだけで。

例外が発生するってのは良くない動きだと思うけどな。コスト高い。
デフォルトの名無しさん [sage] 2016/06/03(金) 08:55:59.89 :e85j2qyA
所詮は命令、人それぞれ
自己満足で解決
デフォルトの名無しさん [sage] 2016/06/03(金) 13:00:26.72 :D6MzcBW9

このバカはその手動で書くと言うのを良しとしてるんやで
そしてあと付けで関連つければいいだけだと抜かしよる
付けとらんから問題なんやろ
デフォルトの名無しさん [sage] 2016/06/03(金) 13:11:35.19 :WTDDDw9O
どういう意味だろ、手動で書くとは。
俺はそれを言った覚えは無いが、言わなくてもデータ:DB:ビュー全体に対するマッパー自体の実装の話だけどね。
デフォルトの名無しさん [] 2016/06/03(金) 13:21:31.04 :D6MzcBW9

ORMで関連付けてるならundefined云々での分岐なんて出るわけないやろ
その場しのぎで適当言いすぎやろ頭おかしいんちゃうか
デフォルトの名無しさん [sage] 2016/06/03(金) 13:35:21.14 :WTDDDw9O

当たり前じゃん。多次元DB触った事無いのかな?
クラスベースな考え方してるからそういう思考なんじゃない?
undefinedで分岐、って考えるから頭追いつかないんじゃないかな。
値は、「定義されていないか、オブジェクトか、値か、値として表すことのできるオブジェクトか、null」。シンプルじゃん。
javascript屋ならもっと理解早いと思うんだけどな。
HTMLのスクレイピングそっくりなんだけど。
デフォルトの名無しさん [sage] 2016/06/03(金) 16:01:53.05 :LK0McYVX

>HTMLのスクレイピング

すまん。
言葉の意味が分からない。
つまり、どういうこと?
デフォルトの名無しさん [sage] 2016/06/03(金) 16:54:41.91 :iJVPPkrY

> 値は、「定義されていないか、オブジェクトか、値か、値として表すことのできるオブジェクトか、null」。シンプルじゃん。
これをシンプルだと思ってる奴は何脳なんですかね
デフォルトの名無しさん [sage] 2016/06/03(金) 17:23:55.54 :WTDDDw9O

誤解のしようが無いでしょ。
その項目が無かった、は「その項目が無かったクラス」のインスタンスが格納されている、とか、
「その項目はあるけどまだ結果は出ていない」クラスのインスタンスが格納されている、とか、
定義しだすときりがないと思うけど。

npmに登録されているモジュール全体の空フォルダがnpm initしたら作成されたらinode一瞬でなくなるじゃん。
かつ、空ディレクトリ作って準備してても、そのモジュールが更新されたら準備とは異なるし。
さらに、requireは別にpackage.jsonに依存せず使えるよね。
存在チェック、中身のパーズ、その他を経て、成功か失敗か、別のフォルダを見るのか決まるっしょ。
undefinedは、そのディレクトリのない状態。
nullは、module.exportがnullの状態。
デフォルトの名無しさん [sage] 2016/06/03(金) 17:31:46.02 :iJVPPkrY

で、お前は何脳なの?
デフォルトの名無しさん [sage] 2016/06/03(金) 17:39:25.42 :D6MzcBW9

その多次元DBはテーブル同士の関連必須やで?
あんさんの言ってる仕様はキーそのものが取得できない仕様やから
ORMなんて出しとるけど全く関係ない話やろ
デフォルトの名無しさん [sage] 2016/06/03(金) 17:41:36.14 :hMBisG69
    ∩ _rヘ       / ヽ∩
  . /_ノυ___ιヽ_ \
  / /  /⌒  ⌒\   ヽ \
  (  く  /( ●)  (●)\   > )  お前らの頭は
  \ `/::::::⌒(__人__)⌒:::::\' /
    ヽ|     |r┬-|     |/
      \      `ー'´     /

 (( (ヽ三/)        (ヽ三/) ))
  .  (((i )   ___   ( i)))
  / /  /_ノ   ヽ_\   ヽ \
  (  く  /( ●)  (●)\   > )  くるくる
  \ `/::::::⌒(__人__)⌒:::::\' /
    ヽ|        ̄      |/
      \              /


   ∩∩∩    .    ∩∩∩
  .∩_:||_:|_:|        |_:||_:|_:∩
  │ ___  つ      ⊂  ___ │
   ヽ   ノ  ___   ヽ  ノ
  / /  /_ノ  ヽ、_\   ヽ \
  (  く   o゚((●)) ((●))゚o   > )  パーだおwwwwwwwwwwwwwwwwwww
  \ `/::::::⌒(__人__)⌒:::::\' /
    ヽ|     |r┬-|     |/
      \    | |  |     /
          | |  |
           `ー'´
デフォルトの名無しさん [sage] 2016/06/03(金) 17:43:47.98 :D6MzcBW9
説明が酷すぎるやろ
なんやこれわざとやってんのか?
デフォルトの名無しさん [sage] 2016/06/03(金) 17:48:26.82 :cxSjYB6R
なんでバカに構うの?
おまえもバカなの?
バカ同士気が合うんだな
デフォルトの名無しさん [sage] 2016/06/03(金) 18:46:51.17 :qTHUaoua
類は友を呼ぶ
デフォルトの名無しさん [] 2016/06/03(金) 19:43:22.52 :1XJ7uNxl
初心者です。

jsonを受信しようと組んでみましたが、うまくいきません。
ブラウザはFireFoxで、FireFoxのスクラッチパッドで試しています。


var req = new XMLHttpRequest();
var requestUrl = 'ここにアドレス';

req.onreadystatechange = function()
{
if(this.readyState == 4 && this.status == 200) {
console.log(this.responseText);
}
}

req.open( 'GET', requestUrl);
req.send( null );


アドレスの部分をブラウザに直打ちするとブラウザに返ってきたjsonが表示されます。
その状態で上記のスクリプトを動かすとコンソールにjsonが表示されます。

ただ、ブラウザが別のページだとコンソールには何も表示されません。

どのようにすればよろしいでしょうか?

ログには「クロスオリジン要求をブロックしました・・・」のようなメッセージが出ます。
デフォルトの名無しさん [sage] 2016/06/03(金) 20:10:29.09 :p9oJqMem
また自演かよ
頭いかれてんなこいつ
デフォルトの名無しさん [sage] 2016/06/03(金) 20:20:21.84 :WTDDDw9O

テーブル同士の結合www
まあ、おまえが多次元DB使ったとこ無いことは理解したよw
デフォルトの名無しさん [sage] 2016/06/03(金) 20:31:02.84 :n0THg94n

頼むから!!!
頼むから!!!もう!!!二度と!!!
onreadystatechangeなんて使わないでくれ!!!!!
readyState?!目が腐る!!!!!
デフォルトの名無しさん [] 2016/06/03(金) 21:01:10.72 :1XJ7uNxl

どうすればいいか教えてください
マジで困っています
デフォルトの名無しさん [sage] 2016/06/03(金) 21:08:50.41 :0G5q73nh

ttp://www.html5rocks.com/en/tutorials/cors/?redirect_from_locale=ja
デフォルトの名無しさん [sage] 2016/06/03(金) 21:43:27.43 :6tJjdY0+
nullと比較する時は緩い==の方を使うのは今の時代でも変わりありませんか?
デフォルトの名無しさん [sage] 2016/06/03(金) 21:48:09.86 :TYtzKZdV
自演乙
デフォルトの名無しさん [sage] 2016/06/03(金) 22:37:38.94 :D6MzcBW9

何や君結合と関連の違いも分からんで突っ込んどったんか?
どおりで説明が怪しいわけやな
必死に無知を隠してたんやから
デフォルトの名無しさん [sage] 2016/06/04(土) 00:08:42.59 :3lsMjWzh

クロスドメインなら、JSONP かな?

「jsonp クロスドメイン jquery」で検索!
デフォルトの名無しさん [sage] 2016/06/04(土) 08:28:02.51 :vbA2Z8Vh

昔から null 判定にはほとんど ToBoolean だけ使っていますが、困ったことはありません。
Polyfill コードを書くときには === を使うこともあります。
憲法に守られる在日スパイ・創価・ヤクザ [sage] 2016/06/04(土) 08:57:11.18 :SVOilD6U
皇室の危機に気づいていますか? 

日本は、2,000年以上続く皇室のおかげで、世界最古の国として、
ギネス認定されているそうです。

自民党は憲法の改正で、日本の国家元首=天皇陛下と条文に明記することで、
天皇制廃止をもくろむ帰化人スパイ勢力(政党、憲法学者、弁護士・言論人等)から、
皇室を守ろうとしています。
※イギリス、オランダ、ノルウェー、デンマーク、スペインなどは国王を国家元首と
 憲法上に定めている。(日本同様、政治の実権は有さない。)
※日本で支配的な「護憲派」憲法学者の多くは反天皇。憲法から天皇の条項ごと削除したい
 人たちなので、本来は改憲派である。(「象徴天皇制度と日本の来歴」坂本多加雄著より)

公明党「天皇は日本の国家元首ではない」 
ttp://hayabusa3.2ch.net/test/read.cgi/news/1363226509/
自民党・西田昌司
「橋下さん(おおさか維新)の憲法改正は、国柄を破壊することが目的」(自民とは真逆)
ttps://www.youtube.com/watch?v=sRkdQ2Rlwxs
日本共産党 「目標としては天皇制をなくす立場に立つ」「天皇制のない民主共和制をめざす」
ttp://www.jcp.or.jp/jcp/22th-7chuso/key-word/b_1.html#Anchor-0507
反天皇、反皇室で共謀する民主党(現民進党)と田原総一朗
ttp://blog.liv edoor.jp/fjae/archives/51968115.html
田原総一朗「天皇は、働かないで国民の税金で食ってる。」
ttps://youtu.be/6Kd1LwY9e0I?t=280 (4:40〜)

※ただし、自民単独(カルト公明党抜き)で2/3議席以上与えない限り、
野党と公明党に骨抜きにされる。  ↓

自民・船田氏…「野党・公明党のみなさんと協議し、衆参両院の3分の2をこえる人が
賛成してくれなければ発議はできない。だからこれから大いなる妥協が始まる。
自民の憲法草案は、 ズタズタになると思って結構だ」 p
ttp://hope.2ch.net/test/read.cgi/seijinewsplus/1425226082/
デフォルトの名無しさん [] 2016/06/04(土) 13:17:48.82 :BFaRmD8M
ジャバスクリプトをあまり意識せずに、ウェブアプリ開発できるソフトってありますか?
デフォルトの名無しさん [sage] 2016/06/04(土) 13:26:46.16 :qPi1xPU6
ねえよそんな店
デフォルトの名無しさん [sage] 2016/06/04(土) 15:45:22.85 :3F7VjM1T

TypeSprict
デフォルトの名無しさん [sage] 2016/06/04(土) 15:58:08.55 :ZPhk/eMO
TypeScriptは JavaScript+α という言語だからw
デフォルトの名無しさん [] 2016/06/04(土) 17:42:38.85 :vhhVz63c
ttps://www.youtube.com/watch?v=KApAJhkkqkA

↑こーいうふうに
タグとか補完して欲しいんですけど、
何のエディタ使えばいいんですか?
Windowsでお願いします。
デフォルトの名無しさん [sage] 2016/06/04(土) 18:03:53.99 :BiFmHB/P

ttps://www.sublimetext.com/
その動画のやつならWindowsでも使えるよ。
デフォルトの名無しさん [] 2016/06/04(土) 18:13:24.70 :vhhVz63c
ありがとうございます!
デフォルトの名無しさん [sage] 2016/06/04(土) 18:36:53.03 :TumyIwY9

「あまり」とは具体的に何ですか?
JavaScriptを使いながらJavaScriptを意識しないのは相当矛盾していると思いますが、何が目的ですか?
デフォルトの名無しさん [] 2016/06/04(土) 19:03:08.12 :vhhVz63c

動画のしょっぱなのhtmlとか入力すると
必要なタグをボンっと出すやつどうやるんですか??
デフォルトの名無しさん [sage] 2016/06/04(土) 19:46:47.25 :925XNPqI

SQLが集合論だとも理解してない人には難しかったかな。
小さなオツムで、undefinedは不要、nullが含まれている行と、行がないのは等価値だと一生騒いで、
そのままエンジニアにならずにホームレスにでもなってくれw
デフォルトの名無しさん [sage] 2016/06/04(土) 19:53:11.80 :Eqdj22Ns
理解してない論をやる人はいい加減にしてくれ
理解させようと説明して歩み寄るならともかく、お互いに避難しあってるだけでは前進しないぞ
その気がないなら沈黙で返すのが周囲に迷惑をかけない唯一の方法
デフォルトの名無しさん [] 2016/06/04(土) 20:54:05.74 :71w07kjf

作成時にコーティングを必要とせず、ジャバスクリプトの動的効果は享受したいということです
デフォルトの名無しさん [] 2016/06/04(土) 21:05:17.49 :AIJuo/HE
Haskell使えば大抵の問題は片付きます。
デフォルトの名無しさん [sage] 2016/06/04(土) 21:05:18.12 :Eqdj22Ns

コーディングしないならそれはプログラミングではないですね。
既存のライブラリや使いまわせるコピペコードを検索して探してみてはいかがですか。
いずれにしても、このスレで聞くには趣旨がずれていると思いますが。
デフォルトの名無しさん [] 2016/06/04(土) 21:16:28.25 :AIJuo/HE
質問に答えていくだけでソフトウェアが完成するとしても、それはプログラミングです。
デフォルトの名無しさん [sage] 2016/06/04(土) 21:27:23.54 :Eqdj22Ns
言い方が悪かったでしょうかね。
JavaScriptを勉強せずにJavaScriptを書きたいとする要望が子のスレの趣旨に反していると言いたかったのですが。
デフォルトの名無しさん [] 2016/06/04(土) 21:29:46.92 :AIJuo/HE
このスレ自体、板違いなのですが。
デフォルトの名無しさん [sage] 2016/06/04(土) 22:02:26.83 :Y4cfNkA+
薀蓄垂れてるやつのわんだほーなコード見たいんだが
デフォルトの名無しさん [sage] 2016/06/04(土) 22:27:00.97 :o5H+FwEM

そう思うなら、質問しなければいいんじゃないですかね?
デフォルトの名無しさん [] 2016/06/04(土) 23:09:22.49 :AIJuo/HE
質問したことはありませんが。
デフォルトの名無しさん [sage] 2016/06/04(土) 23:34:41.13 :M/5wRGJi
暇つぶしに板違いのスレで遊んでいるのか
デフォルトの名無しさん [sage] 2016/06/05(日) 00:03:18.80 :mO7gP4jx

この状況でそんな基本事項を嬉々として出すって、
おっさん本当に学生以下とちゃうか?
少しはまともなレスしろや

そもそも集合(テーブル)間の射の話なんやから、
そのレスじゃ何にも反論できとらんどころか、
結局おっさんの仕様じゃ繋がっとらん状況じゃ自分で自分の首絞めとるやろ

そして自分から多次元DB持ち出してきた癖に何棚上げしとるんや
知ったかと煽りしかできない珍獣は、某関数型ヴォルデモートでお腹いっぱいやで
デフォルトの名無しさん [sage] 2016/06/05(日) 00:18:27.24 :hY1lA33B
さっさとお手本コード晒せよ
こんだけ偉そうなこと言ってんだからどこに出しても恥ずかしくないレベルのもんかけるんだろ?
あくしろよ
デフォルトの名無しさん [sage] 2016/06/05(日) 01:09:47.31 :Ewjxu1z+

「JavaScriptのプログラムを作りたいけどJavaScriptを勉強する気がないので、ウィザード形式で質問に答えるだけでJavaScriptコードを生成するジェネレータを下さい」
って事かな
さすがにクレクレ君すぎる
デフォルトの名無しさん [sage] 2016/06/05(日) 01:27:22.46 :bEHxSIM9

Haxe (ヘックス)

ECMAScript 4に似ている。
Adobe Flashおよび独自のNekoVMで、実行可能なバイトコードにコンパイルされるほか、
JavaScript、ActionScript、C++、C#、Java、PHP、Pythonへのソースコードの変換が可能である
デフォルトの名無しさん [sage] 2016/06/05(日) 01:33:27.00 :mO7gP4jx

誰に言ってるんや?
ワイに言ってるならDBの定義の話やからコードもクソもないやろ
デフォルトの名無しさん [sage] 2016/06/05(日) 02:34:08.07 :b0qHmmcL
自意識過剰だね
ド頭は大丈夫ですか?
デフォルトの名無しさん [] 2016/06/06(月) 02:21:20.33 :6giGfHQ3
NHKのネットラジオを、どうにかしてクライアント側のJSだけで録音したいと思ってる
(基本的にサーバ側の処理は無しにしたい)
ストリーミングの録音の実装は初めてなんだが、どうやったら良いのだろうか?
何らかのライブラリを使えば楽そうだとは思うが…
デフォルトの名無しさん [sage] 2016/06/06(月) 05:01:20.04 :QbKl1YZH
どうやったらっていうか?
なぜそんなことが可能だと思った?
デフォルトの名無しさん [sage] 2016/06/06(月) 12:22:15.75 :23OtUYll

ローカルに node.js を立てるとか。
デフォルトの名無しさん [sage] 2016/06/06(月) 21:05:53.55 :RzJ8yYQp
パケットキャプチャ
デフォルトの名無しさん [sage] 2016/06/07(火) 05:14:58.76 :Gl1NOXsx

こいつすぐに煽るからわかりやすいな
デフォルトの名無しさん [sage] 2016/06/07(火) 19:02:47.33 :PnKxWLGB

ありがとうございました。
できるようになりました。
デフォルトの名無しさん [sage] 2016/06/07(火) 19:26:52.79 :87JRkB9l

俺ならもう少し嫌な感じで煽るよ。
デフォルトの名無しさん [sage] 2016/06/08(水) 08:52:28.55 :zEmhDMcI
じゃあ俺は馴れ馴れしいコンセプトで煽ろうかな。
デフォルトの名無しさん [] 2016/06/08(水) 21:39:35.82 :BBcfGQEZ
煽りとかいらねえから
ちゃんと質問に答えてやれよ
デフォルトの名無しさん [sage] 2016/06/08(水) 22:37:16.03 :ISsCi+NM

> あと、Array.prototype.lastなんて夢でも死んでも使わないように。

ありがとうございます。今のところ、そこに直接追加するような予定はありません。


> あくまでも便宜上のサンプルねので念のため

察しの悪い俺ですが、この点についてはそのように理解しております。ご安心下さい。

で、ですね。今までは個別の変数について var a = []; a.f = function () {}; なんぞしていて、
それで十分だったんですが、インスタンスの数が増えそうだぞって場面がチラホラ出てきました。
そこで、配列を継承したようなクラス?(←便宜上)が必要になりました。

A = function () {};
A.prototype = [];
A.prototype.first = function () {return this[0];};
var a = new A();
var b = [];
a.push(123);
b.push(456);
alert(a.first()); // これが呼び出せる
//alert(b.first()); // こっちは使えないので汚染されてなくて安心。

今のところ↑と言う風に、A.prototype = []; として単に何となく設定しているのですが、
こういうことをしたいときのイディオムみたいなものはjavascript界隈にありますか?
デフォルトの名無しさん [sage] 2016/06/09(木) 08:26:24.28 :EGkuN86i
Web Workerの学習をしたいのですが、此方で大丈夫でしょうか?
デフォルトの名無しさん [sage] 2016/06/09(木) 08:46:22.16 :e3vAFbmO
var F = function(age){ this.age = age; }
var f1 = new F(1);
var f2 = new F(2);

var ary = [];
ary.push(f1);
ary.push(f2);

console.log(f1, f2, ary);

prototypeなど使わずに、普通にこれでいい
デフォルトの名無しさん [sage] 2016/06/09(木) 09:04:45.80 :5KODI7Ed
F ←この手の一文字もん大っ嫌いだは
デフォルトの名無しさん [sage] 2016/06/09(木) 09:05:55.20 :dIu2vu4F
独り言はキミのスマホのメモ帳にどうぞ
デフォルトの名無しさん [sage] 2016/06/09(木) 09:25:17.23 :rjZdspVd
スマホ持ってない私みたいのはどうすればいいんですか?
デフォルトの名無しさん [sage] 2016/06/09(木) 09:31:01.62 :E+QhxTx8
var F = function(age){ this.age = age; }

こう書くぐらいなら

function F(age){ this.age = age; }

こう書けばいいのに。
デフォルトの名無しさん [sage] 2016/06/09(木) 09:35:16.54 :E+QhxTx8

中古で安いの探せば3000円ぐらいで買えるのでは?
デフォルトの名無しさん [sage] 2016/06/09(木) 13:53:50.48 :QTm6YzLa

その方法でどうやってfirst()を呼び出すのかな
デフォルトの名無しさん [sage] 2016/06/09(木) 14:40:04.41 :G4u6WZVB

後者は旧石器時代の方式だな
デフォルトの名無しさん [sage] 2016/06/09(木) 16:54:36.03 :+YsNEGfA
内容が等価じゃないのになんで新旧の話になるの
デフォルトの名無しさん [sage] 2016/06/09(木) 17:06:35.65 :bsniAtVU
だよな。
ぜんぜんちゃうやんw
デフォルトの名無しさん [sage] 2016/06/09(木) 17:26:41.69 :G4u6WZVB

旧石器時代には後者の方法が多用されていたが、それでは問題があるので
近代にはめったに使われなくなったということだが
デフォルトの名無しさん [sage] 2016/06/09(木) 19:11:58.00 :U5aI2wbo

どちらもES3の頃から存在して使い分けされていたわけだが
関数式を使わない時代っていつだ?
せめて、関数名ぐらいつけろよ、といいたい
デフォルトの名無しさん [sage] 2016/06/09(木) 19:22:11.65 :Homi8Ck7
hoisting を嫌う人はこう書くが、新旧いうもんでもない
const fn = function fn () {};
デフォルトの名無しさん [sage] 2016/06/09(木) 19:32:23.75 :KvDILg9T

そのコードが制限付きで動作している事を理解していればそれでいい
- iterable でない(Symbol.iteratorで対応可能)
- a[100] = 1; で length を書き換えない(new Proxy で対応可能)
- a.length = 5; が働かない(Object.definePropertyで対応可能)
- 一部の汎用的ではない関数(concat等)が期待通りに動作しない(独自にコードを書けば対応可能)
デフォルトの名無しさん [sage] 2016/06/09(木) 23:45:53.30 :W5L1fKQF

詳細にありがとうございます!!

> - a[100] = 1; で length を書き換えない(new Proxy で対応可能)
> - a.length = 5; が働かない(Object.definePropertyで対応可能)

ありがとうございます。それらの不具合は気付いていませんでした。

let a = new Proxy(new A, {
set: function(target, property, value, receiver) {
let i = parseInt(property);
if (i === i && target.length <= i) target.length = i + 1; // a[n] = x;に伴うlengthの更新に対応。
else if (property === 'length' && value < target[property]) {
target.splice(value, target[property] - value); // a.length = n;の代入時の挙動(の一部?)をケア。
}
target[property] = value;
return true;
}
});
Object.defineProperty(a, 'length', {enumerable: false, writable: true, value: 0});

これでとりあえずケアできているようではありますが、
Proxyに非対応なブラウザもあるようなので注意ですね。
デフォルトの名無しさん [sage] 2016/06/09(木) 23:47:09.04 :W5L1fKQF

> - iterable でない(Symbol.iteratorで対応可能)

現時点ではワケが分かっておりませんが頂いたヒントは大事に記憶しておきます。

> - 一部の汎用的ではない関数(concat等)が期待通りに動作しない(独自にコードを書けば対応可能)

これも今確認しました。concat使えないの悔しいです。

Object.defineProperty(a, 'concat', {enumerable: false, value: function () {
return A.prototype.concat.apply(this.slice(), arguments);
}});

しかしまぁこういうのを結局書いていくのは悔しいですね。
ちょっとラクしたいだけなのに段々大袈裟になっていくという…。
デフォルトの名無しさん [sage] 2016/06/10(金) 00:39:24.13 :G+eNnn4N

言っていることは間違いではないが、(結果的にでも)無垢な少年を騙すのはいかがなものか、、、


てかお前、それ自分でやってておかしいって思うだろ?
ここの連中は仕様には詳しいが、コードを書いてないから、実装方式については話半分に聞け。
(まあ今回は君が勝手に突っ走ったのであり、騙したわけではないとは思うが)
そのコードを見る限り、君は自力で解に辿り着けるはずだ。

俺がぱっと思いつくだけで解は3通りある。当たりかどうかは答えてやるから、冷静に考えてみろよ。
デフォルトの名無しさん [sage] 2016/06/10(金) 01:01:27.01 :DHroUP1C
javascriptについて質問があります。
初回起動時のform(画面項目)の値と現在の値を比較して1つでも変更があった場合にはポップアップを表示するといった処理を実装したいのですが何か良い方法があれば、ご教授お願い致します。
デフォルトの名無しさん [sage] 2016/06/10(金) 01:02:08.05 :DHroUP1C
続き
はじめはその項目のvalueとdefaultValueにて比較できると思いましたが、defaultValueは画面を再描画するタイミングで取得しますが、行いたい処理の途中でアクションが走り必ず再描画されるタイミングがあるためその方法では比較できないことに気づきました。
デフォルトの名無しさん [sage] 2016/06/10(金) 01:02:31.57 :DHroUP1C
続き
(また項目の入力チェックなのでエラーになった場合にも)

なので再描画されても、初期表示時の値と現在の値を比較する方法はないでしょうか…
ちなみに画面はJSPにて実装しており、項目はtextやradioやoptionなどあります。
デフォルトの名無しさん [sage] 2016/06/10(金) 01:28:33.37 :rm3c6PtR


ttps://mitsuruog.github.io/javascript-style-guide/#%E9%96%A2%E6%95%B0functions

7.1 関数式より関数宣言を利用してください。

なぜ? 名前が付けられた関数宣言はコールスタックで簡単に見分けることができます。
さらに関数宣言は関数の本体が巻き上げられます。それに対し、関数式は参照だけが巻き上げられます。
このルールにより、関数式の部分を常にアロー関数で置き換えて利用することができます。

// bad
const foo = function () {
};

// good
function foo() {
}
デフォルトの名無しさん [sage] 2016/06/10(金) 01:45:19.78 :rm3c6PtR
function Klass() {
}

という書き方が古臭いとかいうことは当然なくて、
特定の場合では、var hoge = function() {} と書くべきという話を、
頭の悪い、なーんも考えてない馬鹿が、
絶対にvar hoge = function() {} と書かないといけない、
これからはfunction hoge() {} と書いてはならないんだ!って
言ってるだけ。

function Klass() {} という書き方が古くなったとか
聞いたこと無いし、使っていいし、むしろ推奨されている。

ほんと何も考えてない、誰かにaといわれれば
理由も考えずに妄信的にaばっかり使う、そんなやつが多いよなw
デフォルトの名無しさん [sage] 2016/06/10(金) 02:03:50.61 :G+eNnn4N

俺は仕様には詳しくないから具体的に何が問題になるのかは分からないが、
基本的に「普通」の書き方にしておいた方がいいと思うぞ。
というか、何故お前らが妙なこだわりを持つのか、かなり謎なんだが。

> var Person = function () {
> console.log('instance created');
> };
>
> var person1 = new Person();
> var person2 = new Person();
> ttps://developer.mozilla.org/ja/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript
デフォルトの名無しさん [sage] 2016/06/10(金) 02:06:08.67 :rm3c6PtR

そこに書いてあるだろw

// Student コンストラクタを定義する
function Student(firstName, subject) {
// 親のコンストラクタを呼び出す。呼び出しの際に "this" が
// 適切に設定されるようにする (Function#call を使用)
Person.call(this, firstName);

// Student 固有のプロパティを初期化する
this.subject = subject;
};

これは普通の書き方。
デフォルトの名無しさん [sage] 2016/06/10(金) 02:18:52.51 :G+eNnn4N

おっと?これは失敬。
ということはこれについては統一見解はなくて、どっちでもいいって事だな。
デフォルトの名無しさん [sage] 2016/06/10(金) 02:49:43.87 :OOVSLX1/

引用元もそうなってたけど、
最後のセミコロンはいらないよねぇ。
デフォルトの名無しさん [sage] 2016/06/10(金) 05:22:06.39 :naViO+5c
どっちでもいいわけないだろ
アホかこいつ
デフォルトの名無しさん [sage] 2016/06/10(金) 08:02:38.57 :52VYMGKm

いろいろと挙動がおかしいのでよく確認してみるといい
繰り返すが、A.prototype.concat は汎用的ではない
ttps://jsfiddle.net/cw8umnqd/
デフォルトの名無しさん [] 2016/06/10(金) 08:21:29.14 :o8hFzx97
結局、コンストラクタ用の関数を書くときにも、

関数式よりも、巻き上げのある関数宣言の方が、良いのか?
デフォルトの名無しさん [sage] 2016/06/10(金) 08:31:51.96 :52VYMGKm

> しかしまぁこういうのを結局書いていくのは悔しいですね。
ビルトイン関数には汎用的なものと汎用的でないものがあって、汎用的でない機能をエミュレーションするのは単純じゃない
(とはいえ、JavaScriptは汎用的なプロパティ/関数があるだけエミュレーションするのは楽な方だと思う)
内部的に new Array を保持しておき、new Proxy で透過的に new Array を参照すらば比較的楽に実装出来るが、コストがかかる
完璧なエミュレーションに拘らないのであれば妥協も必要
デフォルトの名無しさん [sage] 2016/06/10(金) 08:33:32.04 :INHt9BTU

この状態と比較したい、って状況で、「画面の対象のコントロール回ってvalueを;かなんかで繋いで返す」関数作って、それ呼んで値を覚える。
変更チェックかけるときに、もう一回その関数呼んで、覚えたものと===で無ければ何かしら変更があった。
ってやってるよ。

「対象のコントロール」にはclassにcheckDatumとか空クラスつけとけばそれで列挙できるし。
デフォルトの名無しさん [sage] 2016/06/10(金) 08:47:37.80 :BhzVNYOI
varとfunctionが同じだのセミコロンいらねえだの
こんなのが毎日偉そうに能書き垂れてんの?
そりゃサンプル出せって言われたら黙るわけだ
デフォルトの名無しさん [sage] 2016/06/10(金) 09:33:17.22 :o8hFzx97

Groovyのメタプログラミングなら、

実行時に既存のクラスに、メソッドを追加するなら、Category・Mixin。
メソッド・プロパティを変更・追加するなら、ExpandoMetaClass

そういう複雑極まりない方向へ進むのは、最初から考え方がおかしいのでは?
デフォルトの名無しさん [sage] 2016/06/10(金) 09:36:28.17 :+uuPJDCE

> 関数式よりも、巻き上げのある関数宣言の方が、良いのか?
何も考えてねぇ馬鹿は、変数の巻き上げの問題(もちろん理由がある)の話を、
全く関係ない関数にまで適用しようとする(笑)
理由は何だよw

ブロック内だけで使う関数など、関数式でなければいけない場合もあるが
通常は関数宣言の方がいいに決まってるだろ。

C言語は宣言された関数しか使えなかったため「前方宣言」などという
物が生み出されてしまったが、それ以降、それ以外の殆どの言語は
関数はどこで宣言しても(巻き上げされたかのように)使うことが出来る。
デフォルトの名無しさん [sage] 2016/06/10(金) 09:40:10.83 :4srunpG+
所詮は自己満足の世界なんだよ
デフォルトの名無しさん [sage] 2016/06/10(金) 09:40:12.48 :+uuPJDCE
普通に関数に名前(コンストラクタも含む)をつければいいのに、
「さいきんのクールなプログラマはvarで関数入れて使うんだぜ!
今時関数に名前つけるなんてのは旧石器時代だな!」とか言ってるんだぜw

バカっぽいだろ?事実なんにも考えてない。
デバッガ時に関数名表示がでなくなる問題があるというのにな。
デフォルトの名無しさん [sage] 2016/06/10(金) 10:33:45.27 :GFWTaLNc

> どちらもES3の頃から存在して使い分けされていたわけだが
誰もが(いいすぎ)使い分けるようになったのは、近代になってから

> 関数式を使わない時代っていつだ?
だから旧石器時代だって
ゼロ年代初頭あたりまで
デフォルトの名無しさん [sage] 2016/06/10(金) 10:36:19.23 :GFWTaLNc

> function Klass() {} という書き方が古くなったとか
> 聞いたこと無いし、
グローバルネームスペースを汚染する弊害について聞いたことないのか
デフォルトの名無しさん [sage] 2016/06/10(金) 11:04:28.13 :rddDxbo4

クロージャの中でやる分には大丈夫なんじゃないの?巻き上げられたっけ?
デフォルトの名無しさん [sage] 2016/06/10(金) 11:31:26.83 :xHgczCBO
今時グローバル汚染するようなアホおまえくらいだから
デフォルトの名無しさん [sage] 2016/06/10(金) 11:46:24.26 :XqAkh7YW
なんであんなに無名を濫用するのかと思ってたが
そんなしょうもない理由だったのか
デフォルトの名無しさん [sage] 2016/06/10(金) 14:12:05.29 :dpRBFPup

聞いたことないが、その弊害の発生条件は?
デフォルトの名無しさん [sage] 2016/06/10(金) 14:36:22.02 :4srunpG+
そうだよな
汚染ってなんだよ
デフォルトの名無しさん [sage] 2016/06/10(金) 15:06:36.55 :LT2C5Mf1
prototype使って、汚染しちゃうのは初心者がやってしまう失敗
デフォルトの名無しさん [sage] 2016/06/10(金) 15:59:08.90 :DxAsZ/F5
1個くらいならバレないんじゃない?
デフォルトの名無しさん [sage] 2016/06/10(金) 16:05:16.91 :3bO9ZAmE
Object.prototype.hogeにバーカって書いとけばいいのか
デフォルトの名無しさん [sage] 2016/06/10(金) 18:15:57.76 :LT2C5Mf1
コンソールに出すの?
アラートで出すの?

アラートで出たら、めちゃくちゃ怖いかもww
デフォルトの名無しさん [sage] 2016/06/10(金) 19:06:13.75 :qrHSyLm3
prototype汚染という考え方も古くなってきた感はあるが…
しかし、風呂敷を広すぎではないかね
元々はprototuype汚染の話ではなかったわけで段々と本題がずれてきているように思う
デフォルトの名無しさん [sage] 2016/06/10(金) 19:27:07.34 :qrHSyLm3

画面を再描画するならサーバサイドの処理があるはずだが、それはJavaScriptで実装すべき案件なのかね
フォームで値を受け渡してサーバサイドで処理、セッションを使う等、いくつか対策があるはずだが
jsを使うなら再描画させずに動的にDOMを書きかえれば済むが、マルチポスト先を読む限りではこの質問者にはハードルが高そうだな
ttps://teratail.com/questions/37462
ttps://teratail.com/questions/37489
デフォルトの名無しさん [sage] 2016/06/10(金) 20:02:15.97 :G+eNnn4N

少なくとも文法上は大差ないのだろう。MDNにも説明はある。
> 全ての関数は実際には Function オブジェクトです。
> Function コンストラクタか関数宣言か関数式か
> ttp://https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope">ttps://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope
new Functionや非トップレベル関数(strict modeでは禁止)も含めて書いてあるから余計に分かりにくくなっているが、
要するにどうでもよさそうだ。
現実的にはコンストラクタだけ前方参照できてもプロトタイプが用意できていないから意味がない。
だから関数式の方が似合っている気はする。

ちなみに汚染については変数名か関数名かだけでどちらも汚染する。
また、デバッグ時にこんなところが関数表示されたところで嬉しくない。
どのみちコンストラクタが呼ばれればコールスタックには載るし、ブレークポイントも当てられる。

お前らは異様に文法にこだわることを止めて、もっとコードを書いた方がいい。
指摘が間抜けなのは、コードを書いてないからだ。(実践的ではない)
○○の問題がある(キリッというのは正しいが、それが重要なことなのか、わりとどうでもいいことなのか、区別が出来ていない。

デフォルトの名無しさん [sage] 2016/06/10(金) 20:08:51.44 :RNr8lFlW

どうもありがとうございます。おかげで気がついてしまいました。
concatはArrayを受け取ってArrayを返すつもりででは書きましたが、
よく考えると今回拡張したA(以下単にA)を引数に受け取りたいですし、
返す結果もよく考えるとAであったほうが嬉しいかもしれません。

実装の手間という面だけでも尻込みしつつあったんですが、
いまや設計の方針と言う面でも相当きな臭いというか。
concatの返す値が決められなくて不気味。使うときに不安。
仮にsliceやspliceなどのもまとめて全部Aを返すように統一したとしても、
最終的にはArrayとAの二系統が混在する世界になっちゃうわけで不気味。


> 完璧なエミュレーションに拘らないのであれば妥協も必要

そのつもりだったんですがいざ用意してみると、
欲が出るわ粗が目立つわ方針で不安になるわで散々でした。
今後は生のArrayのみを運用していくつもりです(結論)。


ありがとうございます。Groovyはぐぐったことすら無いので分かりません。

> そういう複雑極まりない方向へ進むのは、最初から考え方がおかしいのでは?

はい。完全にそのとおりです。
デフォルトの名無しさん [sage] 2016/06/10(金) 21:47:53.40 :qrHSyLm3

> 今後は生のArrayのみを運用していくつもりです(結論)。
それはそれで一つの答えだが、やや狭い世界になっていると思う
> 最終的にはArrayとAの二系統が混在する世界になっちゃうわけで不気味。
2つの世界が存在することは問題なくてそれが息をするように自然に使えるかどうかが問題ではないだろうか
mew Array と new A を行き来する世界はよくないが、それぞれの世界で完結する処理を書けるのならそれでいい
どちらかといえば、設計指針を決めかねて迷っているのだと思うが…
基本的には new A は A だけで閉じた世界(new Array を返してはならない)であるべきなので A#concat は new A を返すべきだと思う
逆に A#push は汎用的なので特別な事をせずとも new A を返す
このように汎用的な関数を基本的には使って非汎用関数に対しては Polyfill を作る要領でコードを書いていけばそれなりのものができるだろう
別の設計指針としては new Map を new ArrayMap 的な設計にして作り直しても面白いかもしれない
new Map は関数でsetter/getterを作るので new Array よりは互換コードを書きやすいはずだ
機会があれば、是非新しい世界を作ることに挑戦してみてほしい
デフォルトの名無しさん [sage] 2016/06/10(金) 21:58:16.74 :MdFWcZSW
こういう人に読ます気がない文章は目の前で破り捨てるに限る
デフォルトの名無しさん [sage] 2016/06/10(金) 22:12:29.26 :AlU+uWXE
ES6だとプロトタイプ汚染がないのかと思ったけどもしかして新機能がない?

結局
Object.defineProperty(...){........}
と書かんといけんのか
デフォルトの名無しさん [sage] 2016/06/10(金) 22:18:01.79 :G+eNnn4N
この程度で躓くのならもっと長いMDNは当然無理で、池沼のままなのもむべなるかな
523 [sage] 2016/06/10(金) 22:51:59.24 :qrHSyLm3
読みにくくてすまん
どういうわけが改行コードが一部消えているな…
デフォルトの名無しさん [sage] 2016/06/10(金) 23:08:39.56 :+uuPJDCE
*∧ ∧:・。゚*。 : ・ 。 ゚ *★.
(*・ω・*)       ゚ *。*
*〇 〇………………………**
 祝☆jQuery 3.0 リリース ttps://blog.jquery.com/2016/06/09/jquery-3-0-final-released/
**………………………………*

+ JavaScript & jQuery 質問用スレッド vol.6 + [無断転載禁止]©2ch.net
ttp://echo.2ch.net/test/read.cgi/hp/1465566635/
デフォルトの名無しさん [sage] 2016/06/10(金) 23:10:44.42 :+uuPJDCE

> > function Klass() {} という書き方が古くなったとか
> > 聞いたこと無いし、
> グローバルネームスペースを汚染する弊害について聞いたことないのか

なにいってんだおめぇ?

var Klass = function() {} という書き方をしても
グローバルネームスペース汚染してるだろw

function hoge() {
  function Klass() {}
}

↑Klassがグローバルネームスペース汚染ってどういうこと?w
デフォルトの名無しさん [sage] 2016/06/10(金) 23:13:14.16 :+uuPJDCE

同じこと思ったw
デフォルトの名無しさん [sage] 2016/06/11(土) 00:01:17.78 :MQjYfq34
ライブラリスレが復活してた

JavaScript ライブラリ総合質問所 vol.5 [無断転載禁止]©2ch.net
ttp://echo.2ch.net/test/read.cgi/hp/1465399470/
デフォルトの名無しさん [sage] 2016/06/11(土) 08:41:10.92 :MQjYfq34
jQuery推しが酷いと思ったらテンプレ改変されていたのか
デフォルトの名無しさん [sage] 2016/06/11(土) 13:03:48.93 :n8nif7qi
今更かよ
ここ乗っ取られスレだよ
デフォルトの名無しさん [] 2016/06/11(土) 13:06:25.18 :ijG8u0pc
java script初心者です。ご教授願います m(_ _)m
初めてpromiseで簡単な非同期処理を書いたんですが、一応動くもののどうにもコードがしっくりきません
もっとシンプルにできたり、適切な書き方があるところがあったら教えてください

内容は単語queryに対応する画像検索結果がローカルストレージになかったら外部APIに問い合わせるというものです
534 [sage] 2016/06/11(土) 13:09:15.52 :ijG8u0pc
function getCachedData(query) {
return new Promise(function(resolve, reject){
chrome.storage.local.get(query, function(cachedJson){
if (isExist(cachedJson)) {
resolve(cachedJson[query]);
} else {
reject();
}
});
});
}

function getImageData(query) {
getCachedData(query)
.catch(function(){
return fetch(window.googleCustomSearchApi + query)
.then(function(response) {
return response.json();
}).then(function(json){
chrome.storage.local.set({[query]: json});
return json;
});
}).then(function(json) {
createPopUp(json.items[0]);
positionPopUp();
}).catch(function(err) {
console.error(err);
});
}
デフォルトの名無しさん [sage] 2016/06/11(土) 13:14:41.27 :ijG8u0pc
インデント潰れてしまった・・・ preタグで再投稿
<pre>
function getImageData(query) {
getCachedData(query)
.catch(function(){
return fetch(window.googleCustomSearchApi + query)
.then(function(response) {
return response.json();
}).then(function(json){
chrome.storage.local.set({[query]: json});
return json;
});
}).then(function(json) {
createPopUp(json.items[0]);
positionPopUp();
}).catch(function(err) {
console.error(err);
});
}</pre>
デフォルトの名無しさん [sage] 2016/06/11(土) 13:21:07.32 :e5AOazPt

この記事が参考になるかな
ttp://gao-tec.seesaa.net/article/427643074.html
デフォルトの名無しさん [sage] 2016/06/11(土) 13:33:33.96 :ijG8u0pc

ありがとう 3回読んできます
デフォルトの名無しさん [sage] 2016/06/11(土) 13:39:59.04 :n8nif7qi

2chはHTMLタグ使えないからjsFiddleみたいな投稿サイトを使うといいよ
前まではテンプレにあったんだが

一見ネストが深いように見えるけど結構シンプルに纏まってると思う
fetchの部分を外に出せば視認性がよくなるんじゃないのって程度
しいて言えばgetImageData内でPopUp関数を呼び出してるのがしっくりこない
getImageData自身もPromiseインスタンスを返してresolve(json)するのがいい
デフォルトの名無しさん [sage] 2016/06/11(土) 13:59:44.48 :ijG8u0pc

今日だけ師匠と呼ばせてください
自分でもそこはなんか気持ちわるかったんです promiseチェインがcatchで始まった挙句、頭でっかちで
でも外に出すというのはどうやるんでしょう・・・
fetchからの処理をまとめた関数(返り値は最終的なjsonデータのpromise)を外に定義して、それを呼び出す感じですか?

そしてgetImageDataがPromiseインスタンスを返すように書き換えるには、ええと・・・(思考フリーズ)
デフォルトの名無しさん [sage] 2016/06/11(土) 14:41:46.28 :n8nif7qi

getCachedDataと同じ書き方をfetchとgetImagedataでやるだけだよ
デフォルトの名無しさん [sage] 2016/06/11(土) 15:16:00.71 :NAulAg4n

> 一見ネストが深いように見えるけど結構シンプルに纏まってると思う

え? ちょっとまてよ?
デフォルトの名無しさん [sage] 2016/06/11(土) 15:45:12.80 :NAulAg4n

これgetImageDataの中でキャッシュあるか調べてるからいけないんだよ。
一般論として、キャッシュというのは存在を意識しないようにコードにするべき。

関数の役割ってのが書いてないし、これだけじゃ読み取れないから難しいんだが、
そのgetImageDataっていうのは画像があれば、ポップアップウインドウを表示するんだろう?

であれば、getImageData() ではなくて showImageData() とかいう名前にするべき。
そして、getCachedData()ではなく、こっちをgetImageData()にするべき。

getImageData()っていうのは単にImageDataを返すだけ、その中でキャッシュを使っていようが
使っていまいが関係ないし、別の仕組みのキャッシュを使うかもしれない。がgetImageData()を
使う人からはそんなこと知ったことじゃない

のコードは、chrome.storage.local を使っている箇所が、getCachedDataと
getImageDataの2つに分かれているだろ? 関数の役目が明確に分離されていないからそうなる。
非同期の書き方の問題の前にまずやることがあるってことさ。

あと、スペース1個でインデントは見にくいからやめろw
最低でも2個だ。
デフォルトの名無しさん [sage] 2016/06/11(土) 15:47:35.86 :NAulAg4n
で、これが修正コード例だ。
やりたいならばchrome.storage.local.getをPromise化する事もできるがね。

function getImageData(query) {
 return new Promise(function(resolve, reject) {
  chrome.storage.local.get(query, function(cachedJson) {
   if (isExist(cachedJson)) {
    resolve(cachedJson[query]);
    return;
   }
   fetch(window.googleCustomSearchApi + query)
    .then(function(response) {
     var json = response.json()
     chrome.storage.local.set({[query]: json});
     resolve(json);
    })
    .catch(function(err) {
     reject(err);
    })
   });
  });
}
function showImageData(query) {
 getImageData(query)
  .then(function(json) {
   createPopUp(json.items[0]);
   positionPopUp();
  })
  .catch(function(err) {
   console.error(err);
  });
}
デフォルトの名無しさん [sage] 2016/06/11(土) 15:56:05.66 :NAulAg4n
で、どうしてもgetImageData()の中身をPromise化したいならこんな感じかね?
動かせる環境がないので、これで正しく動いているかはしらない。

元のコードに合わせてisExistがfalseならreject()しているが、
nullを返して、データがnullだったらfetchしたほうがいいような気もするが。

function getImageData(query) {
 return new Promise(function(resolve, reject) {
  chrome.storage.local.get(query, function(cachedJson) {
   if (isExist(cachedJson)) {
    resolve(cachedJson[query]);
   } else {
    reject();
   }
  }).cache(function()) {
   return fetch(window.googleCustomSearchApi + query)
  }).then(function(response) {
   var json = response.json()
   chrome.storage.local.set({[query]: json});
   return json;
  });
}
534 [sage] 2016/06/11(土) 16:03:43.18 :ijG8u0pc

自分でああでもないこうでもないと考えてコードを修正していたら返信遅れました
か ら く ちwwww と思って訂正コードと自作スパゲッティを見比べたらグウの音も出ませんでした
この整理されたしっくり来る感じ 勉強になります

あとは・・ エラーハンドリングについてわからないところがあります!
デフォルトの名無しさん [sage] 2016/06/11(土) 16:07:35.34 :ZhHlBSFM

良い記事だ。
が、前から疑問なのだが、何故お前らはネストにこだわるのだ?
俺は展開して書いていて、特に問題を感じない。
要求が「脳筋無限ループの例ぐらい単純な構造で」「非同期処理を実現する」
「処理は上から下へ」「ネストが深くならない」ならば、これでいいと思うのだが。
好きずきはあると思うが、このような場合にでも例としても出てこないのは謎なんだが。

function Main(){
console.log("a");
setTimeout(Main_1,2000);

function Main_1(){
console.log("b");
setTimeout(Main_2,1000);
}
function Main_2(){
console.log("c");
}
}
Main();
デフォルトの名無しさん [sage] 2016/06/11(土) 16:12:31.73 :NAulAg4n
は本当に動くかどうかわからない。
実はcacheのあとにthenをつなげたことないんでねw

まあ関数の中を試行錯誤すりゃできるだろうと思うけど。
最悪でいいし。

"何をする" 関数か?(クラスか?)ってことをよく考えることが重要。

動くようにコードを配置するんじゃなくて、何をする関数か?を定義して
それに合わない所はたとえコードが増えても外にだすべきだし、
入れるべきだと思えば、どうにかして持ってくる。
もちろん場合によっては、"何をする" の定義を変えてもいいけど
はっきり定義させることが重要。

例えば、このgetImageData()はchrome.storage.local を使うことが前提になってるけど、
いろんなキャッシュの仕組みを入れ替えられるようにする関数(というかクラスになるだろうけど)を定義すれば
getImageData()の中からはchrome.storage.localが消えて、キャッシュの仕組みを
入れ替えられるだけのことをするクラスができあがるわけ。
デフォルトの名無しさん [sage] 2016/06/11(土) 16:15:59.14 :NAulAg4n

> が、前から疑問なのだが、何故お前らはネストにこだわるのだ?

やりかけで覚えておかなければならないことが増えるからだよ。

Aが終わってからBをして、Bが終わってからCをする。というやり方よりも
Aの途中でBをして、Bをしているその途中でCをするほうが疲れるから。

Cが終わったら、Bはどうなったんだっけ? そしてAはどうなったんだっけ?って
戻って行かないといけないからね。

言い換えると可読性の問題だからだ。
非同期とかそういうところが問題になってるんじゃない。
やりかけの作業を脳に貯めておくと言うところが問題なんだよ。
デフォルトの名無しさん [sage] 2016/06/11(土) 16:20:02.55 :NAulAg4n

あと、そのコードの問題は「名前」が増える。

名前が増えるっていうのも、いちいち記憶して
おかなければならないことだから面倒

限りある記憶領域は、記憶する価値のある物、
汎用的でどこでも使えることだけに絞る必要がある。
覚える価値がないものは覚えなくていい。

そのコードは関数の名前が増えているだけだが、
クロージャーじゃなくなっているから、変数の名前も増えるだろうね

あと処理があちこちに飛ぶから、コードが長くなったらスクロールする回数も増えるよw
もちろん関数が長ければ分けるが少なければその場に埋め込むという意味だ。
デフォルトの名無しさん [sage] 2016/06/11(土) 16:26:52.64 :ZhHlBSFM

そうか?ぶった切られているだけで、実は同じだろ。追加部分を見やすいように編集しておいた。
同期的に「放り投げて終わり」にしたいという気持ちも分かるが、無理にネスト/Promise化するより見やすくないか?
脳内 s/setTimeout...function(){// で全く問題ないはずだが。

function Main(){
console.log("a");

setTimeout(Main_1,2000); // 追加
function Main_1(){ // 追加

console.log("b");

setTimeout(Main_2,1000); // 追加
} // 追加
function Main_2(){ // 追加

console.log("c");

} // 追加
}
Main();
デフォルトの名無しさん [sage] 2016/06/11(土) 16:29:29.39 :tWgkOxEq
もうそれはasync/await、もしくはgenerator/yieldを使うしかないよ。
デフォルトの名無しさん [sage] 2016/06/11(土) 16:35:45.96 :NAulAg4n

サンプルコードでやってるからだめなんだよw
お前、頭の中で、このコードはsetTimeoutしかない。Main以外の名前は存在しない。
しかもそれぞれ短いコードで呼び出す順番に並んでいるいう「記憶」に頼ってコード読んでるだろ?
それはお前だから出来ること。(短いから俺でも出来るけどさw)

実際に業務ではそういう「記憶」には頼れない。コードはもっと長いし
汎用的じゃないものは名前も覚えられない。(何日も経ったら忘れる)
汎用的でないものには、適切な名前をつけることも難しい。

仮にそのコードのまま、記憶に頼れないように書き換えてみようか?
さっきと同じように気楽に読めるかい? どこでどう呼び出しが行われてるか探すだろ?

function Kjads(){
 console.log("a");

 function cgrd(){ // あrtが

  console.log("c");

 } // あrtが

 badf(fgaz); // あrtが
 function fgaz(){ // あrtが

  console.log("b");

  asdfa(cgrd); // あrtが
 } // あrtが
}
Kjads();
デフォルトの名無しさん [sage] 2016/06/11(土) 16:36:17.69 :ZhHlBSFM

「名前」が増えるのは事実だけど、関数内関数で隠蔽するし、
そもそも処理を必ず「上から下に」書くのでその点は問題にならない。
つまり、このように展開した場合、その関数は直前のsetTimeoutからしか呼ばれない。
したがって、覚える必要はないし、
処理があちこちに飛ぶこともない。(ただこれはそう書く、ということだが)

ちなみにクロージャーにはなっている。

> もちろん関数が長ければ分けるが少なければその場に埋め込むという意味だ。
いや、結構糞長い奴もそこに書くよね?
$.ajaxとかその場にだらだら全部書くほうが普通じゃないか?
デフォルトの名無しさん [sage] 2016/06/11(土) 16:39:28.40 :NAulAg4n


もうそろそろをみて、記憶に頼ってるなって自覚したはずw

> ちなみにクロージャーにはなっている。
なってない

function Main(){
 var v = 1
 setTimeout(function() {
  console.log(v);
 }, 1000);
}

↓ エラーになる

function Main(){
 var v = 1
 setTimeout(Main_1, 1000);
}

function Main_1(){
 console.log(v);
}

変数vを渡すために、名前が増えるwww
デフォルトの名無しさん [sage] 2016/06/11(土) 16:39:52.50 :ZhHlBSFM

ああ、ちょっと遅れたが、それは既に書いたように、俺内コーディングルール

処理を必ず「上から下に」書く

で対応している。というか、そもそも意図的に可読性を落とす必要はないだろ。
「上から下に」書けるところでは「上から下に」書くのが常識だろ。
名前もこの手の場合は XXX_1, XXX_2, ..... と順に付けていく。おかしな名前を付けたりすることはない。
デフォルトの名無しさん [sage] 2016/06/11(土) 16:40:41.06 :NAulAg4n

> $.ajaxとかその場にだらだら全部書くほうが普通じゃないか?

下手なやつが多いだけ。

俺は関数に分けるべき理由が生まれれば当然分ける。
534 [sage] 2016/06/11(土) 16:40:58.22 :ijG8u0pc
の綺麗なコードを見る前に、API問い合わせの部分を関数に分離しようと思って、fetch用の追加のエラーハンドリングも加えてこう書いてしまったんですね(お蔵入りですが、このなかで疑問が沸いたので・・)

function googleCustomSearch(query) {
return fetch(window.googleCustomSearchApi + query)
.then(handleNetworkError)
.then(response => response.json())
.then(json => {
chrome.storage.local.set({[query]: json});
return json;
})
.catch(err => {
// 【ここが疑問】
});
}

function handleNetworkError(response) {
if (!response.ok) {
throw new Error(reponse.status, response.statusText);
}
return response;
}
デフォルトの名無しさん [sage] 2016/06/11(土) 16:44:00.74 :NAulAg4n

> 処理を必ず「上から下に」書く
>
> で対応している。というか、そもそも意図的に可読性を落とす必要はないだろ。
> 「上から下に」書けるところでは「上から下に」書くのが常識だろ。

ほらなw お前の常識w

何処かで、function hoge() {} じゃなくて var hoge = function() {} って
書けって言っていたやつが居るが、
(ちなみに俺はその必要がないならばfunction hoge()って書け派)

これは上から下に書けない。

hoge();
var hoge = function() {}
hage()
var hage = function() {}

まあ 「上から下に」"書けるところでは" って書いているところからもわかるように
書けない場合があると自覚してるんだろうがw

その書ける所と書けない所、ここは書ける所だという前提を知ってるのも「記憶」だよねw
デフォルトの名無しさん [sage] 2016/06/11(土) 16:44:38.09 :ZhHlBSFM

何が言いたいのか分からんが、これでいいか?

function Main(){
var count = 0;
console.log('a: '+count++);
setTimeout(Main_1,2000);

function Main_1(){
console.log('b: '+count++);
setTimeout(Main_2,1000);
}
function Main_2(){
console.log('c: '+count++);
}
}
Main();
デフォルトの名無しさん [sage] 2016/06/11(土) 16:46:15.25 :NAulAg4n

勝手にコード書き換えんなよw

function Main(){
var count = 0;
console.log('a: '+count++);
setTimeout(Main_1,2000);

function Main_1(){
var v = 1;
console.log('b: '+count++);
setTimeout(Main_2,1000);
}
function Main_2(){
console.log('c: '+count++);
console.log(v); // エラーになる
}
}
Main();


それともお前、ローカル変数は作るな。
全部クラス変数にしろとか言う派なのか?www
デフォルトの名無しさん [sage] 2016/06/11(土) 16:50:41.71 :NAulAg4n

いやw 何が疑問なのかさっぱりわからないんだがwww
デフォルトの名無しさん [sage] 2016/06/11(土) 16:51:15.94 :ijG8u0pc
googleCustomSearchの呼出元にhandleNetworkErrorで起きたエラーを伝えるためには、

1.最後のcatchのなかでもう一度new Error(err)を投げる
2.Promise.reject(error)を返す
3.そもそも書き方が悪い、 みたいにfetchをnew Promiseでラップして、reject(err)してください

どれが適切なんでしょうか
デフォルトの名無しさん [sage] 2016/06/11(土) 16:54:15.22 :ZhHlBSFM

いや勝手に書き換えたのはお前だろ。
のコードでは var v=1 は Mainの中じゃないか。
Main_1の中で新しい変数が必要なら、

・Main_2をMain_1内に移動する(ネストが増える)
・v を Main内で定義しておく

のどちらかだろ。俺なら後者的アプローチを取ることが多いと思う。
ただ、途中で変数が必要なときも管理しなくていいというのは確かにメリットかもな。
デフォルトの名無しさん [sage] 2016/06/11(土) 17:02:05.55 :ZhHlBSFM

それはクラスの時の話だ。

クラスの場合は、コンストラクタだけ呼べても意味がないだろ。
Hoge.prototype.XXX = function(){...};
の記述が「順序が必要」なので、どのみちその記述以降じゃないと new Hoge() 出来ないんだよ。

誰も普通の関数 hoge を全部 var hoge = function(){} と書けとは言ってない。
お前が話について来れてないだけ。


まあ分かった、お前が「文法的に読み込める方が善」というのならそれでいい。
で、他の連中もそうなのか?
デフォルトの名無しさん [sage] 2016/06/11(土) 17:09:12.67 :ZhHlBSFM

ちと細かいがこれにも言っておくと、
> 俺は関数に分けるべき理由が生まれれば当然分ける。
彼等は「関数に分けるべき理由」が分からないのではなくて、その必要がないという判断でそこに書いているんだよ。
下手なわけではない。

通常、$.ajaxの場合はそこでしか使われない関数になるから、ネスト派ならそこにだらだら書く方が自然なんだ。
ただ、「ネストが深くなる」のが嫌いなくせに、「ネストでしか書かない」のが俺には疑問なんだ。
デフォルトの名無しさん [sage] 2016/06/11(土) 17:31:06.27 :aOjkg+66

毎度ありがとうございます。

> 機会があれば、是非新しい世界を作ることに挑戦してみてほしい

今回のことで色々勉強させてもらいましたので、
次に生かせたいと思います! 色々ありがとうございまし!
デフォルトの名無しさん [sage] 2016/06/11(土) 17:31:44.01 :aOjkg+66
おっw

×まし!
○ました!
デフォルトの名無しさん [sage] 2016/06/11(土) 18:02:04.85 :NAulAg4n

> 下手なわけではない。
> 通常、$.ajaxの場合はそこでしか使われない関数になるから、ネスト派ならそこにだらだら書く方が自然なんだ。
> ただ、「ネストが深くなる」のが嫌いなくせに、「ネストでしか書かない」のが俺には疑問なんだ。

いや、俺は$.ajaxでDeferred使うし、やっぱり下手なだけじゃね?
デフォルトの名無しさん [sage] 2016/06/11(土) 18:05:04.82 :NAulAg4n

> どれが適切なんでしょうか

どれか迷ったら、一番楽な方法を選べばいいよw
何でもそうだけど原則として楽になるように作られてるわけなんだしさ。

しばらくPromiseは触ってないから忘れたが、throwで任意のエラーオブジェクトでも
投げればいいんじゃね?
デフォルトの名無しさん [sage] 2016/06/11(土) 18:07:10.39 :NAulAg4n

> クラスの場合は、コンストラクタだけ呼べても意味がないだろ。

意味あるぞ?

function NantokaManager(params) {
 this.params = params;
 this.run = function() {}
}

var manager = new NantokaManager;
manager.run()

とかさ。
デフォルトの名無しさん [sage] 2016/06/11(土) 18:08:34.97 :NAulAg4n

> 誰も普通の関数 hoge を全部 var hoge = function(){} と書けとは言ってない。
> お前が話について来れてないだけ。

俺もそんな話はしていない。

ついてこいよw
デフォルトの名無しさん [sage] 2016/06/11(土) 19:28:03.24 :ZhHlBSFM

すまんが意味が分からんし、お前の主張も分からん。
その場合の駄目なコードとそちらの主張を対で出せるか?(以下例のように)

一応こちらの意見をもう一度言っておくと、

function hoge(){} // OK。通常の関数はこちら。
var Hoge = function(){}; // コンストラクタの場合はこっちの方がよさそう

となる。
そのコードが「共通プロトタイプを持たない場合」に限定しているつもりなら、勝手にどうぞでしかない。
デフォルトの名無しさん [sage] 2016/06/11(土) 19:33:03.15 :NAulAg4n

え? お前コードは必ずプロトタイプを持つものっていう前提なの?

どうやらお前は限定しているようだが、
俺は、どんな限定もしていない。
デフォルトの名無しさん [sage] 2016/06/11(土) 19:40:17.64 :ZhHlBSFM

何が言いたいのか分からん。
そちらが説明しきれないのなら、相互理解は不能だから終わりでいい。
デフォルトの名無しさん [sage] 2016/06/11(土) 21:27:53.17 :NAulAg4n


お前がこう言ってきたんだろ?

> クラスの場合は、コンストラクタだけ呼べても意味がないだろ。

だから俺は、コンストラクタだけ呼べても意味がある場合を言ったまで。
そしたらお前が「俺は共通プロトタイプをもった場合に限定してるんだ」って
いい出したんだろw

俺はお前と違って何も限定していない。
コンストラクタだけ呼べても意味がある場合は
実際に存在している。
デフォルトの名無しさん [sage] 2016/06/11(土) 22:29:21.64 :ZhHlBSFM

なるほど、お前は人殺し君か。
どおりで話が通じないわけだ。
デフォルトの名無しさん [sage] 2016/06/12(日) 00:46:04.68 :hCgFiHr7
多分人殺しくんとは俺の事だろうが、
は俺ではないし、正直、ID:ZhHlBSFMは頑張って色々回答してるけど実務レベルではないわ。
処理は上から下へ流れるように、なんて、飼い犬が死んでも言わんレベルのたわ言じゃん。

相互に呼び出し合う事のある関数なんかどういう順序で記述するんだろ。
イベンハンドラやら、タイマーのハンドラは、どの順序なのかな。

子供のお題目にしか聞こえん。
逆に何年目か教えてほしいわw
何度かこういう言い方してるけど、ああいう悔しがり方とキレ方する奴が具体的にすら言えないってことは、ほんとに経験無いガクセーさんなんだろうけど。
デフォルトの名無しさん [sage] 2016/06/12(日) 00:51:30.61 :CJz8oq6+
後学のためにID真っ赤にしてる方々の書いた素晴らしいスクリプトを見せてくださいよ
576 [sage] 2016/06/12(日) 00:51:41.20 :AMLyjVO9

お前のことだったんかw
いきなりなんか言われて意味不明だったわ。

えーと何の話だっけ?

同期命令が使える言語で、
sleep(1000)
console.log(1)
sleep(1000)
console.log(2)
sleep(1000)
console.log(3)

と書きたくなるようなコードを、ネストして書くだけでも苦痛なのに、これを関数に分解して

function Main_1() {
 sleep(1000)
 console.log(1)
}
function Main_2() {
 sleep(1000)
 console.log(2)
}
function Main_3() {
 sleep(1000)
 console.log(3)
}

とかやりたくないわけでw
あと関数なのに、大文字から始めってる時点で、経験不足だってことがわかるよ。
念の為に言っておくと、上のMain_1とか言うのは俺がいい出した名前じゃないからねw
デフォルトの名無しさん [sage] 2016/06/12(日) 00:52:45.85 :AMLyjVO9

俺は何回も書いてるよ。

とか読んでみな。(俺がという意味ではない)
デフォルトの名無しさん [sage] 2016/06/12(日) 01:26:35.68 :npk74fIw
はいはい自演乙。

自演じゃないならレベルの高いの間で色々解決できるだろうから頑張れ。
デフォルトの名無しさん [sage] 2016/06/12(日) 01:33:50.33 :AMLyjVO9
> 自演じゃないならレベルの高いの間で色々解決できるだろうから頑張れ。

自演じゃないぞw
解決できるだろうけど、その前に何も解決すべき
課題が出てないじゃないかw

そして、俺とお前は他人だろ?
その理屈ならいろいろ解決できるだろうな。
何か言ってみろ。俺は手伝わないがwww
デフォルトの名無しさん [sage] 2016/06/12(日) 01:40:01.79 :m2Zib5nl
あ?なんだこのゴミみたいな木っ端は
最低でも1000行以上あるプログラムとして成立してるもんもってこいや
デフォルトの名無しさん [sage] 2016/06/12(日) 01:43:07.89 :npk74fIw

じゃあとりあえずの疑問に答えてやれよ

> 相互に呼び出し合う事のある関数なんかどういう順序で記述するんだろ。
> イベンハンドラやら、タイマーのハンドラは、どの順序なのかな。

厳密にはこれは質問ではないから、「俺がどう書くか」の予想でもいいぞ。
とにかくお前らで色々話をしてみろ。

面白そうなら俺も加わるし、他も加わってくるだろう。
どうでもよければ無視されるだけだ。
デフォルトの名無しさん [sage] 2016/06/12(日) 02:01:39.12 :AMLyjVO9

どうせ質問に答えても自演じゃないって認めないんだろw
まあ質問じゃないとお前もわかってるようだから、それにレスしろと
いうならば、レスするのは何の問題もない。


> 相互に呼び出し合う事のある関数なんかどういう順序で記述するんだろ。
> イベンハンドラやら、タイマーのハンドラは、どの順序なのかな。

全くだなw 必ずしも上から書けるわけがない。
関数を呼び出される順番に書くとか言っているやつは馬鹿じゃないだおろうかね

どういう順番で書くかは、ばらばらで人によってはアルファベット順ってこともあるだろう。
だから必要もないのに小さな関数に分けるなんて論外。
一つの関数にし、ネストがいやだからPromiseというのが使われるようになった。

この件に関しては、俺はと同じ意見だろうな
デフォルトの名無しさん [sage] 2016/06/12(日) 02:36:10.54 :npk74fIw

> この件に関しては、俺はと同じ意見だろうな
そりゃ同一人物だからなw

まあ、人殺し君も多投するタイプだから、待ってればレスが返ってくるはずだ。
そして本当に別人なら、色々意見交換すれば相違点が発見できるだろう。
それは俺関係なしにいいことだから、やってみることだね。
デフォルトの名無しさん [sage] 2016/06/12(日) 02:56:48.44 :hCgFiHr7

同一人物とかよくわからんな。
俺が連投するのは暇だからで、まともに過ごしてる時はそれなりにしか書かんけど。
10日間際は忙しいからな。

まさか本気で同一人物だと思ってたら笑えるww
デフォルトの名無しさん [sage] 2016/06/12(日) 03:17:12.70 :hCgFiHr7

うむ。アルファベット順ならまだマシだけど。

台帳に書いてある順とかちょっとびっくりする会社もあるからな。どことは言わんけど。

多分業務経験ない奴は笑うだけだが、
実務やってれば「NDA結ばないとリバースエンジニアリングすら難しい」という人間minifierだったりする。

必要に応じて関数は分けるべきというより、むしろ、関数は射影的であるべきだと思う。
コールバック関数のネストを「関数と関数を繋いでる」と単純に誤解して悪手だと思ってほしくないのが、
本来は関数と「関数を引数に取る関数」を定義して、「関数を引数にとる関数」に関数を食わせるが為の手段を逆に見た結果、「コールバック」って姿に見えてるだけ。
だから、yieldとジェネレーターを使おうが、Promiseを使おうが、本来は何一つ定義が変わってる訳でも、処理が変わってる訳でも無い。
関数に関数を食わせて値を取り出してる。

・水を冷やして出来た物を、回転する鉋で削って、皿に落とし入れたもの、
・皿で受け止めた、回転する鉋で削られた、冷やされた水、
・回転する鉋で水を冷やして出来た塊を削り、皿に落としたもの
は全部主題が同じもの。
水を冷やす、という関数と水を、値として「氷」と扱おうが、
かき氷機を「『水を冷やした物』削り機」と展開しようが、とう扱うかは使い方次第。
そこに、ニーズ外の要件なんて無いの。扱いにくいとかどうでもいいんよ。
また、undefinedの時と同じ勘違いしてるけどさ。

水→機械A→中間生成物→機械B→製品、
というシーケンスであらわすのが正しいのか、
((水→機械A)→機械B)→製品、とフローで合わすのかは瑣末すぎるほどの差。

しかし、言われてるのは俺じゃないが、関数を大文字から始めると経験不足なんだwww
C20年目かもしれんけどな、そういう人はww
デフォルトの名無しさん [sage] 2016/06/12(日) 03:21:29.67 :hCgFiHr7
こいつ、言われたくないことを人に言って安全圏に逃げたいだけなんだろうなぁ。ユング的なシャドウをもう少し悪く歪めたものが見えるわ。
voidとか、岡部健みたいな感じの破綻者に対して憧れてる人間、くらい性根がさもしい。
デフォルトの名無しさん [sage] 2016/06/12(日) 09:01:52.07 :AMLyjVO9

だから同一人物じゃねーよw
デフォルトの名無しさん [sage] 2016/06/12(日) 09:04:46.11 :AMLyjVO9

> しかし、言われてるのは俺じゃないが、関数を大文字から始めると経験不足なんだwww
JavaScriptのコーディング規約はいくつもあるが、どれも関数は小文字で始める。クラスは大文字。
JavaScriptの経験があるなら、これに従ってるはずなので
見た瞬間気持ち悪さを感じるものだよw
デフォルトの名無しさん [sage] 2016/06/12(日) 09:10:26.75 :AMLyjVO9

> だから、yieldとジェネレーターを使おうが、Promiseを使おうが、本来は何一つ定義が変わってる訳でも、処理が変わってる訳でも無い。

処理が変わってるわけでもない・・・ならば
読みやすい方がいいだろ?

逆に考えれば、どんなに読みづらく書いても
処理が変わっていないというコードにすることはできるだろう?
読みづらくても処理が同じならいいと言うのか?
そうではないだろう。

コードっていうのは書いて終わりじゃない。修正するもの。
むしろ読むほうが多いので、書くよりも読むほうが大事。
だから「可読性」という言葉がある。「可書性」という言葉はない。

> そこに、ニーズ外の要件なんて無いの。扱いにくいとかどうでもいいんよ。
俺はいまだかつて「時間的に早く書けて修正も簡単で、メンテナンスにかかるコストが低い」
という要件がなかったことはないぞw
どんなプロジェクトでも安く仕上げることは、暗黙的に含まれてる要件だ。
デフォルトの名無しさん [sage] 2016/06/12(日) 13:15:07.43 :npk74fIw
別人であればもっと議論が深まるはずだよな。
みんな見てくれてるから、せいぜい頑張れ。
デフォルトの名無しさん [sage] 2016/06/12(日) 13:19:20.40 :AMLyjVO9
どうあっても別人と認めたくないようだ(笑)
デフォルトの名無しさん [sage] 2016/06/12(日) 13:20:50.61 :AMLyjVO9
あ、なるほど。話が進むと今度は
一人だから意図的に会話できる。
それが自作自演の証拠って言うつもりだなw
デフォルトの名無しさん [sage] 2016/06/12(日) 15:04:26.78 :npk74fIw
いやきみ(ら)にとっては俺はただの馬鹿なんだろ。
だったら俺を引っ張り出す方向のレスを付けること自体おかしいだろ。
ガン無視してくれよw

いずれにしても、君らが「別人」かどうかは皆が判断することであって、
俺が「自演」主張しても、逆に君らが「別人」主張しても意味無いんだよ。
どちらがキチガイかは皆が判断してくれる。

そして一つアドバイスをするなら、君のキャラなら
「え?お前偉そうなこと言っている割には『大文字』のルールも知らないんだwww」
と煽るべきだった。キャラを変えると自然な自演に見えない。
君も煽りで相手を引き出すキャラなんだし、
このレスなら人殺し君のキャラなら確実に食いついてくるし。

本当に別人なら、君らが会話すれば君らにとっても得る物があるはず。だからもっとやればいい。
いちいち俺に対してキョロキョロしたり、
或いはここに来て会話を終わらせる方向にキャラ変更するのは不自然だ。


はい続きをどうぞ。
デフォルトの名無しさん [sage] 2016/06/12(日) 16:27:25.35 :9HFtYPb0
その人殺し君とかいうのに論破されちゃって
悔しくて大ハッスルしてるの?
デフォルトの名無しさん [sage] 2016/06/12(日) 16:54:18.02 :hCgFiHr7

そりゃ、javascriptの規約はいくらでもあるだろうけど、
javascriptの規約しか知らないどころか、ありえないような口ぶりで話してたからねw
なんかからトランスパイルするなら、こうなるだろうな、って考えたりしないんだ、って感じ。


もちろんそう。
しかし、読みやすいのと書きやすいのと、定義しやすいのはそれぞれ別の概念だから、そういう意味では可読性に相当する単語は、独立性とか、依存度とか、抽象度とか
見方次第でいくらでも変わるものじゃないか?
安くあげる事より、致命的な不具合を出さない事の方が求められるプロジェクトしかやってないからな。

正直、安くなくても売れるから。
安くないほうが売れるとも言えるレベルで。


お前ほんと何と戦ってんの?
デフォルトの名無しさん [sage] 2016/06/12(日) 19:20:47.80 :npk74fIw

> わざとこの態度だからなぁ。 ()
煽っていくスタイルプリーズ
デフォルトの名無しさん [sage] 2016/06/12(日) 19:39:15.05 :AMLyjVO9
> なんかからトランスパイルするなら、こうなるだろうな、

なんでそんなコード書くの?www
デフォルトの名無しさん [sage] 2016/06/12(日) 19:40:36.87 :z4XaqaSO
function f(a) {
let t = a;
t[0] = 1;
console.log(a);
console.log(t);
}

let a = [0];
f(a);

これaも[1]になっちゃうんですが
ES2015とか新しい書き方で配列をコピーする方法ありませんか?
デフォルトの名無しさん [sage] 2016/06/12(日) 19:41:46.51 :AMLyjVO9

> どちらがキチガイかは皆が判断してくれる。

お前がキチガイだって俺は判断したよwww
デフォルトの名無しさん [sage] 2016/06/12(日) 22:24:47.44 :QKWa7och
芝生くっつけるやつにろくなのはいないってのは間違いなさそうだ
デフォルトの名無しさん [sage] 2016/06/12(日) 22:34:59.19 :npk74fIw

馬鹿にはちゃんと安価付けろ。気づいてもらえないぞ。
てかお前もちゃんと煽れよ。


宛だぞ。
おーい。煽られてるぞー。
デフォルトの名無しさん [sage] 2016/06/12(日) 22:46:30.04 :xguVhByI
そりゃ別人なんだから、煽りもするわwww
デフォルトの名無しさん [sage] 2016/06/12(日) 23:31:28.41 :GjxFekK/

concat
デフォルトの名無しさん [sage] 2016/06/12(日) 23:34:06.35 :xguVhByI
shallowコピーの場合はconcatでいいよね。
最初は?ってなるけど、知ってしまえば簡単に覚えられるし。

なんらかのdeepコピーの場合はライブラリ使うしか無いかな?
デフォルトの名無しさん [sage] 2016/06/12(日) 23:54:06.37 :npk74fIw
いやシャローコピーは slice() だと思うが。
デフォルトの名無しさん [sage] 2016/06/12(日) 23:56:00.26 :hCgFiHr7

お前、脳みその代わりにババロア詰まってて、しかも微妙に機能してんじゃねえの?
一番煽られてんのはお前だと思うんだけどw
恥ずかしくねえのかな。。
デフォルトの名無しさん [sage] 2016/06/12(日) 23:57:34.48 :hCgFiHr7

JSON.parse(JSON.stringify(obj))
が、一番手軽で早い。
デフォルトの名無しさん [sage] 2016/06/13(月) 00:05:59.69 :6Ot446qT

関数コピーできない。
日付がおかしくなる。
undefinedが消える。

使えないねw
デフォルトの名無しさん [sage] 2016/06/13(月) 00:15:43.00 :rTAmnA9g

値をコピーするなら十分でしょ。
関数をコピーとか必要性がわからんし、
undefinedが消えるって、元からundefinedだったんだから、消えてないでしょ。
undefinedが消えるってのは、undefinedで無くなるときだよ。

お前の頭が使えねえなぁ。
デフォルトの名無しさん [sage] 2016/06/13(月) 00:15:53.62 :+G6yi6vX
let の宣言場所について質問させてください
for文の中でのみ使う変数を let で宣言しようとしたら、forの中と外どちらで宣言したほうがいいんでしょうか
デフォルトの名無しさん [sage] 2016/06/13(月) 00:32:34.63 :6Ot446qT

> 値をコピーするなら十分でしょ。
勝手に決めるな。

日付がおかしくなる問題は解決できてないし、
undefinedが消えるっていうのは、キーが無くなるんだよ。
まったく使えないって言ってるだろ
デフォルトの名無しさん [sage] 2016/06/13(月) 00:40:16.01 :6Ot446qT

どうするのが一番可読性が良いかを考えれば自ずと答えは出る。
可読性を高くするには、頭の中で覚えておくコードを少なくするということでもある。
だからより小さい範囲、つまりfor文の中で書くのが良い。

ただし、for文の行でいろいろ書くなよ?w
for (let i = 0, l = array.length; i < l; i++)
for文の行でやるのは多くてもこれだけ(インデックス用の変数と終了条件)だ

for (let i = 0, l = array.length, foo, bar, baz; i < l; i++)
なんてfor文とは関係ない変数を宣言しないように。

言い換えると、変数に代入しないletはやってはいけないってこと。

let v = 0; // OK
let v; // NG

またletではなくconstを使ったほうが良いぞ
constは再代入が不可能になる。つまり変数に入れた値を変えることが出来ない。
それでプログラミングが出来るのか?って思うかもしれないができるんだ。
関数型プログラミングの考え方を取り入れると殆どconstでよくなる。
デフォルトの名無しさん [sage] 2016/06/13(月) 01:17:56.81 :+G6yi6vX

むむむ・・・ インデックス用の変数でも終了条件でもないです
後で見たときに何をしているか分かりやすいように、計算途中の値に名前をつけて一時変数に入れていました
forの試行毎に新しい計算値が入ります
デフォルトの名無しさん [sage] 2016/06/13(月) 01:49:05.39 :6Ot446qT

つまりこういうことでしょう?

for(let i = 0; i < 10; i++) {
 let value = i * 10
 console.log(value);
}

当然forの中だよ。中でしか使わないんだから。

そしてこれはconstに置き換えられる。

for(let i = 0; i < 10; i++) {
 const value = i * 10
 console.log(value);
}

ループ毎に新しく作られるからだ。

このconst valueをforの外に置くことは出来ない。
デフォルトの名無しさん [sage] 2016/06/13(月) 02:07:05.34 :LLEcmK37
es2015で()=>をつかえばthisの挙動を変更できるのに
なんでjavascriptでdeep copyができないのですか?
}
デフォルトの名無しさん [sage] 2016/06/13(月) 02:13:16.73 :+G6yi6vX

ありがとうございます! forの中に引っ越します
varに慣れていたので繰り返し処理のなかで宣言するのに違和感があったんですよね
デフォルトの名無しさん [sage] 2016/06/13(月) 02:41:54.70 :6Ot446qT
俺はvarのときからforの中に書いていたけどね。
そこだけでしか使わないし、別に文法エラーでもなんでも無いんだから。
デフォルトの名無しさん [sage] 2016/06/13(月) 06:18:58.38 :o3uO7eJP

キーが無くなるのと、キーに対応する値にundefinedが入ってるのは同値だろ。
だから、undefinedを代入してる!みたいな勘違いしたのかな?頭おかしいのかなw

日付がおかしくなるって具体的にはどう言うこと?エポックがズレるみたいな話では無くて、型が誤解されるみたいな話なら苦笑いだな。


変数に代入しないlet、では無いんじゃねえの?
仮宣言みたいなもんで。
デフォルトの名無しさん [sage] 2016/06/13(月) 07:23:07.35 :+G6yi6vX
スコープ先頭での let a; がダメとなると、スコープ後半になってから代入する値が確定するケースではどうしてるんでしょう?
コード修正時にtemporal dead zoneによるミスを起こし易いので、スコープ途中でlet宣言する場合は、明示的に新たにブロックスコープを作ったほうがいいと書いてあるのをどこかで読んだんですが、
最後まで使う変数にそれをするとスコープのためだけにネストが深くなってしまって気持ち悪いです
デフォルトの名無しさん [sage] 2016/06/13(月) 07:33:47.84 :ZIxcBfsq

let a=nullで宣言しておいたら?
デフォルトの名無しさん [sage] 2016/06/13(月) 09:10:57.92 :6Ot446qT

> キーが無くなるのと、キーに対応する値にundefinedが入ってるのは同値だろ。

違うぞw
keysで出力されるもの見てみwww
デフォルトの名無しさん [sage] 2016/06/13(月) 09:47:02.30 :uHiiHky6
普通にブロック内に書けばいいんじゃないの?
わざわざブロック使えなんていうなら、関数全体で同じことしてるvarだって先頭で全部明示しろってなると思うんだけど
デフォルトの名無しさん [sage] 2016/06/13(月) 09:57:57.31 :CfEi32hJ
が指摘している問題はおそらく、こういうこと

var obj = {fn: function fn () {}, date: new Date, undefined: undefined};
console.log(obj);
console.log(JSON.stringify(obj)); // "{"date":"2016-06-13T00:45:07.522Z"}"
console.log(JSON.parse(JSON.stringify(obj))); // {"date":"2016-06-13T00:45:07.522Z"}
var array = [function fn () {}, new Date, undefined];
console.log(array);
console.log(JSON.stringify(array)); // "[null,"2016-06-13T00:48:58.483Z",null]"
console.log(JSON.parse(JSON.stringify(array))); // [null, "2016-06-13T00:52:23.947Z", null]
デフォルトの名無しさん [sage] 2016/06/13(月) 10:10:14.80 :CfEi32hJ
JSON.stringify の一番の問題は new Object, new Array 以外の Object 型を扱えない事
new Date なら String 型に変換されるだけだから new Date し直す方法がある(ただし、参照は失われるので参照比較できなくなる)が、それ以外はどうしようもない

function Person (name) { this.name = String(name); }
var obj = {person: new Person('太郎')};
var obj2 = JSON.parse(JSON.stringify(obj));
console.log(obj); // {person: Person {name: "太郎"}}
console.log(obj.person instanceof Person); // true
console.log(JSON.stringify(obj)); // {"person":{"name":"太郎"}}
console.log(obj2); // // {person: Object {name: "太郎"}}
console.log(obj2.person instanceof Person); // false

今のところ、deep copy する標準関数はないので Object.assign を使って自前で deep copy 関数を作るのが妥当
デフォルトの名無しさん [sage] 2016/06/13(月) 10:57:57.06 :ZIxcBfsq

あのさ、keysで定義されていてもその中身はundefinedなんだろ?
なら、データとしての扱われ方として、同じだと思うんだけど。
キーがある事が大切であれば、キーを列挙したもの、というデータがあるべきだと思うんだけどどうなの?


あーなるほど、そういうことか。
参照を失わせるために、そういう事するんだから、であればそのオブジェクトの.toJSONを定義してやるべきだろうね。
デフォルトの名無しさん [sage] 2016/06/13(月) 11:55:17.37 :CfEi32hJ

> あのさ、keysで定義されていてもその中身はundefinedなんだろ?
横から口を出すが、hasOwnPropety の結果が異なるから同じではない
「undefinedを代入する設計が筋が悪い」といわれればその通りだが、「同じ」ではない
実際、プロパティの存在チェックなら obj.prop !== undefined よりも obj.hasOwnProperty('prop') を使うべきだ

var obj = {undefined:undefined}, obj2 = {};
console.log(obj.hasOwnProperty('undefined')); // true
console.log(obj2.hasOwnProperty('undefined')); // false

> 参照を失わせるために、そういう事するんだから、であればそのオブジェクトの.toJSONを定義してやるべきだろうね。
プリミティブデータの倉庫として使うなら JSON.stringify で良いが、new Object, new Array 以外は参照を失わせるべきではないのでは?
でいえば、new Person('太郎') を {name: '太郎'} に書き換えるメリットがない
デフォルトの名無しさん [sage] 2016/06/13(月) 12:22:56.73 :CfEi32hJ
> 参照を失わせるために、そういう事するんだから、であればそのオブジェクトの.toJSONを定義してやるべきだろうね。
ひょっとして、new Person する為の拡張構文をJSON に追加してやるといいたかったのだろうか

私が deep copy するのは構造を書き換えたいが、元の構造も残したい場合だからデータそのものは元のままでいい
new Person('太郎') はたった一人の太郎であり、同名の太郎を作ってもらっては困る
同名オブジェクトを作ると taro === person の比較が出来ず、person instanceof Person && taro.name === person.name のようにダックタイピング的に比較しなければならない
こうなるともう new Person を定義した意味がなく、{name: '太郎'} を生成したのと大して変わらない
デフォルトの名無しさん [sage] 2016/06/13(月) 13:52:54.74 :KnYKOJ/M

あー、わからんでもない。
undefinedを値として使う、ってニーズがあれは、それもまた真なんだろうな。
そうなると、assignでもなくオブジェクト毎にちゃんとcloneを実装すべきって感じか。


ちょっとまって、それはdeepcopyでは無いんじゃないの?
ただの参照の張替えじゃないか。
比較するのであれば、それはequals的なメソッドを作るか、諦めて、stringifyした物同士が同じになるかを比較すべきだろ。
デフォルトの名無しさん [sage] 2016/06/13(月) 17:10:28.33 :CILZ2bdj

{}, [] は deep copy する
[{person: new Person('太郎')}, {person: new Person('一朗')}]

逆に new Person を deep copy したいと思う状況が分からない
new Date も関数も期待通りに動かないわけで汎用性が大きく犠牲になっていると思うが…
デフォルトの名無しさん [] 2016/06/13(月) 17:51:17.99 :u+uz+gNL
ボタンをクリックしたいのですがどう書けばいいかわかりません>_<
ソースはこれです↓
ttp://i.imgur.com/IQLz1Kp.jpg
デフォルトの名無しさん [sage] 2016/06/13(月) 17:52:47.17 :viWjyZUM
変数宣言って同じ人でもいまいち一貫性が感じられないんだけどさ
はるか遠くで使うのに頭に全部羅列してるかとおもいきや次は使う直前に書いてたり
そうしなきゃいけない時ももちろんあるけど、特にそういう理由も見受けられないのもいっぱいある
あまり詳しくないんだがなんか意味あるのああいうの
デフォルトの名無しさん [sage] 2016/06/13(月) 18:30:36.62 :K+DNMsci

状況がわからない、とか言ってちゃぶ台返しされても。。
deepcopyの話じゃないの?
それはシャローコピーそのものじゃん。。一番上っ面だけコピーするって。
Personをdeepcopyしたいって要件ならいくらでもあるじゃん。
オブジェクト変更するから、変更前の「前回オブジェクト」を持っておきたいとか、
保存ボタン押すときに、保存の必要性あるか確認したいから、オブジェクトと退避オブジェクトを比較したい、その退避オブジェクトを作るとか。
デフォルトの名無しさん [sage] 2016/06/13(月) 20:36:13.44 :WO2lddk8
private変数っぽくしたいときにこうするのってどう?
var Foo = function () {this.private = {};};
Foo.prototype.getBar = function () {return this.private.bar;};
Foo.prototype.setBar = function (b) {this.private.bar = b;};
var foo = new Foo();
{
let _baz;
foo.getBaz = function () {return _bar;};
foo.setBaz = function (b) {_bar = b;};
}
後者はインスタンスごとにgetter/setterをクロージャにしなきゃいけなくて不満。
前者はfoo.private.barで手が届いちゃうものの、意図は明確でそれで十分な気が。
private変数っ「ぽく」したいだけの場合、前者の方法はどう? みんなどう思う?
あとjavascript界隈に既に、こういう「ぽく」したい場合のイディオムってある?
デフォルトの名無しさん [sage] 2016/06/13(月) 21:22:27.21 :pgYO3XjB
to infinity and beyond
デフォルトの名無しさん [sage] 2016/06/13(月) 22:52:41.14 :O5DunmIw

だから、{}, [] は deep copy するといっているのだが
次の構造は正しくdeep copyされる
[[[1], [2]], [[3], [4]]]
{a: {1: true}, b: {2: false}}

一口にdeep copyといってもいろいろ問題があるわけで「この問題にあなたはどう考えているのか?」

- 関数はdeep copy出来ない(そもそも、スコープが変わったら動かなくなる可能性がある)
- customコンストラクタはdeep copy出来ない
- その他、Array, Object以外のdeep copyも難しい

この問題は個々がdeep copyする状況によって解決策が変わるだろうからあなたの考えがな聞きたかった
デフォルトの名無しさん [sage] 2016/06/13(月) 22:57:06.96 :O5DunmIw

> オブジェクト変更するから、変更前の「前回オブジェクト」を持っておきたいとか、
なるほど、その発想はなかったな
私ならPersonかPersonを管理するクラスを作ってその中で履歴を管理しそうだ
デフォルトの名無しさん [sage] 2016/06/13(月) 23:38:40.69 :K+DNMsci

だから、あのさあ。。
他の言語で考えてみれば?そんな関数は、jsで言う、そのインスタンスのプロトタイプが持つべきで、そのインスタンスが持つべきものじゃないでしょ。
二回目だけど、それはdeepcopyではない。
どうしてもしたければ、laveでもしろ。
問題が理解出来てなさすぎるんじゃないか?


Personを管理するクラスを作ったなら、そいつが持つのは一体何なんだ?
Personじゃないの?
「Person」と、「Personのコピー」と、「PersonとPersonのコピーを管理するクラス」って無駄すぎるだろ。
どう考えてもPersonを正しくコピー出来るべきで、Personのインスタンス同士を中身を使って比較出来るべきじゃないの?
デフォルトの名無しさん [sage] 2016/06/13(月) 23:45:19.16 :O5DunmIw

JSONでもdeep copy出来てなかったと思うのだが
否定ばかりであなたの考える最善が何も出てこないな
デフォルトの名無しさん [sage] 2016/06/14(火) 00:47:25.44 :DODkZCvX
JavaScriptで deep copy に最適解は存在しないので自分のポリシーに照らし合わせて一番無理のない実装を考える
例えば、次のオブジェクトの deep copy が難しい

var obj = {
date: new Date,
regexp: /test/g,
img: new Image(100, 100),
window: window,
document: document.implementation.createHTMLDocument('sample'),
elementInIframe: document.querySelector('iframe').contentDocument.getElementById('hoge'),
fn: (function (i) { return function fn () { return i++; }; }(0))
};

date, regexp は getPrototypeOf で [[Prototype]] を確認すれば実装可能
img, document, elementInIframe は cloneNode で可能
window は new Window する仕組みがないと難しい
fn は Function#toString を取るだけではスコープの問題を解決不可能なので無理
この調子で一つ一つ対処していったらキリがないのでどこかで妥協するのが普通
ちなみに、deep copyでJSONを持ち出すのは妥協の結果であり、他を圧倒するほどのメリットはない(そもそも、シリアライズする意味がない)
それぞれの妥協解を開示して意見を募るぐらいが妥当ではないかね
デフォルトの名無しさん [sage] 2016/06/14(火) 02:01:10.19 :9x/TacpJ

最善は、オブジェクトはオブジェクトとして、関数をもたず、単なるデータの塊として、関数とは別に定義して、
stringify/parseで文字列と相互に変換できる、だよ。
ネットワークを経てrpc的なもので関数呼び合うにも便利だし。
値の持ち主が関数を持つのは好きじゃない。

圧倒するほどのメリットと言えば、それこそAPIやら、socket.ioを経ても素直に透過な所じゃないかな。
デフォルトの名無しさん [sage] 2016/06/14(火) 02:03:53.91 :M6DJWkXG

日付が壊れる問題はどうすんの?
デフォルトの名無しさん [sage] 2016/06/14(火) 02:06:47.27 :M6DJWkXG
あれ?もしかしてまだ日付が壊れる問題の詳細でてなかったの?
日付らしき文字があったからもう情報出てると思ってたw

まあぐぐればすぐに分かるよね?って話。

JavaScriptのDeepCopyでJSON.parse/stringifyを使ってはいけない
ttp://qiita.com/seihmd/items/74fa9792d05278a2e898
デフォルトの名無しさん [sage] 2016/06/14(火) 02:11:20.97 :M6DJWkXG

> 最善は、オブジェクトはオブジェクトとして、関数をもたず、単なるデータの塊として、関数とは別に定義して、
> stringify/parseで文字列と相互に変換できる、だよ。

理由がないよね。

> ネットワークを経てrpc的なもので関数呼び合うにも便利だし。
今はDeep Copyの話をしている。
シリアライズの話なら別でやれ
デフォルトの名無しさん [sage] 2016/06/14(火) 02:24:34.32 :TbEnZJwB

なんでこういう事いう奴のJSON.parse/stringifyには第二引数がないんだろう?w
デフォルトの名無しさん [sage] 2016/06/14(火) 02:31:07.43 :M6DJWkXG
JSON.parse/stringifyには第二引数で頑張ればできるという誤解が
広まらないように先に言っておくと、これはNumber、String、Booleanにしか
対応できません。
デフォルトの名無しさん [sage] 2016/06/14(火) 04:26:35.95 :TbEnZJwB

嘘吐くなよ試しちまったじゃねぇかw

parseに渡すreviverは文字列を受け取って問題なくオブジェクトを返せるし
stringifyに渡すreplacerはオブジェクトを受け取って任意の文字列に変換出来る
別にコピーのためだけに局所的に使うならreplacerは正しいjsonを吐く必要もないしな
復元のための情報山盛りにして吐き出せばいい

Dateとundefinedを試してコピー出来たのは確認した
Functionとクロージャはスコープの問題があるのでシャローコピーにせざるを得ないが
同一スコープ内でstringify/parseをするならreviverでオリジナルから参照をコピーするのは簡単だ
ただまあここまでやるのはシリアライザとデシリアライザを自前で実装するのと変わらんからオブジェクトを直接弄った方が早いなw

ところでディープコピーってjQueryからextendメソッドをパクって来るんじゃダメなんか?
循環参照で死ぬので他のライブラリのでもいいがディープコピーを実現しようとしてるライブラリは少なくないと思うんだが
デフォルトの名無しさん [sage] 2016/06/14(火) 09:05:34.57 :BcKyLCvc

「js button click event」で検索!
デフォルトの名無しさん [sage] 2016/06/14(火) 09:26:05.33 :VOPCCsis

「いやです!>_<」
デフォルトの名無しさん [sage] 2016/06/14(火) 09:30:58.95 :DODkZCvX

> 最善は、オブジェクトはオブジェクトとして、関数をもたず、単なるデータの塊として
だから、それをどうやって実装するのか、という事を聞いているのだが
「データの塊」とはJSONにあるような「プロパティの塊」の事か?

function Person (name) { this.name = String(name); }
var obj = {name1: new Person('Ken'), name2: {name: 'Ken'}};
console.log(JSON.stringify(obj)); // "{"name1":{"name":"Ken"},"name2":{"name":"Ken"}}"

結局、JSONの問題点は克服できてないのだが
あなたの頭の中がJSONに最適化されているからJSONにそぐわないコードを意識的に追い出しているに過ぎない
- 関数が消されるが、使わないので問題ない
- undefined は消されるが、undefined をプロパティ値に持たないので問題ない
- new Date は String 型に変換されるが、後で new Date し直すので問題ない
- new Arrayを除く全てのオブジェクトは new Object に変換されるが、オブジェクトおを「プロパティの塊」としかみないので問題ない
- new Date(2016, 5, 14, 9, 0, 0) と "2016-06-14T00:00:00.000Z" が同値を認識されるが、データの塊としか見ないので問題ない
- new function Person (name) { this.name = name; }('Ken') と {name: 'Ken'} が同値と認識されるが、オブジェクトを「プロパティの塊」としか見ないので問題ない

> 圧倒するほどのメリットと言えば、それこそAPIやら、socket.ioを経ても素直に透過な所じゃないかな。
JSONはシリアライズ不可能なオブジェクトを扱えないデメリットがある
「あなたは」シリアライズ不可能なオブジェクトを使わないからJSONが最適解だが、「私は」シリアライズ不可能なオブジェクトを扱うので最適解が「シリアライズ不可能なオブジェクトを社ローコピーする」になっている
トレードオフの関係にあることは間違いない
デフォルトの名無しさん [sage] 2016/06/14(火) 09:41:30.57 :DODkZCvX
の obj を JSON.stringify(obj); すると SyntaxError になるな
デフォルトの名無しさん [sage] 2016/06/14(火) 10:11:55.55 :dYSnVaKQ

最適解が「シャローコピー」となる、その主語はなに?
何に関して議論してるの?
デフォルトの名無しさん [sage] 2016/06/14(火) 10:29:28.31 :ScASA3Ww
別にJSON使ってもいいと思うけど、
別の手としてはMessageChannel使えば非同期で循環参照も扱える
まあJSONも少し手を加えれば循環参照を扱えるが
昔作ったこんな感じで
ttp://ideone.com/Zxp7kN

昔関数も扱えないかと考えたことがある
まあちょっとコピーとは感じが違うが、NodeとブラウザでWSを使いオブジェクトを共有しようと思っていた。
その時はオブジェクト情報を送るのではなく影となるProxyを使い、
操作を原本に問い合わせることでだいたい可能という判断になった。
原本に与える影響を最小限にして、あたかもでディープコピーされたかのように振る舞うのも
まあ巧みなProxyとレシーバーを守るメソッド定義に気をつけていれば可能な範疇だろう
デフォルトの名無しさん [sage] 2016/06/14(火) 11:59:42.69 :9x/TacpJ

頭おかしいのかな。
そうだと言ってるんだよ。
データと操作と、操作のためのオブジェクトは別個に考えるべきだと。
最適解として、シリアライズ不可能な物はシャローコピーする、は、
お前の運用に対する無難な妥協点であって、ディープコピーじゃないよ。
だからlave使えって。
デフォルトの名無しさん [sage] 2016/06/14(火) 12:02:10.51 :9x/TacpJ

toJSON実装しとけ。
デフォルトの名無しさん [sage] 2016/06/14(火) 12:50:00.83 :DODkZCvX

シリアライズ不可能なオブジェクト


「あなたの考えるdeep copyかどうか」はどうでもいいんだがな
「あなたの考えるあなたの為のdeep copy」が私にとっては使えないし、逆もしかりというだけなんだが
で、「あなたの考えるdeep copy」と「私の考えるdeep copy」の仕様が違うだけ
laveとは何のことだ?


toJSONとは?
デフォルトの名無しさん [sage] 2016/06/14(火) 12:51:12.47 :DODkZCvX
追記
「ディープコピーじゃないよ」といわれてもあなたの中ではそうなんだろう、としか言いようがない
デフォルトの名無しさん [sage] 2016/06/14(火) 13:11:10.09 :dYSnVaKQ

> シリアライズ不可能なオブジェクト
それ、そもそも問題設定がおかしくないか?

もともとはオブジェクトをコピーするときの話で、その目的・実現方法による分類として
シャローコピーとディープコピーがある。

シリアライズ不可能なオブジェクトでもシャローコピーで良い場合もあれば悪い場合もある。
それは目的によって異なるというだけのこと。
デフォルトの名無しさん [sage] 2016/06/14(火) 13:20:14.73 :dYSnVaKQ
からも話が続いてるとして、
> 一口にdeep copyといってもいろいろ問題があるわけで「この問題にあなたはどう考えているのか?」
> この問題は個々がdeep copyする状況によって解決策が変わるだろうからあなたの考えがな聞きたかった

つまり、ディープコピーしたいんだが、ある項目についてはそれが難しいという話でしょ?
で、その問題解決の最適解がシャローコピー?


> オブジェクト変更するから、変更前の「前回オブジェクト」を持っておきたいとか、
> 保存ボタン押すときに、保存の必要性あるか確認したいから、オブジェクトと退避オブジェクトを比較したい、その退避オブジェクトを作るとか
目的でディープコピーをしたいのだという人と、根本的に議論がかみ合ってない。
デフォルトの名無しさん [sage] 2016/06/14(火) 13:22:09.03 :9x/TacpJ

deepcopyの定義から考えような。勝手キーワードじゃないよ。
ttp://https://en.m.wikipedia.org/wiki/Object_copying#Deep_copy">ttps://en.m.wikipedia.org/wiki/Object_copying#Deep_copy

laveはこれ。
ttps://github.com/jed/lave/blob/master/README.md

toJSON
ttps://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

デフォルトの名無しさん [sage] 2016/06/14(火) 16:09:36.89 :9x/TacpJ
まぁ、===で比較したいから、インスタンスは唯一の存在であってほしいから、これは「俺のdeep copy」とか言われても困るわな。
絶対地雷踏み抜くわ。
同名のtaroオブジェクトとかで苦笑いしておくべきだったか。
デフォルトの名無しさん [sage] 2016/06/14(火) 17:54:57.29 :DODkZCvX

あなたの主張はわかった
デフォルトの名無しさん [sage] 2016/06/14(火) 18:07:30.48 :dYSnVaKQ
あなたの主張はわかった。
=> でもそれは間違ってる
=> 私が間違っていた
=> あなたも正しいが、私の主張も正しい
のどれだろうか。
デフォルトの名無しさん [sage] 2016/06/14(火) 18:47:33.56 :9x/TacpJ

無知を省みて自分の至らぬ所を認め、その上で正しい知識を入れ直さないと、
技術者として致命的な場面がやってくるよ。
匿名で出来る間にやっておけばいかがかな。
デフォルトの名無しさん [sage] 2016/06/14(火) 19:35:30.53 :TG3hSyiU
一般論からは、複製するオブジェクトを利用している文脈に固有のデータは
複製されない方がよいだろう(一時的な管理データなど

よって、何を複製すべきかは複製した結果を利用する文脈に依存する
元と同じ文脈で利用する場合でも、すべてのデータを複製した方が
いいとは限らない( id みたいに重複すると困るものなど
デフォルトの名無しさん [sage] 2016/06/14(火) 22:10:43.05 :VJ/4c5wE
ディープコピーは滅多に使わないな
マップした結果が偶々ディープコピーと同じ結果になる事はあるけど
転送はJsonXmlバイナリのどれかのシリアライズだし
デフォルトの名無しさん [sage] 2016/06/14(火) 23:14:40.87 :9x/TacpJ
一般論としては、ってのがよくわからんが、そんなものをデータに持ち込むからじゃないの?
デフォルトの名無しさん [sage] 2016/06/14(火) 23:28:10.46 :M6DJWkXG
ディープコピーとシリアライズは別の機能。
ディープコピーにシリアライズ用の関数を使うのは間違い。

それだけの話だろ
デフォルトの名無しさん [sage] 2016/06/15(水) 00:12:34.59 :cIXZs8w1

そりゃおっしゃる通り。
一番元々の要件に対して、「手軽で早い」解決策。
そこから、変なものをdeepcopyだと寝言言う奴があらわれてこうなっただけ。
cloneとequalsを定義すべきだと思うよ。「正しい実装」では。
デフォルトの名無しさん [sage] 2016/06/15(水) 00:19:47.28 :wTcNi+2O

もともとの要件? もともとの要件は、ディープコピーなんだが?w
ディープコピーにシリアライズ用の関数を使うのは間違いって
JSONつかってやるコードを持ち出してきた
をぎったんぎったんに叩いてやれよw

↓しっかり思い出せやw

608 自分:デフォルトの名無しさん[sage] 投稿日:2016/06/12(日) 23:34:06.35 ID:xguVhByI [2/2]
shallowコピーの場合はconcatでいいよね。
最初は?ってなるけど、知ってしまえば簡単に覚えられるし。

なんらかのdeepコピーの場合はライブラリ使うしか無いかな?

611 返信:デフォルトの名無しさん[sage] 投稿日:2016/06/12(日) 23:57:34.48 ID:hCgFiHr7 [7/7]

JSON.parse(JSON.stringify(obj))
が、一番手軽で早い。
デフォルトの名無しさん [sage] 2016/06/15(水) 01:25:24.86 :Iz/1ukPU
ディープコピーといっても様々じゃない?
構造下のオブジェクトは再作成することになるが、
関数に限ってはクロージャの面からも参照コピーした方がいい。
しかしそうなると関数オブジェクトのプロパティの取り回しが困る。
他にも非列挙やシンボルの扱いもあるし一般的に何が正しいかなんてない。
デフォルトの名無しさん [sage] 2016/06/15(水) 02:03:52.98 :wTcNi+2O

例えそうだとしても日付が壊れるとか
undefinedが消えるだとかいうのは問題外
デフォルトの名無しさん [sage] 2016/06/15(水) 04:32:57.44 :Iz/1ukPU
そっとしてそれはギャグで言ってるのかな?
デフォルトの名無しさん [sage] 2016/06/15(水) 08:08:29.44 :SSaOcc+i

ディープコピー全体に対して、すべてをシリアライズで解決するのは正しいか間違いか、
って話であって、
少なくともconcat使うような配列やらなんやらでは、シリアライズで必要十分だねと。
訳わからん前提を持ち出して、あまつさえディープコピーではないものをディープコピーと言い出した奴は気が狂ってると思うけど。
だから、何度かclone/equalsの話もしてんじゃん。

お前、自分が何故叩かれたか理解してないの?


そんな形で持つからだろ。
デフォルトの名無しさん [sage] 2016/06/15(水) 08:56:16.37 :FEVYup+X
javascript業界は素人ばっかりだな
参照型のディープコピーの実装は大きく分けて3つ
プロパティの自動マッピング、シリアライズ、明示的なコピー関数
実行効率や制約の多さはともかくとして工数的にはシリアライズを利用する方法は有力な選択肢だよ
もちろんそもそも論としてディープコピーなんかそんなに使わないってのがあるけどね
デフォルトの名無しさん [sage] 2016/06/15(水) 09:05:04.59 :wTcNi+2O
> 参照型のディープコピーの実装は大きく分けて3つ
> プロパティの自動マッピング、シリアライズ、明示的なコピー関数

オレオレ定義すんなよ。
見苦しいんだよ。
デフォルトの名無しさん [sage] 2016/06/15(水) 09:08:01.05 :wTcNi+2O
> 工数的には
どこぞのライブラリを使えばいい。
デフォルトの名無しさん [sage] 2016/06/15(水) 11:46:17.65 :SSaOcc+i

これ、オレオレ定義か?
CoRしたいなら1つめ、あとはごく当たり前な実装だと思うけど。
デフォルトの名無しさん [sage] 2016/06/15(水) 13:00:32.42 :RkIC2p5j

一般にディープコピーするのにシリアライズは必要ないんじゃない?
無駄な処理を挟んでいるだけに見える
デフォルトの名無しさん [sage] 2016/06/15(水) 13:11:48.27 :SSaOcc+i

javascriptみたいな、オブジェクトのプロパティの型がプリミティブだって保証が無い言語で、
制限事項少なめで一発でコピーするには楽だと思うけどなぁ。
デフォルトの名無しさん [sage] 2016/06/15(水) 13:37:00.47 :RkIC2p5j

JavaScriptの場合、JSONが楽に実装できることは否定しないよ
サーバにデータを送るならシリアライズする意味はあるけど、ディープコピーする為だけにシリアライズする必要はないってだけ
シリアライズしたフォーマット(JSON)の制約を受けるわけだし、シリアライズする時点で目的と手段が一致してないように見える
Object.keysやfor-ofで列挙したキーを順番にコピーしていく方がどう考えても制約が少ない
デフォルトの名無しさん [sage] 2016/06/15(水) 14:34:35.52 :KXw+rbZw
なんかディープコピーはあれもこれもちゃんとして超完璧じゃないといけないみたいな人がいるけど
どのライブラリとってみてもそれなりな実装しかしてないんだよね。
とか制約が少ない(キリッ
って言うけどそこまでしてその制約の少なさを求める妥当性を一切言わない。
デフォルトの名無しさん [sage] 2016/06/15(水) 15:00:16.56 :RkIC2p5j

「制約が少ない」はの「制限事項少なめ」に反論しただけ
上の方で「ディープコピーじゃないよ」云々の人がいたし、ディープコピーのクオリティを向上させる流れだと思ったんだけどね
それなりの実装でいいなら各々が自分の好きなように実装すればいいし、他人の実装を否定する必要もないね
デフォルトの名無しさん [sage] 2016/06/15(水) 15:03:11.81 :KXw+rbZw
どんだけ頑張ってもそれなりの実装にしかならないから決め手がなくて問題なんでしょ。
デフォルトの名無しさん [sage] 2016/06/15(水) 15:39:36.39 :SSaOcc+i

for ofで、オブジェクトなら再帰的に、とやると、今度は参照が循環してしまった場合に備えて、メモ化する必要が出てきたりと、制限事項を制限事項とするためにとても面倒な段取りを踏まないといかんのよ。
そういう意味では、やっぱりインスタンス各自に任せるのが一番なのかもしれんよ。
cloneを必ず実装して、その中の実装でも、どんなオブジェクトも自力ではコピーせずに、cloneを呼び出すようにして、呼び出せるcloneが無い場合、死ぬかないしは参照のコピーとなる可能性があるとワーニング吐くとくとか。
.toJSON実装しときゃstringifyだと割と解決するんだけどね。
デフォルトの名無しさん [sage] 2016/06/15(水) 15:42:17.53 :TAanDQJ+

ディープコピーの実装する為だけに面倒くさいだけのツマラナイコード書く必要なくね?
シリアライズでサッサと済ませればいいじゃん
デフォルトの名無しさん [sage] 2016/06/15(水) 16:25:26.27 :RkIC2p5j

> for ofで、オブジェクトなら再帰的に、とやると、今度は参照が循環してしまった場合に備えて、メモ化する必要が出てきたりと、制限事項を制限事項とするためにとても面倒な段取りを踏まないといかんのよ。
なるほど、参照をメモ化すれば循環参照を保持出来るね
オブジェクトの配列をメモ化しておいてArray#indexOfで探せばいいので比較的簡単に実装できそう

JSON.stringifyを使ったら循環参照を消してた
 var obj = {a:{x:1},b:obj,c:this.a};
 JSON.stringify(obj); // "{"a":{"x":1}}"
toJSONを使ってユニークな文字を出力しても解決できそうにないかな
ユニークな文字列と同値が存在したら破綻するし、渡すオブジェクト自身に循環参照していた場合、obj.toJSONを定義した途端にJSON.stringify(obj)が文字列になってしまう
この辺がJSONの限界かな
デフォルトの名無しさん [sage] 2016/06/15(水) 17:24:42.09 :uCNYQdtw
一日中こんなところでくだらん連投して何が楽しいの?
仕事でも探せば?
デフォルトの名無しさん [sage] 2016/06/15(水) 17:35:48.15 :SSaOcc+i

そうそう。
すでにクローン済みとメモ化するにも、ネストしたオブジェクトの底の方で発見したオブジェクトと、浅い所で発見したオブジェクトに対して、再起だと上にメモを返してやらないと、同一参照にはならんので、割とめんどくさいと思うよ。

吹き飛ばすのが一番、かつ、そんなデータを作らないのが一番と言う所に落ち着くんじゃないかな。
デフォルトの名無しさん [sage] 2016/06/15(水) 18:40:06.70 :kCCRbfye
一番面倒なのは外部プロパティに加え内部プロパティを持ったビルトインコンストラクタのインスタンスだろう。
それを複製するにはそれぞれのクラスごとに対応しないといけないし、その最たるものである関数は対処不能。


ちょっと工夫すればJSON APIを活用しつつも循環参照も扱える
みたいに(バグあり)
デフォルトの名無しさん [sage] 2016/06/15(水) 23:17:16.03 :wTcNi+2O

> シリアライズでサッサと済ませればいいじゃん

だから、その結果、日付型がおかしくなり関数が消え
undefinedの値がキーごとなくなるのはひどすぎという話。
デフォルトの名無しさん [sage] 2016/06/16(木) 07:45:47.42 :oMjTOMdB
それで十分な場面はそうでない場面よりずっと多いと思うので、
酷いか酷くないかで言うと酷くないと思う。
デフォルトの名無しさん [sage] 2016/06/16(木) 09:28:45.12 :J7Y57E8z

何でもかんでも汎用化しようとするのはヴァカのやる事だし
そもそも込み入った形式のオブジェクトをディープコピーする機会は少ない
適用可能な範囲で簡単に実装できるならそうしたほうがいい
できない範囲にはポリモーフィックに対応すればいい
デフォルトの名無しさん [sage] 2016/06/16(木) 09:30:35.19 :u57UUEr0

日付型や関数はundefinedが値として入っているのは
ぜんぜん込み入った形式じゃないですよ?
デフォルトの名無しさん [sage] 2016/06/16(木) 12:30:42.86 :TTOq9A9Q

設計が悪いだろ。そりゃデータとロジックが分離できてないとしか言いようが無くないか?
デフォルトの名無しさん [sage] 2016/06/16(木) 15:06:47.71 :peThILAI
ディープコピー使ったコードも8割方設計がまずい気がする
デフォルトの名無しさん [] 2016/06/16(木) 19:02:21.99 :ykd7wui8
iOS9のSafariでWebを見た時、リーダーが使えず
以下のURLを参考にフォントを拡大して使っています。
iOSのSafariで表示してるページの文字の大きさを自由に変更しよう!
ttp://mag.torumade.nu/?p=7260
ここにあるJavaScriptの+/ーそれぞれの記述ですが、
フォントを多きく/小さくしている箇所は何処でしょうか?
今は2,3回ポチって文字を大きくしています。
出来ればポチったら一発で好みの文字の大きさにするスクリプトにしたいです。

JavaScriptで文字の大きさを買えるのに、試行するのは構いませんので
宜しくお願いします。
JavaScriptは書いたこと無いので、ここでの記述をコピペになると思います。
デフォルトの名無しさん [sage] 2016/06/16(木) 21:35:26.83 :DYttMfqr
めんどくさいしこれでいいよ
まともな造りしてればまあ読めるだろ
大きさ変えたいなら 20px を好きな値にしな

javascript:document.body.innerHTML+='%3Cstyle%3E*%7Bfont-size:20px!important%7D%3C/style%3E';
デフォルトの名無しさん [sage] 2016/06/16(木) 22:07:33.10 :u57UUEr0

> 設計が悪いだろ。そりゃデータとロジックが分離できてないとしか言いようが無くないか?

日付やundefinedはデータですよ?
これをロジックと言い張る人、初めて見たわーwww
デフォルトの名無しさん [sage] 2016/06/17(金) 00:16:54.38 :XW0r+pFS

関数、に言ってるんだけど。
とにかく言い負かされたくなくて必死なんだな。
あと、undefinedは正確にはデータではなく、状態。
日付は、日付。Dateクラスは、日付を扱うためのクラスであり、日付の値では無い、あくまで値は、.valueOf()で取得できる値。

ババロア君は馬鹿か無知かどちらかにしとけよ。ババロアすら詰まってないんじゃねえの?
デフォルトの名無しさん [sage] 2016/06/17(金) 00:31:17.80 :gkJjvuAc

なんで3つのうち関数にしか言わないの?

残り2つは反論できませんって話かwww
デフォルトの名無しさん [sage] 2016/06/17(金) 00:33:59.24 :gkJjvuAc
"abc".bold() って実行してみ?
文字列はクラスだって知らないのかな?www
デフォルトの名無しさん [sage] 2016/06/17(金) 00:46:16.36 :XW0r+pFS

2つはその、下で反論してるけど。
文字も読めないの?


.valueOf実行してみ。
薄いラッパーに包まれたただの値だとわかるよ。
デフォルトの名無しさん [sage] 2016/06/17(金) 00:47:44.33 :XW0r+pFS

プロトタイプに実装されてるか、それともインスタンスに実装したのかも分けて考えような、ボンクラ。
デフォルトの名無しさん [sage] 2016/06/17(金) 01:18:50.68 :gkJjvuAc

日付.valueOf実行してみ。
薄いラッパーに包まれたただの値だとわかるよ。
デフォルトの名無しさん [sage] 2016/06/17(金) 01:20:43.01 :gkJjvuAc

> プロトタイプに実装されてるか
String.prototype.hoge = function() {} と定義したものが
"abc".hoge() で呼び出されるな。
プロトタイプに実装されてるわけか。
デフォルトの名無しさん [sage] 2016/06/17(金) 01:38:53.96 :MlF9RYHU
プリミティブ型とラッパーオブジェクトは別物だから明確に区別しとかないと事故るぞ
例えば以下の様なケース

if(new Boolean(false) && new Number(0)){
//どちらもオブジェクトが存在するのでtrue
//よってここは常に実行される
}
if(false || 0){
//どちらもプリミティブでfalseとして扱われる値
//よってこちらは実行されない
}
デフォルトの名無しさん [sage] 2016/06/17(金) 02:49:55.65 :bQl7rsTf

ありがとうございました。
デフォルトの名無しさん [sage] 2016/06/17(金) 09:31:42.05 :srh2csoY

いろんなJS質問スレ見てきてるが半年ぶりくらいに
まともな初心者解説のコードが書かれたな。
デフォルトの名無しさん [sage] 2016/06/17(金) 16:34:23.27 :6iHig3Yk
ゴミが持論書きなぐってるだけのクソスレに何を期待してるの?
デフォルトの名無しさん [sage] 2016/06/17(金) 17:12:33.16 :BB7ZCZit
動画サイトだけ自動でCSSを切り替えるために、動的に挿入されたiframe, video, object, embed エレメントを検出したいんですが、効率的な方法が思い浮かばず困っています
iframeとvideoはdocumentでイベントリスナ(load, loadedmetadata)すれば検出できるんですが、なぜかobjectとembedちゃんからのお便りが来ません(chrome ver51)
とりあえず暫定的にクリック毎にgetElementsByTagName()で代替しているんですが、
何かもっとスマートな方法ないでしょうか
デフォルトの名無しさん [sage] 2016/06/17(金) 19:02:26.08 :Rqj2POSn
MutationObserverで逐一tagName調べるのが無難かな
デフォルトの名無しさん [sage] 2016/06/17(金) 19:29:30.69 :BB7ZCZit

動画サイトの場合、オプション{childList true, subTree: true}でノード追加を監視すると、コンソールが常時ナイアガラの滝のように・・・
デフォルトの名無しさん [sage] 2016/06/17(金) 19:41:50.28 :nZkVhJBc

その通りだね
俺様流カレーライスの作り方みたいなもんだよねw
デフォルトの名無しさん [sage] 2016/06/18(土) 02:23:30.51 :zfC6EzMS

その俺様流カレーライスの作り方で、ドヤ顔でハヤシライスの作り方説明して、これが「妥当なカレーライス」とか言っちゃうような俺流deepcopyerが
主みたいなスレだからね。
まともな奴はレスしなくなるっしょw
デフォルトの名無しさん [sage] 2016/06/18(土) 09:38:41.31 :Fpexe9SW
ハヤシライスというより肉じゃがだと思う
デフォルトの名無しさん [!sage] 2016/06/18(土) 09:43:04.22 :pG9pCEms
"a,b,c".split(",",1)で、
["a","b,c"]を取得したいのですが、["a","b"]になります
どうすrばいいですか
デフォルトの名無しさん [sage] 2016/06/18(土) 10:53:48.22 :49KWKmmu
<input id="a" type="text">
document.getElementById('a').addEventListener('input', function(e) {
console.log(e);
}, false);

enterキーを押した時だけログがでないんですがどうしてですか?
デフォルトの名無しさん [sage] 2016/06/18(土) 13:22:34.63 :z24FpIHh
function test1() {
  return new Promise(function(resolve, reject) {
    // 非同期な処理
  };
}
function test2() {
  return new Promise(function(resolve, reject) {
    // 非同期な処理
  };
}
上記の関数を逐次実行したい場合、
Promise.resolve()
  .then(() => {
    let promise = test1();
    promise.then(() => {
      console.log('test1 OK');
    }).catch(function(e){
      console.log('test 1NG');
    });
    return promise;
  })
  .then(() => {
    let promise = test2();
    promise.then(() => {
      console.log('test2 OK');
    }).catch(function(e){
      console.log('test2 NG');
    });
    return promise;
  })
});
って書くってことであっていますか?意図通り動くのですが、回りくどいし見にくい気がして
デフォルトの名無しさん [sage] 2016/06/18(土) 13:28:02.54 :z24FpIHh

document.getElementById('a').addEventListener('keydown', function(e) {
  console.log(e);
}, false);

keydown にすればenterも拾える
デフォルトの名無しさん [sage] 2016/06/18(土) 13:30:40.39 :qpxG5nAO

そんなわけなかろうw
いまゲームしてるからちょっと待てwww
デフォルトの名無しさん [sage] 2016/06/18(土) 13:32:40.70 :z24FpIHh

splitだけでその配列を取得するのは無理
デフォルトの名無しさん [sage] 2016/06/18(土) 13:33:55.65 :z24FpIHh

お、ありがとうございます
たのんます
デフォルトの名無しさん [sage] 2016/06/18(土) 13:40:53.70 :lYop9Jcb

それ戻り値["a"]じゃね?
とりあえず脳内補正で第二引数は2だとするとjavascriptのsplitだとその希望の動作にはならない

第二引数なしでsplitして[t[0],t.slice(1).join(',')]とか
indexOfとsubstring組み合わせて自分で切り出すとか
他にも色々やり方はあるので要求に合った方法を考えて関数化しとけばいいよ
デフォルトの名無しさん [sage] 2016/06/18(土) 13:48:58.73 :7whaN/tJ

indexOfでインデックスを取得してslice
デフォルトの名無しさん [sage] 2016/06/18(土) 13:49:03.57 :z24FpIHh
722ですがこっちですかね、余計見にくいような気もしますが(アロー演算子のせい?)

test1().then(() => {
   return test2();
}, () => {
   console.log('1のNG');
}).then(() => {
   // 1 も 2 も成功
}, () => {
   console.log('2のNG');
}).catch(function(e){
   console.log('ここにはいつくるんだろう?');
});
デフォルトの名無しさん [sage] 2016/06/18(土) 13:52:05.82 :ousMayNp

thenの結果は自動でプロミスに変換されるから、function test2 のなかでプロミスを作らなくておk

シンプルにfunction test2(previousResult) { // 非同期な処理 return resTest2} としておいて

test1
.catch(resTest1 => resCatch1)
.then(test2)
.catch(resTest2 => resCatch2) 〜 とつなげればいい

一個目のcatchを省略した場合、 test1でエラーが起きると最後のキャッチにジャンプする
デフォルトの名無しさん [sage] 2016/06/18(土) 13:54:20.50 :7whaN/tJ

可能性はいくつかある
- input要素で [Enter] キーを押している
- IME変換時に [Enter] キー
デフォルトの名無しさん [sage] 2016/06/18(土) 13:56:06.15 :ousMayNp

thenの第二引数をcatchとして使うと、そのthenで起きたエラーは拾わなあいから、必要ないときはcatchを使ったほうがいいよ 分かり易いから
デフォルトの名無しさん [sage] 2016/06/18(土) 13:56:58.21 :qpxG5nAO

ほらよ。ついでに値の渡し方も書いておいたぞ。
thenの戻り値としてPromiseではないものを返せるところにも注意な。(return textの所)

あと、最初はPromise.resolveで始めなくても、いきなりtext1("sample").then でも良い。

function test1(text) {
  return Promise.resolve(text);
  //return Promise.reject(text);
}
function test2(text) {
  return Promise.resolve(text);
  //return Promise.reject(text);
}

Promise.resolve("sample")
 .then(text => test1(text))
 .then(text => {
  console.log("test 1 OK:" + text);
  return text;
 })
 .catch(text => {
  console.log("test 1 NG:" + text);
  return text;
 })
 .then(text => test2(text))
 .then(text => {
  console.log("test 2 OK:" + text);
 })
 .catch(text => {
 console.log("test 2 NG:" + text);
 });
デフォルトの名無しさん [sage] 2016/06/18(土) 14:06:33.76 :qpxG5nAO
ただ、一直線に書くとtext1とtext2の範囲なのかわかりづらいから
を少し改良したこれでもいい気もしてきたな。

Promise.resolve("sample")
 .then(text => test1(text)
  .then(text => {
   console.log("test 1 OK:" + text);
   return text;
  })
  .catch(text => {
   console.log("test 1 NG:" + text);
   return text;
  })
 )
 .then(text => test2(text)
  .then(text => {
   console.log("test 2 OK:" + text);
  })
  .catch(text => {
  console.log("test 2 NG:" + text);
  })
);
デフォルトの名無しさん [sage] 2016/06/18(土) 14:09:27.96 :qpxG5nAO
なお、もちろんこう書くこともできるし

function test1(text) {
  let p = Promise.resolve(text);
  //let p = Promise.reject(text);
 return p.then(text => {
   console.log("test 1 OK:" + text);
   return text;
  })
  .catch(text => {
   console.log("test 1 NG:" + text);
   return text;
  });
}

function test2(text) {
  let p = Promise.resolve(text);
  //let p = Promise.reject(text);
 return p.then(text => {
   console.log("test 2 OK:" + text);
   return text;
  })
  .catch(text => {
  console.log("test 2 NG:" + text);
   return text;
  });
}

Promise.resolve("sample")
 .then(text => test1(text))
 .then(text => test2(text));
デフォルトの名無しさん [sage] 2016/06/18(土) 14:18:57.19 :qpxG5nAO
catchをthenの機能に含めて、こういう書き方もできる。

Promise.resolve("sample")
 .then(text => test1(text))
 .then(text => {
   console.log("test 1 OK:" + text);
   return text;
  }, text => {
   console.log("test 1 NG:" + text);
   return text;
 })
 .then(text => test2(text))
 .then(text => {
   console.log("test 2 OK:" + text);
  }, text => {
  console.log("test 2 NG:" + text);
 });
デフォルトの名無しさん [sage] 2016/06/18(土) 14:27:30.76 :lYop9Jcb

まずtest1とtest2の中の非同期でresolve(戻り値)またはreject(エラーの原因)を呼んでる事は前提とすると

function err(e){console.error(e);};
function finish(val){console.info("終了",val);};

test1().then(test2).then(finish).catch(err);

thenで第二引数を渡さなければrejectもcatchに飛ぶのでこれで充分なはずだけど?
デフォルトの名無しさん [sage] 2016/06/18(土) 14:30:46.97 :qpxG5nAO
 .then(text => test1(text)) は
 .then(test1) これでよかったな。
デフォルトの名無しさん [sage] 2016/06/18(土) 14:38:51.52 :qpxG5nAO
他にもいろいろ書き換えてみたけど、これが俺の中でベストかな

Promise.resolve("sample")
 .then(test1)
 .then(text => {
   console.log("test 1 OK:" + text);
   return text;
  }, text => {
   console.log("test 1 NG:" + text);
   return text;
  }
 )
 .then(test2)
 .then(text => {
   console.log("test 2 OK:" + text);
  }, text => {
   console.log("test 2 NG:" + text);
  }
 );
デフォルトの名無しさん [sage] 2016/06/18(土) 14:51:32.54 :z24FpIHh
皆さんありがとうございます。
まだ若干こんがらがってますが、理解がだいぶマシになりました。
test2はプロミスにしなくてOKということですが、
test2を単独で使用する可能性がある場合は今のままでも大丈夫ですよね...?
デフォルトの名無しさん [sage] 2016/06/18(土) 14:52:59.75 :z24FpIHh
皆さんのを参考に
function test1(text) {
 return new Promise(function(resolve, reject) {
  setTimeout(() => {
   reject(text);
  }, 1000);
 });
}
function test2(text) {
 return Promise.resolve(text);
}

Promise.resolve("sample")
test1("test")
 .then(text => {
  console.log("test 1 ok " + text);
  return text;
 }, text => {
  console.log("test 1 ng " + text);
  return text;
 })
.then(test2)
 .then(text => {
  console.log("test 2 ok " + text);
 })
 .catch(text => {
  console.log("test 2 ng " + text);
 });

こういうのを書いてみたのですが、
test1でrejectしてもそのままtest2に入ってきましたが、これはこういうものでしょうか?
デフォルトの名無しさん [sage] 2016/06/18(土) 14:54:43.38 :z24FpIHh
すみません、の Promise.resolve("sample")は不要ですね
デフォルトの名無しさん [sage] 2016/06/18(土) 15:02:45.38 :qpxG5nAO

> test1でrejectしてもそのままtest2に入ってきましたが、これはこういうものでしょうか?

あれ?そういう仕様だと思ってたよw
じゃあ書き換えが必要だね。

いまゲームしてるから(ry
デフォルトの名無しさん [sage] 2016/06/18(土) 15:15:57.87 :HfDVf1Az

ttp://www.html5rocks.com/ja/tutorials/es6/promises/
デフォルトの名無しさん [sage] 2016/06/18(土) 15:28:56.46 :z24FpIHh
何度もすみません。

ありがとうございます、そのサイト見てたはずですが見落としていました
だいたい理解できました。
一連の質問は解決ということで問題ないです。

皆さんありがとうございました。
デフォルトの名無しさん [sage] 2016/06/18(土) 23:31:55.96 :aNvZce14
imeオンオフに関わらずEnterキーが入力されたか確認する方法を教えてください
デフォルトの名無しさん [sage] 2016/06/19(日) 01:39:49.43 :XpUIM/8a

IME周りはブラウザ毎に実装が違ったりして面倒なので全てのブラウザで動くとは保証出来んが
keydownでキーコード229,0,13を拾えばだいたい拾えるんじゃないかね?
デフォルトの名無しさん [sage] 2016/06/19(日) 01:54:37.93 :jkRTuMFS
おしんとひこうきぴゅんぴゅん
デフォルトの名無しさん [sage] 2016/06/19(日) 15:42:45.26 :j/5yp6z/
古いソフトのプラグイン頼まれたんだけど新しめのESで追加された機能がほとんど使えなくて難儀してる
よくわからないんだけどこういうのって作者が対応すれば使えるようになるの?
VSなんかだと参照突っ込むだけで機能使えるようになるけど
そういうお手軽はお話じゃないんかね
デフォルトの名無しさん [sage] 2016/06/19(日) 19:29:55.99 :fmRoj+h3
なんのエンジン使ってるか知らんが例えばV8でも無理でーす
奴らは自分のブラウザで動けばいいので毎日のように互換性壊しまくりのスケ〜
デフォルトの名無しさん [sage] 2016/06/20(月) 18:11:29.60 :tys3WiX6
javaでいうTreeSetを使いたいのですが、ありますか?
デフォルトの名無しさん [sage] 2016/06/20(月) 18:48:32.16 :hRWj67CX
(非数字)文字列ならオブジェクトのプロパティとして加えていって列挙すればソートされてる
デフォルトの名無しさん [sage] 2016/06/21(火) 00:26:47.70 :qdV120KE
リンクをクリックするとJavaScriptでページ遷移するウェブページで、遷移する先のURLを事前に取得する方法はありますか?

意図としてはページに飛ばされる前にどこに飛ぶのか判断したいためです。
デフォルトの名無しさん [sage] 2016/06/21(火) 00:47:36.70 :Zouo8B6w

JavaScriptでページ遷移するなら遷移先URLもJavaScriptで分かっているはずなのだが
デフォルトの名無しさん [sage] 2016/06/21(火) 08:14:40.47 :vlWZNI1X

最終的な遷移先のURLを鯖側で生成してたらわからんけど
デフォルトの名無しさん [sage] 2016/06/21(火) 09:06:55.19 :zhgdBgoI

説明が足らずすみません。

他者が作ったウェブサイトの環境で、ブラウザの拡張機能などで自前のJavaScriptを実行して判断したいということでした。

そういうことだとさんの言うとおり、他者のサーバで生成してるからわからないってことになりそうですね。
デフォルトの名無しさん [sage] 2016/06/21(火) 11:17:04.95 :Zouo8B6w

URLの生成規則を探すとか、JavaScriptコードを読んでコードから遷移先URLを得る、とか一概には言えないと思う
デフォルトの名無しさん [sage] 2016/06/21(火) 12:14:28.77 :VoVagir1

クライアントが移動先を知ってるなら取る方法はない訳ではないが
鯖側でリダイレクトさせる場合にはAjaxでリンクを踏んで戻った内容からリダイレクト先をスクレイピングするとかしないと無理だろうね

つまり画面遷移をせずにリンク先を取得する事は可能、鯖と通信せずにリンク先を取得する事は不可能なケースがある
クライアント上で動作している以上、クライアントが知らない情報は取得出来ない
デフォルトの名無しさん [sage] 2016/06/21(火) 13:29:33.82 :NcocGzZA
いや、どこに跳ぶかを判断したいくらいなのだから、
いろんな方法・想定で常識的な範囲で全て判断できると言えるだろう
デフォルトの名無しさん [sage] 2016/06/21(火) 19:00:28.03 :s0xSal8K
VBのFormsみたいなフレームワークってないすか?
デザイナでペタペタ配置してロジックは画面オブジェクトにハンドラを書くだけ的なやつです
デフォルトの名無しさん [sage] 2016/06/21(火) 19:02:39.48 :rJ2mr4JY

ホームページビルダで出来ない?
使ったことないから知らんが
デフォルトの名無しさん [sage] 2016/06/21(火) 20:02:34.86 :zhgdBgoI


丁寧に回答していただきありがとうございます。
リンククリック時のJavaScriptからレスポンスを解析してURLを取得できるかを試してみます。
デフォルトの名無しさん [sage] 2016/06/21(火) 22:07:52.39 :8xYufxWO
var fs = require('fs');
var data = "write text test!";
fs.writeFile('writetest.txt', data , function (err) {
console.log(err);
});
デフォルトの名無しさん [sage] 2016/06/21(火) 22:09:11.15 :8xYufxWO
このくらいのプログラムをNodejsで作ってNodejs上ではもちろん動きましたが
デフォルトの名無しさん [sage] 2016/06/21(火) 22:14:12.35 :8xYufxWO
webpack上では動きません。
先にNodistを入れたのですがUpdateすると依存関係のエラーが多かったので
Nodejp単体で入れることにしました。
ところが
npm install webpack -g とかするとなぜかNodistのフォルダに入ってしまいます。
そのせいでビルドができてないのでしょうか。
経験のある方お願いします。
スレ違いなら誘導していただけるとありがたいです。
デフォルトの名無しさん [sage] 2016/06/21(火) 23:28:49.59 :8xYufxWO
変換したものは長くてここに表示しきれないですが
require is not defined
と出ますね。
一応webpackは通したのですが。
ブラウザはFirefoxです。
デフォルトの名無しさん [sage] 2016/06/22(水) 00:14:59.67 :azjhZ3WA
javaScriptのSetってSetとWeakSetしかないんですか?
SortedSetが欲しいです
デフォルトの名無しさん [sage] 2016/06/22(水) 07:19:51.98 :cIEa5wGZ
ソートっていろんな種類があるからねぇ。
自分で作ったら?
デフォルトの名無しさん [sage] 2016/06/22(水) 11:58:39.11 :q9pILfZy
Nodist を アンインストールしてその後、 Node.jsを入れたのですが
npm root -g としてモジュールがインストールされるディレクトリを見ると
C:\Program Files (x86)\Nodist\bin\node_modules
なっています。
環境変数も見ましたがNodistの残骸が残っているようにはありません。
どこにNodistの情報が残っているのでしょうか。
デフォルトの名無しさん [sage] 2016/06/22(水) 14:53:18.59 :q9pILfZy
ユーザーディレクトの下にprefixの設定が残っていたようです。
デフォルトの名無しさん [sage] 2016/06/22(水) 14:58:05.09 :q9pILfZy
npm config lsで調べて上記のことが分かったのですが、未だに
require is not defined
のエラーが解決されません。
/***/ },
/* 2 */
/***/ function(module, exports) {

module.exports = require("fs");

/***/ }
/******/ ]);
どうもコメントばかりついていてうまく変換されたように見えません見えません。
デフォルトの名無しさん [sage] 2016/06/22(水) 21:00:04.72 :/0SrxieV
誰としゃべってんのこいつ
デフォルトの名無しさん [sage] 2016/06/23(木) 00:00:47.49 :wmr/9KTO

恐らく環境変数node_pathがNodistのディレクトリのままだろうから書き換え
あとfsのようなNode.js用モジュールはWebpackでバンドルできないはず
Webpackからファイル読みたい場合はLoader使って事前に含めるしかない
デフォルトの名無しさん [sage] 2016/06/23(木) 01:13:09.29 :Lewr0A8P
ありがとうございます。
Webpackからは基本できないのですね。
set コマンドでは
NODE_PATH=C:\Users\habu\AppData\Roaming\npm\node_modules
アンインストーラーを使っても環境変数を調べてもどうにもならなかったので
アンインストーラーが削除し忘れた
"C:\Users\xxxx\.npmrc"
を手動で削除したらパスの通ったところにモジュールをインストールするようになりました。
デフォルトの名無しさん [sage] 2016/06/23(木) 12:30:54.99 :TKILd+kM
IE11,Edge,Firefox,Chrome,safari,Operaの6つのブラウザを同時に起動してるんですが
javascriptを更新したらブラウザに切り替えてページ更新するのが面倒くさいんですが
ファイルが更新されたら自動的に更新する方法ありませんか?
デフォルトの名無しさん [sage] 2016/06/23(木) 12:33:06.98 :p9xHkbsy

定期的にリロードするようにしたら良いんじゃないの?
デフォルトの名無しさん [sage] 2016/06/23(木) 14:14:01.07 :1rhmo8jO
ファイルを監視して更新があったらブラウザのウィンドウをアクティブにしてリロード操作(F5?)のイベントを送るツールでも作ればいいんでない?
デフォルトの名無しさん [sage] 2016/06/23(木) 15:28:59.42 :it3byhHh

簡単に出来ますよ
デフォルトの名無しさん [sage] 2016/06/24(金) 11:16:15.69 :M5Y9qYOR

いまいち例が無くてどのローダーを使えばテキストファイル出力ができるのか
分からないです。
ホームページで確認してraw-loaderがUTF-8に出力するみたいなことを書かれていた
GreasemonkeyからinnerTextをテキストファイルに出力したいだけなのですが
かなり敷居が高いようですね。
色々なサイトで実験されている
デフォルトの名無しさん [sage] 2016/06/24(金) 11:22:06.51 :M5Y9qYOR
みたいなのですが、セキュリティがらみなので改善(改悪?)されてできなくなったところが多いです。
raw-loaderの使い方の例がもう少しサンプルで出されているサイトがあればいいのですが。

あと、少し2ちゃん専用のソフトの使い方になれてなくて間違えて文章を途切れ途切れに
送ってしまったことをお詫びします。
デフォルトの名無しさん [sage] 2016/06/24(金) 12:30:59.24 :V/itJnf4
Loaderは読み込んでバンドルするだけで書き込みはできないよ
ブラウザから書き込みしたいなら拡張機能のAPIを探すしかない
デフォルトの名無しさん [sage] 2016/06/24(金) 14:35:52.18 :M5Y9qYOR

そうなんですか。どこを探しても無理なわけですね。
拡張機能と言うのはブラウザの拡張機能ですか?
煮詰まったので今のところはローカルにapacheでサーバーを立てて
PHPでアクセスすることを考えています。
それでだめなら拡張機能のAPIを探すことを考えています。
デフォルトの名無しさん [] 2016/06/24(金) 23:07:00.20 :qTbX1cTa
プログラミングに詳しい方々がいると聞いて質問しにきました。
初心者なので説明力、知識が乏しいですが申し訳ありません。
私は、不特定多数の人が画像をサイト上のみで「読み込み→編集→ダウンロード」を全てできる画像編集サイトを作ろうと思っていて、
色々調べている内にImageMagickと言うプログラムにたどり着きました。
ですが使い方などが全くわからず、困っております。現在xサーバーを利用していてホームページを取得しています。
xサーバーは公式で既にImageMagickがインストールされているということです。(この事についてもいまいち分かりません)
どなたか分かりやすく画像編集サイトの作り方を教えていただけませんでしょうか。
OSはwin7 64bitです。
本当に困っています。
デフォルトの名無しさん [] 2016/06/24(金) 23:12:05.32 :Fo67yJqk

PHPで作った方がいいと思うよ
PHP板行ったら?
ttp://echo.2ch.net/test/read.cgi/tech/1466683550/
デフォルトの名無しさん [] 2016/06/24(金) 23:14:07.58 :qTbX1cTa

PHP板にてここで聞いた方がいいと言われ、質問いましました
デフォルトの名無しさん [] 2016/06/24(金) 23:14:44.48 :Fo67yJqk

jsじゃ無理だよ
PHPじゃないと出来ない
デフォルトの名無しさん [] 2016/06/24(金) 23:16:31.66 :Fo67yJqk
一番簡単に作れるのは、Ruby
Rubyスレ行ってみたらどうだ?
デフォルトの名無しさん [sage] 2016/06/24(金) 23:28:09.79 :V/itJnf4

その通りブラウザ拡張機能のAPI
でもローカルにHttpd立てていいならの弄って使えばいいんじゃない
どうせグリモンで動かすUserScriptからHTTPでやり取りするんだろうし


まず画像を読み込んで編集して保存するのはJSで出来る
画像を不特定多数でどう扱うのかによってはサーバー側の実装も必要だけど
これもNode.jsを使えばJSで作れる、因みにこっちはPHPでも作れる
ただ作り方となると手順が膨大だから一々説明してられん
「JavaScript ファイル読み込み」など一つずつググって勉強するしかない
デフォルトの名無しさん [sage] 2016/06/25(土) 11:12:38.28 :FcXCwkAU
textareaで入力した位置を知る方法ありませんか?
デフォルトの名無しさん [sage] 2016/06/25(土) 11:24:52.49 :YFtEcFF6

コピペなんかも含めると、入力される前の文字列をバッファしておいて、今回文字列と一番最初に差異が発生する文字まで素直に比較するほうが早いんじゃないかな。
デフォルトの名無しさん [sage] 2016/06/25(土) 18:02:11.94 :4KOaD2nt

selection とか range で調べるよろし

aaa => aaaa どこだと思う?
デフォルトの名無しさん [sage] 2016/06/26(日) 00:07:56.02 :nF43cUdI
いつもは、ネットと、日経ソフトウェアを毎月買ってるから、
日経ソフトウェアのJavascript特集しか読まないんだけど、
久しぶりに書店でJavascriptの本あさってたら、
JAVAの本と混同してJavascripの本が並べてあった。
何十人かに試したことあるが、プログラム興味ない人がらみたら、
JAVA=Javascripの省略して言うとJAVA
Javascrip=JAVAの正式名称
って認識しかしてないからな。
デフォルトの名無しさん [sage] 2016/06/26(日) 05:07:36.84 :G2D2TVQW
コードの問題。
例えば旅行本だと国別に区切られてるが、プログラミング言語にはそれがない。
デフォルトの名無しさん [sage] 2016/06/26(日) 05:45:31.43 :FIFPZYCa

自分の住んでる地元の一番大きい本屋もまんまこれだった
CとかVBAとか有名な言語は分類札付けて、カテゴリ分かれてるのに
JavaScriptだけJavaの所に全部突っ込まれてる
デフォルトの名無しさん [sage] 2016/06/26(日) 08:11:55.58 :lQezokMe
JQueryを使ってテキストフォームを扱っていますが、項目数が増えさらにページ遷移が増えました。
JQueryよりもそういうことを扱うことに長けたフレームワークみたいなのがあればそちらに移りたいのですが何かそういったことを補助してくれるようなものはありませんか?
デフォルトの名無しさん [sage] 2016/06/26(日) 10:40:37.56 :TQCRDnYp

具体的に何がしたいのかがわかならい
エスパーするとJQueryの使い方がわからないってことかな?
デフォルトの名無しさん [sage] 2016/06/26(日) 11:55:24.56 :9G4pt3CC
DOM書き換えでのページ管理に限界を感じてるからjQuery捨てたいみたいな感じ?
学習コストかかるだろうけど、流行ってるReactとか
デフォルトの名無しさん [sage] 2016/06/26(日) 12:24:25.89 :rwwPSVEU
どうも使い方が分かっていない人が多いよね
センスがないとでも言うのだろうかw
デフォルトの名無しさん [sage] 2016/06/26(日) 12:39:49.80 :AVATszy2
ライブラリ質問はスレ違いといいたいところだが、テンプレが改変されてたんだった
Web制作板の荒れようをみるにプログラム板にもライブラリスレを持ってくるべきなんだろうが、統合する流れでいいのかね
あるいは、べつにスレを立てるべきか
デフォルトの名無しさん [sage] 2016/06/26(日) 12:51:24.25 :mFfhShD5
vol.120でまともなテンプレで建て直していいんじゃね
あっちのライブラリスレもこの板に移す話はあったんだけどよくわからんな
デフォルトの名無しさん [sage] 2016/06/26(日) 14:02:23.24 :8VkrGxxn
reactの質問はどこでしたらいいですか?
デフォルトの名無しさん [sage] 2016/06/26(日) 15:09:43.72 :Tksz8qNK

Yahoo知恵袋がおすすめ
デフォルトの名無しさん [] 2016/06/26(日) 15:12:21.33 :GJBR8D9H

javaの道(掲示板)がおすすめ
デフォルトの名無しさん [sage] 2016/06/26(日) 20:07:37.03 :YbtLHjt0
&lt;img src=x onerror='alert(1)'&gt;&lt;/img&gt;

みたいにHTMLエンティティがエスケープされてるテキストノードをtextContentで参照するとエスケープが解除されるので、innerHTMLに代入した瞬間にalertが鳴るよって記事をどっかで見たんだけど、
誰か見覚えあってURLわかる人おらんかのう
デフォルトの名無しさん [sage] 2016/06/26(日) 20:28:22.69 :nF43cUdI
自分の作ってるwebアプリでエラー原因調べて、質問するって
難しいんだよな
問題を書き出すって骨の折れる作業だし
デフォルトの名無しさん [sage] 2016/06/26(日) 22:32:25.10 :D+buTpss

立て直すとスレが乱立するからこのスレに新しいテンプレを貼り付ける程度で十分かと
問題はライブラリスレもここに統合するか、別スレに独立させるか
デフォルトの名無しさん [sage] 2016/06/26(日) 22:58:59.69 :oKpI3hc9
重複が嫌なら一個飛ばして121にするとか
本来荒らしの立てたスレを再利用するってのはよくないし、まあ今はずるずる来てるけど
デフォルトの名無しさん [sage] 2016/06/26(日) 23:29:46.97 :S5Kwqidr
むやみに別スレ建てんなよWeb製作版の二の舞いになる
スルーすればいいだけ
デフォルトの名無しさん [sage] 2016/06/26(日) 23:30:12.91 :yAtATLvz

ブレークポイントを適度に付けて、デバッグする。
変数の内容も見る。
エラーメッセージで検索する

C/C++以外の言語は、シャローコピーするから、破壊的変更をするときは要注意!
デフォルトの名無しさん [sage] 2016/06/27(月) 00:44:37.06 :Azx2VHQP
JSはDOM絡みのテスト書くのが特にしんどい
書いてもElectronで動いたのがwebkitじゃダメでしたとかままあるし


復活したWeb板のライブラリスレもぼちぼち伸びてきてるし
また潰されるかあるいは埋まりそうになるまで保留でいいんじゃない
デフォルトの名無しさん [sage] 2016/06/27(月) 00:51:43.37 :Qt/WCn3i
JSにかぎらずUIのテストっていうのは難しいんだよ。
デフォルトの名無しさん [sage] 2016/06/27(月) 04:38:11.54 :Hl6kI6LE
別にJSじゃなくてもDOMのテストは難しいしね
JSにはDOMしかないわけでもないし
534 [sage] 2016/06/27(月) 12:24:43.46 :oBcOOaIt
 なんですが、プログラム板なのにコードが潰れることにもやっとしたので、スレにjs-beautifyとhighlight.jsを掛けるchrome拡張を作ってみました
試作機1号ができたのでさっそく試してみたんですが・・・
2chのコメのなかにコーディングのカラースキームが混在してる違和感が凄いww
ttp://i.imgur.com/a1EvCdi.png
ttp://i.imgur.com/cGSR5cj.png
ttp://i.imgur.com/JVt9adl.png
ttp://i.imgur.com/rPbmqg9.png
デフォルトの名無しさん [sage] 2016/06/27(月) 19:39:44.45 :jJ8qgrxg
<a href="〜hoge.pdf">PDF</a>

上記のようにHTMLでPDFのリンクを作成しPDFをダウンロードさせたいのですが、IEのみ同一タブでPDFが表示されてしまいダウンロードできません。
IEの設定を変更することなく、HTMLとjavascriptだけでIEでもダウンロードできるようにしたいのですが、何か良い方法はありませんでしょうか。

ちなみに、以下の4ブラウザ全てでダウンロード可能にしたいです。
・IE11
・chrome
・firefox
・safari(mac)

よろしくお願いします。
デフォルトの名無しさん [sage] 2016/06/27(月) 20:20:31.97 :Hl6kI6LE
ChromeとFirefoxだけで我慢しんさい
デフォルトの名無しさん [sage] 2016/06/27(月) 20:45:40.58 :Qt/WCn3i

普通はHTTPヘッダで制御する。
つまりウェブサーバーかサーバー側のアプリ

あんたがクライアントアプリしか書けないとか
サーバーいじる能力がないなら諦めなさい
デフォルトの名無しさん [sage] 2016/06/27(月) 20:59:41.80 :zoQ6BtW7



やはり無理なんですね……
ありがとうございます!
デフォルトの名無しさん [sage] 2016/06/27(月) 21:24:55.66 :zcQLvEgn
var xhr = new XMLHttpRequest();
xhr.open("GET", "hoge.pdf");
xhr.responseType = "blob";
xhr.addEventListener("load", function(){
var blob = new Blob([xhr.response]);
window.navigator.msSaveBlob(blob, "hoge.pdf");
});
xhr.send();
デフォルトの名無しさん [sage] 2016/06/28(火) 15:38:36.90 :+n63MTqJ
「できる」と「やっていい」は別だよな
最低限のモラルも守れないようじゃねぇ
まあdownload属性のエミュなら良いと思うよ
デフォルトの名無しさん [sage] 2016/06/28(火) 16:46:50.81 :YVMoIJVb
ttp://jsdo.it/ksk1015/7lvD
のページのサンプロコード、20行目で見かけたのですが、
この場合のvideoの前後にあるスラッシュはどういう意味があるのでしょうか?
if( !/video/.test(file.type) ){

!video.test(file.type)
ではダメなのでしょうか
デフォルトの名無しさん [sage] 2016/06/28(火) 17:09:49.76 :+pusRZvt
/で囲まれてるのは正規表現
この場合file.typeに"video"って文字列が含まれてるかみてる
デフォルトの名無しさん [sage] 2016/06/28(火) 18:04:00.99 :YVMoIJVb

なるほど、ありがとうございます
デフォルトの名無しさん [sage] 2016/06/29(水) 11:29:03.86 :VdhPxYFi

わりと素で聞きたいんだけど、このケースのどの部分がモラルに反してるの?
他のブラウザがdownload属性でできることを、IEができないから代替策探してるだけだよね
デフォルトの名無しさん [sage] 2016/06/29(水) 16:17:09.72 :L39nkKa/
function fileListDirectory(files) {
var ファイル数 = files.length;
var ファイル名 = new Array();
var パス = new Array();
for (i=0; i<ファイル数; i++) {
ファイル名[i] = files[i].name;
パス[i] = files[i].webkitRelativePath; // 行A
}
}

これでフォルダの全てのファイルのパスがわかるんだが
これを絶対パスにするにはどうすればいいんだ?
デフォルトの名無しさん [] 2016/06/29(水) 21:48:19.77 :ViUTH2Wh
JQueryの$って関数ですか?連想配列ですか?
$(hoge)が出来るというのは関数だと思うんですが、$.foo(bar)が出来るというのは連想配列だと思います
一体何なんですか?あのキモイ未知の変数は
デフォルトの名無しさん [sage] 2016/06/29(水) 22:21:45.97 :uR/sla0B
関数もオブジェクトだからな
デフォルトの名無しさん [] 2016/06/29(水) 22:29:13.21 :ViUTH2Wh
つまり
hoge=function(){
//処理
}

hoge.a=function(){
//処理
}

hoge.b=function(){
//処理
}

って事ですか?
デフォルトの名無しさん [sage] 2016/06/29(水) 22:45:16.05 :11RiuwSN

jQueryは関係ありません。
あなたはJavaScript自体がわかっていません。
そしてオブジェクト指向もわかっていません。

「オブジェクト指向言語であるJavaScriptは、関数もオブジェクトです。」

この一言で理解できますかね?w


function foo(a, b, c) {} という関数を作ったら関数もオブジェクトなんだから

console.log(foo.name) とか ※nameは非標準だけれどだいたい使える
console.log(foo.length) とか ※関数の引数の数
foo.toString() とか ※ソースコードを返す。

標準でできるんですよ。
デフォルトの名無しさん [sage] 2016/06/29(水) 22:48:52.04 :11RiuwSN
真のオブジェクト指向言語は何でもオブジェクトであるって
考え方ができるかどうかですねw

JavaScriptではオブジェクトではないものもあるけれど、
どちらかと言えばオブジェクトであるものが多い方
真のオブジェクト指向に近づくほど
なんでもオブジェクトになる。
デフォルトの名無しさん [] 2016/06/29(水) 22:52:05.42 :0EN53mtK

そんな事出来るのかよ
凄い
デフォルトの名無しさん [sage] 2016/06/30(木) 00:37:24.48 :s9p3Net1
だからnullもオブジェクトにしたまま放置なんですね(白目)
デフォルトの名無しさん [sage] 2016/06/30(木) 01:51:26.57 :RtLNL8Qe
Functionオブジェクトも、大本のObjectオブジェクトから派生している。
Objectは、処理(メソッド)・状態(プロパティ)を持つ

関数型言語ではオブジェクトは、1級市民オブジェクト(First Class Object)と言って、
持ち運べたり、関数の引数に渡したり、関数から戻り値として返したりできる

つまり、Functionはオブジェクトだから、持ち運んで、後で呼べる(遅延・コールバック)

クラス・無名クラス・クロージャ・ラムダも同じで、オブジェクト。
primitive 以外は、すべてオブジェクト
デフォルトの名無しさん [sage] 2016/06/30(木) 11:12:43.81 :bL1n9aIG
一級市民オブジェクトw
デフォルトの名無しさん [sage] 2016/06/30(木) 12:54:42.82 :EibH/T4h
JapScript
デフォルトの名無しさん [sage] 2016/06/30(木) 12:55:18.07 :s9p3Net1
一級市民オブジェクトとか和訳した人センスあるわw 嫌いじゃない
でも和訳で覚えるとググるとき大変じゃね
デフォルトの名無しさん [sage] 2016/06/30(木) 13:18:07.02 :bL1n9aIG

ググった結果、驚愕の真実が・・・

ファーストクラスオブジェクト: 約 1,520 件
第一級オブジェクト: 約 1,400 件
一級市民オブジェクト: 約 49 件

少なすぎじゃね?
Googleぶっこわれてんのか?
デフォルトの名無しさん [sage] 2016/06/30(木) 13:41:53.09 :9tXhK5Ll
First Classで市民が出てくる当たり英語というか教養がないな
デフォルトの名無しさん [sage] 2016/06/30(木) 14:17:10.15 :bL1n9aIG

逆かもよ

ttps://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E7%B4%9A%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88
> 第一級オブジェクト
>
> 第一級オブジェクト(ファーストクラスオブジェクト、first-class object)は、(略)
> (略)
> この言葉は1960年代にChristopher Stracheyによって「functions as first-class citizens」という文脈で初めて使われた。
デフォルトの名無しさん [sage] 2016/06/30(木) 14:32:43.41 :WQ4EC21M
上級市民オブジェクトにしろ
デフォルトの名無しさん [sage] 2016/06/30(木) 19:06:07.78 :nv8TDX79
> 関数型言語ではオブジェクトは、1級市民オブジェクト(First Class Object)と言って、
この訳がおかしい、といわれてるだけ
一級市民を名乗るなら "citizens" を入れればいい
- 一級市民のような関数(functions as first-class citizens)
- 第一級オブジェクト(First Class Object)
デフォルトの名無しさん [sage] 2016/06/30(木) 22:26:27.40 :s/7LoWQJ
そもそも、「functions as first-class citizens」の訳は「第一級市民関数」ではないよな
「第一級市民関数」と呼ぶなら "functions of first-class citizens" と書いてもらわんと
ただし、as から of になると「一級市民に属する関数」の意味になって本質と全く異なる表現になる
何をもって「一級市民」が出てきたのかをよく考えるといい
デフォルトの名無しさん [sage] 2016/07/01(金) 10:57:22.28 :2ngPRN1W
ofはないわー
デフォルトの名無しさん [sage] 2016/07/01(金) 13:26:49.33 :swuu46hd

どう書くのが正しい?
デフォルトの名無しさん [sage] 2016/07/01(金) 14:26:32.24 :GE+MZRxs
普通に、asは、としての、でしょ。
デフォルトの名無しさん [sage] 2016/07/02(土) 18:28:16.22 :m2NwGvL3
は?「としての」?
「としての」なんて日常生活で殆ど使わないし
意味もぱっとしないだろ
「としての」「としての」「としての」
用意にゲシュタルト崩壊するだろ?
デフォルトの名無しさん [sage] 2016/07/02(土) 18:47:47.96 :hHp4sSVy
「一級市民としての関数」?
デフォルトの名無しさん [sage] 2016/07/02(土) 20:14:00.55 :AmR+G6iW
普通に使うだろ。
プロジェクトの担当としての回答はこうですが、理想論としては確かに認めます、とか。
低い次元の日常生活してるな。

そもそも、イギリスでのfirst-class citizenとsecond-class citizenの違い知ってりゃ理解出来るだろうけど、そういう教養も無いんだろうし。
言っとくと、British citizen otherwise than by descentと、British citizen by descentだからな。
「誰かから受け継いだものではない『英国市民』」と「誰かから受け継いだ(にすぎない)『英国市民』」の違い。
だから、何かから作られたものではない関数含めるオブジェクトを一級市民になぞらえ、そうではないものを二級市民になぞらえてる。

どっかのスレで論破されて発狂してた奴そっくりだな。
デフォルトの名無しさん [sage] 2016/07/02(土) 20:18:56.43 :AmR+G6iW
あ、これ書いたらわかりやすいかな。
・イギリスで産まれれば一級市民
・親がイギリス人(一級市民)でも、イギリス国外で産まれれば二級市民、
・親がイギリス人でも、二級市民であれば、イギリス国外で産んだ場合国籍を与えることは出来ない
デフォルトの名無しさん [sage] 2016/07/02(土) 20:31:38.20 :/wal4gbU
一級市民とはニートじゃなくて
ちゃんと税金を払ってる人のことですよ
デフォルトの名無しさん [sage] 2016/07/03(日) 04:16:19.31 :+KSQOYrq

それは普通では無いな。
意地を張らずに自分の非を認めろよ。
低い次元の日常生活してる奴には無理かもな。
デフォルトの名無しさん [sage] 2016/07/03(日) 10:44:20.95 :xMv6BMC9
マスタースレーブとかひどい言い方だよな。
お前らは所詮使い捨ての奴隷よ。
デフォルトの名無しさん [sage] 2016/07/03(日) 12:12:49.74 :btJwgGWt

普通でしょw
とりあえず言いかえせば良いと思ってるんだろうけど。
デフォルトの名無しさん [sage] 2016/07/03(日) 13:30:07.63 :oNgHKg4C
今まで、スラッシュ/ってコントロール文字だから、
var moji="\/";
って具合にエスケープするって認識でいたのですが、
good parts P11に
「/とコントロール文字を除くすべてのユニコード文字」
って書いてあるのですが、
スラッシュ/ってコントロール文字ではないのですか?
デフォルトの名無しさん [sage] 2016/07/03(日) 14:14:39.57 :A4NkGxi2
コントロール文字がなんなのかも知らないのかw
デフォルトの名無しさん [sage] 2016/07/03(日) 14:16:55.67 :A4NkGxi2
表示したら音がなる文字があるっていったら
へぇーって言うんだろうなw
デフォルトの名無しさん [sage] 2016/07/03(日) 14:43:21.41 :JMRewaFc
さすがに若い奴がBEL(0x7) 知らんかったとしても仕方なかろうと思うがなぁ
デフォルトの名無しさん [sage] 2016/07/03(日) 16:11:02.52 :YeoQWaDz
ゆとりはどうしてググらないのか
デフォルトの名無しさん [sage] 2016/07/03(日) 16:11:29.21 :qk7lGSjH

ジジイの方がググらねーけどな
デフォルトの名無しさん [sage] 2016/07/03(日) 16:18:36.85 :YeoQWaDz
はえーよゆとり、びびるわ
もしかしてBotでも仕掛けてある?
デフォルトの名無しさん [sage] 2016/07/03(日) 16:41:53.92 :5c1HtZx3
反応が気になって常にリロードしてんのかな
SNSのやりすぎ
デフォルトの名無しさん [sage] 2016/07/03(日) 16:53:17.69 :YeoQWaDz
しかしググれば分かることを質問されてもな。
もしそれで俺の時まで回答を待っていたのなら、完全に病気だな。
デフォルトの名無しさん [sage] 2016/07/03(日) 19:28:43.02 :+KSQOYrq

普通じゃないでしょw
とりあえず言いはれば良いと思ってるんだろうけど。
デフォルトの名無しさん [sage] 2016/07/03(日) 21:31:43.21 :EZH9raf4
立場を明示せず発言するのは危険だぞ?
デフォルトの名無しさん [sage] 2016/07/03(日) 21:51:09.80 :A4NkGxi2

じゃあお前から立場を明示してくれ
デフォルトの名無しさん [sage] 2016/07/03(日) 22:03:40.88 :EZH9raf4

俺個人としては痛い子がこれ以上恥を上塗りするのがかわいそうだと思ったから発言した
一人の社会人としては、個人の発言を会社の見解と取られるリスクは避けたいので個人的な発言には必ず私個人としてはと前置きするのが普通だと思う
これでいいか?
デフォルトの名無しさん [sage] 2016/07/03(日) 22:10:11.68 :A4NkGxi2

お前なんか可哀想だな。

休日の書き込みなのに、
会社の顔色をうかがってるんだね。

会社第一の人生って感じがするよ。
会社が悪く思われるからこんなことはできん!ってな。
デフォルトの名無しさん [sage] 2016/07/03(日) 22:21:47.90 :EZH9raf4

そうか、まあどちらが可哀想かは見解の相違だな
ところで何故そんなにイラついてるんだ?
腹でも減ってるのか?ちゃんと食わんと体に悪いぞ?
デフォルトの名無しさん [sage] 2016/07/03(日) 22:23:43.44 :A4NkGxi2

いらついてるのお前じゃね?w
なんで俺がいらついていることにしたいか知らんけどw
デフォルトの名無しさん [sage] 2016/07/03(日) 22:26:30.67 :EZH9raf4

そうか、まあイラついてないならいいんだ
話題をすり替えてまで攻撃的な言葉を向けて来たから
何かイラついてるのかと思ったんだ、まあ気にするな
デフォルトの名無しさん [sage] 2016/07/03(日) 22:28:43.96 :A4NkGxi2
話題をすり替えてっているなら、お前が話題をすり替えてるじゃんw
デフォルトの名無しさん [sage] 2016/07/03(日) 22:30:05.90 :A4NkGxi2
あと気づいてないようだが、俺は上のだれとも違うよw
お前は一体誰と戦ってるんだ?w
俺は遊べそうと思ったから遊んでるだけだw
デフォルトの名無しさん [sage] 2016/07/03(日) 22:37:55.93 :EZH9raf4
コントロール文字知らない子を馬鹿にしてた痛い奴だろ?
まあ俺は相手は誰でもいいんよ、反応のいい馬鹿をからかうのが楽しいだけだから
では寝る、スレ汚し失礼した
デフォルトの名無しさん [sage] 2016/07/03(日) 22:51:46.92 :YeoQWaDz
コントロール文字を知らないゆとりも、ググれないゆとりも、馬鹿にされて然るべき。
おかしな擁護をするからゆとりはゆとりのまま。それはゆとりのためにもよくない。
デフォルトの名無しさん [sage] 2016/07/04(月) 04:44:18.07 :gPjkHcng
コントロール文字を知らない若人は雇うかもしれないが
人を馬鹿にする奴は雇わない
デフォルトの名無しさん [sage] 2016/07/04(月) 07:56:58.66 :Nc/f1szG

確かに!
デフォルトの名無しさん [sage] 2016/07/04(月) 21:07:56.31 :xBEl8jJ1
と思う意識高い系ゆとりであった
いよいよここもゆとり汚染が酷いな

そうやって自分の周りを自分より馬鹿で固めて安心しているうちはゆとりのままだね
じきに会社が潰れるからそれでいいと思うけど
資本主義はゆとりを特別扱いしてはくれない

君らがコントロール文字すら知らない中年になるのは数年後さ
若いという言い訳が通用しなくなった時にどうなるか見物だね
デフォルトの名無しさん [sage] 2016/07/04(月) 22:32:04.97 :vRFMByUM

コントロール文字を知らない中年と
他人を馬鹿にする事しかしない中年
確実に後者の方が害悪だな
デフォルトの名無しさん [sage] 2016/07/04(月) 22:52:08.82 :xBEl8jJ1
それが正しいかどうかは社会が決めてくれる。
君らが正しければ再就職先はあるだろうし、間違っていれば無いだけの話だ。
ここで言い争う意味はない。楽しみに待てばいい。
デフォルトの名無しさん [sage] 2016/07/04(月) 22:55:17.69 :0oVcG5wM
今まで、スラッシュ/ってコントロール文字だから、
var moji="\/";
って具合にエスケープするって認識でいたのですが?
デフォルトの名無しさん [sage] 2016/07/04(月) 23:07:56.13 :xBEl8jJ1
ID:EZH9raf4



俺らの対応に文句を言っているお前らが答えろよ。
当然知っているからその態度なんだろ?
それで放置するのなら俺らに文句を言う筋はないよ。

もっともゆとりにはこの「筋」ってのが通じなくて困るんだが。
デフォルトの名無しさん [sage] 2016/07/04(月) 23:15:25.46 :2qwL8Tkv
コントロール文字がわからなくてぐぐってみたんだが、制御文字(control character)の事か!
なぜ、controlだけカタカナにするんだろう?
コントロールキャラクタの方がまだ分かる
デフォルトの名無しさん [sage] 2016/07/04(月) 23:27:23.31 :vyHh0WrX
ルー大柴に尋ねてくれ
デフォルトの名無しさん [sage] 2016/07/04(月) 23:50:51.04 :SuUmocnF
ttp://www.kogures.com/hitoshi/javascript/file-api/directory.html
これ使ってフォルダ読み込んでいるんだけど
指定する場所が毎回同じだから最初からそこを指定するにはどうすればいいんだろう?
わかる人いたら教えて下さい。
デフォルトの名無しさん [] 2016/07/05(火) 00:16:53.06 :50xvo8fd

元々ハードを制御する為に使われていたASCIIコードの先頭32文字を指していた言葉、改行や前述されたBELなど通常の文字として画面表示されないもの
Unicodeではこの32文字に加えて第14面の追加特殊用途面などに更に多くの制御文字がマッピングされている
なおスラッシュは/という文字なのでコントロール文字ではないし、エスケープが必要かと制御文字どうかには直接的な関連性はない


本当はコントロールキャラクターと表記したいが多くの日本人はキャラクターという言葉から文字を連想しないから文字と置き換えたのではないかね?
デフォルトの名無しさん [sage] 2016/07/05(火) 00:24:24.40 :aq1IVl4D
まあ確かに、コントがロール(役割)なキャラクターって思っちゃうわな。
デフォルトの名無しさん [sage] 2016/07/05(火) 01:58:08.99 :94G9IfNv

<p>〜</p> はいらないので、コメントにするか、削除する

コメントにする場合、<!-- と --> で囲む。
ただし、コメントの中に、コメントは含められないため、<!-- 行C --> を削除する

<!--
<p>

</p>
-->

<script>
fileListDilectory("フォルダ名")

function fileListDilectory(files) {

<script>タグと、function〜の間に、fileListDilectory("フォルダ名")を追加する。
フォルダ名は、半角ダブルクォーテーションで囲む
デフォルトの名無しさん [sage] 2016/07/05(火) 02:14:24.57 :iQZ7PuWs

どちらかといえば、「制御文字」が広く知られていると思うのだが
デフォルトの名無しさん [sage] 2016/07/05(火) 03:12:34.89 :gnmCE5Y/
結構勘違いされてるけどHTMLのコメントアウトって<!--で開始で-->で終了じゃなくて
<!と>の中にある--で開始で--で終了だから

<!ここはコメントじゃない--ここはコメント--ここはコメントじゃない>
デフォルトの名無しさん [sage] 2016/07/05(火) 03:15:48.89 :gnmCE5Y/
<!------>
↑これコメント閉じてない
デフォルトの名無しさん [sage] 2016/07/05(火) 03:31:12.38 :94G9IfNv
Effective JavaScript という本の項目45で、

オブジェクトを辞書として使う際、キーに、hasOwnProperty, __proto__ などを使うと、
既存のプロパティが上書きされて、バグるというのは本当なの?

var dict = { hasOwnProperty : null, __proto__ : null }


<!-- と --> の間では、-- は使えない
デフォルトの名無しさん [sage] 2016/07/05(火) 04:05:49.05 :gnmCE5Y/

だからなんだってば
デフォルトの名無しさん [sage] 2016/07/05(火) 04:07:46.52 :Dhx8/uPE
最近仕様が変更されてコメント内の二重ハイフンも OK になった

ttps://github.com/whatwg/html/commit/518d16fdc672d1023dcfd2847d86f559d13a842f
デフォルトの名無しさん [sage] 2016/07/05(火) 14:28:39.06 :eormrIAE

そんなことはない
ttps://html.spec.whatwg.org/multipage/syntax.html#comments
その理屈が認められるならDOCTYPE宣言にもコメントを埋め込み可能になる
<!DOCTYPE html--コメント-->
デフォルトの名無しさん [sage] 2016/07/05(火) 14:49:36.44 :eormrIAE

あなたが Object.prototype 上のプロパティを使いたいなら(自分自身で生み出した)バグといえるし、そうでなければバグではない
そもそも、__proto__ に null を代入しているのだからプロトタイプチェーンを辿れないのは当然の事だ
自分が何をしているのかを理解していればそれがバグとなる由もない

var dict = { hasOwnProperty : null, __proto__ : null };
Object.prototype.hasOwnProperty.call(dict, 'hasOwnProperty'); // true
dict.hasOwnProperty('hasOwnProperty'); // TypeError: dict.hasOwnProperty is not a function
dict.valueOf(); // TypeError: dict.valueOf is not a function
デフォルトの名無しさん [sage] 2016/07/05(火) 16:01:54.40 :50xvo8fd

w3cのhtml5勧告によると、<!--の4文字シーケンスで始まり-->の3文字シーケンスで終わるときっぱり書いてある
以下出典と該当する部分の引用

ttp://www.w3.org/TR/2014/REC-html5-20141028/syntax.html#comments

8.1.6 Comments

Comments must start with the four character sequence U+003C LESS-THAN SIGN, U+0021 EXCLAMATION MARK, U+002D HYPHEN-MINUS, U+002D HYPHEN-MINUS (<!--).
(ここに中身について云々あるが中略)
Finally, the comment must be ended by the three character sequence U+002D HYPHEN-MINUS, U+002D HYPHEN-MINUS, U+003E GREATER-THAN SIGN (-->).
890 [] 2016/07/05(火) 23:08:07.75 :94G9IfNv

入力されたデータを、オブジェクトのハッシュとして扱った際、バグらないのかな?

または、これを利用して、システムを壊したりするとか
デフォルトの名無しさん [sage] 2016/07/05(火) 23:17:50.58 :eormrIAE

それはそういう設計にしているプログラマが悪い
プロパティに何でも代入可能なハッシュ値ならプロトタイプ上のプロパティが上書きされる事も考慮すべきだ
Object.keys, Object.prototype.hasOwnProperty.call で回避できるからな
あるいは new Map でも使えばいい
853 [sage] 2016/07/05(火) 23:21:29.77 :fKNXFIY8
オレ、27歳だけど、コントロール文字にスラッシュ入るって
言ってたら、まずいですか?
デフォルトの名無しさん [sage] 2016/07/05(火) 23:49:25.07 :Coapt2bz
『JavaScript: The Good Parts』(P11)の文字列リテラルの説明は意味が分からん

" (</ とコントロール文字を除くすべてのユニコード文字> | <エスケープ文字>)* "

なぜ "/" (スラッシュ) を除く?
ES6 を読んだが、"/" が許可されないようには読めん
ttp://www.ecma-international.org/ecma-262/6.0/#sec-literals-string-literals

『JavaScript: The Good Parts』の説明では """ が許可されるように読めるが、実際そんなことはなく、SyntaxError になる
<" とコントロール文字を除くすべてのユニコード文字> であるべきだと思うのだが
853 [] 2016/07/06(水) 00:00:08.69 :zGLlF+Oq
実は、アマゾンで売ってるkindleの電子版のgood partsでは

String

""で囲まれた文字列は、
any unicode character except
" and \ and control character

''で囲まれた文字列は、
any unicode character except
" and \ and control character

となっており、日本語版のgood partsとは書いてあることが違う
英語版にはexcept / とは書いてない。

オライリーの公式には、ここの訂正がない。

ってなってるんだけど、もちろん、このスレの住民は
英語版のgood partsくらい普通に読んでるんで、
気づいているはず
デフォルトの名無しさん [sage] 2016/07/06(水) 00:02:33.66 :Np1SAbRe

運が良かったな。誤字って予想ぐらいすぐにおもいつけよ

ttp://bdcampbell.net/javascript/book/javascript_the_good_parts.pdf
デフォルトの名無しさん [sage] 2016/07/06(水) 00:14:41.00 :1PwyVn8f
正規表現の文字列表記から見ると、”/”は制御文字扱いになるのかな?
899 [sage] 2016/07/06(水) 00:14:59.53 :YMmDVDK6

気が付いていたなら初めからで正しい情報を書け、といいたい
間違いと分かっている和訳版の情報を寄せるのはミスリードを誘っているようにしか見えん


公式サイトに添削がないからおかしいとは思った
仕様書にない時点で間違いだと99%確信はしてたが、誰も指摘しなかったんだな
ただ、はっきりいって誤字のレベルを超えていると思う
"'と/ではキーの位置が大きく違うが、どうやったら誤字になるんだ?
デフォルトの名無しさん [sage] 2016/07/06(水) 00:18:21.76 :Np1SAbRe
マヌケかw
/と\ の間違いだろw
デフォルトの名無しさん [sage] 2016/07/06(水) 00:18:26.98 :YMmDVDK6

/が制御文字と主張するなら「何を制御しているのか」をよく考えろ
通常、制御文字とは NUL, BS, LF, CR のように入力された機器に特別な制御命令を与える文字を指す
/は入力された機器に何も制御命令を出さないので普通は制御文字とは呼ばない
プログラミング言語や正規表現で現れる特殊文字は「メタキャラクタ(meta character)」と呼ぶ
扱う言語によってメタキャラクタは変化するので「JavaScriptの正規表現では/はメタキャラクタ」というように言語指定してやれば正しく伝わるだろう
853 [sage] 2016/07/06(水) 01:02:18.07 :zGLlF+Oq
""と''の中の文字列はany Unicode character になっており
/を除くと書いてない。
(コントロール文字に/を含めにないとき)

The escape sequencesに\/があるってことは
/がコントロール文字でないと辻褄が合わないではないか!?
っと考えました。

/はコントロール文字ではないが、正規表現で使う特殊文字だから、
コントロール文字の中に含めているって解釈でいい(?)


メタキャラって/もですが、+ / *とかもメタキャラですよね
しかし+ / *はThe escape sequencesでない。
デフォルトの名無しさん [sage] 2016/07/06(水) 01:11:51.83 :Np1SAbRe
まだやってんのか?
コントロール文字って定義があるんだから
それ以外はコントロール文字じゃねーだろ。
それだけの話んだが。
デフォルトの名無しさん [sage] 2016/07/06(水) 01:31:13.03 :YMmDVDK6

escape sequencesは制御文字の反意語ではない
そもそも、文字列リテラル上で制御文字は特別な文字ではなく、エスケープを必要としない
文字列リテラルでエスケープが必要なのは "'\ と LineTerminator だけだ
ttp://www.ecma-international.org/ecma-262/6.0/#sec-literals-string-literals
デフォルトの名無しさん [sage] 2016/07/06(水) 01:35:42.48 :YMmDVDK6
ああ、あと英語が読めるなら『ECMAScript 2015』を読んでおくといい
『JavaScript: The Good Parts』よりも参考になる
デフォルトの名無しさん [sage] 2016/07/06(水) 01:51:00.52 :YMmDVDK6
改めて読み直したが、

> /はコントロール文字ではないが、正規表現で使う特殊文字だから、
> コントロール文字の中に含めているって解釈でいい(?)
1行目と2行目の「コントロール文字」の定義が違うのはなぜだ?
「文字列リテラルのメタキャラクタ」と「正規表現のメタキャラクタ」は区別しろ

制御文字とメタキャラクタは別個の定義だ
よくわからんなら制御文字は気にしなくていいが、/や\はメタキャラクタであっても制御文字ではない(文字列リテラルでは/はメタキャラクタではない)
しっかりと理解してないなら全て「特殊文字」に統一しておいた方がマシ
ttp://www.ecma-international.org/ecma-262/6.0/#sec-unicode-format-control-characters
デフォルトの名無しさん [sage] 2016/07/06(水) 02:04:58.41 :3UYEMUlZ
何でこのゆとりはこんなに必死なの?
間違いを認めればいいだけだろ。
もしそれをこれまで吹聴していたのなら、お前は既に馬鹿老害扱いされている。
それでも今後とも間違いを吹聴し続けるよりはマシ。
デフォルトの名無しさん [sage] 2016/07/06(水) 07:18:52.57 :sTXK0Kzp
別に間違いを認めさせる必要もない。
それは優しすぎる傲慢。
その権利は俺達にないし、彼の問題に一々付き合ってやる義理もない。
デフォルトの名無しさん [sage] 2016/07/06(水) 07:43:14.67 :zGLlF+Oq

はい。

/はコントロール文字でない。
「文字列リテラルのメタキャラクタ」と「正規表現のメタキャラクタ」が分からないので
/と\はコントロール文字でないが、escape sequencesに/と\があるのは
特殊文字だからって覚えておきます。
デフォルトの名無しさん [sage] 2016/07/06(水) 08:07:50.32 :Uvvu3JgG
/ って正規表現で使うっけ?
デフォルトの名無しさん [sage] 2016/07/06(水) 08:27:04.26 :sTXK0Kzp
言葉の定義なんて前提と捉え方で用意に変わり得る。
例えば制御文字を表すためのエスケープ表現を『制御文字』と慣用的に読んだって間違いじゃないし、
『\』をそのエスケープ表現の開始記号として『制御文字』と言ったって必ずしも伝わらなかったり悪いわけじゃない。
慣用的に使われる言葉と、仕様のキーワードは別。
デフォルトの名無しさん [sage] 2016/07/06(水) 09:51:11.02 :aYInvTWe

/もちろん/
デフォルトの名無しさん [sage] 2016/07/06(水) 10:42:32.00 :cNn6jv5y

それリテラルのデリミタ。正規表現の一部じゃ無い
デフォルトの名無しさん [] 2016/07/06(水) 11:35:43.96 :YMmDVDK6

補足感謝
「/がメタキャラクタ」は適切な表現ではなかったな
デフォルトの名無しさん [sage] 2016/07/06(水) 11:48:57.84 :sTXK0Kzp
仕様上の正規表現内のメタキャラクタではないね。
実際書く上では実質「正規表現」の「メタ」なキャラクタと考えられなくはないけど。
デフォルトの名無しさん [sage] 2016/07/06(水) 21:22:48.04 :3UYEMUlZ

ゆとり「通じればいいんだ。間違いではない」
他人(なんだこのゆとり…間違いは間違いだろ)

間違いだし、伝わりにくいし、悪いよ。いちいち言わないだけで。
デフォルトの名無しさん [sage] 2016/07/06(水) 21:26:31.47 :zGLlF+Oq
オレ、仕事は製造業で電子部品作ってる工場で働いているからさ
趣味でJavascriptの勉強してるだけだし別にいいだろ
って開き直ってやる
デフォルトの名無しさん [sage] 2016/07/06(水) 21:32:48.07 :3UYEMUlZ
だとすれば話は簡単で、明日から正しい言葉を使うことを心がければいいだけ
過ちては改むるに憚ることなかれ
リアルで誤用しまくりなら信用の回復は無理ぽだけど、そういうことではなさそうだし
デフォルトの名無しさん [sage] 2016/07/06(水) 22:48:29.74 :Np1SAbRe
本当にゆとりだな。
ASCIIコードを勉強するときに
必ずコントロール文字は出てくるだろ。

JavaScript以前の問題だ。
デフォルトの名無しさん [sage] 2016/07/06(水) 23:09:55.62 :3UYEMUlZ
ユニコードしか知らないんだろ
10代ならあり得るが、20代しかも後半なのはちょっと不自然だけど
逆に俺はJavaScriptのソースコードがユニコードなのが衝撃的だったが
デフォルトの名無しさん [sage] 2016/07/07(木) 07:09:03.14 :kX0s01tc

何が衝撃的だったの?
デフォルトの名無しさん [sage] 2016/07/07(木) 19:41:06.60 :xu7eLIup
javascriptスレだったと思うんだけど
変数名をhanteiにしたら、クレームが来て、
取引先の会社「変数名hentai(ヘンタイ)ってどいうことですか?」
当社「違いますhanteiの間違えです。」
って事件があったとさ
これってなんかのコピペなんですか?
実際に、仕事でhanteiなんて変数名に使うものなのでしょうか?
デフォルトの名無しさん [sage] 2016/07/07(木) 21:22:02.81 :emRikmn6
コピペかコピペじゃないかを気にするより他の事に時間を割いた方が有意義だよ
デフォルトの名無しさん [sage] 2016/07/07(木) 21:34:20.25 :+CDrHRBK

コピペかどうかはさておき、hanteiは使っててもおかしくないと思う
良いか悪いかは別の話ね
デフォルトの名無しさん [sage] 2016/07/07(木) 22:43:23.54 :iLaVioOv
const {app} = hoge;
const app = hoge;

ES6の定数宣言で、この二つの書き方は何が違うんでしょうか?
どちらを使うべきか指針とかあったりしますか?
デフォルトの名無しさん [sage] 2016/07/07(木) 23:01:35.80 :H48+30O4
> どちらを使うべきか指針とかあったりしますか?
普遍的なルールとして、短い方を選ぶ方が良い。
デフォルトの名無しさん [sage] 2016/07/07(木) 23:39:05.17 :emRikmn6

明らかに挙動の違うものを「どちらを使うべきか指針」といわれても…
ttp://http://js-next.hatenablog.com/entry/2015/05/18/181956">ttp://js-next.hatenablog.com/entry/2015/05/18/181956

デフォルトの名無しさん [sage] 2016/07/07(木) 23:40:07.51 :j5TOflcB
動作が違うでしょ。
const {app} = hoge;

const app = hoge.app;
と等価
デフォルトの名無しさん [sage] 2016/07/07(木) 23:44:51.74 :iLaVioOv
右辺のプロパティ名と同じ変数が作れるんですね
理解しました、ありがとうございました
デフォルトの名無しさん [sage] 2016/07/08(金) 00:17:25.93 :gFg8sSWK
ライブラリ板の荒れ具合が酷いのでやはり、プログラム板に統合した方がいいと思う
あと、テンプレも復活させる必要がある
デフォルトの名無しさん [sage] 2016/07/08(金) 00:27:47.76 :+TjkY6Hg
Web板のHTML、CSS、ライブラリ含むWeb総合質問スレと、
プログラム板のJS総合スレの2つに分けるのがいい。
デフォルトの名無しさん [sage] 2016/07/08(金) 00:54:45.54 :yD4trqxh
次スレでーす

+ JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net
ttp://echo.2ch.net/test/read.cgi/tech/1467906869/
デフォルトの名無しさん [sage] 2016/07/08(金) 07:41:13.87 :lv/3l3yT
テンプレは ttp://fiddle.jshell.net/fH4cC/174/show/ を元にライブラリ許容型に変更すればいいね
デフォルトの名無しさん [sage] 2016/07/08(金) 07:46:45.99 :lv/3l3yT
以下、ライブラリスレより。
これを組み合わせればいいと思う。

■関連スレ
JavaScript ライブラリ総合質問所 vol.5 [無断転載禁止]©2ch.net
ttp://echo.2ch.net/test/read.cgi/hp/1465399470/

■各種ライブラリ
jQuery API Documentation
ttp://api.jquery.com/
jQuery Mobile API Documentation
ttp://api.jquerymobile.com/
API Docs - YUI Library
ttp://yuilibrary.com/yui/docs/api/
Underscore.js
ttp://underscorejs.org/
lodash documentation
ttps://lodash.com/docs
デフォルトの名無しさん [sage] 2016/07/08(金) 08:49:21.45 :+TjkY6Hg
DOM系のライブラリはどうしてもHTMLやらCSSやらの話にも成りがちだから、
Web板の方で統合した方がいいと思う。
デフォルトの名無しさん [sage] 2016/07/08(金) 08:50:41.84 :vGS1irmk

(9)を削除して「諸注意」を書き変えればいいかね
完全に消すと初見さんが荒らしへの対処に困りそうだし
デフォルトの名無しさん [sage] 2016/07/08(金) 11:24:47.84 :KhEBU29m
俺はに一票
Web板は既にそれぞれの質問スレがあるから上から統合立てるのはどうかと
統合するならどれか立たなくなってから徐々にまとめていく形がいいと思う
その場合ここのテンプレは前スレのリンク切れ直すくらい

いずれにせよ荒らしの立てたスレ使うのは本当によくないからはスルーで
デフォルトの名無しさん [sage] 2016/07/08(金) 13:47:44.11 :U0/kuRoy
この状況でWeb制作板に統合するのは荒らしを助長させるだけでデメリットしかないと思う
プログラム板に統合する案に賛成
デフォルトの名無しさん [sage] 2016/07/08(金) 18:33:42.72 :+TjkY6Hg
プログラム板に統合するのなら、HTMLやCSS中心の話題も許容するくらいじゃなきゃまた大揉めすると思うぞ。
俺はそれならそれでいいが、多くの人が納得するかは知らない。
いずれにしろ統合するならそういう文言を必ずテンプレに入れてくれ。
デフォルトの名無しさん [sage] 2016/07/08(金) 21:17:40.39 :GrB7vStf
> プログラム板に統合するのなら、HTMLやCSS中心の話題も許容するくらいじゃなきゃまた大揉めすると思うぞ。

俺もその意見に賛成。も言ってるけどDOMの話をするのなら
HTMLとCSSは必ず出てくる。UIを作るときにはかならず使うものだからね。

時々JavaScriptだけで見た目を制御しようとして
ごちゃごちゃしたコードを書く人がいるけど
HTMLとCSSを正しく使えばJavaScriptコードは減る。

「CSSだけで作る」で検索すればいろいろと動きのある
メニューとかが出てくるはず。
デフォルトの名無しさん [sage] 2016/07/08(金) 22:04:36.09 :+TjkY6Hg
こういうのですね。わかります。
ttp://design.kayac.com/topics/2011/06/css-programing.php
デフォルトの名無しさん [sage] 2016/07/08(金) 23:30:39.02 :CZkAeEnB
HTML/CSSのスレってこれ?
ttp://echo.2ch.net/test/read.cgi/hp/1467511443/

本来はあっちでDOM操作関連のチョロJavaScript(〜30行程度)までは取り扱うべきなんだよ。
それを越えてきたらこちらということで。
あいつらは今後ともstaticなHTML/CSSだけのつもりなのか?
デフォルトの名無しさん [] 2016/07/08(金) 23:36:09.26 :/soOgtk1
WEB製作とWEBプログラミング板をID表示に出来ない?
デフォルトの名無しさん [sage] 2016/07/08(金) 23:45:11.18 :BGnGAFet

それなら同じ理屈で、こっちでも30行程度の
HTMLやCSSを扱うべきじゃね?
デフォルトの名無しさん [sage] 2016/07/08(金) 23:48:54.41 :3Ch7jsxi
スレ違いの質問は該当スレに誘導すればいいだけ
そういう輩は「技術的に詳しそうなのでスレ違いを承知で質問します」という体だから裾野だけ増やしても仕方ない
一つ例外を認めればあれもこれも認めろという声が上がるのは明白
デフォルトの名無しさん [sage] 2016/07/08(金) 23:50:58.91 :BGnGAFet

そもそもHTMLやCSSはスレ違いではないという話だよ。
デフォルトの名無しさん [] 2016/07/08(金) 23:53:38.62 :/soOgtk1
HTML/CSS/JSを全て扱う「クライアントサイドWEB製作総合スレ」建てれば?
デフォルトの名無しさん [sage] 2016/07/08(金) 23:56:27.86 :3Ch7jsxi
JavaScriptスレならHTML/CSSはスレ違い
Web制作初心者スレならHTML/CSSはスレ違いではない
HTML/CSSにも関わりのあるJavaScriptの質問をするなら許されることもあろうが、JavaScriptと関係しないHTML/CSSの質問は完全にスレ違い
ex: article要素とsection要素の違いは何ですか?
デフォルトの名無しさん [sage] 2016/07/09(土) 00:00:07.52 :My2a4Ewi
だからそういう無関係質問用に専門スレは残しておくとしても、HTML/CSS/JSが全て関わっているとどこで聞くか迷わない?
デフォルトの名無しさん [sage] 2016/07/09(土) 00:03:20.01 :ej5NI84G
主従関係を考えればいいだけ
JavaScriptが主、HTML/CSSが従の質問をすればいい
ECMAScriptの範疇でしか質問を受け入れないわけではない
946 [sage] 2016/07/09(土) 00:11:15.70 :iLP51t8A

いやそれはない。俺はあのスレの内容には全く興味がない。
DOMはJSにとっては入出力だから外すことは出来ないが、
本格的にプログラミングすると当然DOM以外の部分が大半になる。

むしろ、DOM関連のJavaScriptだけ分離するべきか?
まあそれが元々はjQueryスレだったんだろうけど。
とはいえ,954は妥当だな。とりあえず現状維持でいいよ。

迷ったら一番妥当だと思うところで聞けばいいだけ。
その判断が間違いならスレチ誘導すればいいだけ。
維持出来ないほど過疎れば自然と統合されるだけ。
デフォルトの名無しさん [sage] 2016/07/09(土) 00:14:45.57 :3ye6tHD5
じゃあ現状維持で

+ JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net
ttp://echo.2ch.net/test/read.cgi/tech/1467906869/
デフォルトの名無しさん [sage] 2016/07/09(土) 00:16:51.15 :3DBY5ZwO
> DOMはJSにとっては入出力だから外すことは出来ないが

nodejsを見ればわかるようにDOMは必須じゃない
デフォルトの名無しさん [sage] 2016/07/09(土) 00:52:31.22 :US7tnKBO
のテンプレを更新した。
ttp://https://fiddle.jshell.net/6018r9tu/1/show/light/">ttps://fiddle.jshell.net/6018r9tu/1/show/light/

デフォルトの名無しさん [sage] 2016/07/09(土) 00:57:59.04 :jK+6h30t
テンプレの中の人生きてたのか…

住み分けはの考え方が俺も適切だと思う
そもそもの板ルールだってケースバイケースでやれとのお達しが出ているし
とりあえずライブラリスレはまだ埋まるまで時間があるから議論は持ち越しとして
このスレの現状維持には賛成だが,を使うのには重ねて反対だ
デフォルトの名無しさん [sage] 2016/07/09(土) 05:01:09.70 :u3A/GFo2

統合しようとしてる今の全体状況を考えても、それは難しい。
統合するならWeb全般と、JS全般の2つにするか、
HTMLの質問くらいなら許容してあげるくらいのJS全般1つにすべき。
デフォルトの名無しさん [sage] 2016/07/09(土) 07:11:01.87 :ej5NI84G
HTML/CSSは統合しなくていいし、メリットがないと思う
統合するならHTML/CSS/JavaScriptだけに特化して統合する必要はない
SEO対策、ブラウザ、サーバサイドスクリプト...etc
境界線が分からない質問者が質問しそうな話題は無数にある
Web制作板で「Webサイト制作初心者用質問スレ」を復活させるのが妥当だが、JavaScriptスレとは無関係に進めるべき
あと、統合するなら周辺スレの住人の合意を得る必要があるから
デフォルトの名無しさん [sage] 2016/07/09(土) 08:39:06.50 :Bk+A+H3d
許容範囲でいえば、こんな感じかな

○ アコーディオンメニューの作り方(JavaScriptメイン、HTML/CSSサブ)
× section要素の使い方(HTML 100%、CSS 0%、JavaScript 0%)
× display: flex の使い方(CSS 100%、HTML 0%、JavaScript 0%)
× Web検索結果の順位を上げたい (SEO対策 100%、JavaScript 0%、HTML 0%、CSS 0%)
デフォルトの名無しさん [sage] 2016/07/09(土) 10:41:56.68 :iLP51t8A

お前がそういうことにしたいのは分かったが、ところで統合しようとしている相手はどのスレなのよ?
このスレは十分流れているし、機能もしている。
jQueryのスレも同様。どちらもどこかに合流する必要はない。

統合ってのは過疎スレが維持出来ずに落ちて、
そこの住人がどこか近いところに移住することによって行われる。
十分流れているスレで上から「統合」指令出しても効果はない。
落ちそうな過疎スレをそのまま落とせば自然と統合されるし、それ以外の妥当な方法はない。
結果的にスレチ誘導出来ず、その落ちたスレが取り扱っていた内容も自然と取り扱うことになる。

つまり統合に関してはここでの議論は無意味で、統合される側のスレ住民が納得しないと効果も無い。
分化したスレが機能している以上、それは分離すべきだったということだ。
「ぼくのかんがえたさいきょうのとうごうすれ」は存在し得ない。
例えば主にDOM関連に興味があるのなら、そいつはこれまで同様HTML/CSSのスレも見ろってことでしかない。
デフォルトの名無しさん [sage] 2016/07/09(土) 14:22:57.47 :8raa4CZV
見て思ったのはアコーディオンメニューはCSS100%でも作れるってこと
どちらが主になるかなんて実装次第だが、このスレに投下した時点でJavascriptで実装すること前提であってほしい
何で作るのがいいかわかってないような奴をここでいちいち相手にしたくないから総合的スレがこのスレと別に向こうにあったらありがたいとは思うな

このスレをどこかと統合する必然性はないと思うが、おかしな奴をまず総合スレで相談して来いって追い出せるのは便利だ
デフォルトの名無しさん [sage] 2016/07/09(土) 15:30:53.75 :iLP51t8A
その他
ついでだから追加。

既に述べたように、
機能しているスレで議論できる内容は、「何かを分離するか、現状維持か」
過疎って機能してないスレで議論すべき内容は、「どこかに統合するか、現状維持か」
統合したいのなら、統合される過疎スレ側に連絡し、それを住民が受け入れれば統合されるだけ。
こっちが過疎スレ側にごそっと移動してもスレ乗っ取りにしかならないだろ。

最近は減ったように思うが、テンプレ回答として
・PHPでやれ
・CSSでやれ
ってのがあったから、の言う総合案内所は役に立つだろう。
ただそこで複数の実装方法があったとして、どれがいいかを説明するのはかなり難しいとは思うが、
お前らは説明の再生産はしたがっているようだから、それもいいのではないか。理解を深めることにはなる。
上手く行けばそのスレはめちゃめちゃ繁盛するだろう。
多分最初からJS/HTML/CSS/PHPまで入れておいた方がいい。
質問「○○をやりたい」に対し、基本的には「○○スレに行け」という回答で案内に徹せば上手く行く。
デフォルトの名無しさん [sage] 2016/07/09(土) 18:27:15.89 :/ZL1+tl1
がいうように「Webサイト制作初心者用質問スレ」を復活させれば万事解決する気がする
デフォルトの名無しさん [sage] 2016/07/09(土) 20:10:41.89 :1nvCXdBR

アコーディオンメニューをCSS100%で作れるからと言って、
質問する人はそう思ってない。JavaScriptが必要だと思ってる。

だから最初からCSSスレに書き込むのは不可能
JavaScriptスレで質問するのは仕方がないことだが
これをCSSスレに移動させるか?といえば、実はそうとは限らない。

CSS100%で作れると言ったが細かい要件によっては
CSS100%で作れないかもしれないからだ。

だからCSSで作れるかどうか分からない質問をここでするのは問題ないし
JavaScriptで作る回答があるならば、ここで会話を続けていい。
その答えの一つとしてJavaScript使わないでできますって言うのも答えなわけだ。

結論としては

質問者・・・JavaScriptを使うと思っているならば質問していい
回答者・・・JavaScriptでやるのが間違いだと思うならば、他のスレに誘導
手法の一つとしてJavaScriptでやる方法があるのならこのスレでよく、
回答の一つとしてJavaScriptを使わない方法を提示しても良い。

でいいんじゃねーの?
デフォルトの名無しさん [sage] 2016/07/09(土) 20:34:43.05 :iLP51t8A

何でお前は取り扱い範囲を広げたがっているの?
それともお前は単発荒らし?なら無視するだけだが。

何で作ればいいか分からない人向けの「Webサイト制作初心者用質問スレ」であって、
ここで聞く限り「JavaScriptで作る気」な場合にしろって事だろ。明確で妥当な基準だ。

既に書いたが、既に機能しているスレでは「範囲を狭めて分化していくか、現状維持か」だよ。
何でも聞けるスレは何も出来ないスレになる。
仮にプログラミング言語一般として、JavaもCもJavaScriptもPHPもありのスレにしても意味無いだろ。
複数の話題に興味があるのなら、お前が複数スレを巡回すればいいだけ。
分化しすぎてて過疎って落ちれば自然と統合されるだけ。そこでバランスが取れるようになっている。

CSSの話題がここで為されるとしたら、CSSスレが落ちて誰も立てなくなった時だよ。
あっちが機能している限り、CSSの話はあちらでやるべきだ。それがお互いの利益になる。
重ねて言うが、お前がCSSに興味があるのなら、お前がCSSスレも見ればいいだけだ。
デフォルトの名無しさん [sage] 2016/07/09(土) 20:37:57.40 :1nvCXdBR

範囲を狭くしたいっていうのなら
純粋なJavaScript専用にしてもいいけど?

つまりNode.jsでも動くものしかだめ。
DOMを扱うコードは禁止。
デフォルトの名無しさん [sage] 2016/07/09(土) 21:25:56.06 :iLP51t8A

言い返したいだけのクソガキ乙
俺はそれでもいいと言っているだろ。
分離するのならそこだ。
ただしnodeはスレが別にあるので考慮する必要はない。
(nodeガーについては全部nodeスレに誘導すればいいだけ)

分離する理由は(nodeは関係なく)DOM部分はHTML/CSSとも絡むため、迷子の原因だからだ。
ただこれについては「Webサイト制作初心者用質問スレ」の方が妥当だという意見だ。
俺もそれでいい。つまり、このスレは現状維持で上記スレを新設でいい。

ただしこの新設スレを機能させるには、少なくともフルスタック()な連中がそこにいないといけない。
お前らだけで対応出来ないのなら、他スレからも応援してもらう必要がある。
とは言っても立てないことには始まらないので、妥当だという意見が多いようなら立てればいいと思うが。
941 [sage] 2016/07/09(土) 22:14:27.41 :lCeUP8cE

失礼の統合をこの板へ移行するものだと読み間違えてた
このスレとWeb板のライブラリスレを統合するってことなら自分は反対だ
当初向こうで出た話ではIDの出る板への単なる移行だったはず

,の言うように「JSが主になる」質問をそれぞれのスレで扱うことと
の言うように初心者スレ復活を別の流れで模索することには賛成
デフォルトの名無しさん [sage] 2016/07/10(日) 02:54:32.77 :eiCoffPe
スクリプトで非同期にファイルダウンロードってどうやるの
ajaxでバイト配列を取得するとこまでできたけどファイルを保存する方法がわからねえ
デフォルトの名無しさん [sage] 2016/07/10(日) 05:23:29.64 :bPE6a5y9

その通り。
まず一歩目としてはその結論以外無い。
名無しさん@そうだ選挙に行こう! Go to vote! [sage] 2016/07/10(日) 12:28:37.49 :j73ykfM2
ライブラリスレにいる者だが、俺はこのスレに統合する案に賛成だな
ライブラリスレがプログラム板に移行するに留まるとほぼ間違いなく、過疎化する
俺の感覚ではライブラリスレで俺以外で回答に参加していたのは信者君+1〜2名というところだが、そもそも質問者の絶対数が少ない

JavaScript ライブラリ総合質問所 vol.5 [無断転載禁止]©2ch.net
ttp://echo.2ch.net/test/read.cgi/hp/1465399470/

このスレでの質問はほとんどないに等しい
これじゃあかんと思ってjQueryの感想を書いてつなぎ止めようとしても釣れるのは信者君とその他大勢の煽りだけ

質問者にとって重要なのは質問に答えてくれることであって質問した結果、荒れようがIDが見えなかろうが関係ないからな
信者君は質問には高確率で回答していて、質問者にとっては都合がいよいからjQueryスレの質問がそれなりに多いのだろう
「プログラム板に移行したら今まで黙っていた俺だが、質問する予定があるぜ」という人が名乗り出るなら別だが、俺はプログラム板に移行するだけでは質問者にも移行を促すほどの請求力はないと思うぞ
名無しさん@そうだ選挙に行こう! Go to vote! [sage] 2016/07/10(日) 12:35:33.20 :rTKcHDH+

俺としては別にライブラリスレでもjQueryスレでも
ここでもjQueryの話題があればレスしてるので
どこでもかまわないかな
名無しさん@そうだ選挙に行こう! Go to vote! [sage] 2016/07/10(日) 13:53:52.88 :BhOPIXig

お前は一体何がやりたいのさ?その件については明らかに信者の方が妥当だぞ。

そのスレってjQueryのスレとスレ立て合戦した奴だろ。頭の方に痕跡も残ってる。
どっちが本家なのかは知らないが、だったらまずそれらと統合すべきだろ。
そしてその話し合いは当該スレでやれ。ここではない。

スレ立て合戦の結果、人が居ないので釣ってみたが無理っぽいから統合したい?
死ね

> 質問者にとって重要なのは質問に答えてくれること
> 信者君は質問には高確率で回答していて、質問者にとっては都合がいよい
専用スレで信者が積極的に回答するのは全く問題ないし、むしろいいことだ。
それで質問スレとしても完全に機能してるんだろ?何も問題ない。
むしろお前の「ぼくのさいきょうのすれにならなかったから」というのが終わっている。

現実的にはjQuery以外のライブラリは新規に学ぶ価値が無くて、質問もないんだろ。
だったらそれはjQueryスレに飲み込まれるのが正しいあり方だよ。
お前がどれだけjQuery君を嫌ってようが、jQuery以外のライブラリが無用ならそうとしかならない。
名無しさん@そうだ選挙に行こう! Go to vote! [sage] 2016/07/10(日) 14:06:47.72 :SLnFWOAS
> お前がどれだけjQuery君を嫌ってようが、jQuery以外のライブラリが無用ならそうとしかならない。

jQuery以外のライブラリで有用なものはいくつかある。
無用というならばjQuery以外のDOM操作ライブラリというべきだろうね。

DOM操作に関連しないライブラリで有用なものはいくつかある。
例えばJavaScriptの少ない標準関数を補ってくれるlodash(underscore)
(Rubyを知っていればJavaScriptの標準関数は本当に少なく感じる)

日付関連をシンプルに扱えるmoment
SVGをjQueryライクに扱えるD3

ここらへんが有用なライブラリだな。
なおフレームワークやPolyfillは除いている。
名無しさん@そうだ選挙に行こう! Go to vote! [sage] 2016/07/10(日) 15:35:48.24 :ZmdhimD5
深淵を覗こうとする時はなんとやら
荒らしに餌やってまで伸ばそうとするのは最早呆れて何も言えないわ
あの状態じゃ質問なんて出来る雰囲気ではない
行うべきは燃料投下や統合よりも住み分けによる質問レスの誘導なんじゃないの
ここやNodeスレでライブラリやモジュールの質問スルーされてる難民とか結構いるぞ
名無しさん@そうだ選挙に行こう! Go to vote! [sage] 2016/07/10(日) 15:54:54.42 :SLnFWOAS

誘導したらどういう理由で問題が解決すると言うの?
名無しさん@そうだ選挙に行こう! Go to vote! [sage] 2016/07/10(日) 16:35:09.95 :BhOPIXig
適切な誘導をして流れるようになればそれでよし。
適切な誘導があっても過疎って落ちるようなら、落ちるべくして落ちただけ。
そのスレは独立して存在する価値がないことになる。

つまり、適切な誘導が行われれば、あとは放置すれば判定は出るというだけ。
話は簡単だ。次スレを立てる時にとりあえずこのスレのテンプレに入れておけばいい。
このスレで出来ることはそこまでだよ。
入れるスレは以下の4つで良いのか?追加あれば挙げて。

JavaScript ライブラリ総合質問所 vol.5 [無断転載禁止]©2ch.net
ttp://echo.2ch.net/test/read.cgi/hp/1465399470/">ttp://echo.2ch.net/test/read.cgi/hp/1465399470/
JavaScript & jQuery 質問用スレッド vol.6 + [無断転載禁止]c2ch.net
ttp://echo.2ch.net/test/read.cgi/hp/1465566635/
【node.js】サーバサイドjavascript 4【io.js】 [無断転載禁止]c2ch.net
ttp://echo.2ch.net/test/read.cgi/tech/1460359714/
(X)HTML/CSS の質問に優しく答えるスレ23 [無断転載禁止]c2ch.net
ttp://echo.2ch.net/test/read.cgi/hp/1467511443/

ちなみになあ、テンプレの人名無しさん@そうだ選挙に行こう! Go to vote! [sage] 2016/07/10(日) 17:22:43.78 :6EzdDOVN

回答者が流れても質問が来ないのではないかと思ってね
回答者だけいて質問者がいないのでは質問スレとして成り立たないから質問者が名乗り出てくれるのが有り難い
人が少なければ統合するのは自然な流れだと思う


誘導して人が来るならそうだな
名無しさん@そうだ選挙に行こう! Go to vote! [sage] 2016/07/10(日) 17:48:41.01 :tgTIUHUH
ライブラリスレの問題は気に入らない回答にいちいち噛みつく奴の存在だと思うな
彼一人のせいでまともな回答者が大分減ったし
誰だって自分の回答が馬鹿にされたらいい気持ちはしない
プログラム板への移行が望まれるのは当然だね
名無しさん@そうだ選挙に行こう! Go to vote! [sage] 2016/07/10(日) 18:04:56.98 :bPE6a5y9
俺は個人的にはライブラリ大嫌いだし、今のライブラリスレの元を何年も前に作ったのも俺だが、
統合は反対はしないよ。
だって、向こうのスレ(JSとライブラリ)全く機能してないもん。
逆に、向こうの質問スレに行った方が良いよと言えるまでは少々Web感が強くてもこっちで扱うべきと思う。
もしも、無効にWEB総合スレを作る試みが上手く行った暁には改めて振り分ければいい。
名無しさん@そうだ選挙に行こう! Go to vote! [sage] 2016/07/10(日) 18:58:46.48 :BhOPIXig
何度も言っているが、統合するかどうかは当該スレの住民が判断する話で、
こちらで決めることではない。
住民が納得して移住し、スレが落ちれば統合は完了する。
分化して専門性を高めたスレが存在して流れているのであれば、
それは存在価値があるからであって、統合する意味はない。

お前らみたいな「おれのさいきょうのすれっど」の馬鹿ばかりだからどうにもならないんだよ。
Web板に一生引きこもってろよ。
IDが出ないのをいいことにWeb板の質問スレでやりたい放題やっていたのはお前らだろ。
そういう馬鹿を見切った奴らがこっちに集まったからここは多少まともなんだよ。

統合して欲しいのなら、当該スレでそういう話し合いをすればいいだけだろ。
お前らは根本的に間違っているよ。
デフォルトの名無しさん [sage] 2016/07/10(日) 21:10:07.28 :ZmdhimD5
ここのプログラム板移行に賛同して極力回答していた身からすれば
延々と荒らしに構って荒れた挙句の過疎なのだから正直ざまあみろと思う所もある

でもその認識はちょっと偏見が過ぎるんじゃないの
向こうの両スレでID出ないのをいいことにやりたい放題やっていた輩っていうのは
件の信者でありの噛みつく奴でありテンプレで注意されていた同一人物だ
ここだって結局vol120にしてWeb板同様に乗っ取られているわけだ
向こうの住民だって数年間やれることはやった上での現在なんだろうよ
デフォルトの名無しさん [sage] 2016/07/10(日) 21:25:02.79 :bPE6a5y9
荒らしはあまり関係ないかと。
昔っから色んな意味で言いたい放題やりたい放題や奴は大勢いたし、
仕切り厨もスレチ厨も大活躍してた。

別に過疎の原因はスレ住民が悪いせいでは無いと思う。
むしろ過疎になったからそういう奴が目立ってきただけ。
デフォルトの名無しさん [sage] 2016/07/10(日) 21:28:08.59 :ZmdhimD5
ああそうなのか
ちょうどlodash啓蒙で大荒れ乱立してた頃からしか知らないんだわ
デフォルトの名無しさん [sage] 2016/07/10(日) 21:47:15.37 :BhOPIXig

そうでもないだろ。

そもそもIDあり板に移動したければさっさとやればよかっただけ。
今までへばりついていたのはID無しの方が都合がよかったからだろ。
こっちに来てからも何度も誘導も見た。どうしてもIDがない方が都合がいい奴がいるのは確かだ。
俺はざまあみろとは思わないが、そういう奴がここに来ると迷惑だと思っている。

ちなみに俺はその「信者」や「噛みつき君」は大して問題視していない。技術的である限り、やればいいのさ。
ゴミコードはゴミコードだと言うべきだし、その指摘が間違っているのなら逆に叩かれればいい。
「ぼくのかいたさいきょうのこーど」が礼賛される方が問題だ。
彼はIDがあったとしてもスタンスは変わらないだろうし、その点でも問題ない。

ちなみに彼の問題は、他スレでも「布教活動」をしていたことだよ。それは本当に邪魔だから止めてもらいたい。
ただ、今のところjQueryスレにこもって布教することにしたようだから、それは問題ないし、
こちらからもjQueryの専門的な話題は積極的に向こうに誘導すべきだろう。それがお互いの利益になる。

最悪に問題なのは、ID無し板で自演したり釣りをしたり横槍だと明確に分からない形で横槍を入れてくる奴らだ。
それは話の邪魔なんだよ。だからどうにもやりにくかった。それが今文句言っている奴らだろ。
その「信者」「噛みつき君」「注意されていた人」は彼等「自演君」「釣り君」「会話乗っ取り君」とは別の人だよ。
要するに、IDありとID無しで振る舞いを変えるような卑怯なゴミこそが問題なんだよ。

その点、「信者」君は卑怯ではない。繰り返すが、俺は彼には布教活動以外の問題は感じない。
だから彼がjQueryスレにこもってひたすら回答者に徹するのであれば、関連質問者は積極的に誘導でいい。
それの方がこっちのスレとしても楽だろ。

とはいえ、いい加減結論を出さないといけない。
荒らしのスレ,956はセオリーどおりスルーとして、俺はテンプレがあった方がいいと思うから、
ベースで関連スレだけに差し替えが俺の意見になる。
「Webサイト制作初心者用質問スレ」は次スレで引き続き検討として、
とりあえずこのスレの次スレをどうするかを決めよう。
デフォルトの名無しさん [sage] 2016/07/10(日) 22:27:02.42 :ZmdhimD5
布教活動に限らずスレ乱立に横やりや煽りだらけだったろうに
もっとも彼以外にもそういうのが居たってのは同意見だ

じゃあここの次スレに争点を絞ろう
・荒らしの立てたスレは使わずに新スレを立てる
・このスレは現状維持
・状況により初心者スレを検討
まずの改訂版は統合スレ用のものだから現状維持の場合は適さない
今回は以前のテンプレにの関連スレを加えたものを使うべきだと思う
肯定的なレスが付いたら建ててくる
デフォルトの名無しさん [sage] 2016/07/10(日) 22:31:41.73 :J3sPgwrM
> ベースで関連スレだけに差し替え
概ね賛成だけど、canvasスレの削除はどうなんだろうね
俺は落ちてない以上は入れてもいいと思う
デフォルトの名無しさん [sage] 2016/07/10(日) 22:38:00.44 :BhOPIXig

> 統合スレ用のものだから現状維持の場合は適さない
俺は子細はよく分かっていないのでこの辺はID:ZmdhimD5に任せる。


落とさないといけないって事はない。
ただ、あのスレ入れててもなぁ、とは思うが、
火種になるという意味では、今回は無難に入れておいていいとも思う。
まあいずれにしてもID:ZmdhimD5に任せる。

スレが埋まったらまずいので俺は今後は様子見する。
とにかくID:ZmdhimD5に任せる。よろしく。
デフォルトの名無しさん [sage] 2016/07/10(日) 22:39:44.89 :tx16mOUk
175 自分:Name_Not_Found[sage] 投稿日:2016/07/10(日) 22:19:22.40 ID:???
どこでもいいよw
俺は人がいるところに行くだけだから。
デフォルトの名無しさん [sage] 2016/07/10(日) 22:47:57.91 :KHJNSY1I
おまえらってさ、javascriptでどんなwebアプリ作ってんだ?
デフォルトの名無しさん [sage] 2016/07/10(日) 22:55:57.73 :ZmdhimD5
+ JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net
ttp://echo.2ch.net/test/read.cgi/tech/1468158373/">ttp://echo.2ch.net/test/read.cgi/tech/1468158373/

>>958をベースにして
そぐわない部分をカットしてからを追加することにした
あといつの間にか諸注意の内容がほぼ倍になってたから以前のものを使った
Web板のかな、少なくともこのスレで同意を得て追加されたものではないし
デフォルトの名無しさん [sage] 2016/07/10(日) 22:58:59.73 :Hr2GHwDG
のテンプレを更新した。
ttp://https://fiddle.jshell.net/6018r9tu/2/show/light/">ttps://fiddle.jshell.net/6018r9tu/2/show/light/

デフォルトの名無しさん [sage] 2016/07/10(日) 23:03:27.28 :XBuYUIhG
がID:ZmdhimD5に一任した途端、独断専行っぷりが酷い
どうみてもライブラリスレを統合する流れだっただろうに
デフォルトの名無しさん [sage] 2016/07/10(日) 23:08:39.77 :tx16mOUk
お前ら喧嘩するなよw

スレタイがどうなろうが、俺はあちこちのスレに行って
jQueryとlodashの話題をするだけなんだからw
デフォルトの名無しさん [sage] 2016/07/10(日) 23:12:17.55 :ZmdhimD5

そりゃ流れであって統合派も移行派も現状維持派もいたんだから
残りレス数が一桁切ってる状況ならひとまず現状維持で持ち越すしかないでしょ
勢いが冷めないうちに次スレで議論して欲しい
デフォルトの名無しさん [sage] 2016/07/10(日) 23:13:07.16 :BhOPIXig

乙。
諸注意や信奉者の主張例とかは俺もちょっと気になったが、(テンプレにしては感情すぎる)
まあそれもテンプレ作成者の意志だから尊重してもいいかとも思っていた。
俺が落としたくなかったのは関連スレとかのリンクだから、とにかく乙。


とりあえずここで揉めても意味無いから、今後は
基準で「落ちるまでは関連スレに入れる」でいいんじゃないか。
だからWebGLの奴も入れておけばいい。

分化した専門スレが落ちるようなら需要がないって事だから帰ってくればいい。
流れるようなら存在価値があるのだからそのままでいい。
政治的に「宣伝してやらない」とか考える必要はない。
分化した専門スレであり、質問を受け付けるのであれば、基本的に追加すればいい。
デフォルトの名無しさん [sage] 2016/07/11(月) 00:15:27.69 :gzpHRxsK
うめ
1001 [] Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 49日 4時間 23分 54秒
1002 [] Over 1000 Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
ttp://premium.2ch.net/
ttp://pink-chan-store.myshopify.com/

勢い5万以上のスレをメールでお知らせするサービス、実施中!!
憧れボディをGETしたい!その夢、ボニックで!

2ch勢いランキング アーカイブ プログラム板ランキング

凡例:

レス番

100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている

名前

名無しさん (青) → sage のレス
名無しさん (緑) → age のレス

ID

ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID

このページは2ch勢いランキングが作成したアーカイブです。削除についてはこちら