+ JavaScript(ECMAScript)質問用スレッド vol.122 +at TECH
+ JavaScript(ECMAScript)質問用スレッド vol.122 + - 暇つぶし2ch369:デフォルトの名無しさん
16/09/03 22:32:33.75 N47o0j5/.net
>>360
そこに関しては納得してる。
俺が違和感があるのは、よくそれで問題にならず我慢できるなってこと。
よくArrayのサブクラスとか作らないで済むね?
Proxy使ったこと無い?@@系は?
当然独自クラスシステムフレームワーク構築するのに
プロトタイプ書き換えるとか当然やったこと無いんだろうな~
って感じ。
そういう驚きと、同じ世界に居ない悲しみ。そんなとこ。

370: ◆SEdFBOkLSw
16/09/03 22:32:54.26 zOLpCpsC.net
>>364
重要な単語も何も、本家とサブセットは関係が定義できようが、
サブセット同士はただ違うものとしか。

371:デフォルトの名無しさん
16/09/03 22:33:53.31 EZVA2rF2.net
>>362
> 依存部分はライブラリで吸収するから。
アロー関数は文法なんだから、JavaScriptファイルを
分離しないと、構文エラーになるんだが?
そのライブラリはブラウザごとに読み込むファイルを分けるのか?
またパフォーマンスが落ちそうなことをwww

372:デフォルトの名無しさん
16/09/03 22:35:25.80 EZVA2rF2.net
>>367
だから、そうやって重要な単語を抜き取って焦点をぼかすのはやめろ。
とある言語の、サブセット同士が違うものであっても
それはとある言語のサブセットであって、言語としては同じだろうが。
BASICはどの実装でもBASICであり
COBOLはどの実装でもCOBOLだ。

373:デフォルトの名無しさん
16/09/03 22:37:05.23 EZVA2rF2.net
>>366
> よくArrayのサブクラスとか作らないで済むね?
といわれてもね。長年やってるからね。
長いES5の時代にArrayのサブクラスをつくらないで
やってきた人間に、そんなこといわれてもねw
その他も同じ。
お前のほうがやってきた経験少ないんじゃね?

374:デフォルトの名無しさん
16/09/03 22:41:45.37 EZVA2rF2.net
>>366
そうだな。君、何かのポリフィルを自分で考えたことある?
特定のブラウザでは簡単にできないことを、
別の方法を使って実現するってことをやったことある?
そういう経験がないんじゃないかな?
バッドノウハウといわれるけど、仕事ではそれをやらないといけない。
Arrayのサブクラスが作れないからできませんって
簡単に泣き言を言ったらだめだよ。
Arrayのサブクラスを作ることが目的になることはまずない。
別の方法で顧客の要求を実現するんだよ。
これって発想力の問題かなぁ、それとも問題解決能力?

375:デフォルトの名無しさん
16/09/03 22:56:19.81 N47o0j5/.net
>>370
当然俺もいきなり活用できたわけじゃない。
折角の機能活用できるようになろうとここ1,2年実験・研究を人一倍積み重ねてきたのよ。
いや、違うか。それより前から、特にES4の頃からかなぁ
JSなんてと言われる声が大きかった時でも、
これからはJSの時代だ。JSを深く知ろう、そしてJSの良さをもっと知ってもらおう。
JSを良くしていこう。とずっとずーっと思ってたのよ。
だからES6の盛り上がりには喜んだし、
MLも当初から参加して全て読んで、細部だが提案にも参加した。
そして実装される前から、トランスパイラではなく、エンジン毎実装されているエミュレータでテストしたりしてきたのよ。
ブラウザに機能がコミットされたら、いやされる直前に自分でローカルでコミットして即ビルド。
とにかく誰よりもよくES6を知り、よく使えるようになろうと努力した。
というのは多少大袈裟だが、そのくらいの熱はあるよ。

376:デフォルトの名無しさん
16/09/03 22:59:14.75 N47o0j5/.net
つかArrayのサブクラスもできるんだけどね。
__proto__がサポートされていれば。

377: ◆SEdFBOkLSw
16/09/03 23:12:05.52 YIu9WVDu.net
>>369
いや、それは言語名を拡大解釈しすぎだろ。

378: ◆SEdFBOkLSw
16/09/03 23:14:31.28 YIu9WVDu.net
>>371
お前どう聞いてもそのノウハウないんだけど。
なんか書いたことある?アーキとしてライブラリ。
>>368
うん、文法上無理なものは、無理に使わないよ。
ライブラリはブラウザごとに違うよ?
当たり前だけど、そのブラウザ用に書いてるからパフォーマンス高いよ(笑)

379:デフォルトの名無しさん
16/09/04 01:41:38.94 dQFc65WQ.net
そもそも、ブラウザのソースをむっちゃ細かく読み、ブラウザごとに誤差レベルのパフォーマンスのためにプログラムをかき分け、利用者にはKBのバージョンまで指定する
そんならネイティブで書いたほうがいっそ早くね?

380:デフォルトの名無しさん
16/09/04 01:42:25.34 dQFc65WQ.net
↑ネイティブっていうのはブラウザ上じゃなくてって意味ね
それだと今度はOSのソースを読み出すのかな?

381: ◆SEdFBOkLSw
16/09/04 02:09:57.16 OwMR9jkC.net
>>376
クラサバの話?
だいたい似たようなもんだよ。
社内端末は、何処の会社でもそうだろうけど、標準品のパターンしか無いから。
クラサバは基本的にはあんまり作らんけどね。
標準品があるがゆえにが、何かにもインストールするのは難しい。
毎月10日に数万人が同時使用するようなものもあるから、ウェブ向きのもあるんだけどね。

382: ◆SEdFBOkLSw
16/09/04 02:11:11.84 OwMR9jkC.net
>>377
案件次第だけど、RedHatと、MSは調査させることができる保守契約だから、
ソースは見なくて済むよ。

383:デフォルトの名無しさん
16/09/04 02:40:24.68 dQFc65WQ.net
よくよく考えると、ハードウェアにも依存するよね
テストだけじゃなくてソースまで読むとなると、CPUとかグラフィックカードの設計図まで見ながら実装や結果が異なるかもしれない!とか言いながら開発してるのかな?
これとかは面白かったな
URLリンク(www.sophos.com)

384: ◆SEdFBOkLSw
16/09/04 02:52:39.61 puAB8LUN.net
ハードウエア依存するね。
そのへんはウェブ屋がよくまとめてくれてるよ。
このCSSをONにしたら、アニメーションがGPU使ってる行われるので、適宜利用可能そうであれば取り込んでください、とかたまり来るな。

385:デフォルトの名無しさん
16/09/05 21:45:07.44 g6CwjeFO.net
こういうwebアプリってどうやってつくってるんですか
pdgを縮小とかって、どうやってやってるのでしょうか?
javascriptは関係ありますでしょうか?
URLリンク(smallpdf.com)

386:デフォルトの名無しさん
16/09/05 23:05:01.84 La2BdvKf.net
void func(int a)
{

387:デフォルトの名無しさん
16/09/05 23:10:26.66 La2BdvKf.net
未使用変数への対処ですが、C言語だと
void func(int /*a*/)
{
....
}
void func(int a)
{
(void)a;
....
}
こんな風にしますが、JavaScriptだと定石みたいなのはありますか?
$('#element').on('mousedown', function(/*event*/) {
});
でよさそうな気がしますが、アロー関数の時は
$('#element').on('mousedown', /*event*/() => {
});
こんな風にしないとだめでかっこ悪いきがします。

388:デフォルトの名無しさん
16/09/06 00:15:41.30 vTB9MQXO.net
>>384
未使用変数を必ず対処しないといけないということはない。
例えばイベントハンドラで引数にeventやeを取るのは「形」だ。
型宣言みたいなもんで、それを書いてあるからといって必ずしも
eventを利用しないことは皆知っている。
むしろその関数が別定義されていても、eventを受ける関数、
イベントハンドラの定義なんだと瞬時にわかるので意味がある。
つまりイベントハンドラとしてイベントを受け取るということだけで、
機能が満たされて意味的に「未使用」ではないとも見れる。
もしくは本当にイベントをトリガーとして関数を呼び出したいだけであれば、
引数を書かないでおくべき。
コメントアウトする文化はないのでけしてしてはいけない。
上で述べた引数をあえて書く、書かないは、関数の機能やニュアンスを表すための
弱い動的型付け言語における読み手に対する情報の追加だ。
しかしコメントアウトは書き手にとってのメタ的な情報でしか無い。
読み手に未使用変数の情報を伝えても何のプラスにもならないし、
何らかのニュアンスの提示かと思わせて混乱させるだけだ。

389:デフォルトの名無しさん
16/09/06 03:32:45.25 R2NwcGdU.net
キモい ◆SEは死んだ?w

390:デフォルトの名無しさん
16/09/06 03:37:28.46 s5Bd4cPT.net
>>384
使用してない変数なら書かなければいいだけ。
使わないのに引数を省略出来ないっていうのは
C言語特有の問題だ。C言語特有の問題を持ち込まないように

391: ◆SEdFBOkLSw
16/09/06 08:18:45.82 aJS2GtR8.net
>>386
そんなに否定されるか不安なのか?
>>384
その定石は要はコンパイラが未使用変数だよ、と警告上げてくるから、使ってるフリするやつじゃないの?
長々誰かが説明してるけど、結論どっちでも良いよ。
書いても書かなくても。

392:デフォルトの名無しさん
16/09/06 09:41:59.19 KC/iVCRe.net
>>385, >>387, >>388
ありがとうございます。
すみません、言葉足らずでしたが、>>388さんの通りC言語の
コンパイラの警告と同じような意味合いでの
eslintなどのunused-varsへの対処方法の相談でした。
引数消せばそれで良さそうとは思いましたが、それだと>>385さんの通り
eventとか意味を持った引数がわかりにくくなりそうなので、定石みたいなのはあるのかなと。
結論はどちらでも良いとのことで好きなようにやっておきます。

393:デフォルトの名無しさん
16/09/06 13:11:41.52 vTB9MQXO.net
>>389
一番いいのはそういう警告は殆どOFFにするか、無視すること。
正直言って本当に厄介なバグは見つけてくれない気休め程度のもの。
気休めに気を使うことくらい馬鹿らしいことはないと思わないか?
どちらでもいいと言われてるのは書く/書かないであって、
コメントアウトは3つの選択肢の中では最低と思った方がいい。

394:デフォルトの名無しさん
16/09/08 07:45:15.23 O7PwNYbW.net
プロミスって簡単に探したら、種類がいっぱい有るんですね。
現在対象にしているのが、WinJS。
timeoutなんてのが有って驚いた。
これだと非同期ロジックにシーケンス書ける。

395:デフォルトの名無しさん
16/09/08 14:31:46.31 OkMPKk85.net
標準Promiseは機能が少ないので、async/awaitを使って補うのがベストプラクティス。
もしくはextendsしても良いが、やや大変で難しいと思う。
一応キャンセルの案は入るのでtimeoutとかは簡単に実装できるようにはなる。
CancelToken型になりそうなのがまたちょっとアレだが、まあ拡張としては最適なのだろう。
URLリンク(github.com)

396:デフォルトの名無しさん
16/09/08 23:37:57.85 Vzj7Ghpg.net
ちなみにasync/awaitに対応しているブラウザは少ないので
必然的にbabelを使うということである。

397:デフォルトの名無しさん
16/09/08 23:41:49.64 Vzj7Ghpg.net
なお、俺はasync/awaitを使いたいならbabelと言っただけで
async/awaitを使うと機能が増えるとは言ってない。
その話は言ったやつに聞け

398:デフォルトの名無しさん
16/09/09 00:04:44.99 4wEFuM4p.net
>>393
ブラウザの話だけでいうのもどうかと思うよ。
WinJSが出てくるのならNW.jsとかNode系V8系の環境の話も十分考えられる。
V8系ならフラグオンで使えるわけだからね。
というかすぐ、互換性が~とか言い出したり、実務を必ず伴わせようとするのは悪い癖だと思う。
ここはESスレなんだし、仕様やAPIの宙に浮いた話だって良いじゃない。
web制作板だったら確かに互換性や実際に世のブラウザで動く話は無視できないかもしれないけれど、
ここはプログラム技術板なんだし、
JSはそれこそ自分用のブラウザ拡張機能を作るためだったりするのにも使えるわけだし、
別に実験や遊びとしてこういった技術を扱う前提であってもいいと思う。

399:デフォルトの名無しさん
16/09/09 16:45:04.06 dcApvFQ/.net
lengthって名前の関数を作るときなんですが、
var Sample = function() {
      this.length = function() {
          return 100;
      }
};
Sample.length = function() {
    return 100;
};
let sample = new Sample();
console.log(sample.length()); // これは OK
console.log(Sample.length()); // これは エラー
っていう動作になるのはこういう仕様でしょうか?

400:デフォルトの名無しさん
16/09/09 16:46:02.70 dcApvFQ/.net
すみません、 使えなかった
こちらです。
var Sample = function() {
  this.length = function() {
    return 100;
  }
};
Sample.length = function() {
  return 100;
};
let sample = new Sample();
console.log(sample.length());
console.log(Sample.length());

401:デフォルトの名無しさん
16/09/09 17:42:46.36 mXWYcTT5.net
何がしたいの?w

402:デフォルトの名無しさん
16/09/09 18:03:02.38 dcApvFQ/.net
>>398
具体的には
VectorUtil.length = function(x, y, z) {
  return Math.sqrt(x*x + y*y + z*z);
};
これがしたかったです

403:デフォルトの名無しさん
16/09/09 19:06:00.54 R/34hIbI.net
Function.lengthは引数の数で定義済なんで無いの

404:デフォルトの名無しさん
16/09/09 19:15:39.77 4wEFuM4p.net
>>399
class構文を使えばできる。
class Sample {
static length() { return 100 }
}
Sample.length()

405:デフォルトの名無しさん
16/09/09 21:42:09.18 mcpsSWXB.net
画像収集の際にGreasemonkeyを利用してa要素+download属性を生成し、
整理しやすいように画像掲載ページのタイトル等から名前をつけて保存しているのですが、どうにかしてクロスドメインの画像に対してもリネームさせられないものでしょうか?
iframeを利用するというのも試してみましたが、元ページ側のタイトル変数などを受け渡すことが出来ず挫折してしまいました

406:デフォルトの名無しさん
16/09/09 21:52:24.77 dcApvFQ/.net
>>400
そういう仕様っぽいような気がしました。
なぜ上書きできないのか、わかってないですが。
>>401
なるほど、ありがとうございます。
classって糖衣構文だと思ってるんですが
内部的にはどうやってるのでしょう(調べてみます)

407:デフォルトの名無しさん
16/09/09 22:11:57.62 4wEFuM4p.net
>>なぜ上書きできないのか
[[Writable]]: false だから
URLリンク(tc39.github.io)
ただし[[Configurable]]: true なのでディスクリプタセット系メソッドで上書きはできる
>>内部的にはどうやってるのでしょう
コンストラクタが定義され、その時点では上記のようにlengthプロパティを持っているが、
その後PropertyDefinitionEvaluation→ディスクリプタセット系によって上書きされる
URLリンク(tc39.github.io)

408:デフォルトの名無しさん
16/09/09 22:27:00.10 Ml2lLB3N.net
>>403
babelで変換したらこうなったよ。
Object.definePropertyが鍵のようだ。
"use strict";
var _createClass = function () {
 function defineProperties(target, props) {
  for (var i = 0; i < props.length; i++) {
   var descriptor = props[i];
   descriptor.enumerable = descriptor.enumerable || false;
   descriptor.configurable = true;
   if ("value" in descriptor) descriptor.writable = true;
   Object.defineProperty(target, descriptor.key, descriptor);
  }
 }
 return function (Constructor, protoProps, staticProps) {
  if (protoProps) defineProperties(Constructor.prototype, protoProps);
  if (staticProps) defineProperties(Constructor, staticProps); return Constructor;
 };
}();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Sample = function () {
function Sample() {
_classCallCheck(this, Sample);
}
_createClass(Sample, null, [{
key: "length",
value: function length() {
return 100;
}
}]);
return Sample;
}();

409:デフォルトの名無しさん
16/09/09 22:47:46.14 dcApvFQ/.net
>>404 >>405
ありがとうございます。
勉強になりました。

410:デフォルトの名無しさん
16/09/10 11:41:02.99 bPnbAneW.net
わざわざインスタンス作るまでのことじゃない
という夢を見た

411:デフォルトの名無しさん
16/09/12 00:16:46.01 MSYFEfr8.net
>>407


412:デフォルトの名無しさん
16/09/14 11:42:56.90 7fc5lKN8.net
<body onLoad="document.getElementById(id).style.display = 'none'">
でページを読み込んだとき表示させたくない部分を隠せるのだけど
ブラウザで何回もリロードしていると隠れている部分が一瞬表示されることがあります
これを防ぐ方法あったら教えてください

413:デフォルトの名無しさん
16/09/14 11:55:36.48 T/00QwAr.net
>>409
どうしてonLoadにしているのかが分からない
最初からidの要素に対してやればいいのでは?

414:デフォルトの名無しさん
16/09/14 21:09:29.93 jzervOJ/.net
>>409
表示に関することはCSSでやれ

415:デフォルトの名無しさん
16/09/15 04:07:08.15 3ffkfw2U.net
>>409
そりゃonLoadで消す処理の前に描画処理が走ってしまうと表示されるだろうな
まずonLoad は画像等の外部リソースがすべて読み込まれるまで発火しないので、そういう場合どちらかと言えばDOMContentLoadedで呼ぶ方がいい
一瞬でも見せたくないならcssなど外部リソースへのリンクをすべて切った状態で表示されない状態であるべき
表示したい時にそのエレメントを作るまたは流し込む、あるいは非表示にしてあるものを必要に応じて表示にする方が好ましいと思う

416:デフォルトの名無しさん
16/09/15 05:14:15.52 ql+kvaik.net
先にCSSで、非表示に設定しておいて、JSで表示すればいい

417:デフォルトの名無しさん
16/09/15 05:20:33.69 ql+kvaik.net
正しいかどうかは知らないけど、
漏れは、<head>内で、CSSを読み込ませて、
<body>の終了直前で、JS, jQuery, jQueryUI を読み込ませている

418:デフォルトの名無しさん
16/09/15 08:25:11.28 snQtI1Af.net
>>409
JS有効/無効関わらず、適用させるべきなら静的に外部CSSを適用する
JS有効時のみ適用させるなら
1. JSで動的に外部CSSを挿入する
2. JSで動的にstyle要素を挿入する
3. JSで動的にdocument.styleSheetsを操作する

419:デフォルトの名無しさん
16/09/15 08:35:03.76 snQtI1Af.net
回答しておいてなんだが、これはES限定の質問ではないので下記スレで質問すべきだな
+ JavaScript の質問用スレッド vol.122 + [無断転載禁止]©2ch.net
スレリンク(tech板)
そもそも、このスレがvol.121の後継スレと銘打って立てるから、こういう勘違いした質問者が出てくるんだよな
「ECMAScript デス 6」として立てれば良かったものを…

420:デフォルトの名無しさん
16/09/15 16:12:55.70 3ffkfw2U.net
あっちは頭のおかしな子が常駐してるからなぁ
外部CSSでやった場合、その外部CSSを取得するためのhttpリクエストがコケたり読み込みが遅れた場合CSSが解釈される前に表示されてしまうよ
よって絶対に(一瞬たりとも)表示したくないならば外部CSSで隠すのではダメ
最低でもインラインCSSで静的に非表示にしておく事が最低条件で、可能ならそれを表示する必要が生じるまでDOM要素が存在しない状態にしておくべき

421:デフォルトの名無しさん
16/09/15 18:33:18.76 tL4oMhKi.net
>>417
> 外部CSSでやった場合、その外部CSSを取得するためのhttpリクエストがコケたり読み込みが遅れた場合CSSが解釈される前に表示されてしまうよ
link要素は基本同期読み込みだったと思うがな これ以上は該当スレでやってくれ
変な奴はどこにでもいるからスルーすればいいだけ

422:デフォルトの名無しさん
16/09/16 23:25:08.31 90O68WAb.net
JavaScript の Closure Compiler
URLリンク(googledevjp.blogspot.jp)
> Closure Compiler は、2009 年に元は Java でリリースされました。本日は、
> まったく同じ Closure Compiler がピュア JavaScript で Java を使わずに利用できる
> ことになったことをお知らせします。この仕組みは NodeJS 環境で実行するように設計されており、
> いくつかのよく使われているビルドツールをサポートしています。
> 初めて聞く方のために説明すると、Closure Compiler は JavaScript の最適化、トランスパイル、
> タイプチェックを行うツールです。これを使うと、コードを高パフォーマンスでサイズが縮小された
> コードにコンパイルすることができます。
> let、const、アロー関数などの ES2015 の新機能をサポートしており、まだすべてではサポートされていない
> ES2015 メソッドの polyfill も提供しています。メンテナンス性や拡張性の高い優れたコードを書けるよう、
> Closure Compiler は構文チェック、タイプの使用法の訂正、さまざまな JavaScript における注意点についての警告も行ってくれます。
これは素晴らしい。Closure CompilerはGoogle製でブランド力はあるのだが、
Javaが必要だったのがJavaScriptの世界に馴染めなかったんだ。
ただbabelはその先を行っていて、拡張可能な仕組みでES2015だけじゃなく
JSX対応とかコード変換にまつわることをサポートするツールになってるんだが、
対抗馬に鳴るだろうか?

423:デフォルトの名無しさん
16/09/17 08:30:02.95 0xe0k3r9.net
>>419
無駄な長文引用は止めてほしいものだな
BabelとClosure Compilerは用途が異なるので競合にはならない

424:デフォルトの名無しさん
16/09/17 13:55:23.53 YjgX2ujU.net
'use strict';
"use strict";
のどちらでも良いですか?
上級者の人はどちらを使いますか?

425: ◆SEdFBOkLSw
16/09/17 13:56:43.79 gYNx5cgj.net
その先を行ってる訳じゃないでしょ。
Javaが必要だった、と言うが、そんな事なんの問題でも無いと思う。
結局、どっちも、誰かの言う「良くないJavaScript」を「良いJavaScript」に変換するだけの存在。

426:デフォルトの名無しさん
16/09/17 15:18:00.80 530UZtkB.net
>>421
シングルの方がシンプルなので好まれる
ただJSONを書くときとの整合性を考えるとダブルになる

427:デフォルトの名無しさん
16/09/17 17:33:41.59 YjgX2ujU.net
>>423
JSONでシングルは使えないのですか?

428:デフォルトの名無しさん
16/09/17 17:43:37.89 5r5hyKhZ.net
> ただJSONを書くときとの整合性を考えるとダブルになる
そんなどうでもいいところの整合性なんて考えなくていい。
JSONとの整合性を保つ意味がない。

429:デフォルトの名無しさん
16/09/18 05:27:32.37 /bzuSpCV.net
俺はそういうとこを突き詰める人間のほうが好きだけどね。
プログラミングには少なからず美的要素が含まれるから。
少なくともそういうところを考えず放って来た者は上級者ではない。

430:デフォルトの名無しさん
16/09/18 11:44:00.08 8zKQ5/pX.net
>>426
意味がわからん。
JavaScriptとJSONは似ているが別の言語と考えるべき。
言語に応じた最適な書き方を求めるべきであって、
別の言語の習慣を持ち込むなって話なんだけど?

431:デフォルトの名無しさん
16/09/18 12:18:29.13 JCfSaSaV.net
>>426
Cobolみたいな表記が良いの?

432:デフォルトの名無しさん
16/09/18 12:26:41.43 Wkbj4nCn.net
JSONはCSVやXMLと同じ一つのフォーマットに過ぎない

433:デフォルトの名無しさん
16/09/18 15:20:31.34 0+yFEvXA.net
JSONがJavaScript Object Notationであることを勘案すると>>423は以下の様に翻訳できる
>ただJSONを書くときとの整合性を考えるとダブルになる
ただオブジェクト宣言時の表記との整合性を考えるとダブルになる
正直どうでもいいな

434:デフォルトの名無しさん
16/09/18 15:36:58.44 7fymcmTA.net
整合性ではなく、統一性なんだがw

435:デフォルトの名無しさん
16/09/18 15:45:54.06 8zKQ5/pX.net
統一する理由がない

436:デフォルトの名無しさん
16/09/18 16:59:06.74 /bzuSpCV.net
統一する理由がない。
つまりそれはどっちでもいいと言うことだろう?
逆にどっちが良いかの理由を探すのならそういうことも理由になり得るということだ。
君がそういうことを理由としないというのは結構だが、
理由とする人がいることは認めないといけない

437:デフォルトの名無しさん
16/09/18 17:17:43.50 8zKQ5/pX.net
>>433
統一する理由がないと言ったのは、JavaScriptと
JSONのクォートの使い方を統一する必要が無いという意味ね。
JavaScriptはJSONじゃないんだから。
だからJSONを持ち出してきた事自体をなかったことにしろということ。
どちらにするかは採用するコーディング規約に従えばいいだけ。

438:デフォルトの名無しさん
16/09/18 17:27:13.31 xD5NzQXy.net
>>433
それは理由になっている場合の理屈
君のそれが「正当な理由になってない」という事では?

439:デフォルトの名無しさん
16/09/18 17:41:30.85 xD5NzQXy.net
JSONとJavaScriptでは言語体系が違うからなあ
JSONはJavaScriptの文法を真似ているだけのファイルフォーマットだからね
JSONとJavaScriptのクォートを統一するのはPHPとJavaScriptのクォートを統一するようなもの

440:デフォルトの名無しさん
16/09/18 17:45:59.39 xD5NzQXy.net
現実的な理由としてHTMLタグをJavaScriptコードに埋め込む場合、文字列リテラルでダブルクォートを使っているとHTML要素の属性を括る文字にシングルクォートを使わないとエスケープが面倒くさいというのがある
HTML文書でシングルクォートを使っているなら統一性が生まれるけど、ダブルクォートを使っているならJSでは逆にシングルクォートを使った方が統一感があっていい
あまりないけど、サーバサイドスクリプトを介在してJSONをJavaScriptコードに埋め込む場合もシングルクォートを使っていた方が都合がよい

441:デフォルトの名無しさん
16/09/18 18:18:08.32 7fymcmTA.net
a = "123';
b = '456";
 前後のクォートが異なる ※整合性
a = "123";
b = '456';
 a b のクォートが異なる※統一性
JavaScriptに対しての統一性だと言ったんだよ
整合性が保たれていないと動作しないだろw

442:デフォルトの名無しさん
16/09/18 18:58:00.12 /bzuSpCV.net
>>435
まず、どっちで書いても機能的には変わらないということが大前提にあるよね
そうしたらもう気分とかそういう人間側の都合になってくるわけよ
例えばHTMLではダブルが使われる事が多いので、
実際に埋め込むことは滅多にないだろうし、今はテンプレートリテラルもあるけれど、
気分的にJSではシングルを使うとかね
逆にそういう事が理由でないという人が今どちらかを使っている理由を聞きたい
その日のサイコロで決めてるというのでなければ理由があるはずだ
例えば本に書いてあったとか、最初に習ったのがこっちだったとかね
自分はそういう理由も理由だと思うけれど、
まだ大前提のうちでは理屈として一般的で、まだマシに意味がある想像を述べることを推してるのよ

443:デフォルトの名無しさん
16/09/18 22:55:44.47 8zKQ5/pX.net
>>437
> あまりないけど、サーバサイドスクリプトを介在してJSONをJavaScriptコードに埋め込む場合もシングルクォートを使っていた方が都合がよ
そんなことしてるならコードを見直したほうが良いよ。
普通はJavaScriptオブジェクトをJSONに変換する。

444:デフォルトの名無しさん
16/09/18 23:18:12.13 8mgjQq3k.net
>>439
あなたのいう「認める」とは何?
端から見ればあなたがJSONとの統一性を気にしない人を「認めていない」のだが

445:デフォルトの名無しさん
16/09/19 05:07:37.39 io387Cln.net
すみません、よそ者ですが、
そもそもなぜ '' や "" で囲う必要があるのですか?
use strict;
ではダメな理由を教えていただけますでしょうか?

446:デフォルトの名無しさん
16/09/19 05:42:42.21 Rfn/Judi.net
>>442
use strictに対応してないブラウザでエラーが出るからだよ。
文字列にしておけば、古いブラウザでも単なる文字列があるだけ。

447:デフォルトの名無しさん
16/09/19 11:33:59.10 io387Cln.net
>>443
ありがとうございました。
長年の疑問が解消しました。

448:デフォルトの名無しさん
16/09/20 00:04:22.78 DlF8DRLC.net
Angular2で出来て、Vue.jsで出来ないことはどのような事がありますか?
また逆はありますか?

449:デフォルトの名無しさん
16/09/20 15:54:14.06 GpfqQSu0.net
頭が相当悪いみたいだね?
一行目そのまま検索しろよw

450:デフォルトの名無しさん
16/09/21 14:44:20.17 wW2qFR9f.net
すまん、言い過ぎた
反省してる

451:デフォルトの名無しさん
16/09/22 17:06:35.53 zXBENXMk.net
誰かflow使ってる人いる?

452:デフォルトの名無しさん
16/09/23 12:16:27.04 QcEXcfJB.net
統一する必要は無いけど、覚える量を減らしたいので統一しているよ。

453:デフォルトの名無しさん
16/09/23 13:55:08.58 AF/DJJLc.net
>>449
何の話?

454:デフォルトの名無しさん
16/09/23 22:25:12.59 MCHe7LJO.net
>>449
RubyとJSONで "" と '' のどっちを使うかという話だろう?

455:デフォルトの名無しさん
16/09/23 23:00:49.95 MCHe7LJO.net
正直JSONを手書きするのはやめたほうが良いよ。
ライブラリを使って(各言語の)オブジェクトとJSONの
相互変換をした方がいい。だからJSONが""でくくられてる
なんか忘れるべき。
ただテキストエディタのatomとかの設定ファイルや
package.jsonとかがJSONだったりするんだよな。
手書きは全部YAMLにすればいいのに。

456:デフォルトの名無しさん
16/09/23 23:18:21.05 oC1wKf1S.net
>>451
JSONは"しか使えないから選択肢はないだろうに
>>452
> 正直JSONを手書きするのはやめたほうが良いよ。
同意、JSならJSON.stringifyで十分だな

457:デフォルトの名無しさん
16/09/23 23:27:17.39 Da0YgZYz.net
元々はjavascriptをシリアライズする為の物だったんだよね?
手書きする事はあまり考えられてなかったんじゃねーの

458:デフォルトの名無しさん
16/09/23 23:30:53.64 laz5P8lZ.net
設定ファイルをjsonで書くの多いだろ
jsonに変換するツール書くかのか? w

459:デフォルトの名無しさん
16/09/23 23:35:07.87 aAYGOufH.net
ツールなんか使わなくともシリアライズする機能が各言語で用意されてるからな

460:デフォルトの名無しさん
16/09/23 23:46:44.92 laz5P8lZ.net
はあ?
じゃ【設定】はどこに書くんだよ w

461:デフォルトの名無しさん
16/09/23 23:51:52.39 2jAc0sAD.net
JSON.stringify({a:1, b:2}); とか、普通にやるだろ
JSONを全部手書きしたらプロパティ名をクォートで括らなければならんし、面倒くさい
簡単なJSONの書き換えなら手入力するかもしれんが

462:デフォルトの名無しさん
16/09/24 00:04:59.40 y4/Y2YH6.net
お前、設定項目が数個のプログラムしか作った事ないのか? w
そんでもってa:1をa:2に書き換えたら、その都度そのプログラム実行するのか? 大爆笑

463:デフォルトの名無しさん
16/09/24 00:11:43.60 8/0tEXHb.net
>>459
おまえは読解力が足りないアホなのか
数個だろうが何個あろうが、複数あるからシリアライズする価値がある
簡単な書き換えなら手入力するといってるだろ

464:デフォルトの名無しさん
16/09/24 00:18:30.72 y4/Y2YH6.net
お前はアホなのか?情報は一元管理が鉄則
これに反すると
"a":1を"a":2に書き換えてa:1をa:2に書き換えるハメになる
バカしかやらんわ

465:デフォルトの名無しさん
16/09/24 02:14:00.16 bcRI8Hfy.net
>>459
プログラムを実行も何も、ワンライナーじゃえの
var j=JSON.parse(fs.readFileSync(...));j.hoge=aaa;fs.writeFileSync(JSON.stringify..

466:デフォルトの名無しさん
16/09/24 06:05:18.86 54HKSWWZ.net
promptでダイアログボックスを表示して、キャンセルを押すとNaNが返ってきます。
ダイアログボックスのキャンセルはNullが返ってくるとあったのですが、何がいけないのでしょうか?
見入力でOKを押した場合と、キャンセルを押した場合とで違う処理をしたいと思っています。

467:デフォルトの名無しさん
16/09/24 08:35:07.11 8/0tEXHb.net
>>461
>>462藻指摘してるが、JSON.parseしてからJSON.stringifyするだけだろ
2箇所を同時に書き換えなければならない、なんて思ってるのはお前だけ

468:デフォルトの名無しさん
16/09/24 09:16:15.32 y4/Y2YH6.net
>>464
後出し大将現る
> JSON.stringify({a:1, b:2}); とか

469:デフォルトの名無しさん
16/09/24 10:00:58.09 T2jfomp1.net
>>463
知らんけどブラウザ依存じゃない?
URLリンク(jsbin.com)
Chromeだと false だった

470:デフォルトの名無しさん
16/09/24 12:47:39.74 NUokNM1t.net
>>465
元々はJSONを入力する時の話だったからJSON.stringifyを紹介した
お前さんが「JSONとオブジェクト初期化子の2箇所を同時に書き換えるのか」とアホな事をいってJSON読み込みの必要が出てきたからJSON.parseを紹介した
お前さんが何の設定する事を想定していてどのように編集しているのか、俺は知らん
俺から見れば情報を曖昧に出して後出ししたのはお前の方

471:デフォルトの名無しさん
16/09/24 12:51:25.63 NUokNM1t.net
後な
JSONの設定編集は当初の>>421の質問からは大きく話題がずれてる
JSONの設定に合わせてJavaScriptコードの入力スタイルを決める必然性はまるでない
君はそうなんだろうが、別の言語同士でクォートの記述を合わせる必要はないからな
GoogleのJavaScript Style Guideに合わせてシングルクォートを使う人もいるだろう
見た目を気にしてシングルクォートを使う人もいるだろう
HTMLで見慣れているダブルクォートを使う人がいるかもしれない
最終的には自分なりの好みや優先順位で決まるもので他人の考えを否定出来るほどの論理は基本的にない

472:デフォルトの名無しさん
16/09/24 12:58:58.18 YdAnVmLb.net
勝手に整合性を自己定義している時点で間違い

473:デフォルトの名無しさん
16/09/24 13:04:04.59 y4/Y2YH6.net
後出し大将あらため言い訳番長
【設定ファイル】って知らないらしい

474:デフォルトの名無しさん
16/09/24 13:56:12.12 e4J3FKju.net
>>470
何の設定ファイル?
JavaScriptには設定ファイルなんてないぞ。

475:デフォルトの名無しさん
16/09/24 14:33:05.17 y4/Y2YH6.net
おバカですねえ、揚げ足取りにすらなってない

476:デフォルトの名無しさん
16/09/24 15:28:20.96 e4J3FKju.net
揚げ足取りではなくて、質問なんだが?
質問なのに揚げ足取りに鳴るわけ無いだろw
それで、何の設定ファイル?

477:デフォルトの名無しさん
16/09/24 17:56:14.37 y4/Y2YH6.net
そんじゃ、質問で返してやるよ
キミが知ってる【設定ファイル】を読み込むプログラムを記述してる言語を答えよ。そしてその記述言語の設定ファイルの有無も答えよ。
これに回答できたら教えてあげる

478:デフォルトの名無しさん
16/09/24 18:01:32.86 fVgLvkCD.net
こっちにも貼っとくか…
URLリンク(i.imgur.com)
自分がレスを返してる相手がレスを返す価値のある相手かよく考えろよ

479:デフォルトの名無しさん
16/09/24 18:32:49.67 fP/MPmfi.net
AutopagerizeのSITEINFOはJSONだな
URLリンク(wedata.net)

480:デフォルトの名無しさん
16/09/24 20:38:30.75 6IMs83+U.net
>>474
C言語。そしてC言語に設定ファイルなんてものはない。

481:デフォルトの名無しさん
16/09/24 20:43:52.34 y4/Y2YH6.net
>>477
じゃ、教えてあげよう
atom

482:デフォルトの名無しさん
16/09/24 21:27:12.07 6IMs83+U.net
>>478
atomはテキストエディタ

483:デフォルトの名無しさん
16/09/24 21:37:31.21 y4/Y2YH6.net
>>479
そうだよ。javascriptの設定ファイルなんて誰も言ってないのに
どっかのバカがこんな(>>471)マヌケな事言い出したから。ハア? だよ
>>471
>>>470
>何の設定ファイル?
>JavaScriptには設定ファイルなんてないぞ。

484:デフォルトの名無しさん
16/09/24 22:28:02.67 /TWDHHcN.net
xjsonとか云うの出すらしいから
手書きも増えるし、要求されるかもしれない。

485:デフォルトの名無しさん
16/09/24 23:10:20.02 6IMs83+U.net
>>480
意味がわからん。
atomの設定ファイルをJSONで書くからって
C言語などでJSONに合わせてコード書く必要ないだろ。

486:デフォルトの名無しさん
16/09/24 23:39:01.41 y4/Y2YH6.net
>>482
それはキミがバカだからわからないんだよ
JSONで記述された設定ファイルの話をしていたら、どっかのバカが
>何の設定ファイル?
>JavaScriptには設定ファイルなんてないぞ。
と、絡んできただけ

487:デフォルトの名無しさん
16/09/25 00:39:56.37 0J+83ZC2.net
>>483
だからJSONで記述された設定ファイルの話を
JavaScriptのスレでする意味ないだろって話なんだが?

488:デフォルトの名無しさん
16/09/25 05:34:54.46 y4/VuarS.net
もういいよ
>>483が正しいって分かってるから
>>484は放っておこう

489:デフォルトの名無しさん
16/09/25 07:44:51.98 qiD59u34.net
そうでないかと危ぶんでいたが、やはり、Atomだったか
Atomの設定ファイルをテキストエディタで編集するのはcsonだと思うが、jsonを編集する事なんてあるのか?
改行もインデントもされてないjsonファイルを直接編集するのはいかれてるとしか思えないんだが
> 皆>>483が正しいって分かってるから
本人しか同意してないように読めるけどな

490:デフォルトの名無しさん
16/09/25 08:41:36.29 hrPU7kVw.net
>>463 >>466
jQuery UI のダイアログでも使えば?
OK, Cancelの2つのボタンしか無いなら、
if(OK){ }
else { }
でいいだろ
戻り値が、NaN というのは、数値変換エラーだから、プログラムにバグがある
>>486
圧縮された、JSファイルでも、Edgeの開発者ツールなどで、きれいに整形して表示してくれる

491:デフォルトの名無しさん
16/09/25 09:50:51.04 KU3wtz+G.net
>>484
>だからJSONで記述された設定ファイルの話を
>JavaScriptのスレでする意味ないだろって話なんだが?
足りない頭で必死に考えたんだろうが、バカ過ぎる
あるアプリの設定ファイルを設計したい、javascriptなのでJSONで行こうと思うが、
その際の注意点は…
全然問題ない

492:デフォルトの名無しさん
16/09/25 10:03:00.83 NgaD/H31.net
そうだよな、設定ファイルがJSON形式というだけ

493:デフォルトの名無しさん
16/09/25 10:13:15.83 qiD59u34.net
>>487
いや、「config.csonを編集することはあってもapplication.jsonを編集することはないんじゃない?」って事
テキストエディタの設定ファイルをテキストエディタで編集するなら、コメントやインデントをつけたくなるし、俺はAtomでJSONファイルを編集したことがない
> 圧縮された、JSファイルでも、Edgeの開発者ツールなどで、きれいに整形して表示してくれる
そういうツールがあるのは知ってる
JSONを整形するなら内部的にJSON.parseと同等機能を使っているはずだが、彼(>>465)はなぜか否定的というか馬鹿にしている感があるし、主張がちぐはぐすぎるんだよな…

494:デフォルトの名無しさん
16/09/25 10:27:53.21 qiD59u34.net
そもそも、JSONはテキストエディタで直接編集することを踏まえていない感がある
インデントはできるが、コメントは使えない時点でテキストエディタで編集する気が起きない(Atomで膨大な設定用プロパティを全て覚えるのは無理)
どうしても必要な状況があれば「JSON エディタ」的な何かを使うだろうな
実際には>>476のように設定用UIを別に作っているケースが多いと思う
Atomはユーザが直接編集するものはCSONかCoffeeScriptを使い、プログラム側で生成するものはJSONを使っている

495:デフォルトの名無しさん
16/09/25 12:11:22.44 qud+/4QR.net
うーん。設定用UIねえ
ゲームエンジン作ったときの話だけど
ユーザー側の設定用UIはボチボチ作るというかJSONにしないけど
そのエンジンの設定ファイルを書き出すためのツール作らないでしょ
バージョンアップの度にUI弄って書き出すのか?と言うことになるし
intファイルと同じく手編集もするものだと思うよ
で、コーディングと一緒に書いていくから、クォーテーションの整合性を気にするのも自然

496:デフォルトの名無しさん
16/09/25 12:22:42.62 iekzKwrb.net
JSONがテキストエディタで編集するのに向かないって話じゃないの?
CSVをテキストエディタで編集しないのと同じ

497:デフォルトの名無しさん
16/09/25 12:24:56.98 iekzKwrb.net
>>492
iniはコメントを許す仕様じゃなかったっけ
テキストエディタで編集する前提ならその設定行の意味するところをコメントで書くべきだと思うな

498:デフォルトの名無しさん
16/09/25 13:28:03.63 0J+83ZC2.net
>>488
> あるアプリの設定ファイルを設計したい、javascriptなのでJSONで行こうと思うが、
別にJavaScriptだからってJSONを使う理由はないし
RubyだってJSONを使うことだってある。
っていうか、その理屈だとYAMLはいつ使うんだよ?w
YAMLみたいな言語はないぞ。

499:デフォルトの名無しさん
16/09/25 13:32:12.13 0J+83ZC2.net
Atomの例でわかるように、JSONが" " でくくられているからって、
JavaScriptのコードは "" で括る必要はないね。

500:デフォルトの名無しさん
16/09/25 13:33:11.00 V/4I7o9u.net
>>495
YAMLみたいな言語、がようわからんね。
Yaml ain't markup language
なんだから、言語ではないよ。

501:デフォルトの名無しさん
16/09/25 13:33:55.60 0J+83ZC2.net
>>497
だから設定ファイルの流儀をソースコードに持ち込むなって話だよ。
atomの例で分かったろw

502:デフォルトの名無しさん
16/09/25 13:53:31.79 V/4I7o9u.net
>>498
そりゃ変だよ。
パースできるものとソースの書式が同じでなんの問題も無いし、
存在意義とか目的によって、サブセットになるのは至極当然な気がするが。

503:デフォルトの名無しさん
16/09/25 13:56:15.35 6/nEO/uB.net
evalでパースすれば関数もパース出来るし、式も使える
コメントもあるし、""をキーに使わなくていいし、''を使う事も出来る

504:デフォルトの名無しさん
16/09/25 14:39:36.71 0J+83ZC2.net
>>499
話がずれてる。同じだと問題があるなんて一言も言ってない。
同じにする必要はない。設定ファイルのことなんか忘れて
JavaScriptのやり方として良い方を選べって言ってる。
その例としてAtomを出したんだが?わからなかった?
Atomは設定ファイルにJSONを使っているが、
JSONが""だからって、ソースコードは""にする必要はない。

505:デフォルトの名無しさん
16/09/25 14:41:15.30 0J+83ZC2.net
>>500
それはJSONの仕様を満たしていないから
JSONではない。

506:デフォルトの名無しさん
16/09/25 14:54:10.10 hrPU7kVw.net
>>491
JSONでは、JSのコメントが使えないの?
それならダメだわ
Ruby, Groovy みたいに、言語そのものが、
設定ファイルとしても読める、DSL風の言語が優れている

507:デフォルトの名無しさん
16/09/25 15:05:45.98 0J+83ZC2.net
>>503
お前「言語そのものが設定ファイル」の意味分かってないだろ。
言語そのものを設定ファイルとして読むっていうのならどの言語でも可能だよw
コンパイルしないと実行できない言語の場合は
コンパイラを内蔵する必要があるだろうけど。

508:デフォルトの名無しさん
16/09/25 15:36:47.03 y4/VuarS.net
>>501


509: 「必要はない」じゃないんだよ 「ない」という答えを出すのは簡単 元の質問に、「そんなのどっちでも関係ない、そんなこと聞くな」というのは簡単 でもそれじゃつまらないから、しいて言えばの理由をひねり出してるんでしょ その前提分かってそういうこと言ってる?? しいて言えばそういうこと気にする人もいるということを言ってるの 別に一般的に気にする必要があるとは誰も言っていない



510:デフォルトの名無しさん
16/09/25 15:38:42.41 0J+83ZC2.net
はぁ?
じゃあGoogleのコーディングスタイルに合わせて
'' を使うべきだっていうのが正確だよw

511:デフォルトの名無しさん
16/09/25 15:39:13.51 0J+83ZC2.net
あ、見にくかったな。
' ' (シングルクォート)でくくるべきだっていうのが正解だよ。

512:デフォルトの名無しさん
16/09/25 15:51:35.05 0J+83ZC2.net
どっちが良いのかは、実際にどちらが多く使われてるかで決めたほうが良いよ。
URLリンク(sideeffect.kr)
理由がある場合は必然的に多く使われるし
理由がなくとも一般的なJavaScriptの書き方として統一しておいたほうが良い。
あともちろんJavaScriptとしての話なので、
ここで他の言語のルールを参考にする必要はまったくないw

513:デフォルトの名無しさん
16/09/25 15:59:27.55 0J+83ZC2.net
数もそんなにないし転記しようかね? (俺のスタイルと完全に一致してるw)
・最後にカンマ vs 最初にカンマ → 最後にカンマ
○ var obj = {
foo: 1,
bar: 2,
× var obj = {
foo: 1
, bar: 2
・スペース vs タブ → スペース
・関数名の後にスペースを入れる vs いれない → 入れない
○ function foo() {
× function foo () {
・引数の前後にスペースをいれる vs いれない → 入れない
○ function fn(arg1, arg2) {
○ if (true) {
× function fn( arg1, arg2 ) {
× if ( true ) {
・オブジェクト定義の:の前後にスペースを入れる → 値の前のみに入れる
○ foo: 1,
× foo:1,
× foo : 1,
・条件文のキーワードの後にスペースを入れる → 入れる
○ if (true) {
× if(true) {
・シングルクォート vs ダブルクォート → シングルクォート

514:デフォルトの名無しさん
16/09/25 16:00:55.47 rgw8PMte.net
前から疑問なんだが
JSONはなぜ大文字なの?

515:デフォルトの名無しさん
16/09/25 17:02:28.76 +OU/FywJ.net
>>510
JavaScript Object Notationの略であり、英語ではこの様に単語の頭文字を抜き出した略語を他の語と区別するために大文字で表記する慣習があるから

516:デフォルトの名無しさん
16/09/25 17:17:23.26 0J+83ZC2.net
つーかatomの例を出したんだから
そこから理解しろよw
JSONとJavaScriptは別物なんだから
JSONがダブルクォートだからって、
ソースコードまでJSONに合わせる必要ねーだろ。
文字列をくくるのはシングルクォートだし、
オブジェクトのキーであればそもそもクォートでくくらない。

517:デフォルトの名無しさん
16/09/25 17:20:48.99 iekzKwrb.net
>>503
JSONではコメントを使えないのでAtomではテキストエディタで編集する前提のファイルにはCSONを使っている
上でJSON云々で暴れている人はJSONをまるで理解してしないと思われる

518:デフォルトの名無しさん
16/09/25 18:25:59.06 afVL0VXc.net
どっかでみた感じのテンションの上がり方だな。
尻カンマではなく頭改行カンマ派だと言うことはおいといて、
なぜその言語のサブセットか自体であるべきではないと言い切っちゃうんだろう。
最悪、パーサが無くても解釈出来るようにだと思うんだが。

519:デフォルトの名無しさん
16/09/25 18:34:17.91 KU3wtz+G.net
>>513
頭悪いな
じゃpackage.jsonでも、なんでもいいぞ
atomを使ってないのは正解だ

520:デフォルトの名無しさん
16/09/25 20:12:32.35 0J+83ZC2.net
知らないかもしれないが、package.jsonっていうのはnpmの話だ。
ソースコードをみれば、何が言いたいのかわかるだろう。
URLリンク(github.com)
JSONの流儀に合わせるやつなんていない。

521:デフォルトの名無しさん
16/09/25 22:29:45.99 Pt+ww3lU.net
package.jsonをテキストエディタで書く人がいるとは…
彼は反論する度にボロが出てくるな

522:デフォルトの名無しさん
16/09/26 00:08:05.47 fnqveAbt.net
奴隷のように決められたパターンでしか使わないなら、手書きしないでも済むだろうね

523:デフォルトの名無しさん
16/09/26 00:15:10.40 juGwjv/D.net
>>518
奴隷のようにって必要なくね?w
package.jsonは決められたパターンでしか
使わなくて済むようになってる。
だから手書きする必要もない。
OK?

524:デフォルトの名無しさん
16/09/26 00:17:22.71 fnqveAbt.net
それは奴隷のキミだけ

525:デフォルトの名無しさん
16/09/26 00:23:18.72 vYe4FNCy.net
奴隷のように決められたフォーマット(JSON)でしか書かない人は誰だろうね

526:デフォルトの名無しさん
16/09/26 00:32:59.19 juGwjv/D.net
なんかまだ気づいてないみたいだけど、npmの
ソースコードはダブルクォートじゃなくて
シングルクォートを使ってるんだよ。
そしてオブジェクトのキーはダブルクォートでくくらない。
これがJavaScriptの標準的なコーディングスタイルなんだよね。
JSON? 関係ない話だね。

527:デフォルトの名無しさん
16/09/26 05:04:27.74 ta1cG+2z.net
そのコーディングスタイルでは関係ない、無視しているというだけで
気になる人も居るだろうということを否定することはできない

528:デフォルトの名無しさん
16/09/26 18:00:26.14 BmhEYJ2V.net
ang2で2つの要素をforするにはどうすればいいですか?
定義リストをforで回したいです

529:デフォルトの名無しさん
16/09/26 22:08:18.59 vSvkRnqZ.net
>>524
ang2とは?
状況は詳しく具体的に

530:デフォルトの名無しさん
16/09/26 22:38:26.95 juGwjv/D.net
ang2っていったらAngular2のことに決まってるだろ

531:デフォルトの名無しさん
16/09/26 22:44:16.17 xBbiKNTT.net
配列の要素を順番に、かつ非同期に処理するにはどうすりゃいいの?
[a,b,c].forEach((x)=>{
//?
});
コメントの部分にawait書いても当然エラー
(x)=>{の前にasync書いても並列で処理されるだけ
aを使った非同期処理が完了したらbを使った非同期処理を開始したい
なおforや再帰は使わないものとする

532:デフォルトの名無しさん
16/09/26 23:41:32.26 juGwjv/D.net
>>527
あんたが言ってる「非同期」の正確な意味は?
JavaScriptはシングルスレッドだから並列に処理することは出来ない。
昔も今もそれは同じ。
スレッドを使うにはJavaScript外の機能を使うしかない。
つまりはブラウザではDOM APIの内部で使われてるスレッドを間接的に使うか
もう少し明確にスレッドを使っていることを明言しているWebWorkersを使うということ。
Promise(await/async)を使うだけならばシングルスレッドでもできる。
どういう意味で「非同期」と言っているか、本当にやりたいことは何かを言ってくれ。

533:デフォルトの名無しさん
16/09/26 23:55:09.05 xBbiKNTT.net
>>528
たとえば以下で'a'を表示したら1秒待って'b'を表示させる(以下'c'も同様)にはどうすればいい?
forや再帰は無しで
['a','b','c'].forEach((x)=>{
new Promise(resolve=>{
setTimeout(()=>{
console.log(x);
resolve();
}, 1000);
});
});
setTimeoutはapiだからスレチ?

534:デフォルトの名無しさん
16/09/27 00:26:52.16 2eVdEzmX.net
>>527だけど上のほうに書いてあったreduceでthenを繋げる方法で解決しました

535:デフォルトの名無しさん
16/09/27 09:19:03.59 lbwP9zfe.net
自分でeachAとか作って
await ['a','b','c'].eachA( async関数 )
のように書けるようにする必要がある
折角のasync関数なのにPromiseをこねくり回す位なら
for文使ったほうが絶対に良い

536:デフォルトの名無しさん
16/09/27 09:33:31.51 Bz+GHRpv.net
>>531
だよな、基礎知識の欠落

537:デフォルトの名無しさん
16/09/27 10:20:45.69 4v6Nawqj.net
>>528
言ってることがめちゃくちゃですがな。
並列・平行、同期・非同期についてもっと調べてからものを言ってくれ。

538:デフォルトの名無しさん
16/09/27 10:49:37.22 5SWTtAlN.net
ループ中にsetTimeoutという概念が理解できないわ

539:デフォルトの名無しさん
16/09/27 11:02:56.83 +FylPIiv.net
>>534
Watch dogタイマー知っている?
あれなんか、簡単な例だと思うよ。

540:デフォルトの名無しさん
16/09/27 12:31:43.94 r4YBGm4y.net
>>535
>>530の解決を見ると例にもならないな

541:デフォルトの名無しさん
16/09/27 12:41:12.30 +FylPIiv.net
>>536
? 配列要素処理のお話の事なの??
前からお話していた、非同期処理の周期タイマー利用のお話だと思ったけど。
配列要素処理なんだから、mapやreduce使えば済むんだもんね。
タイマーなんか関係ないわ。

542:デフォルトの名無しさん
16/09/27 12:49:21.75 BPXrtVfk.net
>>534
JSはシングルスレッドだから、イベントを非同期に見せかける。
イベントキューにイベントを投入して、その処理を待たずに、関数が先にリターンする
同期処理なら、インターネットとの通信など、
そのイベントが終了するまで、関数がリターンされない。
処理終了まで待つから、そこで処理が止まる
ちなみに、setTimeoutに、0を指定しても、イベントキューからイベントを取り出すのは、
次のサイクルになるので、最低でも、4msかかる
また非同期では、try-catch は使えないので、
昔ながらの戻り値で、エラーかどうかを判断する
つまり、イベントキューにイベントを投入するだけなので、
処理がそこで止まっていないので、すぐ次の処理へ進んでいくから
そしてどこかのタイミングで、イベントのコールバック関数が呼ばれるから、
どちらが先に呼ばれるか、タイミングが予測できないから、
よくバグるし、再現性がないので、非常に困る

543:デフォルトの名無しさん
16/09/27 13:25:00.83 QIjlBim5.net
>>529
setTimeoutはまあ非同期処理のダミーだとして回答すると、Promiseをプレースホルダーとしてthenでチェーンをつないでいけばいいので以下の様になる。
var promise=Promise.resolve();
['a','b','c'].forEach((x)=>{
promise=promise.then(()=>{
new Promise((resolve,reject)=>{
setTimeout(()=>{
console.log(x);
resolve();
}, 1000);
});
});
});

544:デフォルトの名無しさん
16/09/27 20:48:56.77 pg5DZ73n.net
>>533
質問者とは意思疎通できたから
君とは話さなくていいかなって思ってるよw

545:デフォルトの名無しさん
16/09/28 08:12:30.32 zSRNZ6Ju.net
何かを理解したい、何かの知識が無い人間とだけ意思疎通できるってみっともないと気づかんのかねぇ。
そりゃ単に、語弊があったり正しいとは限らない言い方をしている事に自分が気づいてないのに加えて、飛んでくるマサカリ避けて終わりな、
とても低レベルな偽技術者ですってドヤ顔されてる気分。

546:デフォルトの名無しさん
16/09/28 12:21:35.90 3RTmt4Yz.net
すみませんdwrについての質問はここでよろしいのでしょうか

547:デフォルトの名無しさん
16/09/28 12:49:31.69 RDlboUCA.net
Access-Control-Allow-Origin: *
の設定をサーバーでしているのに、クロスドメイン制約でアクセス出来ません
chromeです
networkタブを見たら、アクセス自体が行われていないので、ヘッダの確認も出来ていないはずです

548:デフォルトの名無しさん
16/09/28 21:34:41.98 NVy1RbGE.net
>>541
> 何かを理解したい、何かの知識が無い人間とだけ意思疎通できるってみっともないと気づかんのかねぇ。
何を言ってるんだ?
今回意思疎通をしたいのは質問者であってお前じゃない。
知識がない人と意思疎通をするんじゃなくて
質問者と意思疎通をするのが目的。
そもそも俺は質問者が知識がないとはは思わないし、
お前、失礼なやつだな。失礼なだけのやつだな。

549:デフォルトの名無しさん
16/09/28 22:27:51.60 EXLHhJLL.net
>>544
「何かを理解したい」と「何かの知識が無い」は=じゃなくて、「または」だよ。
失礼と言うなら、「俺が『何かを理解したい人間は何かの知識が無い人間だ』と誤解しているに違いない」と言う発想自体が失礼だと思うけど。
お前がやってんのは、Excelの使い方が分からん人の「A列で3番目に大きい数字が欲しいんだけどどんな関数ある?」って質問に、嬉々としてIFとかRANKの使い方説明してるようなもの。
パソコンの大先生以外の何なのかわからんレベル。
何で?→それ以上の数字を更に検索したいんだよ→めんどくさいし使い捨てならA列コピって並べ替えちゃえば良いじゃん
があって然るべき。

550:デフォルトの名無しさん
16/09/29 02:37:58.14 kaW1Iqgz.net
それは間違ってるよ
ここは似非回答者が知識をひけらかす場所だからね
けして人助けするスレではない
そこんとこ勘違いしないように!

551:デフォルトの名無しさん
16/09/29 18:44:44.84 KUMvFnA4.net
>>546
babel君のオナニースレだからねえ。

552:デフォルトの名無しさん
16/10/04 11:14:52.40 R4xZGg72.net
オブジェクトをjson化した文字列がサーバーサイドにあり、
それをクライアントのJSに渡してオブジェクトに復元したいのです。
JSON文字列のままJSに渡してJSでJSON.parse()する方法と、
サーバーサイドでDeserializeしてオブジェクトを復元して、
それをJSに渡すのと
どっちが普通ですか?文字列の大きさは数メガバイトくらいです。

553:デフォルトの名無しさん
16/10/04 12:19:52.18 Vg4EUv8s.net
>>548
JSでJSON.parse()が普通
通信路は負荷が無いならなるべくテキストでな

554:デフォルトの名無しさん
16/10/04 18:21:44.79 RzipCig6.net
<input type="button" name="aaa" value="クリック" onClick="Disp_on_off('disp');">

<TABLE border="1">
<TR>
<TD>1行目:</TD><TD>aaaaaa</TD>
</TR>
<TR id="disp">
<TD>2行目:</TD><TD>nnnnnn</TD>
</TR>
</TABLE>

555:デフォルトの名無しさん
16/10/04 18:22:25.04 RzipCig6.net
function Disp_on_off(id){

var disp_zyoutai = document.getElementById(id).style.display;

if(disp_zyoutai=="none"){disp_zyoutai = "block";}
else{disp_zyoutai = "none";}

document.getElementById(id).style.display = disp_zyoutai;

}
テーブルの2行目をクリックボタンを押すたびに表示非表示にしたいんですが
クリックを2回押して2行目を表示させるとテーブルが崩れてしまいます
テーブルが崩れないようにするにはどうしたらいいんですか?

556:デフォルトの名無しさん
16/10/04 19:59:17.28 oFIFwTqQ.net
>>551
if(disp_zyoutai=="none"){disp_zyoutai = "table-row";}

557:デフォルトの名無しさん
16/10/04 21:56:34.90 px5zXLds.net
>>551
function Disp_on_off(id) {
 var style = document.getElementById(id).style;
 style.display = (style.display === "none") ? "table-row" : "none";
}

558:デフォルトの名無しさん
16/10/04 21:56:43.31 RzipCig6.net
>>552
ありがとう^^

それではcssでdisplay:none;したものをjavascriptでdisplay="block";
しようとしても表示されませんcssでnoneしたら表示は無理なんでしょうか?

559:デフォルトの名無しさん
16/10/04 22:00:08.07 px5zXLds.net
function Disp_on_off(id) {
 var style = document.getElementById(id).style;
 style.display = {none: "table-row"}[style.display] || "none";
}

560:デフォルトの名無しさん
16/10/04 22:01:54.54 px5zXLds.net
>>554
CSSを使って表示の制御をするのはいいやり方だ。
CSSを使って表示の制御をするなら、CSSを使って切り替えれば良いのだ

561:デフォルトの名無しさん
16/10/04 22:10:22.18 px5zXLds.net
<input type="button"value="クリック" onclick="toggleDisp('disp')">

<table>
<tr><td>1行目:</td><td>aaaaaa</td></tr>
<tr id="disp"><td>2行目:</td><td>nnnnnn</td></tr>
</table>

table { border-collapse: separate }
table, td { border: 1px solid #000 }
#disp { display: none }
#disp.visible { display: table-row }

function toggleDisp(id) {
 document.getElementById(id).classList.toggle("visible");
}

562:デフォルトの名無しさん
16/10/05 02:32:23.82 ei6gN13W.net
>>549
レスありがとうございました。
>JSでJSON.parse()が普通
そうですか。知らなかったです。
>通信路は負荷が無いならなるべくテキストでな
ちなみに、テキスト以外でデータを送ると問題が出る場合がありますか?

563:デフォルトの名無しさん
16/10/05 05:46:49.56 R0YCD/Ke.net
テキスト以外でデータを送るとは?
WSでバイナリ形式オブジェクトで送るの?

564:デフォルトの名無しさん
16/10/05 19:44:50.64 v4W0ZcSs.net
>>558
パケット見ながらデバッグしてるときに涙が出る程度だよ

565:デフォルトの名無しさん
16/10/05 20:03:03.59 ei6gN13W.net
>>560
そんなデバッグが出来るのかあ?

566:デフォルトの名無しさん
16/10/07 11:00:25.76 NhgFAWyY.net
>>561
Just do it!

567:デフォルトの名無しさん
16/10/09 00:31:57.19 jFWGfuyl.net
angular2

Error: (SystemJS) Can't resolve all parameters for ActivatedRoute: (?, ?, ?, ?, ?, ?, ?, ?).
と出ます。どうすればいいでしょうか?

568:デフォルトの名無しさん
16/10/10 00:56:23.62 tytyuWsD.net
FirefoxのアドオンGreaseMonkeyつかって開いたページにあるワードが含まれてたらアラートするようにしたいんですがどうすればいいんでしょうか?

569:デフォルトの名無しさん
16/10/10 01:00:02.76 tytyuWsD.net
>>564補足
とりあえずRegExp.testつかってやろうとおもったんですけどページの内容をどうやれば検索対象ストリングにいれればいいのかわかりません。

他にももっとスマートな方法あったら教えてください。

570:デフォルトの名無しさん
16/10/10 02:26:33.91 6bVjh2uR.net
>>563
「Can't resolve all parameters for ActivatedRoute」で検索!

>>564-565
Node.textContent
URLリンク(developer.mozilla.org)

var text = document.getElementsByTagName("body")[0].textContent;

<body> か、<head> の内容もいるなら、<html> 以下を取得すればいい

571:デフォルトの名無しさん
16/10/10 11:38:06.31 UL1Nitj4.net
>>566
ありがとうございます
出来ました

572:デフォルトの名無しさん
16/10/10 12:14:26.53 ToNMYAzu.net
>>567
あなたは>>563
それとも>>564

573:デフォルトの名無しさん
16/10/10 13:26:43.29 UL1Nitj4.net
>>563です

574:デフォルトの名無しさん
16/10/10 14:12:18.24 tytyuWsD.net
>>566
わてもできたよ。
リンクまではっていただきありがとうございます。
ちなみに[0]はなにですか?
リンク先にも書いてなかったし、なくても出来きたけど。

575:デフォルトの名無しさん
16/10/10 18:59:33.24 Fn778QpQ.net
>>564
なんで猿なんだよ?

576:デフォルトの名無しさん
16/10/10 21:04:02.56 tytyuWsD.net
>>571
よくわかりません。
さるつまりGreaseMonkey以外に使える方法があるということですか?

577:デフォルトの名無しさん
16/10/10 21:27:42.34 c135JfrF.net
>>570
getElementsByTagNameは疑似配列を返す
[0]がなかったら動かないはずだ

578:デフォルトの名無しさん
16/10/11 05:55:53.39 GK6S8De2.net
そうなんですか

579:デフォルトの名無しさん
16/10/11 22:11:58.12 Ld7sCMib.net
document.body でいいだろ。
というか、<html>/<body> 以外は特に querySelectorAll() をできるだけ使え。
もう getElementById(), getElementsByTagName() を使わないようにすべき。
なぜ getElementById() を使わないか?
var e = document.getElementById('E');
if (e) {console.log(e.id);}
と、わざわざ注意して if を書くよりも
[...document.querySelectorAll('#E')].forEach(e => console.log(e.id));
とか
[for (e of document.querySelectorAll('#E')) e].forEach(略);
とか
Array.from(document.querySelectorAll('#E')).forEach(略);
とか
Array.prototype.slice.call(document.querySelectorAll('#E'), 0).forEach(略);
とかの方が簡潔で高抽象で安定するだろ。
さらに、もし
Array.of(document.getElementById('#E')).filter(e => !!e).forEach(略);
なんて書いたら、filter が if と同じことになるわけで、結局、querySelectorAll() にしときゃ良かったとなるわけだ。
なぜ getElementsByTagName() を使わないか?
これも同様。略。
更に、getElementsByTagNameNS() も選択肢にしなきゃならないXHTMLだったらどうすんのって理由もある。

580:デフォルトの名無しさん
16/10/12 00:01:01.78 bJD9Q0hO.net
なぜってjQueryがあるのに、わざわざそんな冗長なことを
書く必要が無いからでは?
毎回Array.prototype.slice.callとかアホらしいw
var e = document.getElementById('E');

var $e = $('#E');
[...document.querySelectorAll('#E')].forEach(e => console.log(e.id));
[for (e of document.querySelectorAll('#E')) e].forEach(略);
Array.from(document.querySelectorAll('#E')).forEach(略);
Array.prototype.slice.call(document.querySelectorAll('#E'), 0).forEach(略);

$('#E').each(function() { console.log(e.id) });

581:デフォルトの名無しさん
16/10/12 00:14:50.40 bJD9Q0hO.net
訂正
$('#E').each(function() { console.log(this.id) });

582:デフォルトの名無しさん
16/10/12 02:21:42.25 7Aphq+NE.net
javascriptファイルを自分のパソコンでは実行できるけれど
他人のパソコンでは実行できないようにしたいのですが、
そんな事可能でしょうか?

583:デフォルトの名無しさん
16/10/12 05:13:14.63 jhqwQTsX.net
>>578
認証性にして自アカウントでログインしなければsctipt要素を出力しなければいい

584:デフォルトの名無しさん
16/10/12 08:42:49.25 L1c8TvqF.net
>>575
あなたがお勧めする手法はgetElementsByTagNameでも使えるのでgetElementsByTagNameを使わない理由にはならない
違いを説明するならliveに言及すべきたが、liveは設計思想次第で利便性が逆転する部分なのでどちらか優れているという話でもない
ただし、同一tagNameの要素ノード群を得るなら基本的にはgetElementsByTagNameの方が優れているだろう
URLリンク(html5experts.jp)

585:デフォルトの名無しさん
16/10/12 20:38:12.37 ao75rK/8.net
>>576
NodeListはイテラブルではないので[...hoge]は使えないし、
Array.fromを使うんなら、forEachを使う必要がない。
やり直し。

586:デフォルトの名無しさん
16/10/12 22:33:54.70 bJD9Q0hO.net
>>581
レスする相手間違えてるぞw
俺の答えは「jQuery使えば普通にeachが使えて古いブラウザでも動いて短く書ける」だ

$('#E').each(function() { console.log(e.id) });

587:デフォルトの名無しさん
16/10/15 05:07:47.47 lTqPwJwr.net
間違いなく要素配列を返す$関数を自作した方がいい。
普通の配列はforEachを使ってるのに、要素配列はeachを使わないといけないのは不便でおかしいから。

jQueryのまずいところの一つはライブラリと言いながら重厚でフレームワークのよう。
一つ使い始めたらその世界全てを受け入れるしか無い。それがまた最新の標準から見て古臭いという点。

つまり機能の補足としてeach的なのが使いたいだけならjQueryを持ってくるのはアホだし、
もっと全体を考えるなら、jQueryよりよっぽど標準と親和性の高いまともなフレームワークを使ったほうが良い。

588:デフォルトの名無しさん
16/10/15 08:49:38.99 WUtYR0l7.net
>>583
それは自己妄想だろ?w

589:デフォルトの名無しさん
16/10/15 10:59:50.26 8Bk/hmGM.net
> jQueryのまずいところの一つはライブラリと言いながら重厚でフレームワークのよう。
ん? どこが?
フレームワークというのは、フレームワークから決まった関数が呼ばれるから
その中身を書くもの。ライブラリは用意された関数を呼び出すもの。
どう見てもライブラリなんだが。DOM操作の代わりでしか無い。

590:デフォルトの名無しさん
16/10/16 20:58:57.45 LWTFfjDf.net
JavaScript入門者です。
クロージャで躓いています。

function Counter() {
var n = 0;
return function () {
return ++n;
};
}
var a = Counter();

a(); // 1
a(); // 2
a(); // 3

これでなぜ増えていくのかが分かりません。
a(); を呼ぶ度に、var n = 0; が実行されるはずなので、増えていかないと思うのですが…
なぜ var n = 0; は実行されないのですか?

591:デフォルトの名無しさん
16/10/16 21:05:46.88 jbRBUkYK.net
>>586
仕様です

592:デフォルトの名無しさん
16/10/16 21:07:45.08 cgLhTvvH.net
>>586
aの中に何が入っているか、書き出してみてごらん

593:デフォルトの名無しさん
16/10/16 21:21:34.20 LWTFfjDf.net
>>588
書き出してみるには、どうすればいいのでしょうか?

594:デフォルトの名無しさん
16/10/16 21:27:41.70 cgLhTvvH.net
>>589
手で

595:デフォルトの名無しさん
16/10/16 21:33:14.24 r3gdRhV6.net
>>586
a()は
function () {
return ++n;
};
でしょ
n = 0は実行されてない

596:デフォルトの名無しさん
16/10/16 21:34:44.24 LWTFfjDf.net
>>590
手? こういうことですか?

a() {
var n = 0;
return function () {
return ++n;
};

597:デフォルトの名無しさん
16/10/16 21:36:43.79 CBxMhCnR.net
>>586
n = 0は一番最初に起動したときに
初期設定として入力されるだけで、あとはこれは呼び出されません

598:デフォルトの名無しさん
16/10/16 21:42:13.57 LWTFfjDf.net
>>591
なぜ返り値だけになるのですか?
var n = 0; も一緒じゃないんですか?

599:デフォルトの名無しさん
16/10/16 21:42:56.22 UhSHekdN.net
>>589
console.logかFunction#toString

600:デフォルトの名無しさん
16/10/16 21:44:43.73 LWTFfjDf.net
>>593
「一番最初に起動したとき」というのは、
a(); // 1
のときでしょうか?

601:デフォルトの名無しさん
16/10/16 21:57:12.53 LWTFfjDf.net
>>595
それはどうやればいいのでしょうか?
参考書を読んでいるだけなので、デバッグの仕方もよく分かりません。

602:デフォルトの名無しさん
16/10/16 21:57:36.43 cgLhTvvH.net
function Counter() {
var n = 0;
return n;
}

var a = Counter();

この場合にaの中に何が入っているかわかるのなら、
>>586でaの中に何が入ってるかは
置き換えるだけだろ

603:デフォルトの名無しさん
16/10/16 21:58:23.73 cgLhTvvH.net
> なぜ返り値だけになるのですか?

>>598で返り値だけになるのなんて当たり前だよね?

604:デフォルトの名無しさん
16/10/16 22:04:46.53 LWTFfjDf.net
>>598
aの中には、
var n = 0;
return n;
が入ってるのではないのですか?
なぜ、n = 0; は省かれるのですか?

605:デフォルトの名無しさん
16/10/16 22:12:37.29 LWTFfjDf.net
>>600
間違えました。
aには返り値が入ります。なので、>>598の場合は、aにはnが入って、つまり返り値だけになるのは分かります。

しかし、a(); の場合は、
var n = 0;
return n;
なぜ、こうならないのかが分かりません。

606:デフォルトの名無しさん
16/10/16 22:21:40.38 22TTvDK/.net
そうするのが論理的で整合的だってことで話し合ってそういう実装にすることになっただけだよ。
JS以前からある思想を踏襲してるんじゃない?
Pythonかなんか知らんけどお

607:デフォルトの名無しさん
16/10/16 22:26:43.07 r3gdRhV6.net
>>594
>なぜ返り値だけになるのですか?
キミがCounter()をそのように作ったから

>var n = 0; も一緒じゃないんですか?
return function() {return n++;}
のどこにn=0がある?

608:デフォルトの名無しさん
16/10/16 22:32:07.26 LWTFfjDf.net
あー、分かりました。
オブジェクトのコピーと混同してました。

var a = Counter();
確かにこれで、var n = 0; は入らないですね。返り値を代入しているだけだから。
すなわち、aには返り値の無名関数が入ると。

で、当然、a();には n = 0 は入ってなくて無名関数だけだから、呼ぶ度に加算される。

609:デフォルトの名無しさん
16/10/16 22:33:40.23 LWTFfjDf.net
>>603
今になって思えば、まさしくその通りです(笑)

610:デフォルトの名無しさん
16/10/16 22:35:45.09 LWTFfjDf.net
>>598
何度もよく読み返してみて自分の誤解に気づきました。
ありがとうございます。

611:デフォルトの名無しさん
16/10/16 22:57:07.10 cgLhTvvH.net
あー、うん。そしてconsole.log(a)すれば
aの中身は表示されるよ。

612:デフォルトの名無しさん
16/10/16 23:27:01.47 LWTFfjDf.net
>>607
出ました。これが!

function () {
return ++n;
}

よーし、明日からまた頑張るぞ!

613:デフォルトの名無しさん
16/10/17 09:44:12.70 JGocT82E.net
>>586
いや、nじゃなくてaを考えろよ

614:デフォルトの名無しさん
16/10/17 10:02:05.92 5vFd9dbv.net
>>609
周回遅れってわかってる?

615:デフォルトの名無しさん
16/10/17 10:35:49.18 SVcsoL0R.net
++n;
これに何の意味、活用性があるのか?
小一時間問い詰めたい

616:デフォルトの名無しさん
16/10/17 11:35:06.10 5vFd9dbv.net
>>611
キミは周回遅れ以前、出場資格ない

617:デフォルトの名無しさん
16/10/17 11:44:08.56 EnKnOK0g.net
>>611
ベーシックしか知らない方ですか?

618:デフォルトの名無しさん
16/10/17 12:15:27.10 k5b8iytR.net
>>611
「インクリメントした値を返す意味がある」としか答えようがないな
リファレンスを読み直しておいで

619:デフォルトの名無しさん
16/10/17 19:20:09.73 wBVSlf54.net
>>610
馬鹿は口を閉じてろよザッコww
何仕切ってんだこのヴァカがw

620:デフォルトの名無しさん
16/10/17 19:49:26.05 5vFd9dbv.net
仕切ってなんかいない 見下してるだけだ

621:デフォルトの名無しさん
16/10/17 20:08:48.29 wBVSlf54.net
>>616
馬鹿は口を閉じてろww

622:デフォルトの名無しさん
16/10/17 22:12:14.86 MSv6dw6i.net
>>586
現実的にこんな処理が必要になる状況ってあるの?

623:デフォルトの名無しさん
16/10/17 22:21:09.76 xorYyxjj.net
let result = "1\r\n2\r\n".match(/^/mg);
console.log(result);
1の前と、2の前と、最後の\nの前にマッチしてほしいが
1の前と、1つ目の\nの前と、2の前と、2つ目の\nの前と、2つ目の\nの後ろにマッチしてしまう
let result = "1\r\n2\r\n".match(/$/mg);
console.log(result);
1の後ろと、2の後ろと、2つ目の\nの後ろにマッチしてほしいが
1の後ろと、1つ目の\rの後ろ、2の後ろと、2つ目の\rの後ろと、2つ目の\nの後ろにマッチしてしまう
CRLFを含んだ文字列を処理するうまい方法はないものでしょうか?
仕様とあきらめて、LFのみに変換するしかないのでしょうか?

624:デフォルトの名無しさん
16/10/17 22:29:29.43 xorYyxjj.net
>>619
訂正
1の前と、2の前と、2つ目の\nの後ろにマッチしてほしいが

補足
もう少しわかりやすく書くと、以下のようになってしまうのを修正したいです
result = "1\r\n2\r\n".replace(/^/mg, "!");
^1^
^2^
^
result = "1\r\n2\r\n".replace(/$/mg, "$");
1$$
2$$
$

625:デフォルトの名無しさん
16/10/17 22:49:51.36 5vFd9dbv.net
>>617
お前、口開けてキーボード叩いてるのか?
知恵遅れの習性は謎だらけだ

626:デフォルトの名無しさん
16/10/17 23:36:27.61 Da5IbuDC.net
口閉じろっていうのは喋るな(書き込むな)って意味だろう?

627:デフォルトの名無しさん
16/10/18 01:13:52.49 sMICGAt6.net
>>619-620
>1\r\n2\r\n
>1の前と、2の前と、2つ目の\nの後ろに、マッチしてほしい

1の前・2の前は、行頭だろ。
2つ目の\nの後ろは、全文字列の最後

2つに分けて考える。
それか、全文字列の最後は無視して、正規表現とは別に処理にする

628:デフォルトの名無しさん
16/10/18 01:35:52.87 g5oHSCaR.net
> 1の前と、2の前と、最後の\nの前にマッチしてほしいが
「最後の\nの前」は「\rと\nの間」
1と2は「\nの後ろ」だったのに最後だけなぜ「\nの前」になるのだろうか?

629:デフォルトの名無しさん
16/10/18 03:24:17.45 sMICGAt6.net
>>619
>1の前と、2の前と、最後の\nの前にマッチしてほしい

>>620
で訂正している

>1の前と、2の前と、2つ目の\nの後ろにマッチしてほしい

630:デフォルトの名無しさん
16/10/18 08:02:45.99 De2Roj8e.net
>>618
ちょいちょいあるんじゃない?

>>625
/m消して、\n探しちゃいかんの?

631:デフォルトの名無しさん
16/10/18 09:15:43.00 Vsk5WAhm.net
>>626
>618
ドンな時?

632:デフォルトの名無しさん
16/10/18 09:38:02.36 cWVmYcde.net
>>627
サンプルのコードは単純だけど、たとえばリターンに記述されている
”++n”を三項演算子に書き換えて、上限値に来たらリセットする
ループカウンターにする。
あとは、解析を困難にする為の無駄なコードとして扱う。

サンプルの処理が単純だけど、少し手を加えれば、どの様にでも使える。

633:デフォルトの名無しさん
16/10/18 11:46:33.12 g5oHSCaR.net
itaratorのように外部参照不可にする時、かな

634:デフォルトの名無しさん
16/10/18 11:53:07.40 De2Roj8e.net
>>627
モジュールの中全体で一意な番号が欲しいとき。
シングルスレッドが保証されてるので、正確にはインクリメント演算子は必要無いけど。

>>628
3項演算子もifも、比較文が必要でミスヒットすると悲しいから、Moduloの方が楽だと思う。

635:628
16/10/18 12:16:45.66 cWVmYcde.net
>>630
>モジュールの中全体で一意な番号が欲しいとき。
”一意な番号”と云うと固定のenum宣言が頭に有ったけど
番号をmap管理すれば色々と使えますね。
なるほど。

>3項演算子もifも、比較文が必要でミスヒットすると悲しいから、Moduloの方が楽だと思う。
モジュールもある程度意味を持たせなければいけない考えなモノで
分岐処理も例に上げました。

636:デフォルトの名無しさん
16/10/18 16:19:34.97 Vk/gbf1F.net
誰か気象庁の高解像度レーダー画像取得スクリプト作ってないですか?
低速低容量で使いたいので。

古いの(低解像度)
URLリンク(hakobe932.hatenablog.com)
URLリンク(chameleoncyber.org)

URLリンク(www.kototoka.com)
・・・
標準のやつでもいいかな

637:デフォルトの名無しさん
16/10/19 17:30:13.76 BuiU+rAj.net
>>632
自作したら?
ES関係ないのでスレ違い

638:デフォルトの名無しさん
16/10/26 19:54:01.06 wme53G2u.net
インデントの仕方がよくわからないです。

var a={b:function (){}};


ってあった場合どんなふうにインデントするのがいいんですかね。

639:デフォルトの名無しさん
16/10/26 22:19:57.91 RGR5F2yC.net
整形でググる

640:デフォルトの名無しさん
16/10/26 22:49:40.05 wme53G2u.net
医療整形のぺーじばかりでしたよ。

641:デフォルトの名無しさん
16/10/26 22:58:30.79 nn4J9Ce2.net
>>634
var a = {
     b:function (){
      alert(“おまえは💩”);
     }
    };

642:デフォルトの名無しさん
16/10/26 23:02:07.76 bmG2AFzy.net
var a = {
        b:function (){
        }
    };

643:デフォルトの名無しさん
16/10/26 23:23:52.60 Tc/AxpVE.net
>>634
> ってあった場合どんなふうにインデントするのがいいんですかね。
インデントじゃなくてスペースの入れ方だろ?

採用するコーディングスタイル基準による。
こういうのはちゃんとチェックするツールが有って、今だとeslintっていうのが有名。

eslintではスタイルを選ぶことができるが(さらに独自でカスタマイズもできる)
その中で有名なのが、eslint:recommended と airbnb だろう。

eslint:recommended は比較的緩くてその書き方でも問題ない。
airbnbの場合は、var a = { b: function () {} };
(実際は const a = { b() {} }; を推奨される)

改行入れる場合はこうだな。
var a = {
b: function () {}
,
};

あと必ず { の後で改行入れろとか言ってるやつがいるけど、
最近はそれを採用している規約は少ない気がする。

スペースの有無は決まってることが多いけど、
改行の有無は、長ければ改行を入れるという決まりでいいだろう。
もちろん { で改行した場合はインデントを一つ増やす。

644:デフォルトの名無しさん
16/10/26 23:24:20.49 Tc/AxpVE.net
訂正

改行入れる場合はこうだな。
var a = {
 b: function () {},
};

645:デフォルトの名無しさん
16/10/26 23:32:21.50 RGR5F2yC.net
>>634
別に何でもええんやで

646:デフォルトの名無しさん
16/10/26 23:50:35.79 d99+vlL4.net
>>640
もともとの>>634にはなかった末尾カンマを追加する無能

647:デフォルトの名無しさん
16/10/27 00:43:35.94 wk+FybyZ.net
ありがとう、インデントではなくスペースを入れるという考え方か。
著名なソース読んでも、機械的には入れてない気がしてたんだ。
にしても無名関数が読み慣れん。

648:デフォルトの名無しさん
16/10/27 00:50:40.68 WMnZ+0Yu.net
適当にコーディングしていても、ツールで変換すればいい

F12開発者ツールで、JSファイルを整形して開くだけでも、正しく直してくれないか?

649:デフォルトの名無しさん
16/10/28 12:59:15.72 pmKmGehb.net
小数点第一位までしかない1以下の小数を四捨五入して1か0にする方法を教えてください
0.1を0
0.5を1
Math.ceilだと1以上ないとだめでした

650:デフォルトの名無しさん
16/10/28 13:34:11.62 dnmvvXjV.net
>>645
Math.ceil()は繰り上げ、四捨五入ならMath.round()

651:デフォルトの名無しさん
16/10/28 13:47:06.25 OnyL+paE.net
>>645
そんなめんどくさい事しなくても、0.5足してfloorでいいんじゃないの?

652:デフォルトの名無しさん
16/10/29 05:43:28.19 gGx5G/bS.net
0.5足すとか、気持ちわるいよ。
少しずれたりしないの?

653:デフォルトの名無しさん
16/10/29 12:07:08.55 yHYEAqhD.net
>>648
0,5未満なら0,5を足して四捨五入して
0.5以上ならそのまま四捨五入したらいいじゃん

654:デフォルトの名無しさん
16/10/29 12:17:53.47 cEJXxPE7.net
>>648
ズレなくて、切りが良い。

655:デフォルトの名無しさん
16/10/29 14:11:06.80 ypb3Na8r.net
>>650
ずれたんだけど
alert(0.49999999999999999+0.5); // 1

656:デフォルトの名無しさん
16/10/29 14:47:07.98 z8URZLOb.net
>>651
alert(0.49999999999999999); // 0.5

問題外

657:デフォルトの名無しさん
16/10/29 15:25:53.31 cEJXxPE7.net
>>651
jsfiddle.netで実行した結果を上げる。

alert(0.49999999999999999+0.5); // 1
alert(0.49+0.5); // 0.99
alert(0.499+0.5); // 0.999
alert(0.4999+0.5); // 0.9999
alert(0.49999+0.5); // 0.9999899999999999
alert(0.499999+0.5); // 0.9999990000000001

この環境の精度では、小数点以下四桁迄なら大丈夫になる。

”小数点第一位までしかない1以下の小数を四捨五入して1か0にする方法を教えてください”
なので、「小数点以下二桁は無い」事になる。
処理手順は、0.5を足して小数部分を捨てれば良い。

658:デフォルトの名無しさん
16/10/29 18:07:27.02 O/3wAc5r.net
いや四捨五入する関数があるのに何でわざわざ計算してから切り捨てとかしなきゃいけないん?

659:デフォルトの名無しさん
16/10/29 18:16:09.69 P+i+TDJ5.net
>>647
マイナスの時に想定外の動作

660:デフォルトの名無しさん
16/10/29 18:55:02.99 Lu2qC+Nv.net
まさに>>654のいう通り
Math.floorを優先する理由はない

661:デフォルトの名無しさん
16/10/29 19:15:01.21 mMTmoVUB.net
そもそも四捨五入する理由はない
欲しがりません勝つまでは
我慢しろ

662:デフォルトの名無しさん
16/10/29 19:27:12.02 Lu2qC+Nv.net
四捨五入は質問(>>645)の要件なのでどう考えても必要

663:デフォルトの名無しさん
16/10/29 19:52:25.39 cEJXxPE7.net
>>655
コードにする以前の問題。
入力で認めていれば、エラー対応が必要だし
入力で処理に影響する情報を排除すればそのままで済む。

そもそもマイナス扱う処理で四捨五入使うかな?

664:デフォルトの名無しさん
16/10/29 19:53:28.10 68KH7Ulz.net
マイナスのときにどっちに寄せたいかじゃないの?
-0.6を四捨五入でどっちにしたいか。
roundで0にできたっけ?

665:デフォルトの名無しさん
16/10/29 19:57:05.98 eSvC8hNl.net
> 小数点第一位までしかない1以下の小数を四捨五入して1か0にする方法を教えてください
小数点第一位までしかないんだから
Math.round() で解決だろ

バカ

666:デフォルトの名無しさん
16/10/29 20:06:28.52 JHScm7pH.net
ビット & なら Math 演算も不要
( (n) * 2) & 1
n が数でなくとも 0 か 1 になるが

667:デフォルトの名無しさん
16/10/29 20:37:58.28 mNGjlCUC.net
ビット演算は32bitなのが問題
速度を稼ぐために制限付きを承知で使うならいいだろうが

668:デフォルトの名無しさん
16/10/30 01:00:03.39 O7t7tgSU.net
>>659
負の場合、例えば-20000.4は
> 小数点第一位までしかない1以下の小数
をみたすので、エラーでは無い
> 四捨五入して1か0にするには
四捨五入する桁を可変にすれば良いのかな?

669:デフォルトの名無しさん
16/10/30 05:11:47.90 hqgegRgF.net
>>663
ビット演算が速度を稼げるという根拠は?
例えば直近のV8 nightlyのアセンブラで書き直させたBuiltin_MathRoundingOperationよりも速いと言えるの?
結局無駄なf64<->i32キャストが発生するし、実際は速くないよ
速く使おうと思ったらUSE_ASM_Context内や、よっぽど変数の扱いを気を付けて
キャストが全体として起こらないようにしなければならない

670:デフォルトの名無しさん
16/10/30 05:55:23.89 h7Os3ze3.net
変数の扱いを気を付けてキャストが全体として起こらないようにすると
ビット演算は速度を稼げると
>>665は申しております。

671:デフォルトの名無しさん
16/10/30 10:21:13.83 UrnMpVuD.net
小数一桁の数値を丸めるだけのことで何揉めてるの?

672:デフォルトの名無しさん
16/10/30 10:28:59.39 TSDZ4OFC.net
1/10が0.1になるのがキモイです
普通0じゃないですか?
1.0/10なら0.1ですが

673:デフォルトの名無しさん
16/10/30 11:32:50.61 Z+vVaA9C.net
>>667
要求仕様に対する、解析能力の確認ですね。

674:デフォルトの名無しさん
16/10/30 12:21:33.43 dH+/za6/.net
>>668
URLリンク(ja.wikipedia.org)

675:デフォルトの名無しさん
16/10/30 12:26:08.71 TSDZ4OFC.net
>>670
javaの1/10は出来ないの?
切り捨てたり切り上げたり面倒なんだけど

676:デフォルトの名無しさん
16/10/30 12:39:39.62 dH+/za6/.net
>>671
出来ない
他言語の常識を持ち込むのがナンセンス

677:デフォルトの名無しさん
16/10/30 12:42:33.00 TSDZ4OFC.net
>>672
mjky

678:デフォルトの名無しさん
16/10/30 16:50:23.32 v2s+0v0Z.net
>>673
Math.floor(1/10); であなたの目的は達成できるが、数値演算をJavaと同じにするのは無理

679:デフォルトの名無しさん
16/10/30 17:02:25.81 TSDZ4OFC.net
>>674
負数もそれでいける?
負数だと絶対値が切り捨てで増えて、切り上げで減るとか聞いたけど

680:デフォルトの名無しさん
16/10/30 21:42:24.67 v2s+0v0Z.net
>>675
やってみれば分かることをなぜ聞くかな
試してから聞いてくれ

681:デフォルトの名無しさん
16/10/31 03:18:16.89 vSxBS38U.net
JavaScriptでPOJO的なクラスを宣言することの存在意義ってありますでしょうか?

例えば、何かしらで永続化するとして
class Person {
 constructor(name, age);
}

const p = new Person('あいうえお', 20);
// WebStorage?で永続化してもとに戻す。ここではJSONで
const json = JSON.stringfy(p);
const p1 = JSON.parse(json);

p1でコード補完なんて効くのか??
JavaScriptでPOJOクラスみたいなものを宣言する存在意義がわかりません。教えて下さい。

682:デフォルトの名無しさん
16/10/31 04:43:21.97 lofvnrlW.net
プロトタイプを持たないオブジェクトを作りたいのならクラスを使わない方がいい
JSON出し入れした場合などはプロトタイプが削除されどうせinstanceof等機能しないのだから。
お作法的にはcreatePersonという関数にする

まあクラスでもとんでもなくいけないということはない
それでわかりやすくなるというのならね

683:デフォルトの名無しさん
16/10/31 05:10:17.86 vSxBS38U.net
>JSON出し入れした場合などはプロトタイプが削除されどうせinstanceof等機能しないのだから。
ですよね。

>まあクラスでもとんでもなくいけないということはない
>それでわかりやすくなるというのならね
デシアライズした後はあんまわかりやすくならなさそうだったので質問してみした。

ありがとうございます。

684:デフォルトの名無しさん
16/10/31 06:43:17.85 xWfuY90D.net
>>677
POJOの意味をわかってないねw

URLリンク(ja.wikipedia.org) より

> POJOの概念は、明らかにPOJOという用語より前から存在する。なぜなら、
> オブジェクトクラスの自然なありさまとは、何ら特別なものではないからである。
> この用語の功績は、何らかのフレームワークを使う利点がその複雑さを補って
> あまりあるかどうかということを開発者に考えさせるという点にある。
> シンプルな設計の方が優れている場合もあるということを思い出させる明確な用語がなくては、
> 複雑なフレームワークが十分な理由のないままシステムアーキテクチャに含まれてしまいやすい。
> POJOによる設計が一般的になるにつれて、大規模フレームワークの機能の一部はPOJOでも
> 実現できることが明らかになってきており、実際に必要な機能領域に対する選択肢は増えている。
> HibernateとSpringがその例である。

意味わかる? POJOっていうのは単なるクラス。フレームワークとかのクラスを継承しない
単なるクラス。それがシンプルで良いという考え方から生まれた用語。

JavaScriptでも同じ。単なるクラスがシンプルで良い。
wikipediaに書いてあるように、特別なものじゃないんだが?

永続化? 補完? そんなものPOJOの意義とは全く関係無い。

685:デフォルトの名無しさん
16/10/31 07:43:46.18 vSxBS38U.net
ありがとうございます。確かにPOJOの意味をしっかり理解してなく
ただシンプルぐらいの感覚で使ってたんですが、
ただ聞きたかったのは「POJOの存在意義」ではなく、
永続化するシンプルなクラスの「クラス宣言」をする存在意義をJavaScriptで知りたかったんです。
実際JavaScriptにはクラスというものはなくて
class Person {
 constructor(name, age);
はただのシンタックスシュガーらしいのですが、わざわざこんな宣言するメリットあるのかなと
それがが聞きたかったのです。
つまり、直接
var p = { };で作ってもいいんじゃないのかと。

686:デフォルトの名無しさん
16/10/31 07:47:51.97 vSxBS38U.net
つか、「存在」ってのつけたのがまずかったですね。
存在ってつけたからPOJOの存在意義って風に。すみまんせん。日本語がおかしかったです。
>永続化するシンプルなクラスの「クラス宣言」をする意義
ただの意義でした。

687:デフォルトの名無しさん
16/10/31 18:41:59.71 lofvnrlW.net
「クラス」って言うのはね、ただのオブジェクト指向をより良く扱うための概念なのよ。
だから、シンタックスシュガーもクソもなくてJSに「クラス」という概念はあるし、
素朴なプロトタイプベースで何もかもこなすのは非効率だから、昔から何らかのクラスシステムが使われてきた。
ただオブジェクト指向のやり方が「クラス」に縛られていないというだけ。
そして標準class構文は1つのより良いクラスシステムを提供するもの。

クラスから継承を取ったら何が残るかと言うと、それは見た目だよ。
createPersonのような関数で済ますのが普通だが、
もし他にそういった物がまだなく、全てクラススタイルで記述されていたらどうだ?
意味はなくとも意義がある。

>>var p = { };で作ってもいいんじゃないのかと
それは全体的な状況による。
例えばclass構文ガチガチのスタイル縛りの設計に無遠慮入れ込む事はできない。

688:デフォルトの名無しさん
16/10/31 18:44:45.95 pApy3Eby.net
var p={};←タプル
class Hoge←OOPのクラス
として使ってる

689:デフォルトの名無しさん
16/10/31 21:26:05.75 xWfuY90D.net
>>682
JavaScriptに限らず言語の文法っていうのは
可読性を上げるために作られているんだよ。

そして可読性を上げる方法の一つが、コードの中から読まなければ
いけないコードの量を減らすこと。

一定のパターンに対して名前をつけてその名前を覚えてしまうことで
読まなければいけない量を減らすことができる。デザインパターンもその一つだけど文法も同じ。
シンタックスシュガーも読まなければいけなかったコードを
短い言葉で置き換えてそれを覚えてしまうことで可読性を上げることにつながってる。
(とは言えなんでも覚えてしまうのは不可能だから、覚える価値があるものだけに絞るべき。
例えばプロジェクト固有の関数は覚える価値が少ない。言語仕様はどこでも使える知識だから覚える価値がある)

また文法っていうのは、汎用的な命令だたものを専用的な命令に置き換えることが
できるように進化してきている。例えばgotoはあちこちに飛ぶことができるものだが、
これをより専用化してbreakやretrunやthrowなどができた。
これはgotoだけでは色んな意味があるから何のために使っているのかわかりにくいが
専用的なbreakであればループを途中で抜けるんだろうなってことがわかるから。

JavaScriptはclassが無くても作れていたが、だが人間は関数とクラスを区別していた人が多かった。
だからその人間の感覚に近づけることが可読性向上につながるわけ。
可読性の問題なのだから無くてもできるのは当たり前。

var p = { }; これだとただのハッシュなのかクラスなのか、色んな使い方ができるから
これだけ見てもわかりづらいだろ? 使っている箇所を読まなければ分からない。

class Personであればnewして使うんだろうなってことが明確になる。
読まなくて済むわけだよ。これが可読性という話。


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