+ JavaScript の質問用スレッド vol.120 +at TECH
+ JavaScript の質問用スレッド vol.120 + - 暇つぶし2ch358:デフォルトの名無しさん
16/05/31 23:04:26.90 VEM8svzW.net
>>347
> 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回出力する
少し、話がそれるが、プロパティの存在する値にだけ処理を行うというのは重要なことだ
>>342の例でいえば、次のように書けるだろう
URLリンク(jsfiddle.net)
対象プロパティが String 型なので falsy な値として '' を使用している
null を使うのなら対象が Object 型である必要がある

359:デフォルトの名無しさん
16/05/31 23:13:56.84 C610iy1k.net
これもう議論にならんやろ
本人以外は皆仕様知っててこの態度なんやし

360:デフォルトの名無しさん
16/05/31 23:17:06.49 VEM8svzW.net
>>347
>>307でprototype拡張されていなかったのでいわなくても伝わるだろうと思って伏せていたが、Array.prototype.last はあくまでも便宜上のサンプルねので念のため
Array.prototype 拡張は将来的に同名プロパティが定義されたときに互換性が崩れるのでお勧めしない
静的関数や独自オブジェクトによる拡張で代用するのが妥当だろう
何らかの理由でどうしても定義したいのなら一昔前のfor-inによる汚染問題を解消するために Object.defineProperty を使うべきだ
Object.defineProperty(Array.prototype, 'last', {writable: true, enumerable: false, configurable: true, function last () {}});

361:デフォルトの名無しさん
16/05/31 23:19:21.13 VEM8svzW.net
>>353は SyntaxError だったので訂正
Object.defineProperty(Array.prototype, 'last', {writable: true, enumerable: false, configurable: true, value: function last () {}});

362:デフォルトの名無しさん
16/05/31 23:20:01.54 wxR5ZVVT.net
まぁ、何度、経験ないだろ、なんて煽ってもそこだけ返事がないところみると、
「本人以外は全員わかってる」んだろうけど、笑えるわ。

363:デフォルトの名無しさん
16/05/31 23:38:40.59 24hp8pmx.net
>>327
お前はいつか事故るぞ。投薬履歴だって表示が間違っていれば死人が出るんだ。
Web系の「リロードすれば万事おk」のノリでは駄目なんだ。お前はそれですらないが。
ただ、検証を手抜きすれば単価はいくらでも落とせるわけで、このように、
一通りの知識すらない馬鹿を雇って一通りの検証すらせずに出荷する悪徳業者をどうするかは
今後の課題になるのだろうね。
契約上、ソフトウェアのバグについては責任追及できないようになっているのだろうけど、
これまでソフトウェア産業が培ってきた常識すら知らない奴がコーディングし、
まともな検証すらせずに出荷するというのは、業務上過失致死/偽計業務妨害に問われるべきだ。
AS IS WARRANTY を完全に悪用している。
とはいえ、普通に考えればこういう悪徳業者はいつか出てくるわけで、不思議ではない展開だ。
死人が出てこの構造が判明してからでないと、行政は動かない。
願わくば、お前がその最初の犠牲者となり、自業自得を以て業界の浄化に貢献してくれ。
というわけで君には「人殺し君」というあだ名をあげよう。
多分君は既に人を殺しているか、今後人を殺す。
無知も罪なのだよ、業界によっては。
それはさておき、ここに来て気づいたが、 AS IS WARRANTY って性善説ベースだったんだな。
こりゃ性悪説ベースの何かを導入しないと駄目だ。
とはいえ資格なんて糞の役にも立たない業界だし、なかなか難しい。
調べた限りではPL法も適用外だし、悪徳業者はやりたい放題だ。
(ただここまで来るとマ板の話題でスレチだが)
話を聞いている限りこいつは鯖屋で、ソフトウェアの知識は一切無い。
フリーソフト等を組み合わせれば悪徳零細学生レベルでも見目麗しいシステム()を構築でき、
素人を騙せる時代になった。そしてそれがすべて自分の能力で出来たものだと勘違いしている。
(組み合わせる能力はあるが、使われているソフトを記述する能力は無いことに気付いていない)
とはいえ、現実問題として、これを顧客に見抜けというのは不可能だろう。
なんだかなあ。

364:NAS6 ◆n3AmnVhjwc
16/05/31 23:43:38.27 ZnwkUC0d.net
URLリンク(nas6.main.jp)
x3domのサンプル集とライブラリ
完璧な2/3D行列計算ライブラリに仕上がりました
x3domは簡単でいいよ
ポリゴンテスト&ライブラリヘルプ.htmでも見てください
完璧に計算されています^^

365:デフォルトの名無しさん
16/05/31 23:44:24.50 +fB1tt6W.net
> 静的関数や独自オブジェクトによる拡張で代用するのが妥当だろう
そうやって作られたのがUnderscore(lodash)というライブラリで
わざわざ作らずとも、 _.last([1,2,3]) で取得できるんだよ。

366:デフォルトの名無しさん
16/05/31 23:50:20.60 C610iy1k.net
>>355
RASISすら守っとらんみたいやし
RDB使ってる現場やけど、そんな場当たり的な実装の経験ないで
普通はリクエスト間違ったら全部エラーやしfail safe前提や
あんさんが無知すぎるんやで?

367:デフォルトの名無しさん
16/06/01 00:02:09.20 J/AVgXyA.net
DB屋ならjoinできないようなデータ構造の時点で問題あると気づくやろ
なんでそんな無理して知ったかぶるんやろ

368:デフォルトの名無しさん
16/06/01 00:03:48.85 XVpspPb0.net
>>357
行列のライブラリはどれが有名か知らんけど、
このglMatrix.jsはスター多くていいんじゃないかな?
URLリンク(spphire9.wordpress.com)
> 前に調べたときは全然見つからなかったけど、WebGL関係で調べていたら結構見つかったのでメモ。
>
> glMatrix.js
> URLリンク(github.com)
> URLリンク(glmatrix.net)
> webgl-mjs URLリンク(code.google.com)
> Sylvester URLリンク(sylvester.jcoglan.com)
> CanvasMatrix.js khronosのWebGLのチュートリアルで使っているがどこでダウンロードできるのか分からなかった
> glMatrix.jsがシンプルなのでオススメ。
>
> 2014/01/19追記
> glMatrixの公式サイトができてた。

369:デフォルトの名無しさん
16/06/01 00:04:59.00 XVpspPb0.net
>>360
> DB屋ならjoinできないようなデータ構造の時点で問題あると気づくやろ
どういうこと?
nullがあるとjoin出来ないとかそういう話?
なわけないよな。left joinとかあるわけだし。

370:デフォルトの名無しさん
16/06/01 00:11:15.87 XVpspPb0.net
あとすべての項目をjoinに使うわけでもないし。

371:NAS6 ◆n3AmnVhjwc
16/06/01 00:18:19.22 CPNT1MjH.net
>>361
ライブラリを作る前に探したけど
回転行列←→回転ベクトル、回転行列←→四元数
この相互変換を扱ってるのは見当たらなかったよ

372:デフォルトの名無しさん
16/06/01 00:19:48.60 XVpspPb0.net
>>364
興味ない。

373:デフォルトの名無しさん
16/06/01 00:20:56.87 XVpspPb0.net
>>364
もう少し丁寧に言うね。
githubで公開してもいないようなものを使う気にはならない。

374:デフォルトの名無しさん
16/06/01 00:21:24.97 iqAUu6wp.net
>>360
>>342なんだけど挙げたデータ構造は
あくまで俺がてきとーに想像しただけなので
それで誤解与えてしまってたらごめん

375:デフォルトの名無しさん
16/06/01 00:42:46.14 JLTaiLCk.net
>>359-360
多分そちらも気づいていると思うけど、人殺し君には「信頼性を上げる」という感覚がないんだ。
だから俺たちが何を問題視しているのか、全く


376:通じていない。 ただ、当たり前のように信頼性を上げようと努力してきた側からすると、 業界全体が悪徳業者に対して全く無防備だったってのが結構ショックなんだよね、、、 というかよくこれまでこれで回ってたなと。



377:デフォルトの名無しさん
16/06/01 00:43:15.64 r3hfxk1X.net
>>356
必死すぎて笑えるw
おつかれさん、底辺学生さん。

378:デフォルトの名無しさん
16/06/01 00:46:19.01 XVpspPb0.net
>>368
そちらってお前誰だよw

379:デフォルトの名無しさん
16/06/01 01:00:31.81 +8Has+9Z.net
>>357
あなたは x3dom.js と比較して何がどう「完璧」なのかを説明する必要があると思うのだが
ドキュメントも簡易説明文のみで x3dom.org と比べれば雲泥の差があるように思う
URLリンク(www.x3dom.org)

380:デフォルトの名無しさん
16/06/01 01:02:19.24 J/AVgXyA.net
>>362-363
関連があるのに関連を付けずに
見つからない場合もright joinと同じ事するんやろ?
破綻しとるやん

381:デフォルトの名無しさん
16/06/01 01:05:25.70 XVpspPb0.net
>>372
関連つければいいだけだよね?
まさか片方にnullが入っていると関連がつけられないとでも?
left joinでもright joinでも、別に使うことに問題無いし
問題ないから標準機能なのだし、どこが破綻?
DB素人なら、すいません、素人だから
勘違いしてましたって謝れば許してあげるよ?w

382:デフォルトの名無しさん
16/06/01 01:10:30.88 +8Has+9Z.net
言い争っている人、所詮は机上の空論なのでコードを書いて語り合ってくれ
各自にとっては空論ではないのであろうが、持論が相手に正しく伝わっているとは思えん

383:デフォルトの名無しさん
16/06/01 01:12:17.78 XVpspPb0.net
>>374
今はRDBMSの超基本レベルことを分かってないやつが相手みたいだから
そこまでやる必要ないかなw

384:デフォルトの名無しさん
16/06/01 01:22:41.36 JLTaiLCk.net
>>374
いや十分通じてるよ。表面的には。
ただ、根本的な部分で人殺し君は分かってないから、通じない。
とはいえこれは、ここでなんとかなる話ではないよ。これではどうやっても平行線だ。

385:デフォルトの名無しさん
16/06/01 01:25:01.12 +8Has+9Z.net
>>375
お互いに相手が低レベルと思っているように読めるんだがな
相互理解が目的なら言葉を選べ
馬鹿にしたいなら他の人の邪魔になるから口を慎め

386:デフォルトの名無しさん
16/06/01 01:31:01.82 XVpspPb0.net
>>377
質問に答えられない方はどちらか?
それを見ればわかるでしょ。
まだ、レス帰ってきてないよw

387:デフォルトの名無しさん
16/06/01 02:20:52.04 r3hfxk1X.net
なんか敵を見間違えてるんじゃねえの?
余裕無い奴は大変だな。
そりゃ、せっかくundefinedなのを無意味にnullで初期化とかドヤ顔で言っちゃうわけだ。

388:デフォルトの名無しさん
16/06/01 09:21:35.68 jwFJ9KH2.net
こんなにもめるんならundefinedは廃止してnullのみにすべき。

389:デフォルトの名無しさん
16/06/01 09:26:09.02 P2FwW4b5.net
社会から未定義の連中が未定義値に物申すとか1万年早い

390:デフォルトの名無しさん
16/06/01 09:33:08.65 wzx/dknC.net
嫌なら定義するなよ

391:デフォルトの名無しさん
16/06/01 13:31:22.60 KEu/R4xX.net
まぁ、null統一、すべてのプロパティは埋めて、ビューから相当するデータ座標を取らずに、データからビューを定義しよう、そのためには、
ビューの状態全体に対して、必要か不必要かは置いておいてすべてのビューが表示しうる形での裏画面を持っておこう、
って大富豪の主張がありうる、って話だよね。
面白い事に。
XMLDBとか、KVSとか、多次元配列DBに向いてない人なんだろうけど。
そもそもJOIN出来ないからなんたら、なんていう人は、そもそもそういうDBに向いてないけど。

392:デフォルトの名無しさん
16/06/02 01:24:38.27 g2tgMhPe.net
>>377
犬の糞と猫の糞。

393:デフォルトの名無しさん
16/06/02 02:42:13.57 XqRYmg3l.net
>>373
関連つければいいだけだよね
その通り
つけてないけど

394:デフォルトの名無しさん
16/06/02 02:43:59.04 XqRYmg3l.net
自分の説明してる仕様で実現できてる事が何かも把握してないみたいやね
こりゃ周りの奴らは大変やで

395:デフォルトの名無しさん
16/06/02 08:36:48.79 8VCgKElP.net
前提知識で合意のとれてない議論に意味があるのか
端から見たらどちらも相手を見下す事が主論になってる
どちらの方が正しいとか、もうどうでもいいから

396:デフォルトの名無しさん
16/06/02 08:39:24.52 I85Xb9LU.net
バカに議論はできない
壁に向かって話してろゴミ

397:デフォルトの名無しさん
16/06/02 08:51:25.41 0vkxmVo8.net
脳味噌がnullってことで解決

398:デフォルトの名無しさん
16/06/02 09:15:26.93 oJukbexp.net
nullほど。納得

399:デフォルトの名無しさん
16/06/02 13:24:04.29 BtmdPReZ.net
結局nullは要るとして、undefinedが無ければ代わりにissetみたいなのが要る。
内部を露出して活用を許すのと、メタ的に内部に干渉するの、どちらが良いかという話。

400:デフォルトの名無しさん
16/06/02 13:58:00.69 tGqw3Zei.net
>>388
上手いこと云うな
オレのコピペにしますん

401:デフォルトの名無しさん
16/06/02 15:58:54.65 gjH3g/Dc.net
>>391
その通り。特に動的言語なら。
mallocした結果をどの型として使うか論にも近いけど。

402:デフォルトの名無しさん
16/06/02 16:21:31.47 0vkxmVo8.net
nullなことばっかり言ってるんじゃないよ

403:デフォルトの名無しさん
16/06/02 16:42:37.48 T7FoO03Y.net
(´∀`) ぬるぽ

404:デフォルトの名無しさん
16/06/02 16:44:57.76 tGqw3Zei.net
ガッ

405:デフォルトの名無しさん
16/06/02 17:03:14.89 E1oCL6WJ.net
      .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::::| !      .::|     ┏┓┏┓
   `''''" ヽ,,,,,,..-'―′   \,,,,,,,,,.. '"     ゝ ノゝ、,,,,,./ -.../// \:    ト--^^^^^┤      丿 \ . ┗┛┗┛

406:デフォルトの名無しさん
16/06/02 17:41:24.84 tGqw3Zei.net
      ∧
    <  >_∧
= ()二)V;・∀・)
    \ヽ ノ )
    ノ(○´ノ  ガッ
   (_ノ(__)

407:デフォルトの名無しさん
16/06/02 19:45:18.42 foj8oVvi.net
                     __        、]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 |
                             |          | |

408:デフォルトの名無しさん
16/06/02 23:25:10.25 3RkkmY6H.net
>>385
> 関連つければいいだけだよね
> その通り
> つけてないけど
ってことは、ORM使ってないのか?
ORM使ってプログラム言語でモデルを定義していってその関連もモデルで定義する。
その結果をマイグレーション機能を使ってデータベースに反映、
ついでにER図も生成しちゃうっていうのが今時の開発でしょう?
モデルに関連を定義しておかなければ、あるモデルから関連している
別のモデルのデータを取得するのができないわけで開発効率下がりまくりでしょ?
(厳密に言えば手動でコードを書けば取得できるがそれだとORMを使う意味がない)

409:デフォルトの名無しさん
16/06/03 00:32:44.38 1GfBsi1m.net
出尽くし感があるので纏めておく。
人殺し君は悪徳業者に勤めており、検証不十分のソフトウェアを出荷している。
そのソフトウェアでは競合系のバグ等は完全に放置されている。
平たく言えば、間違った内容/値が表示される事が偶に発生する。
とはいえ、再現確率は低く(1日~1週間に1回程度)、再び確認すればほぼ常に正しい値が表示されるため、
「見間違いだった」として処理されているはず。
結果、このバグによって発生した医療ミスは本当は医者のミスではないのだが、
「医者の過労または不注意による見間違い」として処理される。
また医療ミス自体も隠蔽される方向のため、二重に隠蔽されることになる。
医療系は単価が高いため、悪徳業者にとっては甘い汁状態だ。
医療関係者は金を吸い取られた上に、ぬれぎぬを着せられている可能性がある。
もし仮に医療系の人がこれを見ていて、「表示がおかしかった」事に気づいたことがあった、
また「最近『見間違い』事故が多すぎる」というときは、この類の悪徳業者の製品でないか確かめた方がいい。
悪徳業者の技術レベルは信じられないほど低い。普通のIT関係者なら絶句する。
JavaScriptの場合ソースは確認可能な事が多いので、非公式にでも知り合いのIT実務者を頼り、
ソースを確認してもらえば、すぐに判明すると思う。
このスレのこれまでの議論およびここに記載した情報で十分だと思うが、
もしもっと詳細を確認したい医療関係者がいれば、
以下スレで問い合わせてくれれば対応するかも。
> スレリンク(tech板)

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

410:デフォルトの名無しさん
16/06/03 00:47:09.21 ZgLr+wQe.net
JSONってundefinedがないけれど、
じゃあ存在しない値にアクセスした時各言語ではどんな挙動をするのだろう?

411:デフォルトの名無しさん
16/06/03 01:00:55.33 4VbjelCP.net
>>402
例外が発生する

412:デフォルトの名無しさん
16/06/03 01:57:17.93 qC3of5q8.net
そうじゃない言語もあるんじゃないの?

413:デフォルトの名無しさん
16/06/03 08:37:03.10 yTlzgE6f.net
>>404
例えば?

414:デフォルトの名無しさん
16/06/03 08:38:53.12 oIsEebnB.net
おまえの頭ん中

415:デフォルトの名無しさん
16/06/03 08:41:45.97 WTDDDw9O.net
>>401
検証不十分とか人殺しだとか言ってくれるよなぁ。
試験中ですら、稀にも発生したらハンコリレーで大変な目に遭うよ。
医療ミスがどうとか言ってるけど、隠蔽されるわけないじゃん。
見間違いだった、もあり得ないよ。
お前ら一般側には隠蔽されているように見えるんだろうけど、製造業のラインからの不良品混入程度に、委員会とかで裁かれるよ。
表示内容の確認に対して不足があった、って話になるだろうね。
これ判例もある。医者の判断と機械の値が一致しない場合は、医師の判断が優先され、かつ医師がその間違った値を信じ込んだ場合は「治療行為が行えるのは医師のみ」という原則に則ると、医師が医師である理由を満たせていない、ってやつ。
>>402
undefinedはたくさん存在してるじゃん。
書いてないだけで。
例外が発生するってのは良くない動きだと思うけどな。コスト高い。

416:デフォルトの名無しさん
16/06/03 08:55:59.89 e85j2qyA.net
所詮は命令、人それぞれ
自己満足で解決

417:デフォルトの名無しさん
16/06/03 13:00:26.72 D6MzcBW9.net
>>400
このバカはその手動で書くと言うのを良しとしてるんやで
そしてあと付けで関連つければいいだけだと抜かしよる
付けとらんから問題なんやろ

418:デフォルトの名無しさん
16/06/03 13:11:35.19 WTDDDw9O.net
どういう意味だろ、手動で書くとは。
俺はそれを言った覚えは無いが、言わなくてもデータ:DB:ビュー全体に対するマッパー自体の実装の話だけどね。

419:デフォルトの名無しさん
16/06/03 13:21:31.04 D6MzcBW9.net
>>410
ORMで関連付けてるならundefined云々での分岐なんて出るわけないやろ
その場しのぎで適当言いすぎやろ頭おかしいんちゃうか

420:デフォルトの名無しさん
16/06/03 13:35:21.14 WTDDDw9O.net
>>411
当たり前じゃん。多次元DB触った事無いのかな?
クラスベースな考え方してるからそういう思考なんじゃない?
undefinedで分岐、って考えるから頭追いつかないんじゃないかな。
値は、「定義されていないか、オブジェクトか、値か、値として�


421:\すことのできるオブジェクトか、null」。シンプルじゃん。 javascript屋ならもっと理解早いと思うんだけどな。 HTMLのスクレイピングそっくりなんだけど。



422:デフォルトの名無しさん
16/06/03 16:01:53.05 LK0McYVX.net
>>412
>HTMLのスクレイピング
すまん。
言葉の意味が分からない。
つまり、どういうこと?

423:デフォルトの名無しさん
16/06/03 16:54:41.91 iJVPPkrY.net
>>412
> 値は、「定義されていないか、オブジェクトか、値か、値として表すことのできるオブジェクトか、null」。シンプルじゃん。
これをシンプルだと思ってる奴は何脳なんですかね

424:デフォルトの名無しさん
16/06/03 17:23:55.54 WTDDDw9O.net
>>414
誤解のしようが無いでしょ。
その項目が無かった、は「その項目が無かったクラス」のインスタンスが格納されている、とか、
「その項目はあるけどまだ結果は出ていない」クラスのインスタンスが格納されている、とか、
定義しだすときりがないと思うけど。
npmに登録されているモジュール全体の空フォルダがnpm initしたら作成されたらinode一瞬でなくなるじゃん。
かつ、空ディレクトリ作って準備してても、そのモジュールが更新されたら準備とは異なるし。
さらに、requireは別にpackage.jsonに依存せず使えるよね。
存在チェック、中身のパーズ、その他を経て、成功か失敗か、別のフォルダを見るのか決まるっしょ。
undefinedは、そのディレクトリのない状態。
nullは、module.exportがnullの状態。

425:デフォルトの名無しさん
16/06/03 17:31:46.02 iJVPPkrY.net
>>415
で、お前は何脳なの?

426:デフォルトの名無しさん
16/06/03 17:39:25.42 D6MzcBW9.net
>>412
その多次元DBはテーブル同士の関連必須やで?
あんさんの言ってる仕様はキーそのものが取得できない仕様やから
ORMなんて出しとるけど全く関係ない話やろ

427:デフォルトの名無しさん
16/06/03 17:41:36.14 hMBisG69.net
    ∩ _rヘ       / ヽ∩
  . /_ノυ___ιヽ_ \
  / /  /⌒  ⌒\   ヽ \
  (  く  /( ●)  (●)\   > )  お前らの頭は
  \ `/::::::⌒(__人__)⌒:::::\' /
    ヽ|     |r┬-|     |/
      \      `ー'´     /
 (( (ヽ三/)        (ヽ三/) ))
  .  (((i )   ___   ( i)))
  / /  /_ノ   ヽ_\   ヽ \
  (  く  /( ●)  (●)\   > )  くるくる
  \ `/::::::⌒(__人__)⌒:::::\' /
    ヽ|        ̄      |/
      \              /

   ∩∩∩    .    ∩∩∩
  .∩_:||_:|_:|        |_:||_:|_:∩
  │ ___  つ      ⊂  ___ │
   ヽ   ノ  ___   ヽ  ノ
  / /  /_ノ  ヽ、_\   ヽ \
  (  く   o゚((●)) ((●))゚o   > )  パーだおwwwwwwwwwwwwwwwwwww
  \ `/::::::⌒(__人__)⌒:::::\' /
    ヽ|     |r┬-|     |/
      \    | |  |     /
          | |  |
           `ー'´

428:デフォルトの名無しさん
16/06/03 17:43:47.98 D6MzcBW9.net
説明が酷すぎるやろ
なんやこれわざとやってんのか?

429:デフォルトの名無しさん
16/06/03 17:48:26.82 cxSjYB6R.net
なんでバカに構うの?
おまえもバカなの?
バカ同士気が合うんだな

430:デフォルトの名無しさん
16/06/03 18:46:51.17 qTHUaoua.net
類は友を呼ぶ

431:デフォルトの名無しさん
16/06/03 19:43:22.52 1XJ7uNxl.net
初心者です。
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が表示されます。
ただ、ブラウザが別のページだとコンソールには何も表示されません。
どのようにすればよろしいでしょうか?
ログには「クロスオリジン要求をブロックしました・・・」のようなメッセージが出ます。

432:デフォルトの名無しさん
16/06/03 20:10:29.09 p9oJqMem.net
また自演かよ
頭いかれてんなこいつ

433:デフォルトの名無しさん
16/06/03 20:20:21.84 WTDDDw9O.net
>>417
テーブル同士の結合www
まあ、おまえが多次元DB使ったとこ無いことは理解したよw

434:デフォルトの名無しさん
16/06/03 20:31:02.84 n0THg94n.net
>>422
頼むから!!!
頼むから!!!もう!!!二度と!!!
onreadystatechangeなんて使わないでくれ!!!!!
readyState?!目が腐る!!!!!

435:デフォルトの名無しさん
16/06/03 21:01:10.72 1XJ7uNxl.net
>>425
どうすればいいか教えてください
マジで困っています

436:デフォルトの名無しさん
16/06/03 21:08:50.41 0G5q73nh.net
>>422
URLリンク(www.html5rocks.com)

437:デフォルトの名無しさん
16/06/03 21:43:27.43 6tJjdY0+.net
nullと比較する時は緩い==の方を使うのは今の時代でも変わりありませんか?

438:デフォルトの名無しさん
16/06/03 21:48:09.86 TYtzKZdV.net
自演乙

439:デフォルトの名無しさん
16/06/03 22:37:38.94 D6MzcBW9.net
>>424
何や君結合と関連の違いも分からんで突っ込んどったんか?
どおりで説明が怪しいわけやな
必死に無知を隠してたんやから

440:デフォルトの名無しさん
16/06/04 00:08:42.59 3lsMjWzh.net
>>422
クロスドメインなら、JSONP かな?
「jsonp クロスドメイン jquery」で検索!

441:デフォルトの名無しさん
16/06/04 08:28:02.51 vbA2Z8Vh.net
>>428
昔から null 判定にはほとんど ToBoolean だけ使っていますが、困ったことはありません。
Polyfill コードを書くときには === を使うこともあります。

442:憲法に守られる在日スパイ・創価・ヤクザ
16/06/04 08:57:11.18 SVOilD6U.net
皇室の危機に気づいていますか? 
日本は、2,000年以上続く皇室のおかげで、世界最古の国として、
ギネス認定されているそうです。
自民党は憲法の改正で、日本の国家元首=天皇陛下と条文に明記することで、
天皇制廃止をもくろむ帰化人スパイ勢力(政党、憲法学者、弁護士・言論人等)から、
皇室を守ろうとしています。
※イギリス、オランダ、ノルウェー、デンマーク、スペインなどは国王を国家元首と
 憲法上に定めている。(日本同様、政治の実権は有さない。)
※日本で支配的な「護憲派」憲法学者の多くは反天皇。憲法から天皇の条項ごと削除したい
 人たちなので、本来は改憲派である。(「象徴天皇制度と日本の来歴」坂本多加雄著より)
公明党「天皇は日本の国家元首ではない」 
スレリンク(news板)
自民党・西田昌司
「橋下さん(おおさか維新)の憲法改正は、国柄を破壊することが目的」(自民とは真逆)
URLリンク(www.youtube.com)
日本共産党 「目標としては天皇制をなくす立場に立つ」「天皇制のない民主


443:共和制をめざす」 http://www.jcp.or.jp/jcp/22th-7chuso/key-word/b_1.html#Anchor-0507 反天皇、反皇室で共謀する民主党(現民進党)と田原総一朗 http://blog.liv edoor.jp/fjae/archives/51968115.html 田原総一朗「天皇は、働かないで国民の税金で食ってる。」 https://youtu.be/6Kd1LwY9e0I?t=280 (4:40~) ※ただし、自民単独(カルト公明党抜き)で2/3議席以上与えない限り、 野党と公明党に骨抜きにされる。  ↓ 自民・船田氏…「野党・公明党のみなさんと協議し、衆参両院の3分の2をこえる人が 賛成してくれなければ発議はできない。だからこれから大いなる妥協が始まる。 自民の憲法草案は、 ズタズタになると思って結構だ」 p http://hope.2ch.net/test/read.cgi/seijinewsplus/1425226082/



444:デフォルトの名無しさん
16/06/04 13:17:48.82 BFaRmD8M.net
ジャバスクリプトをあまり意識せずに、ウェブアプリ開発できるソフトってありますか?

445:デフォルトの名無しさん
16/06/04 13:26:46.16 qPi1xPU6.net
ねえよそんな店

446:デフォルトの名無しさん
16/06/04 15:45:22.85 3F7VjM1T.net
>>434
TypeSprict

447:デフォルトの名無しさん
16/06/04 15:58:08.55 ZPhk/eMO.net
TypeScriptは JavaScript+α という言語だからw

448:デフォルトの名無しさん
16/06/04 17:42:38.85 vhhVz63c.net
URLリンク(www.youtube.com)
↑こーいうふうに
タグとか補完して欲しいんですけど、
何のエディタ使えばいいんですか?
Windowsでお願いします。

449:デフォルトの名無しさん
16/06/04 18:03:53.99 BiFmHB/P.net
>>438
URLリンク(www.sublimetext.com)
その動画のやつならWindowsでも使えるよ。

450:デフォルトの名無しさん
16/06/04 18:13:24.70 vhhVz63c.net
ありがとうございます!

451:デフォルトの名無しさん
16/06/04 18:36:53.03 TumyIwY9.net
>>434
「あまり」とは具体的に何ですか?
JavaScriptを使いながらJavaScriptを意識しないのは相当矛盾していると思いますが、何が目的ですか?

452:デフォルトの名無しさん
16/06/04 19:03:08.12 vhhVz63c.net
>>439
動画のしょっぱなのhtmlとか入力すると
必要なタグをボンっと出すやつどうやるんですか??

453:デフォルトの名無しさん
16/06/04 19:46:47.25 925XNPqI.net
>>430
SQLが集合論だとも理解してない人には難しかったかな。
小さなオツムで、undefinedは不要、nullが含まれている行と、行がないのは等価値だと一生騒いで、
そのままエンジニアにならずにホームレスにでもなってくれw

454:デフォルトの名無しさん
16/06/04 19:53:11.80 Eqdj22Ns.net
理解してない論をやる人はいい加減にしてくれ
理解させようと説明して歩み寄るならともかく、お互いに避難しあってるだけでは前進しないぞ
その気がないなら沈黙で返すのが周囲に迷惑をかけない唯一の方法

455:デフォルトの名無しさん
16/06/04 20:54:05.74 71w07kjf.net
>>441
作成時にコーティングを必要とせず、ジャバスクリプトの動的効果は享受したいということです

456:デフォルトの名無しさん
16/06/04 21:05:17.49 AIJuo/HE.net
Haskell使えば大抵の問題は片付きます。

457:デフォルトの名無しさん
16/06/04 21:05:18.12 Eqdj22Ns.net
>>445
コーディングしないならそれはプログラミングではないですね。
既存のライブラリや使いまわせるコピペコードを検索して探してみてはいかがですか。
いずれにしても、このスレで聞くには趣旨がずれていると思いますが。

458:デフォルトの名無しさん
16/06/04 21:16:28.25 AIJuo/HE.net
質問に答えていくだけでソフトウェアが完成するとしても、それはプログラミングです。

459:デフォルトの名無しさん
16/06/04 21:27:23.54 Eqdj22Ns.net
言い方が悪かったでしょうかね。
JavaScriptを勉強せずにJavaScriptを書きたいとする要望が子のスレの趣旨に反していると言いたかったのですが。

460:デフォルトの名無しさん
16/06/04 21:29:46.92 AIJuo/HE.net
このスレ自体、板違いなのですが。

461:デフォルトの名無しさん
16/06/04 22:02:26.83 Y4cfNkA+.net
薀蓄垂れてるやつのわんだほーなコード見たいんだが

462:デフォルトの名無しさん
16/06/04 22:27:00.97 o5H+FwEM.net
>>450
そう思うなら、質問しなければいいんじゃないですかね?

463:デフォルトの名無しさん
16/06/04 23:09:22.49 AIJuo/HE.net
質問したことはありませんが。

464:デフォルトの名無しさん
16/06/04 23:34:41.13 M/5wRGJi.net
暇つぶしに板違いのスレで遊んでいるのか

465:デフォルトの名無しさん
16/06/05 00:03:18.80 mO7gP4jx.net
>>443
この状況でそんな基本事項を嬉々として出すって、
おっさん本当に学生以下とちゃうか?
少しはまともなレスしろや
そもそも集合(テーブル)間の射の話なんやから、
そのレスじゃ何にも反論できとらんどころか、
結局おっさんの仕様じゃ繋がっとらん状況じゃ自分で自分の首絞めとるやろ
そして自分から多次元DB持ち出してきた癖に何棚上げしとるんや
知ったかと煽りしかできない珍獣は、某関数型ヴォルデモートでお腹いっぱいやで

466:デフォルトの名無しさん
16/06/05 00:18:27.24 hY1lA33B.net
さっさとお手本コード晒せよ
こんだけ偉そうなこと言ってんだからどこに出しても恥ずかしくないレベルのもんかけるんだろ?
あくしろよ

467:デフォルトの名無しさん
16/06/05 01:09:47.31 Ewjxu1z+.net
>>448
「JavaScriptのプログラムを作りたいけどJavaScriptを勉強する気がないので、ウィザード形式で質問に答えるだけでJavaScriptコードを生成するジェネレータを下さい」
って事かな
さすがにクレクレ君すぎる

468:デフォルトの名無しさん
16/06/05 01:27:22.46 bEHxSIM9.net
>>434
Haxe (ヘックス)
ECMAScript 4に似ている。
Adobe Flashおよび独自のNekoVMで、実行可能なバイトコードにコンパイルされるほか、
JavaScript、ActionScript、C++、C#、Java、PHP、Pythonへのソースコードの変換が可能である

469:デフォルトの名無しさん
16/06/05 01:33:27.00 mO7gP4jx.net
>>456
誰に言ってるんや?
ワイに言ってるならDBの定義の話やからコードもクソもないやろ

470:デフォルトの名無しさん
16/06/05 02:34:08.07 b0qHmmcL.net
自意識過剰だね
ド頭は大丈夫ですか?

471:デフォルトの名無しさん
16/06/06 02:21:20.33 6giGfHQ3.net
NHKのネットラジオを、どうにかしてクライアント側のJSだけで録音したいと思ってる
(基本的にサーバ側の処理は無しにしたい)
ストリーミングの録音の実装は初めてなんだが、どうやったら良いのだろうか?
何らかのライブラリを使えば楽そうだとは思うが…

472:デフォルトの名無しさん
16/06/06 05:01:20.04 QbKl1YZH.net
どうやったらっていうか?
なぜそんなことが可能だと思った?

473:デフォルトの名無しさん
16/06/06 12:22:15.75 23OtUYll.net
>>461
ローカルに node.js を立てるとか。

474:デフォルトの名無しさん
16/06/06 21:05:53.55 RzJ8yYQp.net
パケットキャプチャ

475:デフォルトの名無しさん
16/06/07 05:14:58.76 Gl1NOXsx.net
>>460
こいつすぐに煽るからわかりやすいな

476:デフォルトの名無しさん
16/06/07 19:02:47.33 PnKxWLGB.net
>>431
ありがとうございました。
できるようになりました。

477:デフォルトの名無しさん
16/06/07 19:26:52.79 87JRkB9l.net
>>465
俺ならもう少し嫌な感じで煽るよ。

478:デフォルトの名無しさん
16/06/08 08:52:28.55 zEmhDMcI.net
じゃあ俺は馴れ馴れしいコンセプトで煽ろうかな。

479:デフォルトの名無しさん
16/06/08 21:39:35.82 BBcfGQEZ.net
煽りとかいらねえから
ちゃんと質問に答えてやれよ

480:デフォルトの名無しさん
16/06/08 22:37:16.03 ISsCi+NM.net
>>350
> あと、Array.prototype.lastなんて夢でも死んでも使わないように。
ありがとうございます。今のところ、そこに直接追加するような予定はありません。
>>353
> あくまでも便宜上のサンプルねので念のため
察しの悪い俺ですが、この点についてはそのように理解しております。ご安心下さい。
で、ですね。今までは個別の変数について 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界隈にありますか?

481:デフォルトの名無しさん
16/06/09 08:26:24.28 EGkuN86i.net
Web Workerの学習をしたいのですが、此方で大丈夫でしょうか?

482:デフォルトの名無しさん
16/06/09 08:46:22.16 e3vAFbmO.net
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など使わずに、普通にこれでいい

483:デフォルトの名無しさん
16/06/09 09:04:45.80 5KODI7Ed.net
F ←この手の一文字もん大っ嫌いだは

484:デフォルトの名無しさん
16/06/09 09:05:55.20 dIu2vu4F.net
独り言はキミのスマホのメモ帳にどうぞ

485:デフォルトの名無しさん
16/06/09 09:25:17.23 rjZdspVd.net
スマホ持ってない私みたいのはどうすればいいんですか?

486:デフォルトの名無しさん
16/06/09 09:31:01.62 E+QhxTx8.net
var F = function(age){ this.age = age; }
こう書くぐらいなら
function F(age){ this.age = age; }
こう書けばいいのに。

487:デフォルトの名無しさん
16/06/09 09:35:16.54 E+QhxTx8.net
>>475
中古で安いの探せば3000円ぐらいで買えるのでは?

488:デフォルトの名無しさん
16/06/09 13:53:50.48 QTm6YzLa.net
>>472
その方法でどうやってfirst()を呼び出すのかな

489:デフォルトの名無しさん
16/06/09 14:40:04.41 G4u6WZVB.net
>>476
後者は旧石器時代の方式だな

490:デフォルトの名無しさん
16/06/09 16:54:36.03 +YsNEGfA.net
内容が等価じゃないのになんで新旧の話になるの

491:デフォルトの名無しさん
16/06/09 17:06:35.65 bsniAtVU.net
だよな。
ぜんぜんちゃうやんw

492:デフォルトの名無しさん
16/06/09 17:26:41.69 G4u6WZVB.net
>>480
旧石器時代には後者の方法が多用されていたが、それでは問題があるので
近代にはめったに使われなくなったということだが

493:デフォルトの名無しさん
16/06/09 19:11:58.00 U5aI2wbo.net
>>482
どちらもES3の頃から存在して使い分けされていたわけだが
関数式を使わない時代っていつだ?
せめて、関数名ぐらいつけろよ、といいたい

494:デフォルトの名無しさん
16/06/09 19:22:11.65 Homi8Ck7.net
hoisting を嫌う


495:人はこう書くが、新旧いうもんでもない const fn = function fn () {};



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

497:デフォルトの名無しさん
16/06/09 23:45:53.30 W5L1fKQF.net
>>485
詳細にありがとうございます!!
> - 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に非対応なブラウザもあるようなので注意ですね。

498:デフォルトの名無しさん
16/06/09 23:47:09.04 W5L1fKQF.net
>>485
> - iterable でない(Symbol.iteratorで対応可能)
現時点ではワケが分かっておりませんが頂いたヒントは大事に記憶しておきます。
> - 一部の汎用的ではない関数(concat等)が期待通りに動作しない(独自にコードを書けば対応可能)
これも今確認しました。concat使えないの悔しいです。
Object.defineProperty(a, 'concat', {enumerable: false, value: function () {
return A.prototype.concat.apply(this.slice(), arguments);
}});
しかしまぁこういうのを結局書いていくのは悔しいですね。
ちょっとラクしたいだけなのに段々大袈裟になっていくという…。

499:デフォルトの名無しさん
16/06/10 00:39:24.13 G+eNnn4N.net
>>485
言っていることは間違いではないが、(結果的にでも)無垢な少年を騙すのはいかがなものか、、、
>>487
てかお前、それ自分でやってておかしいって思うだろ?
ここの連中は仕様には詳しいが、コードを書いてないから、実装方式については話半分に聞け。
(まあ今回は君が勝手に突っ走ったのであり、騙したわけではないとは思うが)
そのコードを見る限り、君は自力で解に辿り着けるはずだ。
俺がぱっと思いつくだけで解は3通りある。当たりかどうかは答えてやるから、冷静に考えてみろよ。

500:デフォルトの名無しさん
16/06/10 01:01:27.01 DHroUP1C.net
javascriptについて質問があります。
初回起動時のform(画面項目)の値と現在の値を比較して1つでも変更があった場合にはポップアップを表示するといった処理を実装したいのですが何か良い方法があれば、ご教授お願い致します。

501:デフォルトの名無しさん
16/06/10 01:02:08.05 DHroUP1C.net
>>489 続き
はじめはその項目のvalueとdefaultValueにて比較できると思いましたが、defaultValueは画面を再描画するタイミングで取得しますが、行いたい処理の途中でアクションが走り必ず再描画されるタイミングがあるためその方法では比較できないことに気づきました。

502:デフォルトの名無しさん
16/06/10 01:02:31.57 DHroUP1C.net
>>490 続き
(また項目の入力チェックなのでエラーになった場合にも)
なので再描画されても、初期表示時の


503:値と現在の値を比較する方法はないでしょうか… ちなみに画面はJSPにて実装しており、項目はtextやradioやoptionなどあります。



504:デフォルトの名無しさん
16/06/10 01:28:33.37 rm3c6PtR.net
>>482
URLリンク(mitsuruog.github.io)
7.1 関数式より関数宣言を利用してください。
なぜ? 名前が付けられた関数宣言はコールスタックで簡単に見分けることができます。
さらに関数宣言は関数の本体が巻き上げられます。それに対し、関数式は参照だけが巻き上げられます。
このルールにより、関数式の部分を常にアロー関数で置き換えて利用することができます。
// bad
const foo = function () {
};
// good
function foo() {
}

505:デフォルトの名無しさん
16/06/10 01:45:19.78 rm3c6PtR.net
function Klass() {
}
という書き方が古臭いとかいうことは当然なくて、
特定の場合では、var hoge = function() {} と書くべきという話を、
頭の悪い、なーんも考えてない馬鹿が、
絶対にvar hoge = function() {} と書かないといけない、
これからはfunction hoge() {} と書いてはならないんだ!って
言ってるだけ。
function Klass() {} という書き方が古くなったとか
聞いたこと無いし、使っていいし、むしろ推奨されている。
ほんと何も考えてない、誰かにaといわれれば
理由も考えずに妄信的にaばっかり使う、そんなやつが多いよなw

506:デフォルトの名無しさん
16/06/10 02:03:50.61 G+eNnn4N.net
>>493
俺は仕様には詳しくないから具体的に何が問題になるのかは分からないが、
基本的に「普通」の書き方にしておいた方がいいと思うぞ。
というか、何故お前らが妙なこだわりを持つのか、かなり謎なんだが。
> var Person = function () {
> console.log('instance created');
> };
>
> var person1 = new Person();
> var person2 = new Person();
> URLリンク(developer.mozilla.org)

507:デフォルトの名無しさん
16/06/10 02:06:08.67 rm3c6PtR.net
>>494
そこに書いてあるだろw
// Student コンストラクタを定義する
function Student(firstName, subject) {
// 親のコンストラクタを呼び出す。呼び出しの際に "this" が
// 適切に設定されるようにする (Function#call を使用)
Person.call(this, firstName);
// Student 固有のプロパティを初期化する
this.subject = subject;
};
これは普通の書き方。

508:デフォルトの名無しさん
16/06/10 02:18:52.51 G+eNnn4N.net
>>495
おっと?これは失敬。
ということはこれについては統一見解はなくて、どっちでもいいって事だな。

509:デフォルトの名無しさん
16/06/10 02:49:43.87 OOVSLX1/.net
>>495
引用元もそうなってたけど、
最後のセミコロンはいらないよねぇ。

510:デフォルトの名無しさん
16/06/10 05:22:06.39 naViO+5c.net
どっちでもいいわけないだろ
アホかこいつ

511:デフォルトの名無しさん
16/06/10 08:02:38.57 52VYMGKm.net
>>486-487
いろいろと挙動がおかしいのでよく確認してみるといい
繰り返すが、A.prototype.concat は汎用的ではない
URLリンク(jsfiddle.net)

512:デフォルトの名無しさん
16/06/10 08:21:29.14 o8hFzx97.net
結局、コンストラクタ用の関数を書くときにも、
関数式よりも、巻き上げのある関数宣言の方が、良いのか?

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

514:デフォルトの名無しさん
16/06/10 08:33:32.04 INHt9BTU.net
>>489
この状態と比較したい、って状況で、「画面の対象のコントロール回ってvalueを;かなんかで繋いで返す」関数作って、それ呼んで値を覚える。
変更チェックかけるときに、もう一回その関数呼んで、覚えたものと===で無ければ何かしら変更があった。
ってやってるよ。
「対象のコントロール」にはclassにcheckDatumとか空クラスつけとけばそれで列挙できるし。

515:デフォルトの名無しさん
16/06/10 08:47:37.80 BhzVNYOI.net
varとfunctionが同じだのセミコロンいらねえだの
こんなのが毎日偉そうに能書き垂れてんの?
そりゃサンプル出せって言われたら黙るわけだ

516:デフォルトの名無しさん
16/06/10 09:33:17.22 o8hFzx97.net
>>485-487
Groovyのメタプログラミングなら、
実行時に既存のクラスに、メソッドを追加するなら、Category・Mixin。
メソッド・プロパティを変更・追加するなら、ExpandoMetaClass
そういう複雑極まりない方向へ進むのは、最初から考え方がおかしいのでは?

517:デフォルトの名無しさん
16/06/10 09:36:28.17 +uuPJDCE.net
>>500
> 関数式よりも、巻き上げのある関数宣言の方が、良いのか?
何も考えてねぇ馬鹿は、変数の巻き上げの問題(もちろん理由がある)の話を、
全く関係ない関数にまで適用しようとする(笑)
理由は何だよw
ブロック内だけで使う関数など、関数式でなければいけない場合もあるが
通常は関数宣言の方がいいに決まってるだろ。
C言語は宣言された関数しか使えなかったため「前方宣言」などという
物が生み出されてしまったが、それ以降、それ以外の殆どの言語は
関数はどこで宣言しても(巻き上げされたかのように)使うことが出来る。

518:デフォルトの名無しさん
16/06/10 09:40:10.83 4srunpG+.net
所詮は自己満足の世界なんだよ

519:デフォルトの名無しさん
16/06/10 09:40:12.48 +uuPJDCE.net
普通に関数に名前(コンストラクタも含む)をつければいいのに、
「さいきんのクールなプログラマはvarで関数入れて使うんだぜ!
今時関数に名前つけるなんてのは旧石器時代だな!」とか言ってるんだぜw
バカっぽいだろ?事実なんにも考えてない。
デバッガ時に関数名表示がでなくなる問題があるというのにな。

520:デフォルトの名無しさん
16/06/10 10:33:45.27 GFWTaLNc.net
>>483
> どちらもES3の頃から存在して使い分けされていたわけだが
誰もが(いいすぎ)使い分けるようになったのは、近代になってから
> 関数式を使わない時代っていつだ?
だから旧石器時代だって
ゼロ年代初頭あたりまで

521:デフォルトの名無しさん
16/06/10 10:36:19.23 GFWTaLNc.net
>>493
> function Klass() {} という書き方が古くなったとか
> 聞いたこと無いし、
グローバルネームスペースを汚染する弊害について聞いたことないのか

522:デフォルトの名無しさん
16/06/10 11:04:28.13 rddDxbo4.net
>>509
クロージャの中でやる分には大丈夫なんじゃないの?巻き上げられたっけ?

523:デフォルトの名無しさん
16/06/10 11:31:26.83 xHgczCBO.net
今時グローバル汚染するようなアホおまえくらいだから

524:デフォルトの名無しさん
16/06/10 11:46:24.26 XqAkh7YW.net
なんであんなに無名を濫用するのかと思ってたが
そんなしょうもない理由だったのか

525:デフォルトの名無しさん
16/06/10 14:12:05.29 dpRBFPup.net
>>509
聞いたことないが、その弊害の発生条件は?

526:デフォルトの名無しさん
16/06/10 14:36:22.02 4srunpG+.net
そうだよな
汚染ってなんだよ

527:デフォルトの名無しさん
16/06/10 15:06:36.55 LT2C5Mf1.net
prototype使って、汚染しちゃうのは初心者がやってしまう失敗

528:デフォルトの名無しさん
16/06/10 15:59:08.90 DxAsZ/F5.net
1個くらいならバレないんじゃない?

529:デフォルトの名無しさん
16/06/10 16:05:16.91


530:3bO9ZAmE.net



531:デフォルトの名無しさん
16/06/10 18:15:57.76 LT2C5Mf1.net
コンソールに出すの?
アラートで出すの?
アラートで出たら、めちゃくちゃ怖いかもww

532:デフォルトの名無しさん
16/06/10 19:06:13.75 qrHSyLm3.net
prototype汚染という考え方も古くなってきた感はあるが…
しかし、風呂敷を広すぎではないかね
元々はprototuype汚染の話ではなかったわけで段々と本題がずれてきているように思う

533:デフォルトの名無しさん
16/06/10 19:27:07.34 qrHSyLm3.net
>>489-491
画面を再描画するならサーバサイドの処理があるはずだが、それはJavaScriptで実装すべき案件なのかね
フォームで値を受け渡してサーバサイドで処理、セッションを使う等、いくつか対策があるはずだが
jsを使うなら再描画させずに動的にDOMを書きかえれば済むが、マルチポスト先を読む限りではこの質問者にはハードルが高そうだな
URLリンク(teratail.com)
URLリンク(teratail.com)

534:デフォルトの名無しさん
16/06/10 20:02:15.97 G+eNnn4N.net
>>500
少なくとも文法上は大差ないのだろう。MDNにも説明はある。
> 全ての関数は実際には Function オブジェクトです。
> Function コンストラクタか関数宣言か関数式か
> URLリンク(developer.mozilla.org)
new Functionや非トップレベル関数(strict modeでは禁止)も含めて書いてあるから余計に分かりにくくなっているが、
要するにどうでもよさそうだ。
現実的にはコンストラクタだけ前方参照できてもプロトタイプが用意できていないから意味がない。
だから関数式の方が似合っている気はする。
ちなみに汚染については変数名か関数名かだけでどちらも汚染する。
また、デバッグ時にこんなところが関数表示されたところで嬉しくない。
どのみちコンストラクタが呼ばれればコールスタックには載るし、ブレークポイントも当てられる。
お前らは異様に文法にこだわることを止めて、もっとコードを書いた方がいい。
指摘が間抜けなのは、コードを書いてないからだ。(実践的ではない)
○○の問題がある(キリッというのは正しいが、それが重要なことなのか、わりとどうでもいいことなのか、区別が出来ていない。
>>520
> マルチポスト先
よく見つけたなw
というかこの手のモラルがない奴、急に増えたよな?何か理由があると思うのだが。
昔から居たけど、マルチポスト先が増えたから発覚しやすくなっただけか?

535:デフォルトの名無しさん
16/06/10 20:08:51.44 RNr8lFlW.net
>>499
どうもありがとうございます。おかげで気がついてしまいました。
concatはArrayを受け取ってArrayを返すつもりで>>487では書きましたが、
よく考えると今回拡張したA(以下単にA)を引数に受け取りたいですし、
返す結果もよく考えるとAであったほうが嬉しいかもしれません。
実装の手間という面だけでも尻込みしつつあったんですが、
いまや設計の方針と言う面でも相当きな臭いというか。
concatの返す値が決められなくて不気味。使うときに不安。
仮にsliceやspliceなどのもまとめて全部Aを返すように統一したとしても、
最終的にはArrayとAの二系統が混在する世界になっちゃうわけで不気味。
>>501
> 完璧なエミュレーションに拘らないのであれば妥協も必要
そのつもりだったんですがいざ用意してみると、
欲が出るわ粗が目立つわ方針で不安になるわで散々でした。
今後は生のArrayのみを運用していくつもりです(結論)。
>>504
ありがとうございます。Groovyはぐぐったことすら無いので分かりません。
> そういう複雑極まりない方向へ進むのは、最初から考え方がおかしいのでは?
はい。完全にそのとおりです。

536:デフォルトの名無しさん
16/06/10 21:47:53.40 qrHSyLm3.net
>>522
> 今後は生の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 よりは互換コードを書きやすいはずだ
機会があれば、是非新しい世界を作ることに挑戦してみてほしい

537:デフォルトの名無しさん
16/06/10 21:58:16.74 MdFWcZSW.net
こういう人に読ます気がない文章は目の前で破り捨てるに限る

538:デフォルトの名無しさん
16/06/10 22:12:29.26 AlU+uWXE.net
ES6だとプロトタイプ汚染がないのかと思ったけどもしかして新機能がない?
結局
Object.defineProperty(...){........}
と書かんといけんのか

539:デフォルトの名無しさん
16/06/10 22:18:01.79 G+eNnn4N.net
この程度で躓くのならもっと長いMDNは当然無理で、池沼のままなのもむべなるかな

540:523
16/06/10 22:51:59.24 qrHSyLm3.net
読みにくくてすまん
どういうわけが改行コードが一部消えているな…

541:デフォルトの名無しさん
16/06/10 23:08:39.56 +uuPJDCE.net
*∧ ∧:・。゚*。 : ・ 。 ゚ *★.
(*・ω・*)       ゚ *。*
*〇 〇………………………**
 祝☆jQuery 3.0 リリース URLリンク(blog.jquery.com)
**………………………………*
+ JavaScript & jQuery 質問用スレッド vol.6 + [無断転載禁止]©2ch.net
スレリンク(hp板)

542:デフォルトの名無しさん
16/06/10 23:10:44.42 +uuPJDCE.net
>>509
> > function Klass() {} という書き方が古くなったとか
> > 聞いたこと無いし、
> グローバルネームスペースを汚染する弊害について聞いたことないのか
なにいってんだおめぇ?
var Klass = function() {} という書き方をしても
グローバルネームスペース汚染してるだろw
function hoge() {
  function Klass() {}
}
↑Klassがグローバルネームスペース汚染ってどういうこと?w

543:デフォルトの名無しさん
16/06/10 23:13:14.16 +uuPJDCE.net
>>524
同じこと思ったw

544:デフォルトの名無しさん
16/06/11 00:01:17.78 MQjYfq34.net
ライブラリスレが復活してた
JavaScript ライブラリ総合質問所 vol.5 [無断転載禁止]©2ch.net
スレリンク(hp板)

545:デフォルトの名無しさん
16/06/11 08:41:10.92 MQjYfq34.net
jQuery推しが酷いと思ったらテンプレ改変されていたのか

546:デフォルトの名無しさん
16/06/11 13:03:48.93 n8nif7qi.net
今更かよ
ここ乗っ取られスレだよ

547:デフォルトの名無しさん
16/06/11 13:06:25.18 ijG8u0pc.net
java script初心者です。ご教授願います m(_ _)m
初めてpromiseで簡単な非同期処理を書いたんですが、一応動くもののどうにもコードがしっくりきません
もっとシンプルにできたり、適切な書き方があるところがあったら教えてください
内容は単語queryに対応する画像検索結果がローカルストレージになかったら外部APIに問い合わせるというものです

548:534
16/06/11 13:09:15.52 ijG8u0pc.net
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);
});
}

549:デフォルトの名無しさん
16/06/11 13:14:41.27 ijG8u0pc.net
インデント潰れてしまった・・・ 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>

550:デフォルトの名無しさん
16/06/11 13:21:07.32 e5AOazPt.net
>>534
この記事が参考になるかな
URLリンク(gao-tec.seesaa.net)

551:デフォルトの名無しさん
16/06/11 13:33:33.96 ijG8u0pc.net
>>537
ありがとう 3回読んできます

552:デフォルトの名無しさん
16/06/11 13:39:59.04 n8nif7qi.net
>>534-535
2chはHTMLタグ使えないからjsFiddleみたいな投稿サイトを使うといいよ
前まではテンプレにあったんだが
一見ネストが深いように見えるけど結構シンプルに纏まってると思う
fetchの部分を外に出せば視認性がよくなるんじゃないのって程度
しいて言えばgetImageData内でPopUp関数を呼び出してるのがしっくりこない
getImageData自身もPromiseインスタンスを返してresolve(json)するのがいい

553:デフォルトの名無しさん
16/06/11 13:59:44.48 ijG8u0pc.net
>>539
今日だけ師匠と呼ばせてください
自分でもそこはなんか気持ちわるかったんです promiseチェインがcatchで始まった挙句、頭でっかちで
でも外に出すというのはどうやるんでしょう・・・
fetchからの処理をまとめた関数(返り値は最終的なjsonデータのpromise)を外に定義して、それを呼び出す感じですか?
そしてgetImageDataがPromiseインスタンスを返すように書き換えるには、ええと・・・(思考フリーズ)

554:デフォルトの名無しさん
16/06/11 14:41:46.28 n8nif7qi.net
>>540
getCachedDataと同じ書き方をfetchとgetImagedataでやるだけだよ

555:デフォルトの名無しさん
16/06/11 15:16:00.71 NAulAg4n.net
>>539
> 一見ネストが深いように見えるけど結構シンプルに纏まってると思う
え? ちょっとまてよ?

556:デフォルトの名無しさん
16/06/11 15:45:12.80 NAulAg4n.net
>>540
これgetImageDataの中でキャッシュあるか調べてるからいけないんだよ。
一般論として、キャッシュというのは存在を意識しないようにコードにするべき。
関数の役割ってのが書いてないし、これだけじゃ読み取れないから難しいんだが、
そのgetImageDataっていうのは画像があれば、ポップアップウインドウを表示するんだろう?
であれば、getImageData() ではなくて showImageData() とかいう名前にするべき。
そして、getCachedData()ではなく、こっちをgetImageData()にするべき。
getImageData()っていうのは単にImageDataを返すだけ、その中でキャッシュを使っていようが
使っていまいが関係ないし、別の仕組みのキャッシュを使うかもしれない。がgetImageData()を
使う人からはそんなこと知ったことじゃない
>>535のコードは、chrome.storage.local を使っている箇所が、getCachedDataと
getImageDataの2つに分かれているだろ? 関数の役目が明確に分離されていないからそうなる。
非同期の書き方の問題の前にまずやることがあるってことさ。
あと、スペース1個でインデントは見にくいからやめろw
最低でも2個だ。

557:デフォルトの名無しさん
16/06/11 15:47:35.86 NAulAg4n.net
で、これが修正コード例だ。
やりたいならば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;
   }


558:    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);   }); }



559:デフォルトの名無しさん
16/06/11 15:56:05.66 NAulAg4n.net
で、どうしても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;
  });
}

560:534
16/06/11 16:03:43.18 ijG8u0pc.net
>>543
自分でああでもないこうでもないと考えてコードを修正していたら返信遅れました
か ら く ちwwww と思って訂正コードと自作スパゲッティを見比べたらグウの音も出ませんでした
この整理されたしっくり来る感じ 勉強になります
あとは・・ エラーハンドリングについてわからないところがあります!

561:デフォルトの名無しさん
16/06/11 16:07:35.34 ZhHlBSFM.net
>>537
良い記事だ。
が、前から疑問なのだが、何故お前らはネストにこだわるのだ?
俺は展開して書いていて、特に問題を感じない。
要求が「脳筋無限ループの例ぐらい単純な構造で」「非同期処理を実現する」
「処理は上から下へ」「ネストが深くならない」ならば、これでいいと思うのだが。
好きずきはあると思うが、このような場合にでも例としても出てこないのは謎なんだが。
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();

562:デフォルトの名無しさん
16/06/11 16:12:31.73 NAulAg4n.net
>>545は本当に動くかどうかわからない。
実はcacheのあとにthenをつなげたことないんでねw
まあ関数の中を試行錯誤すりゃできるだろうと思うけど。
最悪>>544でいいし。
"何をする" 関数か?(クラスか?)ってことをよく考えることが重要。
動くようにコードを配置するんじゃなくて、何をする関数か?を定義して
それに合わない所はたとえコードが増えても外にだすべきだし、
入れるべきだと思えば、どうにかして持ってくる。
もちろん場合によっては、"何をする" の定義を変えてもいいけど
はっきり定義させることが重要。
例えば、このgetImageData()はchrome.storage.local を使うことが前提になってるけど、
いろんなキャッシュの仕組みを入れ替えられるようにする関数(というかクラスになるだろうけど)を定義すれば
getImageData()の中からはchrome.storage.localが消えて、キャッシュの仕組みを
入れ替えられるだけのことをするクラスができあがるわけ。

563:デフォルトの名無しさん
16/06/11 16:15:59.14 NAulAg4n.net
>>547
> が、前から疑問なのだが、何故お前らはネストにこだわるのだ?
やりかけで覚えておかなければならないことが増えるからだよ。
Aが終わってからBをして、Bが終わってからCをする。というやり方よりも
Aの途中でBをして、Bをしているその途中でCをするほうが疲れるから。
Cが終わったら、Bはどうなったんだっけ? そしてAはどうなったんだっけ?って
戻って行かないといけないからね。
言い換えると可読性の問題だからだ。
非同期とかそういうところが問題になってるんじゃない。
やりかけの作業を脳に貯めておくと言うところが問題なんだよ。

564:デフォルトの名無しさん
16/06/11 16:20:02.55 NAulAg4n.net
>>547
あと、そのコードの問題は「名前」が増える。
名前が増えるっていうのも、いちいち記憶して
おかなければならないことだから面倒
限りある記憶領域は、記憶する価値のある物、
汎用的でどこでも使えることだけに絞る必要がある。
覚える価値がないものは覚えなくていい。
そのコードは関数の�


565:シ前が増えているだけだが、 クロージャーじゃなくなっているから、変数の名前も増えるだろうね あと処理があちこちに飛ぶから、コードが長くなったらスクロールする回数も増えるよw もちろん関数が長ければ分けるが少なければその場に埋め込むという意味だ。



566:デフォルトの名無しさん
16/06/11 16:26:52.64 ZhHlBSFM.net
>>549
そうか?ぶった切られているだけで、実は同じだろ。追加部分を見やすいように編集しておいた。
同期的に「放り投げて終わり」にしたいという気持ちも分かるが、無理にネスト/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();

567:デフォルトの名無しさん
16/06/11 16:29:29.39 tWgkOxEq.net
もうそれはasync/await、もしくはgenerator/yieldを使うしかないよ。

568:デフォルトの名無しさん
16/06/11 16:35:45.96 NAulAg4n.net
>>551
サンプルコードでやってるからだめなんだよ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();

569:デフォルトの名無しさん
16/06/11 16:36:17.69 ZhHlBSFM.net
>>550
「名前」が増えるのは事実だけど、関数内関数で隠蔽するし、
そもそも処理を必ず「上から下に」書くのでその点は問題にならない。
つまり、このように展開した場合、その関数は直前のsetTimeoutからしか呼ばれない。
したがって、覚える必要はないし、
処理があちこちに飛ぶこともない。(


570:ただこれはそう書く、ということだが) ちなみにクロージャーにはなっている。 > もちろん関数が長ければ分けるが少なければその場に埋め込むという意味だ。 いや、結構糞長い奴もそこに書くよね? $.ajaxとかその場にだらだら全部書くほうが普通じゃないか?



571:デフォルトの名無しさん
16/06/11 16:39:28.40 NAulAg4n.net
>>554
もうそろそろ>>553をみて、記憶に頼ってるなって自覚したはず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

572:デフォルトの名無しさん
16/06/11 16:39:52.50 ZhHlBSFM.net
>>553
ああ、ちょっと遅れたが、それは既に書いたように、俺内コーディングルール
処理を必ず「上から下に」書く
で対応している。というか、そもそも意図的に可読性を落とす必要はないだろ。
「上から下に」書けるところでは「上から下に」書くのが常識だろ。
名前もこの手の場合は XXX_1, XXX_2, ..... と順に付けていく。おかしな名前を付けたりすることはない。

573:デフォルトの名無しさん
16/06/11 16:40:41.06 NAulAg4n.net
>>554
> $.ajaxとかその場にだらだら全部書くほうが普通じゃないか?
下手なやつが多いだけ。
俺は関数に分けるべき理由が生まれれば当然分ける。

574:534
16/06/11 16:40:58.22 ijG8u0pc.net
>>544 の綺麗なコードを見る前に、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;
}

575:デフォルトの名無しさん
16/06/11 16:44:00.74 NAulAg4n.net
>>556
> 処理を必ず「上から下に」書く
>
> で対応している。というか、そもそも意図的に可読性を落とす必要はないだろ。
> 「上から下に」書けるところでは「上から下に」書くのが常識だろ。
ほらなw お前の常識w
何処かで、function hoge() {} じゃなくて var hoge = function() {} って
書けって言っていたやつが居るが、
(ちなみに俺はその必要がないならばfunction hoge()って書け派)
これは上から下に書けない。
hoge();
var hoge = function() {}
hage()
var hage = function() {}
まあ 「上から下に」"書けるところでは" って書いているところからもわかるように
書けない場合があると自覚してるんだろうがw
その書ける所と書けない所、ここは書ける所だという前提を知ってるのも「記憶」だよねw

576:デフォルトの名無しさん
16/06/11 16:44:38.09 ZhHlBSFM.net
>>555
何が言いたいのか分からんが、これでいいか?
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();

577:デフォルトの名無しさん
16/06/11 16:46:15.25 NAulAg4n.net
>>560
勝手にコード書き換えんなよ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

578:デフォルトの名無しさん
16/06/11 16:50:41.71 NAulAg4n.net
>>558
いやw 何が疑問なのかさっぱりわからないんだがwww

579:デフォルトの名無しさん
16/06/11 16:51:15.94 ijG8u0pc.net
googleCustomSearchの呼出元にhandleNetworkErrorで起きたエラーを伝えるためには、
1.最後のcatchのなかでもう一度new Error(err)を投げる
2.Promise.reject(error)を返す
3.そもそも書き方が悪い、 >>544みたいにfetchをnew Promiseでラップして、reject(err)してください
どれが適切なんでしょうか

580:デフォルトの名無しさん
16/06/11 16:54:15.22 ZhHlBSFM.net
>>561
いや勝手に書き換えたのはお前だろ。
>>555のコードでは var v=1 は Mainの中じゃないか。
Main_1の中で新しい変数が必要なら、
・Main_2をMain_1内に移動する(ネストが増える)
・v を Main内で定義しておく
のどちらかだろ。俺なら後者的アプローチを取ることが多いと思う。
ただ、途中で変数が必要なときも管理しなくていいというのは確かにメリットかもな。

581:デフォルトの名無しさん
16/06/11 17:02:05.55 ZhHlBSFM.net
>>559
それはクラスの時の話だ。
クラスの場合は、コンストラクタだけ呼べても意味がないだろ。
Hoge.prototype.XXX = function(){...};
の記述が「順序が必要」なので、どのみちその記述以降じゃないと new Hoge() 出来ないんだよ。
誰も普通の関数 hoge を全部 var hoge = function(){} と書けとは言ってない。
お前が話について来れてないだけ。

まあ分かった、お前が「文法的に読み込める方が善」というのならそれでいい。
で、他の連中もそうなのか?

582:デフォルトの名無しさん
16/06/11 17:09:12.67 ZhHlBSFM.net
>>557
ちと細かいがこれにも言っておくと、
> 俺は関数に分けるべき理由が生まれれば当然分ける。
彼等は「関数に分けるべき理由」が分からないのではなくて、その必要がないという判断でそこに書いているんだよ。
下手なわけではない。
通常、$.ajaxの場合はそこでしか使われない関数になるから、ネスト派ならそこにだらだら書く方が自然なんだ。
ただ、「ネストが深くなる」のが嫌いなくせに、「ネストでしか書かない」のが俺には疑問なんだ。

583:デフォルトの名無しさん
16/06/11 17:31:06.27 aOjkg+66.net
>>523
毎度ありがとうございます。
> 機会があれば、是非新しい世界を作ることに挑戦してみてほしい
今回のことで色々勉強させてもらいましたので、
次に生かせたいと思います! 色々ありがとうございまし!

584:デフォルトの名無しさん
16/06/11 17:31:44.01 aOjkg+66.net
おっw
×まし!
○ました!

585:デフォルトの名無しさん
16/06/11 18:02:04.85 NAulAg4n.net
>>566
> 下手なわけではない。
> 通常、$.ajaxの場合はそこでしか使われない関数になるから、ネスト派ならそこにだらだら書く方が自然なんだ。
> ただ、「ネストが深くなる」のが嫌いなくせに、「ネストでしか書かない」のが俺には疑問なんだ。 <


586:br> いや、俺は$.ajaxでDeferred使うし、やっぱり下手なだけじゃね?



587:デフォルトの名無しさん
16/06/11 18:05:04.82 NAulAg4n.net
>>563
> どれが適切なんでしょうか
どれか迷ったら、一番楽な方法を選べばいいよw
何でもそうだけど原則として楽になるように作られてるわけなんだしさ。
しばらくPromiseは触ってないから忘れたが、throwで任意のエラーオブジェクトでも
投げればいいんじゃね?

588:デフォルトの名無しさん
16/06/11 18:07:10.39 NAulAg4n.net
>>565
> クラスの場合は、コンストラクタだけ呼べても意味がないだろ。

意味あるぞ?

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

var manager = new NantokaManager;
manager.run()

とかさ。

589:デフォルトの名無しさん
16/06/11 18:08:34.97 NAulAg4n.net
>>565
> 誰も普通の関数 hoge を全部 var hoge = function(){} と書けとは言ってない。
> お前が話について来れてないだけ。

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

ついてこいよw

590:デフォルトの名無しさん
16/06/11 19:28:03.24 ZhHlBSFM.net
>>571-572
すまんが意味が分からんし、お前の主張も分からん。
その場合の駄目なコードとそちらの主張を対で出せるか?(以下例のように)

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

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

となる。
そのコードが「共通プロトタイプを持たない場合」に限定しているつもりなら、勝手にどうぞでしかない。

591:デフォルトの名無しさん
16/06/11 19:33:03.15 NAulAg4n.net
>>573
え? お前コードは必ずプロトタイプを持つものっていう前提なの?
どうやらお前は限定しているようだが、
俺は、どんな限定もしていない。

592:デフォルトの名無しさん
16/06/11 19:40:17.64 ZhHlBSFM.net
>>574
何が言いたいのか分からん。
そちらが説明しきれないのなら、相互理解は不能だから終わりでいい。

593:デフォルトの名無しさん
16/06/11 21:27:53.17 NAulAg4n.net
>>575

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

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

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

俺はお前と違って何も限定していない。
コンストラクタだけ呼べても意味がある場合は
実際に存在している。

594:デフォルトの名無しさん
16/06/11 22:29:21.64 ZhHlBSFM.net
>>576
なるほど、お前は人殺し君か。
どおりで話が通じないわけだ。

595:デフォルトの名無しさん
16/06/12 00:46:04.68 hCgFiHr7.net
多分人殺しくんとは俺の事だろうが、
>>576は俺ではないし、正直、ID:ZhHlBSFMは頑張って色々回答してるけど実務レベルではないわ。
処理は上から下へ流れるように、なんて、飼い犬が死んでも言わんレベルのたわ言じゃん。
相互に呼び出し合う事のある関数なんかどういう順序で記述するんだろ。
イベンハンドラやら、タイマーのハンドラは、どの順序なのかな。
子供のお題目にしか聞こえん。
逆に何年目か教えてほしいわw
何度かこういう言い方してるけど、ああいう悔しがり方とキレ方する奴が具体的にすら言えないってことは、ほんとに経験無いガクセーさんなんだろうけど。

596:デフォルトの名無しさん
16/06/12 00:51:30.61 CJz8oq6+.net
後学のためにID真っ赤にしてる方々の書いた素晴らしいスクリプトを見せてくださいよ

597:576
16/06/12 00:51:41.20 AMLyjVO9.net
>>578
お前のことだったんか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

598:デフォルトの名無しさん
16/06/12 00:52:45.85 AMLyjVO9.net
>>579
俺は何回も書いてるよ。

>>546とか読んでみな。(俺が>>546という意味ではない)

599:デフォルトの名無しさん
16/06/12 01:26:35.68 npk74fIw.net
はいはい自演乙。
自演じゃないならレベルの高い>>578-581の間で色々解決できるだろうから頑張れ。

600:デフォルトの名無しさん
16/06/12 01:33:50.33 AMLyjVO9.net
> 自演じゃないならレベルの高い>>578-581の間で色々解決できるだろうから頑張れ。

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

そして、俺とお前は他人だろ?
その理屈ならいろいろ解決できるだろうな。
何か言ってみろ。俺は手伝わないがwww

601:デフォルトの名無しさん
16/06/12 01:40:01.79 m2Zib5nl.net
あ?なんだこのゴミみたいな木っ端は
最低でも1000行以上あるプログラムとして成立してるもんもってこいや

602:デフォルトの名無しさん
16/06/12 01:43:07.89 npk74fIw.net
>>583
じゃあとりあえず>>578の疑問に答えてやれよ

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

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

面白そうなら俺も加わるし、他も加わってくるだろう。
どうでもよければ無視されるだけだ。

603:デフォルトの名無しさん
16/06/12 02:01:39.12 AMLyjVO9.net
>>585
どうせ質問に答えても自演じゃないって認めないんだろw
まあ質問じゃないとお前もわかってるようだから、それにレスしろと
いうならば、レスするのは何の問題もない。

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

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

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

この件に関しては、俺は>>578と同じ意見だろうな

604:デフォルトの名無しさん
16/06/12 02:36:10.54 npk74fIw.net
>>586
> この件に関しては、俺は>>578と同じ意見だろうな
そりゃ同一人物だからなw

まあ、人殺し君も多投するタイプだから、待ってればレスが返ってくるはずだ。
そして本当に別人なら、色々意見交換すれば相違点が発見できるだろう。
それは俺関係なしにいいことだから、やってみることだね。

605:デフォルトの名無しさん
16/06/12 02:56:48.44 hCgFiHr7.net
>>587
同一人物とかよくわからんな。
俺が連投するのは暇だからで、まともに過ごしてる時はそれなりにしか書かんけど。
10日間際は忙しいからな。

まさか本気で同一人物だと思ってたら笑えるww

606:デフォルトの名無しさん
16/06/12 03:17:12.70 hCgFiHr7.net
>>586
うむ。アルファベット順ならまだマシだけど。

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

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

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

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

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

しかし、言われてるのは俺じゃないが、関数を大文字から始めると経験不足なんだwww
C20年目かもしれんけどな、そういう人はww

607:デフォルトの名無しさん
16/06/12 03:21:29.67 hCgFiHr7.net
こいつ、言われたくないことを人に言って安全圏に逃げたいだけなんだろうなぁ。ユング的なシャドウをもう少し悪く歪めたものが見えるわ。
voidとか、岡部健みたいな感じの破綻者に対して憧れてる人間、くらい性根がさもしい。

608:デフォルトの名無しさん
16/06/12 09:01:52.07 AMLyjVO9.net
>>587
だから同一人物じゃねーよw

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

610:デフォルトの名無しさん
16/06/12 09:10:26.75 AMLyjVO9.net
>>589
> だから、yieldとジェネレーターを使おうが、Promiseを使おうが、本来は何一つ定義が変わってる訳でも、処理が変わってる訳でも無い。

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

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

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

> そこに、ニーズ外の要件なんて無いの。扱いにくいとかどうでもいいんよ。
俺はいまだかつて「時間的に早く書けて修正も簡単で、メンテナンスにかかるコストが低い」
という要件がなかったことはないぞw
どんなプロジェクトでも安く仕上げることは、暗黙的に含まれてる要件だ。

611:デフォルトの名無しさん
16/06/12 13:15:07.43 npk74fIw.net
別人であればもっと議論が深まるはずだよな。
みんな見てくれてるから、せいぜい頑張れ。

612:デフォルトの名無しさん
16/06/12 13:19:20.40 AMLyjVO9.net
どうあっても別人と認めたくないようだ(笑)

613:デフォルトの名無しさん
16/06/12 13:20:50.61 AMLyjVO9.net
あ、なるほど。話が進むと今度は
一人だから意図的に会話できる。
それが自作自演の証拠って言うつもりだなw

614:デフォルトの名無しさん
16/06/12 15:04:26.78 npk74fIw.net
いやきみ(ら)にとっては俺はただの馬鹿なんだろ。
だったら俺を引っ張り出す方向のレスを付けること自体おかしいだろ。
ガン無視してくれよw

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

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

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


はい続きをどうぞ。

615:デフォルトの名無しさん
16/06/12 16:27:25.35 9HFtYPb0.net
その人殺し君とかいうのに論破されちゃって
悔しくて大ハッスルしてるの?

616:デフォルトの名無しさん
16/06/12 16:54:18.02 hCgFiHr7.net
>>592
そりゃ、javascriptの規約はいくらでもあるだろうけど、
javascriptの規約しか知らないどころか、ありえないような口ぶりで話してたからねw
なんかからトランスパイルするなら、こうなるだろうな、って考えたりしないんだ、って感じ。

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

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

>>597
お前ほんと何と戦ってんの?

617:デフォルトの名無しさん
16/06/12 19:20:47.80 npk74fIw.net
>>599
> わざとこの態度だからなぁ。 (>>327)
煽っていくスタイルプリーズ

618:デフォルトの名無しさん
16/06/12 19:39:15.05 AMLyjVO9.net
> なんかからトランスパイルするなら、こうなるだろうな、

なんでそんなコード書くの?www

619:デフォルトの名無しさん
16/06/12 19:40:36.87 z4XaqaSO.net
function f(a) {
let t = a;
t[0] = 1;
console.log(a);
console.log(t);
}

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

これaも[1]になっちゃうんですが
ES2015とか新しい書き方で配列をコピーする方法ありませんか?

620:デフォルトの名無しさん
16/06/12 19:41:46.51 AMLyjVO9.net
>>597
> どちらがキチガイかは皆が判断してくれる。

お前がキチガイだって俺は判断したよwww

621:デフォルトの名無しさん
16/06/12 22:24:47.44 QKWa7och.net
芝生くっつけるやつにろくなのはいないってのは間違いなさそうだ

622:デフォルトの名無しさん
16/06/12 22:34:59.19 npk74fIw.net
>>601
馬鹿にはちゃんと安価付けろ。気づいてもらえないぞ。
てかお前もちゃんと煽れよ。

>>599
>>601>>599宛だぞ。
おーい。煽られてるぞー。

623:デフォルトの名無しさん
16/06/12 22:46:30.04 xguVhByI.net
そりゃ別人なんだから、煽りもするわwww

624:デフォルトの名無しさん
16/06/12 23:31:28.41 GjxFekK/.net
>>602
concat

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

なんらかのdeepコピーの場合はライブラリ使うしか無いかな?

626:デフォルトの名無しさん
16/06/12 23:54:06.37 npk74fIw.net
いやシャローコピーは slice() だと思うが。

627:デフォルトの名無しさん
16/06/12 23:56:00.26 hCgFiHr7.net
>>605
お前、脳みその代わりにババロア詰まってて、しかも微妙に機能してんじゃねえの?
一番煽られてんのはお前だと思うんだけどw
恥ずかしくねえのかな。。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch