X



+ JavaScript の質問用スレッド vol.141 +
レス数が1000を超えています。これ以上書き込みはできません。
0001Name_Not_Found垢版2019/07/05(金) 18:13:28.39ID:j+97lL/8
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください

■規則/推奨ルール
質問者は !slip:vvvvv を名前欄に、その後は「レス番」+!slip:vvvvv
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」から解離した議論はよそでやること。
■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。
【条件】期待する回答の条件を書いてください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです

■前スレ
+ JavaScript の質問用スレッド vol.140 +
https://mevius.5ch.net/test/read.cgi/hp/1558249632/
0002Name_Not_Found垢版2019/07/05(金) 18:15:18.49ID:j+97lL/8
2 名前:Name_Not_Found[] 投稿日:2019/05/19(日) 16:08:41.33 ID:2J4OYdDV
■FAQ

◆開発者ツール(Developer Tools)の基本的な使い方
 ▼諸注意
  - 本説明では Google Chrome の開発者ツールの名称に従います。他ブラウザで使う場合は適宜読み替えて下さい。
  - Edge- でコンソールを使うには予め開発者ツールを起動しておく必要があります(開発者ツールを起動しないと console.log() が機能しません)
  - Safari はデフォルトで開発者ツールが無効な為、有効に設定する必要があります。
  https://developer.apple.com/library/safari/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/GettingStarted/GettingStarted.html
 ▼要素を検証
 1. ページ上で右クリックして [要素を検証]
 2. [Elements] パネルが開き、対象のDOMノードが選択される(選択対象が目的の要素でなければ [Elements] パネル上で選択し直す)
 3. 右側のサイドバーから知りたいステータス名のタブを選択する
   - [Styles] タブ … CSSプロパティの指定値を表示 (※カスケードによって上書きされたプロパティは取り消し線で表示される)
   - [Computed] タブ … CSSプロパティの算出値を表示("font-size: 1em" を指定していても算出後の "*px" で表示される)
   - [Properties] タブ … 選択したDOMノードのプロパティを表示
 ▼コンソール
 1. JavaScript コード上で console.log('Hello, World!'); と入力
 2. [Ctrl] + [Shift] + [I] キー(IE は [F12])で開発者ツールを開き、[Console] パネルを開く
 3. [Console] パネルに "Hello, World!" と表示される
 (※window.alert() は String 型に変換されますが、console.log() は Object 型の中身をそのまま表示してくれます。)
0003Name_Not_Found垢版2019/07/05(金) 18:16:00.72ID:j+97lL/8
■FAQ(続き)
◆JavaScriptの実行速度
JavaScriptの速度は「ブラウザ名」「ブラウザのバージョン」「PCスペック」に依存します(ブラウザのバージョン毎に最適化具合が異なります)。
速度の疑問解消の為に http://jsperf.com/ (githubのアカウントが必要です)にコードをUPしてブラウザ毎に速度計測する事を推奨します。

例外として、仕様における理論上の速度が明確になっている場合があります。
例えば、正規表現によるマッチング処理を考えた場合、「RegExp#test > RegExp#exec > String#match」は ES5 仕様で保証(要出典)されています。
ES5 仕様において RegExp#test が最も処理数が少なく、String#match が最も処理数が多いことが明確だからです。
ブラウザによっては RegExp#test の最適化が十分でなく、String#match の最適化が RegExp#test より十分であれば逆転する可能性はありますが、各メソッドの最適化が一律であればこの前提が崩れる事はありません。

■各種仕様
◆ Standard ECMA-262
http://bclary.com/2004/11/07/ (ECMAScript 3 HTML版)
http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/ (ECMAScript 3 和訳)
http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
http://tsofthome.appspot.com/ecmascript.html (ECMAScript 5.1 和訳)
http://www.ecma-international.org/ecma-262/6.0/ (ECMAScript 6 / ECMAScript 2015)
http://kangax.github.io/compat-table/es5/ (ECMAScript 5 compatibility table)
http://kangax.github.io/compat-table/es6/ (ECMAScript 6 compatibility table)
◆ HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/
http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20130528/Overview.html (HTML5.1 部分訳)
http://www.hcn.zaq.ne.jp/___/WEB/WebStorage-ja.html (Web Storage 和訳)
0004Name_Not_Found垢版2019/07/05(金) 18:16:34.32ID:j+97lL/8
■各種仕様 (続き)
◆ Document Object Model (DOM) / CSS Object Model (CSSOM)
http://www.hcn.zaq.ne.jp/___/WEB/DOM4-ja.html (DOM Standard (DOM4) 和訳)
http://www.w3.org/TR/DOM-Level-3-Events/ (DOM3 Events)
http://www.w3.org/TR/uievents/ (UI Events)
http://www.hcn.zaq.ne.jp/___/WEB/cssom-ja.html (CSSOM 和訳)
http://www.hcn.zaq.ne.jp/___/WEB/cssom-view-ja.html (CSSOM View Module 和訳)
◆ その他のWeb関連仕様
http://domparsing.spec.whatwg.org/ (DOM Parsing and Serialization - innerHTML等)
http://www.hcn.zaq.ne.jp/___/WEB/XHR-ja.html (XMLHttpRequest 和訳)
http://www.hcn.zaq.ne.jp/___/WEB/File_API-ja.html (File API 和訳)
http://www.whatwg.org/specs/ (WHATWGの仕様一覧)
◆ MDN (Netscape/Mozilla)
https://developer.mozilla.org/ja/docs
◆ MSDN Library
https://msdn.microsoft.com/en-us/library/ie/hh828809 (Internet Explorer API)
http://msdn.microsoft.com/ja-jp/library/yek4tbz0.aspx (JavaScript)
http://msdn.microsoft.com/ja-jp/library/cc427807.aspx (JScript)
http://msdn.microsoft.com/ja-jp/library/cc409712.aspx (DHTML)
◆ JavaScript Garden (ja)
http://bonsaiden.github.com/JavaScript-Garden/ja/
◆ JSON (JavaScript Object Notation)
http://www.json.org/json-ja.html

■テンプレ案
http://fiddle.jshell.net/fH4cC/180/show/light/

■FAQ
http://fiddle.jshell.net/vSqKr/44/show/light/
0005Name_Not_Found垢版2019/07/05(金) 18:17:20.21ID:j+97lL/8
■参考URL
ダウンロード、CDN
http://jquery.com/download/
ブラウザサポート
http://jquery.com/browser-support/
jQuery UI
http://jqueryui.com/
jQuery UI ダウンロ−ド
http://jqueryui.com/download/
リファレンス等
http://alphasis.info/
http://www.jquerystudy.info/
http://js.studio-kingdom.com/
【翻訳まとめ】jQuery 3.0 アップグレードガイド - Qiita
http://qiita.com/fmy/items/345a264a1cf2e2a73f62
0007Name_Not_Found垢版2019/07/05(金) 18:18:26.66ID:j+97lL/8
Q. jQueryはどのバージョンを使えばいいのですか?
A. IE9以上であれば、jQuery 3.0を使用してください。
IE8以下にも対応するならば、jQuery 1.12を使用してください。

補足

jQuery 1.9 までは一系統しかなく、古いブラウザも含めて全て対応していました。
その後、古いブラウザを切り捨てるためにバージョンを分岐させました。
古いブラウザにも対応した1系(1.10、1.11、12)と
古いブラウザを切り捨てた2系(2.0, 2.1, 2.2)です。

1系と2系は対応ブラウザの違いだけで機能は全く一緒です。
機能が同じなのにメジャーバージョンが違っているのが分かりにくい
ということでバージョン番号の付け方を変えることになり、
新たに古いブラウザを切り捨てたjQuery 3.0、そして古いブラウザにも対応した
jQuery Compat 3.0がリリースされる予定でした。

しかしマイクロソフトが古いIEのサポートポリシーを変更し
サポート中であるOSで動く、最新のIEしかサポートしなくなったために、
2016年1月でVista上のIE8のサポートが終了しました。

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



ライブラリ固有の質問はこちらへ

JavaScript ライブラリ総合質問所 vol.5
https://mevius.5ch.net/test/read.cgi/hp/1465399470/

>>1 私見
べつに lodash だけを特別視する訳ではありませんが、vanilla JS だと長くなるコードが
lodash ならサクっと書けるコードがあったりします。
「別解として lodash の短いコードを出す」くらいはココでも良いような気がします(あくまで私見)
0010Name_Not_Found垢版2019/07/05(金) 21:34:57.15ID:???
流石に何十スレも言われ続けてるんだから
何らかの形でちょっとずつでいいからテンプレ直していこうよ
理由があればなんで勝手に>>1変えたんだとか言わないからさ
そのままっていうのは良くない

とりあえずまず>>2以降をバッサリ変えよう
ドキュメントのリンクもMDNとES仕様のLS版以外いらないでしょ
0011Name_Not_Found垢版2019/07/05(金) 23:25:49.42ID:j+97lL/8
言い出しっぺの法則は滅んだのか
0012Name_Not_Found垢版2019/07/06(土) 04:20:24.63ID:???
何らかの形でちょっとずつでいいからテンプレ直していこうよ

とりあえずまず>>2以降をバッサリ変えよう
0013Name_Not_Found垢版2019/07/06(土) 06:40:03.23ID:???
>>12
>>1に比べて>>2以降はスレ落ちを防ぐための何人が目にしてるかわからないような低価値テンプレでしょ
>>1を変えるのは慎重にならないといけないし、とりあえず手を付けなくてもいいけど
>>2以降の列挙されているのを整理することは「ちょっと」でしょ
0014Name_Not_Found垢版2019/07/06(土) 09:09:19.91ID:???
>>9
> ライブラリ固有の質問はこちらへ

>>5-7でライブラリ関連のテンプレを入れている矛盾を何とかしてくれ
0015Name_Not_Found垢版2019/07/06(土) 11:48:03.83ID:CFoZXQXg
>>14
あっちにライブラリのテンプレが入ってないから
やむをえないでしょう

「そもそもあっちとは遥かに勢いが違う」というのも否めない
それだけ「ライブラリ固有の質問に需要がない」といえるのかも知れない


ただ lodash だと短く書けるという話はチラホラ出てるから
こっちで敢えて lodash 全面禁止する必要性があるかどうか…?
00162 の後半垢版2019/07/06(土) 11:52:48.99ID:CFoZXQXg
■各種仕様
◆ Standard ECMA-262
http://www.ecma-international.org/ecma-262/6.0/ (ECMAScript 2015, いわゆる ES6)
https://www.ecma-international.org/ecma-262/9.0/ (ECMAScript 2018)
https://tc39.es/ecma262/ (ECMA-262 最新ドラフト)
◆ HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/
http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20130528/Overview.html (HTML5.1 部分訳)
http://www.hcn.zaq.ne.jp/___/WEB/WebStorage-ja.html (Web Storage 和訳)

削るべきか要審議
http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
http://tsofthome.appspot.com/ecmascript.html (ECMAScript 5.1 和訳)
http://kangax.github.io/compat-table/es5/ (ECMAScript 5 compatibility table)
http://kangax.github.io/compat-table/es6/ (ECMAScript 6 compatibility table)
0017Name_Not_Found垢版2019/07/06(土) 11:54:59.58ID:CFoZXQXg
3 の後半、だった
0018Name_Not_Found垢版2019/07/06(土) 11:56:10.03ID:CFoZXQXg
>>4 は多分誰も読んでないから全て削除で良いかと
即死判定は事実上ないから
0019Name_Not_Found垢版2019/07/06(土) 11:57:24.56ID:CFoZXQXg
読んでいる人が殆ど居ないかも知れないが
>>8 は 2 へ繰り上げる方が良いかも
0020Name_Not_Found垢版2019/07/06(土) 11:58:45.88ID:CFoZXQXg
現時点での >>2 の必要性は、私には分からん
要らんという意見が多数を占めるなら、以後削ることになろうかと
0021Name_Not_Found垢版2019/07/06(土) 12:03:19.15ID:CFoZXQXg
>>3 の前半も、
「要らん」という意見が多数を占めるなら(以下同文
0022Name_Not_Found垢版2019/07/06(土) 12:05:34.80ID:CFoZXQXg
整理すると

>>2 要らんのと違う?
>>3 前半は要らんのと違う?
後半は >>16
>>4 要らんのと違う?
>>5-7 維持すべきだとおもう
>>8 は2へ繰り上げるべきだとおもう
0023Name_Not_Found垢版2019/07/06(土) 13:44:55.22ID:???
くだらないことをしてるから、いつもどおり参戦したいんだが、
今、個人プロジェクトが架橋に入ってるので、
残念ながら放置。また次回のスレ立て頃に遊びに来るよ
0024Name_Not_Found垢版2019/07/06(土) 18:25:02.56ID:???
>>1 >>8 >>16 の3スレでいい
ちなみに今リンクするならES9.0ではなく10.0ね
0026Name_Not_Found垢版2019/07/07(日) 04:17:37.73ID:???
>>15
> あっちにライブラリのテンプレが入ってないから

なら、あっちのテンプレ整備すればいい
0027Name_Not_Found垢版2019/07/07(日) 04:48:13.15ID:???
>>15で「需要がない」と言っておきながら、

> それだけ「ライブラリ固有の質問に需要がない」といえるのかも知れない

>>22でライブラリ関連のテンプレだけ残そうとする理由は何?
一貫性がなくて、結論だけ読むと、ライブラリ房に見える
0028Name_Not_Found垢版2019/07/07(日) 04:52:23.22ID:???
現状、ライブラリは自己主張の激しい人が大半なわけで、>>1の趣旨に反する以上は専用スレでいいと思うけど

lodashがいいならシェア1位のjQueryもいいだろ、とか屁理屈こねる人が必ず出てくる
0029Name_Not_Found垢版2019/07/07(日) 05:43:02.00ID:???
>>1
> 質問者は !slip:vvvvv を名前欄に、その後は「レス番」+!slip:vvvvv
前スレでは「回答者だけ」だったルールが「質問者だけ」に改変した意図を詳しく
https://mevius.5ch.net/test/read.cgi/hp/1558249632/22

公平性を期すなら「両方」に課すべきルールだと思う
まあ、「任意ルールは守られない強制すべき」という結論が前スレで出ているわけだが、性善説でルールを決めたのなら公平にすべき
0030Name_Not_Found垢版2019/07/07(日) 07:04:52.02ID:???
強制じゃないと効果なしと前スレで散々言われたのに、なぜ強制でなく、しかも質問者に絞ったのか?
0031Name_Not_Found垢版2019/07/07(日) 09:03:23.07ID:???
仕様関連で最低限残すべきは、ES2019, HTML Standard, DOM関連ぐらいで、それ以外はFAQのリンク集に追加するぐらいでいい
http://fiddle.jshell.net/vSqKr/44/show/light/
Conpatibilityはcaniuseあたりが妥当か
ライブラリは向こうでやって
0032Name_Not_Found垢版2019/07/07(日) 13:33:06.54ID:???
+ JavaScript の質問用スレッド vol.140 +
https://mevius.5ch.net/test/read.cgi/hp/1558249632/22

22 名前:Name_Not_Found (ワッチョイ 938f-h/tS)[] 投稿日:2019/05/23(木) 08:49:53.51 ID:t2rWukz00
前スレから。



このスレは age 進行でお願いします。

質問者は !slip:vvvvv を名前欄に、その後は「レス番」+!slip:vvvvv
回答者は !slip:vvvvv を名前欄に

質問者のかたは
1!slip:vvvvv
みたいなかんじで、よろしくお願いいたします。
0033Name_Not_Found垢版2019/07/07(日) 13:38:23.17ID:???
>>28
jQuery / lodash ともに全面禁止にするべきなの?
0034Name_Not_Found垢版2019/07/07(日) 13:39:31.73ID:???
主要ライブラリ列挙は要らんな
それがどんなライブラリなのかの文章がないと紹介にならないし
0035Name_Not_Found垢版2019/07/07(日) 13:42:56.93ID:???
>>33
例外を認めるぐらいなら禁止した方がいい
0036Name_Not_Found垢版2019/07/07(日) 13:48:40.72ID:???
>>33
全面禁止じゃないけど
サポートする範囲としてはES仕様と、Web標準だけというのを明記したほうがいい

特定のライブラリの機能の質問はライブラリスレですること
このライブラリを使わないといけないんですとかいうのは金払って依頼しなさいということになる
あとはパフォーマンスやらブラウザ固有の機能や実装問題も対象外
0037Name_Not_Found垢版2019/07/07(日) 14:12:45.28ID:???
つまりReactやAngularも禁止ってこと?
0039Name_Not_Found垢版2019/07/07(日) 14:18:29.62ID:???
サポートとか良く分からんし、ココは無償サポートの場でもなし
ブラウザの機能や実装の話が対象外って意味分からん
0040Name_Not_Found垢版2019/07/07(日) 14:29:46.47ID:???
>>39
そこは俺も分からなかった
標準仕様の話だけをしたい(実装の話はしたくない)意図は読み取れるが、それは>>36の好みだろと思った
0041Name_Not_Found垢版2019/07/07(日) 14:35:35.14ID:???
実際に動くかどうかは二の次ってこと

つまり○○したいんですがどうすれば良いんですか?

Web標準の仕様にはあります。
(まだ実装されてません)

動くかどうかは話をしたくない
0042Name_Not_Found垢版2019/07/07(日) 14:38:16.99ID:???
もうそれならタイトルを変えたほうが良いんじゃねーの?

「JavaScriptとウェブ標準の仕様について語るスレ」にしたほうが良いでしょ
当初のスレの意味と違う話をしたいなら
0043Name_Not_Found垢版2019/07/07(日) 15:27:32.10ID:???
>>41
それはお前が回答する度に前提条件を前置きすればいいんじゃないか?
全体ルールにする意義が分からん
0044Name_Not_Found垢版2019/07/07(日) 15:41:20.02ID:???
>>39,40
WebはWebであってブラウザのためのものではないから
Web標準もブラウザのためだけのものではない
ブラウザはWebのためにあっても、Webがブラウザのためにあるわけではない

Webの仕様から離れて実際ブラウザがどう動くかという話はブラウザスレでやってもらわないと
パフォーマンスの話も、基本的にそれはブラウザという1アプリの話なんだからスレチ

そもそもここはJS単体の質問スレ
だけどこのスレは今Web制作板にあるので外様APIはWeb APIを中心に話すべきということになる
ブラウザの話までは含まれない
0045Name_Not_Found垢版2019/07/07(日) 15:47:32.43ID:???
>>44
ここは「Web制作のJavaScriptスレ」であって「JavaScript仕様スレ」ではないぞ?
仕様の話に限定したいなら、仕様スレでやれ

第一、仕様を理解している人だけが質問対象者なら、今までの質問者は99%アウトだ
質問スレでそんな運用が可能とは思えん
0046Name_Not_Found垢版2019/07/07(日) 15:51:42.67ID:???
これは俺の好みについて言ってるんじゃないよ
テンプレ議論からのこのスレのポリシーについて話してる

Webというものがブラウザのためだけのものでなくなって久しいんだから
基本ポリシーとしてブラウザの話も受け入れるのならば
ブラウザ以外のWeb技術を導入しているプラットフォームの話題も受け入れないとおかしいことになる

俺はそれが実質無理だろうと思ったから、ブラウザも含めてプラットフォームの話は無しにしたほうがいいと言ってるのであって
もしなんでも受け入れてもいいよというのであれば、賛成する

だけどブラウザの話は受け入れるのに、ブラウザよりもスレが盛り上がっていない、
下手したら存在しない他のプラットフォームの質問を専用スレでやれと蹴り出すのはだめだと言っている

俺の好みの話をするならば、立派な外部スレが有るブラウザの話も受け入れるのであれば、
矮小な他プラットフォームは尚更ここで吸収してあげないといけないだろうということ
0047Name_Not_Found垢版2019/07/07(日) 15:53:21.50ID:???
>>45
仕様を理解だとかそういうことは一言も言っていない
Webというものはブラウザのためのものでなくなってから久しい
あとの言いたいことは>>46を読んでくれ
0048Name_Not_Found垢版2019/07/07(日) 15:55:39.70ID:???
Web制作板なんだから、「Web制作上、必要なJavaScript実装」は許容するに決まってるだろ
実装全体を禁止する理由がない
0049Name_Not_Found垢版2019/07/07(日) 15:57:46.45ID:???
> 基本ポリシーとしてブラウザの話も受け入れるのならば
> ブラウザ以外のWeb技術を導入しているプラットフォームの話題も受け入れないとおかしいことになる

意味が分からん
JavaScriptなら受け入れるし、そうでないなら受け入れないんじゃないのか?
0050Name_Not_Found垢版2019/07/07(日) 16:01:26.33ID:???
>>48
そうやって「実装」必要と抽象的に言えれば勿論そうだが
実際は抽象的な実装というのではなく具体的な話になってくるでしょう?
例えばAとBどちらが高速かという話になったら
質問者がしていていなかった場合であっても話の50%はChromeの実装が今現時点でどうなっているかになるでしょう?

ただこの手の話は仕様ベースであっても>>3のように時が立つと無効になるのだから
パフォーマンスの話というのは大変慎重にしないといけない
0051Name_Not_Found垢版2019/07/07(日) 16:02:35.87ID:???
>>46
> 俺はそれが実質無理だろうと思ったから、ブラウザも含めてプラットフォームの話は無しにしたほうがいいと言ってるのであって

「無理な理由」が秘密主義で説得力皆無なんだけど
「Web技術を導入しているプラットフォーム」も曖昧だし
0052Name_Not_Found垢版2019/07/07(日) 16:08:12.86ID:???
>>51
俺は100スレ以上前からいるが
過去ここで古くはWinメトロの話題からNode上でのStreamの話題や
様々なプラットフォームの質問が足蹴にされてきたのを見てきたから

ここはJSのスレでありJSというのはスクリプト言語であり様々なプラットフォーム上で動く
そしてWebというものも今やそれ自体もプラットフォームであり様々なプラットフォーム上で動く
俺はそういうのを大事にしたいと思ってるが、
実際のところIEやChromeなど特定のプラットフォームがどうこうの話ばかり

勿論著名実装がサポートしているかどうかの話くらいなら何も問題ないと思ってるが
それ以上に各実装の性質の踏み込む話、
そういう限定されたテーマというのはJSを「自ら学ぶ」ためというよりも
限定されればされるほど、今動けばいい「制作依頼」に近くなると思っているので
できるだけ普遍的なスレにしたいとは思ってる
0053Name_Not_Found垢版2019/07/07(日) 16:13:06.81ID:???
>>52
「俺がやりたいスレ」の話はおなか一杯だから、「実質無理」に触れてくれない?
結局、君の好みの話しにしかなってないと思うんだけど
0054Name_Not_Found垢版2019/07/07(日) 16:15:35.46ID:???
>>53
実質無理というのは足蹴にされてきて
俺が無理矢理そういうのを受け入れようとしたら批判された経験からだ
だから今後もそういう質問が来たらきっと「荒れる」んでしょ?という皮肉だ

だからそうじゃないというならそれをテンプレに明記して欲しい
「Web技術を使うJSの話題であれば何でも受け入れますよ」と
それなら俺の100スレの怨念も浄化される
0056Name_Not_Found垢版2019/07/07(日) 16:17:37.97ID:???
>>50
高速化の質問についてはコードが出ているなら、「自分で試せ」で終わり

「このコードはどちらが早いですか?」
「このコードは動きますか?」

こんな質問は実装以前の問題だ
自助努力を推奨するスレとしては「自分で試せばわかる事は、自分で試せ」の答えしかない
0057Name_Not_Found垢版2019/07/07(日) 16:18:45.28ID:???
>>55
何回か大統一の話もしたこともあるけど
統一も分離も曖昧にするのもやっぱり問題が出るんだよね

やっぱり俺のワガママだったわ、これまでのレスは無視してくれ
すまなかった
0058Name_Not_Found垢版2019/07/07(日) 16:21:02.60ID:???
>>54
「君のつらい経験」や「君のやりたいこと」で煙に巻くのはどうかと思うけど…
主観的な考えが多い人だねえ
0060Name_Not_Found垢版2019/07/07(日) 16:25:25.23ID:???
>>59 俺はそういうことが言いたかったんじゃないよ
0061Name_Not_Found垢版2019/07/07(日) 16:25:55.36ID:???
>>57
多分、自覚症状がないようだから、あえていうが、君の考えは「客観性」がまるでないから、受け入れられないんだよ

「俺はこうしたい」「俺はこうだった」「俺は無理だと思う」

これは全部、君の個人的な考えで他人を説得できる根拠じゃない(君を信頼している人なら受け入れるかもしれない)
100スレ前から受け入れられなかった原因も、その辺にあるのではないかと思うぞ
0062Name_Not_Found垢版2019/07/07(日) 16:27:22.27ID:???
>>52
> 過去ここで古くはWinメトロの話題からNode上でのStreamの話題や
> 様々なプラットフォームの質問が足蹴にされてきたのを見てきた

そんな大昔のことは知らん

直近2か月程度では、形式的に足蹴なんてあった覚えがない
あったというなら具体的にリンクを挙げたまえ
0063Name_Not_Found垢版2019/07/07(日) 16:29:17.92ID:???
>>60
それでは
どういうことが言いたかったのか、具体例を挙げつつ論理的に述べてくれまいか

貴殿が言いたいこと、具体的にところが把握できない
他の人々にも、把握されているようには見えない


コミュニケーションなんだから、そこんとこ頼む
0064Name_Not_Found垢版2019/07/07(日) 16:34:12.57ID:???
Web のユーザーインターフェースとして第一義に考えられるのはブラウザ
具体的には、Chrome / Safari / Firefox(状況次第で IE11 またはそれ以前)

これが大前提として共有されないんだったら前提から色々崩れるんだけど


opera とか vivaldi とか含めるとカオスだからゴメン
0065Name_Not_Found垢版2019/07/07(日) 16:38:48.61ID:???
「回答できる」と「質問していい」は別問題だと思うのです
0066Name_Not_Found垢版2019/07/07(日) 16:46:15.88ID:???
だとしても形式的に蹴られてる記憶が無い
昔のことは知らない
0067Name_Not_Found垢版2019/07/07(日) 16:48:23.37ID:???
俺も記憶にないなあ
「Node.jsの回答なんてお前らできないだろ?」な煽りは昔、あったような気もするが、それかね
0068Name_Not_Found垢版2019/07/07(日) 17:02:47.23ID:???
具体例挙げるなら

Q: オブジェクトのディープコピーをしたい
A1. jQuery 使え
A2. lodash 使え
A3. 「使える」ライブラリなりプラグインなりモジュールなり使え
A4. オレオレ関数なりメソッドなり作れ

他に何かあるかな(具体例でも第5の回答例でも)
0069Name_Not_Found垢版2019/07/07(日) 17:12:23.73ID:???
>>68
それはライブラリ質問を禁止する例じゃないのか?
実装系質問を禁止する例が来ると思っていたのだが

あと、ディープコピーなら JSON.parse(JSON.stringify()) が何度も出てたし、ライブラリしか回答がなかったかのような表現は改竄が過ぎる
0071Name_Not_Found垢版2019/07/07(日) 17:16:42.58ID:???
>>70
それは質問者の要件に依る
そもそも、質問者はいつも質問だけして回答を放置してるから、要件不明瞭でどれがマッチするか全くわからん
0072Name_Not_Found垢版2019/07/07(日) 17:26:35.26ID:???
>>68に関していうなら、「ライブラリ房」の存在が元凶だから、彼を排除する方針を決めるだけでいい
実装系質問が実質無理な理由ではない
0073Name_Not_Found垢版2019/07/07(日) 18:05:23.24ID:???
そうそう
新たな〇〇房が現れたらその都度対応するだけの話
0074Name_Not_Found垢版2019/07/07(日) 20:41:25.45ID:???
>>44
だから実際のブラウザの話を抜きにするというのなら

実際のブラウザで動くことを前提として
質問が受け付けられなくなるんだよ。

Chromeで動きません。→実際のブラウザの話はしないでください。
0075Name_Not_Found垢版2019/07/07(日) 20:45:12.39ID:???
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。


これもなくさんとな。仕様の話しかしないんだから
OSやブラウザのバージョンなんか関係ない
0078Name_Not_Found垢版2019/07/08(月) 00:41:39.52ID:???
>>31 のリンク先の内容がカビ臭すぎ
どこから手をつけるのが良いか分からんけど、リンクしない方がマシなんじゃないかと(主観
0079Name_Not_Found垢版2019/07/08(月) 01:02:37.28ID:???
>>37
前スレの運用からみて
無視 or ライブラリスレ誘導で良いかと
0080仕様リンクまとめ草案垢版2019/07/08(月) 01:31:56.15ID:???
◆ Standard ECMA-262
http://www.ecma-international.org/ecma-262/6.0/ (ECMAScript 2015, いわゆる ES6)
https://www.ecma-international.org/ecma-262/10.0/ (ECMAScript 2019)
https://tc39.es/ecma262/ (ECMA-262 最新ドラフト)
◆ HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/
◆ W3C DOM4
https://www.w3.org/TR/dom/
https://triple-underscore.github.io/DOM4-ja.html (DOM Standard 日本語訳)

残すべきか要審議
http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
http://tsofthome.appspot.com/ecmascript.html (ECMAScript 5.1 和訳)
http://kangax.github.io/compat-table/es5/ (ECMAScript 5 compatibility table)
http://kangax.github.io/compat-table/es6/ (ECMAScript 6 compatibility table)
HTML Standard 日本語訳
https://momdo.github.io/html/
(「HTML5.1 部分訳」のリンクは、最近は誰も確認していなかった模様)
0082Name_Not_Found垢版2019/07/08(月) 07:09:40.06ID:???
>>74
ちゃんと書いてあることを読んでよ
あくまでWebの仕様外の話に絞って言ってるでしょ

パフォーマンスとか、細かなセキュリティポリシーの違いとか、Web仕様で定義されてる以外の
そこはブラウザ開発者の考え方次第、実装のされ方次第の問題だよねっていう所を言ってるんだよ?
0083Name_Not_Found垢版2019/07/08(月) 07:47:15.34ID:???
パフォーマンスや細かなセキュリティポリシーの違いは
Webの仕様で定義されてないって言ってる?
0084Name_Not_Found垢版2019/07/08(月) 08:00:56.01ID:???
>>82
横から口挟むけど、続けるなら、「実質無理」の理由を明らかにしてよ
見る限り、誰も納得できてないよ
0085Name_Not_Found垢版2019/07/08(月) 08:26:14.92ID:???
> 見る限り、誰も納得できてないよ

というより理由はまだ出ていない
>>68は実装じゃなくてライブラリの質問だった
0086Name_Not_Found垢版2019/07/08(月) 08:29:47.98ID:???
ああ、ひょっとして、>>50か?
>>56で論破されてから反応がないが
0087Name_Not_Found垢版2019/07/08(月) 16:10:15.75ID:???
>>46
> Webというものがブラウザのためだけのものでなくなって久しいんだから
> 基本ポリシーとしてブラウザの話も受け入れるのならば
> ブラウザ以外のWeb技術を導入しているプラットフォームの話題も受け入れないとおかしいことになる
>
> 俺はそれが実質無理だろうと思ったから、ブラウザも含めてプラットフォームの話は無しにしたほうがいいと言ってる

「実質無理」の論点ってここ?

質問者が質問する分には、幅広く間口を取っておいていいとおもうよ
回答がつくかどうかは別問題


こんなのを論拠に「ブラウザというプラットフォームの話を無しにする」って方がありえんし誰も幸せにならないだろ
メリットあるなら教えて欲しいもんだが
0088Name_Not_Found垢版2019/07/08(月) 18:08:23.43ID:???
50スレ前からいる俺は、>>74を「仕様の質問だけに限定するのは実質無理」と受け取ったが、100スレ前からいる彼には深い考えがあるのだろう。

- コードの動作確認が出来ない
- デバッガも使えない
- 仕様を読み取ってコードを書き、思考実験を繰り返す

この困難な状況をどうやって打開するのか、実に興味深い。
若輩者の私に、ご教示頂ければ幸いである。
0091Name_Not_Found垢版2019/07/09(火) 06:45:33.91ID:???
実質無理と言ったのは
>>54で書いたようにそういう話題を完全に受け入れるというスタンスでもないし、
その逆でも今はないんだから、今までの様に穏やかにいられないんでしょという皮肉

そして>>82でも言ったが誰も仕様の話しかしてはいけないとは言っていない
仕様から離れたプラットフォームの話、つまり具体的に言うなら
普遍的なWebというものから離れたブラウザ固有の仕様の話は受け入れるべきかという話

デバッガは開発ツールなので今までWeb仕様とは別の体感できる動作についてて主に話してたのとは
ちょっと系統は変わるが、それでいうとそういう開発外部ツールの話を受け入れるのであれば、
同様にトランスレータだったり、オーサリングツールの話も受け入れるようにしないと
それこそ好き嫌いのとくに理由のない恣意的な差別になる

別に俺はどちらでもいいんだが、俺が一番言いたいことはそのどちらと決まってないことで
スレチだの何だのと不毛に荒れるのが嫌だから、せっかく今テンプレ議論がされてるから
この際にそういうスタンスもある程度決めて明記しておこうということ
まあそれで荒れなくなるかどうかは分からないが、少なくともどういう質問・回答の仕方をしたらいいのかの目安にはなる
0092Name_Not_Found垢版2019/07/09(火) 08:20:13.92ID:???
>>91
長文ご苦労様だが、

> 今までの様に穏やかにいられないんでしょという皮肉

根拠があなたの頭の中にしかないから、以降の話が全く頭に入って来ない
何度言われても根拠を出さないのだから、「根拠が全くない」か「感想が根拠だと思っている」のどちらかなんだろうな…
0093Name_Not_Found垢版2019/07/09(火) 08:47:39.07ID:???
「俺はこう思う。お前らもそう思うだろ?」
→「そんなわけないだろ」(反対者多数)
→「なんで俺の思い(イメージ)を分かってくれないんだよ!」

今のところ、こんな印象
0094Name_Not_Found垢版2019/07/09(火) 09:24:21.17ID:???
勉強中のものです。
「そこに何を代入しても何も起こらない、メモリも食わない、エラーにもならないオブジェクト」ってないものなんでしょうか。
例えば var element にDOM要素が入っているとして element.value="piyo"; という命令があるのはよくあるパターンですが、
このelementに中身が入ってないとエラーが出たりしますよね。
私は、いちいち if (element) element.value="piyo"; というふうな中身の確認をせずに、代入をできるようにしたい
(element の中身が「それ」なら、何も起こらず、エラーも出ない)んです。
こういうブラックホールみたいな値やオブジェクトみたいな存在ってないんでしょうか。
0095Name_Not_Found垢版2019/07/09(火) 10:03:35.42ID:???
>>94
> このelementに中身が入ってないとエラーが出たりしますよね。
> 私は、いちいち if (element) element.value="piyo"; というふうな中身の確認をせずに、代入をできるようにしたい


https://developer.mozilla.org/ja/docs/Web/API/Document/getElementById
> 文書内に一致する要素がなければ null です。

.getElementById の返値をチェックすれば?
0096Name_Not_Found垢版2019/07/09(火) 11:09:28.64ID:???
>>94
jQueryがそういう設計になってる。

例えばその例ではvalueを設定しているが、
jQueryの設計では「"0個以上の要素"に対してvalueを設定する」という書き方をする。
だから要素が見つからなくてもエラーにならないし、複数見つかれば複数設定できる。

いまだにブラウザ間の互換性問題が解決したからjQueryはいらないなんて言ってるやつがいるが
こういう設計がDOM APIとは異なってる(使いやすい)ライブラリなんだよ。

で話を戻すと、jQueryでは $('.foo').val('piyo') みたいにセレクタで指定することが多いが、
$(elemment).val('piyo') みたいに単一の要素を指定することも可能。
この場合、elementの中身が入っていなくてもエラーにならない。
(elementの取得だけDOM APIを使うこともないだろうから普通にセレクタ使えばいいだろうけど)
0097Name_Not_Found垢版2019/07/09(火) 12:27:20.24ID:???
>>94
変数にする以上はメモリを消費するので、メモリを消費しない方法はない
変数にしなければ、当然、メモリは消費しない

if (typeof element !== 'undefoned' && Object(element) === element)
element.value="piyo";

メモリを度外視するなら、Object.create(null) でラップオブジェクトを作って、setterかnew Proxyでプロパティを監視する事で実装可能
0098Name_Not_Found垢版2019/07/09(火) 12:39:17.95ID:???
jQueryってメモリ消費しないんですね。ありがとうございました。
0099Name_Not_Found垢版2019/07/09(火) 12:40:44.57ID:???
>>92,>>93
なんか勘違いしてるのかもしれないけど
思いを分かってもらいたいわけではなく
何か揉めたときに、テンプレに「自ら学ぶため」という言葉があれば
まあそれを持ち出して決着を付ける事が本当に良いことかは置いといて、
一応このスレのスタンスだからと言えるでしょ

でも今のままでは、俺が折角マニアックな質問を色々調べて回答してあげても
それにスレチだなんだケチがついたときにどっちが正しいとも言えず永遠喧嘩になるでしょ
それはどちらが悪いとかじゃなくて俺と彼とで考えるこのスレで扱うものの基準が違うという事で、それが何処にも示されていない以上、個人の好みになっちゃうんだから
それで俺も彼も質問者も不幸になることはもうやめたいんだよ

俺はpart20かそこらから質問回答してきて、自分だったり他人だったり実際そうやって嫌な思いを沢山してきたから
不幸になる人が少しでも減るようにテンプレに基準を入れてほしいと言ってるの
別に崇高な一般論を理解してもらおうと主張してるわけではない
最初からそういう俺の小さなお願いのつもりだったのに
なんでこんなに突っ込まれて話が大きくなったんだろうね?
もう俺のことはスルーしていいよ
0100Name_Not_Found垢版2019/07/09(火) 12:47:25.64ID:???
>>94
falsyな時だけ「空のオブジェクト」を代入するなら、こういう書き方はある
>>97は一つのオブジェクトで一元管理する

var element = document.getElementById('foo') || Object.create(null);

>>98
そんなわけない
変数にする以上は、メモリを消費する(>>97)
0101Name_Not_Found垢版2019/07/09(火) 14:20:24.60ID:???
コードは長くなるけど変数使わないからメモリ消費しないんだぜ!



そのコードを入れておくメモリが消費される
0102Name_Not_Found垢版2019/07/09(火) 14:21:23.30ID:???
>>100
この質問の本質は、そういうコードを書きたくないということでしょう?
0103Name_Not_Found垢版2019/07/09(火) 14:33:23.67ID:???
結局何をしたいのか分からん
C言語だって char *a = "abc"; と書いたとき、ポインタ a の分だけメモリ喰うわけだしな

したいことと、典型的なコードでなってしまうことの差が
具体的に分からないと何ともいえない

https://jsbin.com/yemedon/edit?html,js,console
こういうのとは違うみたいだし
0104Name_Not_Found垢版2019/07/09(火) 14:42:37.02ID:???
無理矢理いえば test() の返値は必ず入る
アセンブラのときにレジスタに必ず入るかどうかは知らない

0 との比較の場合はアセンブラ的には即値0が必要とならないケースが多い、はず
RISCでどうなるか等は知らない
サボリのためCASLの仕様書は読んでない
0105Name_Not_Found垢版2019/07/09(火) 15:13:50.86ID:???
変数は必ずしもメモリを消費しない
インライン化とエリミネーションで半分程度削減される
だからデバッガを有効にしてるとメモリを食う
0106Name_Not_Found垢版2019/07/09(火) 15:39:24.86ID:???
> 私は、いちいち if (element) element.value="piyo"; というふうな中身の確認をせずに、代入をできるようにしたい

そもそも、これって vanilla JS で実現できるの?
0107Name_Not_Found垢版2019/07/09(火) 15:46:49.40ID:???
入力があって、出力対象となるべき要素がなければ
parentNode に appendChild() するのが自然な考え方にもおもえる
無視して良いという仕様なのだろうか(そうだとしたら while で終わりか?)

メモリどうこうより仕様が気になるな
それとも「じつはライブラリ房でした」というオチなのか
0108Name_Not_Found垢版2019/07/09(火) 15:59:43.81ID:???
Rubyには通称ぼっち演算子っていってね、

a=nil
a&.foo
# =>nil

みたいに、値がnilでもエラーにならない方法があるんだよ。
どうせこれのこと言ってるんっでしょ?

でもね、コード上メモリを使ってないように見えても、
アセンブラレベルで見れば「if nil だったら nil を返す」って
コードになってて、コードの分のメモリ使ってますからw
0109Name_Not_Found垢版2019/07/09(火) 16:10:08.48ID:???
>>107
いつものRuby厨がしたり顔をしにやってきたが、
言いたいことを先に言われ、良い所を
jQuery厨に持っていかれたという流れw
0110Name_Not_Found垢版2019/07/09(火) 16:42:52.24ID:???
イケてる言語のNull条件演算子:
C#
?.
Swift
?.
Kotlin
?.
イケテナイ言語のNull条件演算子:
ブビィ
&.

ムダな認知負荷の大きいクソ言語。
0111Name_Not_Found垢版2019/07/09(火) 17:18:14.96ID:???
https://jsbin.com/hidafon/edit?html,css,js,output
ふむ…
あろうが無かろうが問題なく書ける場合もある、か

むしろ出力先等が無いのにスルーされると、バグが潜在化しそうな気もするけど、まあいいか
どういう場面で幸せになれる実装なのか分からん
strlcat / strlcpy みたいなものかしらん
0112Name_Not_Found垢版2019/07/09(火) 17:42:19.01ID:???
> むしろ出力先等が無いのにスルーされると、バグが潜在化しそうな気もするけど、

それは設計思想がわかってないから。

CSSと同じだと考えればいい。
CSSは要素があろうがなかろうがエラーにならない。

これは宣言型プログラミングの思想だよ。

https://ja.wikipedia.org/wiki/%E5%AE%A3%E8%A8%80%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0
> 宣言型プログラミング(英: Declarative programming)は、
> プログラミングパラダイムの名称だが、主として2種類の意味がある。
> 第1の意味は、処理方法ではなく対象の性質などを宣言することでプログラミングするパラダイムを意味する

出力先に対して処理するという設計思想ではない。
出力先はどういう性質かというのを記述する。
要素に対して値を入れるのではなく、その要素はこういう値であるという宣言を記述する。
そうすることでその要素があればそういう値であり、要素がなければないというだけの話になる。
処理ではなく宣言なのでわかりやすくバグも少なくなる。
0113Name_Not_Found垢版2019/07/09(火) 18:39:24.27ID:???
>>102
>>100を関数化するだけで、

foo(element).value = 'bar';

と書けるし、それでも「関数を書きたくない」というなら、巨大な関数である jQuety()を定義しているコードに魅力を感じるのは本末転倒
明らかにjQueryの方がメモリ消費量が多いわけだから、「メモリ」の観点ではjQueryにメリットはない
0114Name_Not_Found垢版2019/07/09(火) 19:00:49.22ID:???
>>113
> 「関数を書きたくない」というなら、巨大な関数である jQuety()を定義しているコードに魅力を感じるのは

jQueryを使うなら「関数を書かなくていい」じゃん
「関数を書きたくない」という要望を見事に満たしている。
0115Name_Not_Found垢版2019/07/09(火) 19:15:13.42ID:???
そもそもプログラム書きたくないんですけどどうしたらいいですか?
0116Name_Not_Found垢版2019/07/09(火) 19:37:36.54ID:???
>>114
「メモリも食わない」の要件を満たしてないじゃん
0117Name_Not_Found垢版2019/07/09(火) 19:39:54.22ID:???
エラーにならないオブジェクトとかそもそもがヤバい
0118Name_Not_Found垢版2019/07/09(火) 19:40:48.14ID:???
>>116
それは「すべてのものはメモリを食う」という結論で終わったろ?
0119Name_Not_Found垢版2019/07/09(火) 19:40:53.34ID:???
そもそも、>>102は質問者なのか?
他人が悪のりしてるのか、質問者本人なのか分からん
0121Name_Not_Found垢版2019/07/09(火) 19:45:21.11ID:???
jQueryはscript要素を余計に書かないといけないので、面倒くさい
0122Name_Not_Found垢版2019/07/09(火) 19:49:31.63ID:???
jq談義は誰も得しないのでやめよう
0123Name_Not_Found垢版2019/07/09(火) 19:56:31.05ID:???
そんな面倒くさがりの君にプレゼント
Object(element).value = 'bar';

ライブラリ使うよりお手軽だよ!
メソッド呼び出しは要件にないから知らないよ!

そもそも、NullPointerExceptionはエラー検知として捉える向きもあるので、一概に悪いとはいえない(上で懸念されてるのはそういうことかと)
ポリシーの違いを他人を批判する理由にするのは止めよう >>1参照
0124Name_Not_Found垢版2019/07/09(火) 19:57:38.63ID:???
無いときにエラーにしたくなくて、あるときに全ての要素を対象にしたければ
DOM APIには複数要素取得する手段がいくつもあるんだから
それでmapなんかで回せばいいだけじゃん
0125Name_Not_Found垢版2019/07/09(火) 19:59:01.08ID:???
>>112
どうだろう
CSS はデザインの話で、コンテンツそのものの話とは区別されるんじゃないかと

> 出力先はどういう性質かというのを記述
これなんてまさにそれ


 オブジェクトのプロパティに値をセットしたつもりが
 そもそもオブジェクトありませんでしたー
でエラーが出なくて幸せになる具体的なシーンが思いつかない、というのもある


「『対象の性質を宣言』しようとしましたが、その対象は存在しませんでした」ってことでしょう?
0126Name_Not_Found垢版2019/07/09(火) 20:01:55.41ID:???
>>124
1. elements を取得します
2. elements.length を使って for ループして item(i) 等で個々の element を取得して処理します

コレではダメ?
0129Name_Not_Found垢版2019/07/09(火) 20:13:26.42ID:???
>>128
最近のブラウザは大丈夫なのかな
以前、調べたときには仕様はOKだったのに、iterableではない実装が結構あった
Symbolで自前定義したけど
0133Name_Not_Found垢版2019/07/09(火) 21:11:26.17ID:???
>>120
> メモリ消費量が違う

せやね。メモリが640KBしか無いような環境は問題になるだろうね。
ブラウザが動くのか知らんが
0135Name_Not_Found垢版2019/07/09(火) 21:36:14.37ID:???
単に大したメモリ消費量じゃないと言ってるだけ
0136Name_Not_Found垢版2019/07/09(火) 21:40:54.42ID:???
> ・回答には多様性があります。他人の回答を尊重してください
0137Name_Not_Found垢版2019/07/09(火) 21:41:59.69ID:???
jsにも ?. が実装される草案は先送りになったのかな
0139Name_Not_Found垢版2019/07/09(火) 21:43:48.15ID:???
jQueryが消費するメモリ
→大した消費量じゃない!

自前で関数ちょこっと書くのに消費するメモリ→
とんでもないメモリ消費!
0140Name_Not_Found垢版2019/07/09(火) 21:45:15.99ID:???
>>137
先送り??
tc39の制定プロセス知らないの?.
0141Name_Not_Found垢版2019/07/09(火) 21:46:36.15ID:???
その煽る気満々の内容で質問者に回答してやればいいのに、これだからマウント君は
0142Name_Not_Found垢版2019/07/09(火) 21:53:39.94ID:???
>>137
ES全体的に前みたいに大量の草案をガツガツ進める雰囲気じゃなくて
細かい仕様をより小規模なミーティングを頻繁にして少しづつ着実に落ち着いて進める感じになってる

その上でオプショナルチェーンの進歩状況はやや鈍調
本来なら輸入構文で順調に行くはずだけど、
ついでにこれもセットで欲しい機能のオプショナルコールについて問題を抱えていたので
あまり進捗してこなかったのが、直近のミーティングで前に進んだ
もう一山か二山あるだろうけど、ゴールの明かりがちらりと見えた所
0143Name_Not_Found垢版2019/07/10(水) 05:04:01.56ID:???
firefox x64 + Stylus + Greasemonkey
とあるよく利用しているサイトが今一つ使いづらいので、
Stylusの自作スクリプトで必要以上の余計な広告を非表示にし、
非同期処理させて処理の高速化を図りました。
改めてそのサイトのソースを見たらsetTimeoutで特定の広告を少し時間差を置いて表示させ、
更に時間差を置いて記事部分を表示させるなんてことをやっていることが判明。
即時表示させる手段はないかと、StylusかGreasemonkeyでsetTimeoutの無効化とか、
そのスクリプト自体の上書きか無効化が出来ないか試行錯誤中。
どなたか、何かアドバイスなど頂ければ幸いです。
0144Name_Not_Found垢版2019/07/10(水) 06:23:21.58ID:???
元あるものを改変するのではなく記事の内容を取得して表示するリーダーアプリを作ったほうが聡い
0147Name_Not_Found垢版2019/07/10(水) 07:22:05.13ID:???
>>133
そのまえに html コンテンツと gif / jpeg 読み込んだだけで溢れかねない
15.6MB でも足りないページは一杯ありそうだしね

都度で swap とか悪夢だろうが CF カードにキャッシュ置ければマシか
0148Name_Not_Found垢版2019/07/10(水) 07:42:06.00ID:???
…もともとがRuby房召喚のためだけの質問っぽいけど…

>>112
> 出力先はどういう性質かというのを記述する。

element がらみの場合は DOM ツリーの適切な場所に適切な要素を記述し
その要素にその性質を記述するものではないのかしらん
まとめたければ DocumentFragment 使うとか、元質問に即して言えば事前に createElement すれば良いんでないかい

ただ、元質問は「対象が存在しないときにスルー」って言ってるんだから「宣言型プログラミング」とやらは今回別に要らないでしょ
コレクションのアイテム数を数え、アイテム数を越える分は処理しなければ良いだけ
…ってのを >>111 のリンク先で書いてみたんだが…
0149Name_Not_Found垢版2019/07/10(水) 08:11:38.75ID:???
>>94
?. は、NULL 許容(エルビス)演算子だろ。
横から見ると、エルビスプレスリーに見える

Ruby では、関数名の最後の文字に、?, ! が使える

? は、真偽値を返すメソッド名に使う。
! は、レシーバーの内容を変えるメソッド名に使う

このルールがあるから、可読性が高い!

その代わりに、エルビスが使えないから、&. を使う
0150Name_Not_Found垢版2019/07/10(水) 09:26:14.27ID:???
俗称エルビス演算子は?.ではなく?:
これだからクソ言語信者は。
?.の一般的な名前は>>110
0151Name_Not_Found垢版2019/07/10(水) 12:29:22.31ID:???
エルビス?
かつて流行した vi クローンで nvi の祖先のこと?
0152Name_Not_Found垢版2019/07/11(木) 08:29:47.48ID:???
最近、Ruby信者をいろんなスレで見かけるのは、Rubyが下火になっているからか
多言語の機能を取り込むのは良いことだが、機能に拘るのは偏食と変わらないな
0153Name_Not_Found垢版2019/07/11(木) 11:16:19.28ID:???
文字列が入った配列(例として["aaa","aaa","bbb","bbb","ccc","ccc",…以下1000個ほど続くとする])があるとして、
この配列を「できるだけ似た文字列が並ばないように」並び替える方法ってどんなものが考えられますか?
つまり["aaa","bbb","ccc","aaa","bbb","ccc",…] となるように並べ替えたいです
言い換えれば「できるだけ似てない文字列が隣合って並ぶように」バラけさせるアルゴリズムです
レーベンシュタイン距離でというのも考えましたが「1つ前の文字列からもっとも遠い文字列を」短絡的に並べていくのでは、上記の例でいうと
["aaa","ccc","aaa","ccc","bbb","bbb",…]
というふうに、もっとも遠い文字列を使い果たした後はむしろ近いものが並んでしまうのではないかと危惧してます
0154Name_Not_Found垢版2019/07/11(木) 11:29:48.65ID:???
もっと要件詰めなよ。仕事でそんな発注するんじゃないぞ。
0155Name_Not_Found垢版2019/07/11(木) 11:55:02.49ID:???
ソートして半分に割って一個ずつ取り出し並べていけば良いんじゃね
0156Name_Not_Found垢版2019/07/11(木) 12:19:33.79ID:???
>>153
「似た文字列」を定義する事から始めては?
0157Name_Not_Found垢版2019/07/11(木) 12:41:20.42ID:???
「似た文字」は文字の類似度を数値で返す関数がある
という前提でいいだろ
0158Name_Not_Found垢版2019/07/11(木) 12:47:05.63ID:???
じゃあsortにその関数使ったコンパレータぶっ込んで終わり。
はい次。
0159Name_Not_Found垢版2019/07/11(木) 12:47:50.29ID:???
>>153
レーベンシュタイン距離でいいんじゃないか?

1. 同一文字をまとめて、ユニークな文字列の値、出現回数をまとめた配列(or Map)を作る
2. 隣接要素のレーベンシュタイン距離がしきい値を越えるように並べ替える
3. 1周する
4. 各要素の出現回数を -1
5. 全要素が出現回数0なら終了。一部に出現回数0があったら、2.へ、それ以外は3.へ
0160Name_Not_Found垢版2019/07/11(木) 12:55:32.55ID:???
>>153
例えば100通りランダムに並び替える
その中で10個距離が短いのを選んでそれぞれ10通りランダムに少量だけ並び替える
その繰り返しでいい
0161Name_Not_Found垢版2019/07/11(木) 13:00:50.25ID:???
>>158
素朴な疑問なんだけど、Array#sortって隣接要素の判定条件を指定出来るの?
2つの要素が似た文字列だった場合に引き離す機能がないと実装出来ないと思うんだけど
0162Name_Not_Found垢版2019/07/11(木) 13:15:30.24ID:???
>>153
"aaa"
"bbb"
"ccc"

だけなら、「setにしてdeleteしてランダムに選ぶ」を繰り返せば良くね
0164Name_Not_Found垢版2019/07/11(木) 13:25:41.28ID:???
>>153
const length = 100
const a = ["aaa", "bbb", "ccc"]

let aryResults = []
aryResults.push(a[(Math.random()*3 | 0)]) // 2 ** 31 を下回ることが保証されているので | 0 で可

const l = length - 1
for (i = 0; i < l; i++) {
console.log(aryResults[i])
let setTmp = new Set(a)
setTmp.delete(aryResults[i])
const arrTmp = [...setTmp]
aryResults.push(arrTmp[(Math.random()*2 | 0)])

}
console.log(aryResults)

…例がわるい
「文字列が入った配列」の種類はいくつよ
0165Name_Not_Found垢版2019/07/11(木) 13:54:53.95ID:???
例えば範囲が、1〜100 なら、

1, 100, 2, 99 みたいに取っていくと、
最後には、50 近辺の数字ばかりが残るから、ダメ!

無数のアルゴリズム・シミュレーションを繰り返して、
合計距離が多くなるように、しないといけない
0166こんなのはダメ?垢版2019/07/11(木) 14:33:34.54ID:???
// 出現回数は考慮しないものとする
// 小文字アルファベット a-z から選ぶものとする
const length = 100
const threshold = 10
let a = []
let place = []
let aryResults = []

for (let i = 0; i < 26; i++) {
let strTmp = String.fromCharCode(0x61 + i)
a.push(strTmp)
place.push(-threshold)
}

for (let i = 0; i < length; i++) {
let t = i - threshold
let setTmp = new Set(a)
for (j = 0; j < 26; j++) {
if (place[j] > t) { setTmp.delete(a[j]) }
}
const arrTmp = [...setTmp]
let x = (Math.random() * arrTmp.length | 0)
place[x] = i
aryResults.push(arrTmp[x])
}
console.log(aryResults)
0167Name_Not_Found垢版2019/07/11(木) 15:13:28.83ID:???
>>153
うーん
定性的な部分をどうにかしないと書けないな


「似た文字列」
何をもって「似ている」と判断するか基準不明

「できるだけ似た文字列が並ばないように」
→どの範囲で許されるのか

高田馬場1丁目1番地、2番地…
高田馬場2丁目1番地、2番地…
高田馬場3丁目1番地、2番地…
高田馬場4丁目1番地、2番地…
高田馬場5丁目1番地、2番地…

西早稲田1丁目1番地、2番地…
西早稲田2丁目1番地、2番地…
西早稲田3丁目1番地、2番地…
西早稲田4丁目1番地、2番地…
西早稲田5丁目1番地、2番地…

とかなら、まだ分かりやすいだろうけど(高田馬場m丁目と西早稲田n丁目の遠近は度外視として)
0169168垢版2019/07/11(木) 18:57:22.10ID:???
厳密には、先頭/末尾の繋ぎが未チェックという問題が残っているが…
2.のソート時に繋ぎを意識したsortにして、5.から2.へ行く前に直前要素と先頭要素を比較する処理を入れてやれば良さそうだ
0170Name_Not_Found垢版2019/07/11(木) 19:05:14.95ID:???
Set 使えば登場回数ゼロはありえないだろ
0171Name_Not_Found垢版2019/07/11(木) 21:08:08.24ID:???
>>170
>>153ではaaa,bbb,cccが何度も登場してる
そもそも、重複がなかったら、この質問は成立しないわけで
0172Name_Not_Found垢版2019/07/11(木) 22:05:01.09ID:???
>>171
それなら >>164 のように完全ランダムにするか、
3つの順列をセットとして 3P3 = 3! = 6通りから、末尾の文字と異なる文字で始まるモノで並べて行くか

完全ランダムだと残り物にバラつきが出すぎる可能性はあるけど


3つの順列で心配なら
a - b - a - c - b - c
a - b - c - a - b - c
a - b - c - b - a - c
a - b - c - b - c - a
(以下省略)
とかいう組み合わせを事前に作っておいて並べて行けば良いんじゃね


バラつき具合の判別方法は知らんけど…
0173Name_Not_Found垢版2019/07/11(木) 22:46:54.92ID:???
難しく考えすぎ
期待値に達するまで適当に振り分続ければいいだけ
あとはその振り分けアルゴリズムが完全なランダムより賢ければ賢いだけコストが減る
それを十分な状態になるまで追求すればいいだけ
0174Name_Not_Found垢版2019/07/11(木) 23:06:14.34ID:???
>>173
振り分けアルゴリズムの質問にその回答はなかろうて
0175Name_Not_Found垢版2019/07/12(金) 00:11:21.39ID:???
「ナップサック問題」でも「全検索」は解の1つ
エレガントではないかも知れないが、不正解という評価は誤り
0177Name_Not_Found垢版2019/07/12(金) 07:09:02.33ID:???
こういう時は発送を逆転させる
つまり良い分配アルゴリズムではなく、悪い整頓アルゴリズムを考える
それで思いつくものを現実的な妥協点として良いと思う
そういう意味ではランダムは悪くない
0178Name_Not_Found垢版2019/07/12(金) 07:13:30.04ID:???
最初ランダムで走査して固まってる部分があったら適当に入れ替えてほぐす
その繰り返しはどうだろうか?
0180Name_Not_Found垢版2019/07/12(金) 08:28:39.10ID:???
>>171
配列を splice() すれば良かろう
人にケチ付けてる暇があったら改善案出せよ無能
0181Name_Not_Found垢版2019/07/12(金) 08:35:04.73ID:???
>>175
> 「ナップサック問題」でも「全検索」は解の1つ

「全検索 アルゴリズム」でぐぐっても見つからないが、もしかして「全探索」といいたかったのか?
全探索は「全ての組み合わせを試す」というもので、1000個の要素なら、最大試行回数=1000*999*998*...*3*2*1回となる力業

> エレガントではないかも知れないが、不正解という評価は誤り

>>173は「失敗したらやり直す」なので「全探索」とは違う
「振り分けアルゴリズム」に欠陥があれば、永久に失敗するので無限ループとなるし、アルゴリズムの成功確率が低ければ、試行回数は全探索よりも高くなる可能性が高い
アルゴリズムに欠陥がない場合の最大試行回数は「1〜∞回」で運要素の高い方法
0182Name_Not_Found垢版2019/07/12(金) 08:43:34.05ID:???
>>180
>>170

> Set 使えば登場回数ゼロはありえないだろ

とケチをつけたが、>>159の回答を咀嚼すれば「登場回数」がそういう意味ではないことが分かるはずなので、それを指摘しただけ

> 人にケチ付けてる暇があったら改善案出せよ無能

これは>>170にいいたい
0183Name_Not_Found垢版2019/07/12(金) 09:41:21.55ID:???
>>181
>>173は失敗したらやり直すのとは違うでしょ
遺伝的アルゴリズムと言ったら大げさだけど、モンテカルロ法で円周率を求めるのと同じくこの手のアルゴリズムは運任せでも現実的には収束していくんだから
この手のアルゴリズムで不運が重なって想定よりも遥かに時間がかかる事を想定するのは、計算中にマシンが突然クラッシュしたりビットアップセットを起こしたりするのを心配するようなもの
最善でなくても一定の期待値を越えれば良いというときには良いアルゴリズムだよ
0184Name_Not_Found垢版2019/07/12(金) 11:14:45.16ID:???
>>181
1000は無いだろ

選択肢3つなんだから、たとえば1002個あったと仮定して、
同じ選択肢が決して連続しないのは大前提だろ
「できるだけ似てない文字列が隣合って並ぶように」って言ってんだから

ケチばっか付けた挙句完全に誤ったこと書いてんじゃねえよ無能
0185Name_Not_Found垢版2019/07/12(金) 11:17:21.32ID:???
なんで選択肢が3つだけだと思ったんだろう…
0186Name_Not_Found垢版2019/07/12(金) 11:33:35.09ID:???
ランダムに(または、ルールで制限しつつ)シャッフルして、
許容回数実行して、最善のものを選ぶ

最良のアルゴリズムを考えなくて良いから、
これが簡単で現実的で、そこそこ良い結果も得られる
0187Name_Not_Found垢版2019/07/12(金) 11:47:35.76ID:???
要約すると

「できるだけ似た文字列が並ばないように」並び替えるアルゴリズムは思いつかないので
「ランダムに」並び替えるアルゴリズムでごまかしましょう
0188Name_Not_Found垢版2019/07/12(金) 12:29:54.13ID:???
>>184
結局、「全検索」のアルゴリズムを説明出来てない
オレオレ用語を使わず、一般的な用語を書け
0189Name_Not_Found垢版2019/07/12(金) 12:47:43.74ID:???
重複しない整数からなる4個以上の数列がある
例 1,2,3,4

これを並び替えて、隣り合う数の差が2以上である
並びとして次のようなものが考えられる
例 3,1,4,2

この数列が大量(例1 000個)にあるとき
隣り合う数の差が2以上に並び替えるアルゴリズムを考えよ
また、隣り合う数の差の合計が最大になるアルゴリズムを考えよ
アルゴリズムは高速であればあるほどよい

参考 隣り合う数の差の合計
3,1,4,2,5 の場合 2+3+2+3=10
4,2,5,1,3 の場合 2+3+4+2=11
0190Name_Not_Found垢版2019/07/12(金) 12:49:36.02ID:???
>>187
逆でしょ
何が効果的か根拠も自信もなくて抽象的で実装できるかもわからない理論よりも
ランダム探索でそこそこの結果を得ればいいと割り切る方が誤魔化さずハッキリしてるでしょ
0191Name_Not_Found垢版2019/07/12(金) 12:51:26.45ID:???
1000個もいらんかね?
100個でも総当たりするのは十分しんどいレベルになるな
9.3326215443944152681699238856267e+157
0192Name_Not_Found垢版2019/07/12(金) 12:52:09.49ID:???
>>190
そこそこ結果でOKなんて誰が言ったんですか?
0193Name_Not_Found垢版2019/07/12(金) 12:57:10.07ID:???
1文字目で分類して最も多いものから順に均等に振り分ける
その振り分け範囲内で2文字について同じように振り分けなおす
短文字ではこれを繰り返すのが最もコストが少なく並び替えられる
0194Name_Not_Found垢版2019/07/12(金) 13:01:01.68ID:???
>>189
質問は文字列だぞ?
簡単に数値に置き換えられ無いだろ
0196Name_Not_Found垢版2019/07/12(金) 14:02:20.62ID:???
>>189
0,500,1,501…なら499001
500,0,999,1,998,2…なら499999

ちなみにランダムで1000回試行で350000、100000回試行で360000程度
最低限何らかのアルゴリズムは無いときつくね?
0197Name_Not_Found垢版2019/07/12(金) 14:32:18.01ID:???
うわ
マウンターばっかり

屁理屈こねまくって重箱の隅をつつきまくって
1行もコードも何も具体的なモノ書かずに
良く上から目線で書き込めるもんだ
0198Name_Not_Found垢版2019/07/12(金) 14:38:39.76ID:???
>>153 における
> 文字列が入った配列(例として["aaa","aaa","bbb","bbb","ccc","ccc",…以下1000個ほど続くとする])

の構成要素が、具体的に ["aaa,""bbb,", "ccc" ...] 以外何があるか回答がない
釣り確定だな
0199Name_Not_Found垢版2019/07/12(金) 14:47:11.28ID:???
>>198
どんな文字列が入ってきてもって意味だろ
答えられないからって釣り認定するなよ
0200Name_Not_Found垢版2019/07/12(金) 16:36:52.91ID:???
>>199
板違い

そういうのは計算機科学の研究室でやれば良いし
Web制作との関連性も皆無
0203Name_Not_Found垢版2019/07/12(金) 19:17:56.51ID:???
このスレの質問者は、回答があってもガン無視する奴ばかり
回答に意見を返して、前向きに取り組もうとする質問者はいないのか?
「自ら学ぶ質問者」を見たい
0204Name_Not_Found垢版2019/07/12(金) 19:59:37.69ID:???
>>203
それ以前にまともな回答でてねーじゃん
呆れてどっか行ったんじゃね
0205Name_Not_Found垢版2019/07/12(金) 20:01:48.38ID:???
>>204
君のようなコミュニケーションを拒否する人は、質問者に向いてないと思うよ
0206Name_Not_Found垢版2019/07/12(金) 20:54:59.69ID:???
皆が色んなアルゴリズムを比較しやすいように基盤を作ってみた
https://playcode.io/371956?tabs=script.js,preview,console

条件として、ある文字列のある位置の文字を取り出したときに、
同じ位置に同じ文字がある文字列がどれだけ近いかを全ての文字列の全ての文字で見ることで
似た文字列がどれだけ近くに固まっていないかの値を求めるようにした

つまりABCDのよこにBADCがあってもそれは限りなく無関係同士の文字列と評価されるので
そこが気になる人は評価計算部を変えて欲しい
それと各文字の出現頻度はだいたい均一と仮定している(Aが極端に多くてBが極端に少なかったりしない)ので、
そこも生成部に手を入れて変えて欲しい
また、距離に対して比例して評価していてすぐ隣と、1つ開いている状態はあまり違わないと評価するのでそこも手の入れどころ

とりあえず様々に実験して気がついたこととしては、
・各文字の出現頻度、組み合わせ方に偏りがない
・文字種類数が少ない
ときはそもそも、どのように並び替えても似た文字列が近くに来てしまう状況になる

例えば上の例であったような、ABCのように単純な文字列はまさにそうで、
何か組み合わせに特別な偏りが無い限り、一回ランダムにばらした状態でほぼ限界に近い
0207Name_Not_Found垢版2019/07/12(金) 21:04:18.73ID:???
「まともな回答ない」で諦めるか、「質問の要件を追記して更なる回答を募ろう」と踏ん張るか、が判断の分かれ目
実際、要件をまともに書いた質問はほとんどない
0208Name_Not_Found垢版2019/07/12(金) 22:18:52.66ID:???
要件をまとも書けるくらいの質問をする人ならば、
自力で解答を見つけることが出来る。
0209Name_Not_Found垢版2019/07/12(金) 22:34:38.85ID:???
質問しようと文章でまとめてみたり、ggrks呼ばわりされないように検索してみたりしているうちに
解決方法が見つかることが稀によくある
0210Name_Not_Found垢版2019/07/12(金) 22:53:54.32ID:???
>>209
>質問しようと文章でまとめてみたり、

質問しようと文章以外の、例えば数式でまとめてみたりすることはあるのか?
とつっこんでみたり
0211Name_Not_Found垢版2019/07/13(土) 01:27:49.82ID:???
「AしたりBしたり」と書いてあるのを「AとBしかしない」と解釈するひとって…
0212Name_Not_Found垢版2019/07/13(土) 07:03:05.20ID:???
結局、質問者が回答を煽って、魚を期待するスレなのか
0213Name_Not_Found垢版2019/07/13(土) 09:12:38.57ID:???
定性的発言で申し訳ないが…

…内容的には良くなったと思うよ…
マウンターと暴言のオンパレードだった訳だしね
0214Name_Not_Found垢版2019/07/13(土) 10:51:11.96ID:???
質問者が出てこないから、「質問スレ」としては機能していないと思う
「お題」を与えられた回答者が意見交換or布教活動してるだけ
そこに、煽り、マウントが入るとgdgdになる
0215Name_Not_Found (ワッチョイ 7e8f-XC/u)垢版2019/07/13(土) 13:09:01.55ID:???0
じゃ、こっちで質問をば…

+ JavaScript の質問用スレッド vol.123 +
https://mevius.5ch.net/test/read.cgi/tech/1491143438/183

https://leetcode.com を始めました。
そこで、質問です。

var toLowerCase = function(str) {
const length = str.length
let str_result = ""
for (let i = 0; i < length; i++) {
const char_code = str.charCodeAt(i)
if ((0x41 <= char_code) && (char_code <= 0x5a)) {
str_result += String.fromCharCode(char_code + 0x20)
} else {
str_result += String.fromCharCode(char_code)
}
}
return str_result
}
console.log(toLowerCase("Hello"))
console.log(toLowerCase("here"))
console.log(toLowerCase("LOVELY"))

こんなコードを書くのは少数派でしょうか?
0216215 (ワッチョイ 7e8f-XC/u)垢版2019/07/13(土) 13:10:09.72ID:8ujBhffr0
コテハン記憶age
0217215 (ワッチョイ 7e8f-XC/u)垢版2019/07/13(土) 13:23:59.14ID:8ujBhffr0
str_result += ((0x41 <= char_code) && (char_code <= 0x5a))
? String.fromCharCode(char_code + 0x20)
: String.fromCharCode(char_code)

…とか…
0218Name_Not_Found垢版2019/07/13(土) 15:02:17.05ID:???
そもそも条件は?
何を持ってどこまでの範囲をLowerCaseと言うの?
例えば標準ではアルファベット以外もサポートしてるよ
"Α".toLowerCase() //"α"
0219215 (ワッチョイ 7e8f-XC/u)垢版2019/07/13(土) 16:05:41.95ID:8ujBhffr0
>>218
> 何を持ってどこまでの範囲をLowerCaseと言うの?

https://leetcode.com/problems/to-lower-case/

> Implement function ToLowerCase() that has a string parameter str,
> and returns the same string in lowercase.
>
> Example 1:
>
> Input: "Hello"
> Output: "hello"
>
>
> Example 2:
>
> Input: "here"
> Output: "here"
>
>
> Example 3:
>
> Input: "LOVELY"
> Output: "lovely"

たしかに「厳密な範囲」は示されてないですね。

Example にあるものが回答できれば "solved" という状態になるので
アルファベット26文字に対する変換が出来れば充分、ということになります
0220Name_Not_Found垢版2019/07/13(土) 16:23:24.92ID:???
それで一番の目的は速度ってこと?
ならバイナリ化してWASMに渡すとかも選択肢なの?
でもそういうのって往々にしてオーバーヘッドが大きいから
例文の様に短文字だと悪手だよね

それともう一つ重要な点として大文字小文字のアルファベットしか入力されないの?
それだったらパフォーマンスとコーディングのシンプルさを両立して
チェックもせずにテーブルで変換とかも容易にできると思うけど

もしくは適当でいいのならreplace使ったりしても良いんじゃないの?
前提条件がサッパリ分からないから、まず>>215さんが
どうしてそういうコードを書いたほうが良いと思ってるのかが疑問
0221Name_Not_Found垢版2019/07/13(土) 16:45:47.14ID:fHfioXNC
>>215
0222215 (ワッチョイ 7e8f-XC/u)垢版2019/07/13(土) 16:58:53.43ID:8ujBhffr0
別解が知りたいだけです
配列を2つ作って1文字毎に変換するなり、ハッシュで変換する方法もあるでしょう

>>218 のようなものも含めるなら、変換テーブルを自前で持っておく方が良いようにも思われますが
これは別問題ですね


String.replace() を MDN で読んでいて思ったんですけど
Javascript の string ってシングルトンパターンなんですかねえ
0223Name_Not_Found垢版2019/07/13(土) 17:34:15.55ID:???
>>222
プログラム板に別解があるようだが、あれで満足?
ただの別解で難の制約もないなら、いくらでもコードはありそうだけど
0224Name_Not_Found垢版2019/07/13(土) 17:44:23.94ID:???
既に動いているコードがあるなら、別解を求める必要は普通はない
理由があるはずだが、「別解が知りたいだけ」だし、どんなコードでも受け入れると
アンケート系は勘弁して欲しいな…
0225Name_Not_Found垢版2019/07/13(土) 17:45:37.28ID:???
>>222
replaceなどの結果がキャッシュされるような仕様はないが
別にキャッシュしても仕様に違反しない
JSは仕様と実装が完全に切り離されているのでそういう部分は実装次第

別解が知りたいというけど問題が単純すぎるのでアルゴリズム的別解はない
文字を文字として見てテーブルで変換するか、
文字コードとして見て演算するかくらいしかない
だから単純にJSの基本、アルゴリズムの勉強問題として見れば問題ない
だけど良いコードパターンで書けてるかというと違う

それが今回の例で実際に問題になるかは置いといて
文字列を変換するときの一般的な良いパターンとして

まずサロゲートペアを意識すること
つまりcharCodeAtなどではなくcodePointAtを使う
もしくはfor-ofで文字を取り出す

そしてマジックナンバーは使わない
コードに突然0xなんちゃらと現れても大抵の人はそれが何を示しているのか分からない
だから”A”の文字コードは事前に'A'.codePointAt()などで求めておいて定数に格納しておく
0227215 (ワッチョイ 7e8f-XC/u)垢版2019/07/14(日) 09:25:06.58ID:c8hg/KPq0
>>225
コードに突然0xなんちゃらと現れても大抵の人はそれが何を示しているのか分からない
だから”A”の文字コードは事前に'A'.codePointAt()などで求めておいて定数に格納しておく


1行目、ものすごく驚きました
EBCDIC を採用するかどうかが実装依存だというならともかく

https://www.ecma-international.org/ecma-262/10.0/#sec-terms-and-definitions-string-value

> 4.3.17 String value
>
> primitive value that is a finite ordered sequence of zero or more 16-bit
> unsigned integer values
>
> Note
>
> A String value is a member of the String type. Each integer value in the
> sequence usually represents a single 16-bit unit of UTF-16 text. However,
> ECMAScript does not place any restrictions or requirements on the values
> except that they must be 16-bit unsigned integers.

という仕様が前提なら、us-ascii / JIS X 0301 そのままの文字コードが殆ど知られてない…
参照:
https://unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXT
https://unicode.org/Public/MAPPINGS/VENDORS/APPLE/JAPANESE.TXT
https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT
0228215 (ワッチョイ 7e8f-XC/u)垢版2019/07/14(日) 09:31:33.39ID:c8hg/KPq0
> だから”A”の文字コードは事前に'A'.codePointAt()などで求めておいて定数に格納しておく

定数に格納するなら、私だったら

/*
0x41 LATIN CAPITAL LETTER A
0x61 LATIN SMALL LETTER A
0x
*/

const int_codePointAtA = 0x41

/*
0x5a LATIN CAPITAL LETTER Z
0x7a LATIN SMALL LETTER Z
*/

const int_codePointAtZ = 0x7a

とか…
即値とメソッド呼び出しの差は分かりませんが…

参照:
https://unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXT
0229215 (ワッチョイ 7e8f-XC/u)垢版2019/07/14(日) 09:32:34.14ID:c8hg/KPq0
>>223
> プログラム板に別解があるようだが、あれで満足?

うーん
どこからどう見ても練習問題なのに…
0230215 (ワッチョイ 7e8f-XC/u)垢版2019/07/14(日) 09:33:37.40ID:c8hg/KPq0
>>224
> アンケート系は勘弁して欲しいな…

具体的なコードが複数あるなら「アンケート」と呼ぶ余地はあるかも知れませんが
今回のコードは具体的なモノが1つしか無いので「アンケート」と呼ぶ余地はないですよ
0231215 (ワッチョイ 7e8f-XC/u)垢版2019/07/14(日) 09:36:11.30ID:c8hg/KPq0
>>220
> 大文字小文字のアルファベットしか入力されないの?

回答例からみて、そう判断しました。
もちろん

https://unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-2.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-3.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-4.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-5.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-7.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-8.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-13.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-14.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-15.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-16.TXT

あたりから、変換対象は特定可能なので、
us-ascii / JIS X 0201 相当でない範囲も変換できるコードは書けるかと。
0232215 (ワッチョイ 7e8f-XC/u)垢版2019/07/14(日) 09:38:01.02ID:c8hg/KPq0
> 別解

for (let i = 0; i < length; i++) {
const char_code = str.charCodeAt(i)
if ((0x41 <= char_code) && (char_code <= 0x5a)) {
str_result += String.fromCharCode(char_code + 0x20)
} else {
str_result += String.fromCharCode(char_code)
}

という部分について、他にどのような考え方があるか分かれば
色々な場面で応用が利くと考え、質問した次第です。
0233215 (ワッチョイ 7e8f-XC/u)垢版2019/07/14(日) 09:39:50.36ID:c8hg/KPq0
>>220
> チェックもせずにテーブルで変換とかも容易にできると思うけど

> もしくは適当でいいのならreplace使ったりしても良いんじゃないの?

チェックの点は見落としていました
御指摘、ありがとうございます

「Acute 等がついていてサロゲートペアでない」場合を含めてチェックすべきかも知れないですね
0234215 (ワッチョイ 7e8f-XC/u)垢版2019/07/14(日) 09:45:40.61ID:c8hg/KPq0
>>220
> どうしてそういうコードを書いたほうが良いと思ってるのか

古典BASICで言うところの MID$() 関数で1文字ずつ抜き出して FOR ループで回し、
条件分岐で ASC() → CHR$() というのがが真っ先に思いついたからです。

「良いと思った」というよりも、Javascript をメインで使っている人が
自然に思いつくコードを知りたいという思いがありまして。


それこそ、大抵の人はこのような発想を自然にはしないと考えられたのです。
「こういうコードを書いたほうが良いと思ってる」というよりはむしろ「『私は』自然に『思いついた』のです」
0235215 (ワッチョイ 7e8f-XC/u)垢版2019/07/14(日) 09:47:33.88ID:c8hg/KPq0
>>227
codePointAt() メソッドは存じませんでした。
acute 等の The Unicode Standard Combining Diacritical Marks を含め、挙動等を確認してみます

参照:
Combining Diacritical Marks
http://www.unicode.org/charts/PDF/U0300.pdf
0236215 (ワッチョイ 7e8f-XC/u)垢版2019/07/14(日) 09:48:52.61ID:c8hg/KPq0
>>225
> for-ofで文字を取り出す

これも全く思いつきませんでした
String.length 等も含め、挙動を確認してみます
0237215 (ワッチョイ 7e8f-XC/u)垢版2019/07/14(日) 10:27:56.09ID:c8hg/KPq0
【補足】

>>234
> 「『私は』自然に『思いついた』のです」

だからこそ 0x61 等が即値
0238Name_Not_Found垢版2019/07/14(日) 11:02:54.18ID:???
>>230
君の質問はこういう事

- >>215と同じ機能を実装するコード(別解)を教えて下さい
- 他に条件はありません
- いろんなコードが欲しいです

この質問は広くコードを集める為のアンケート系質問と俺は呼んでる
OKWaveだとアンケートカテゴリで質問しないと、NG
君が何某かの具体的な問題に直面しているわけではなく、ただ、広く情報を集めるのが目的だから「要件」はない

ただし、君は>>215で要件を全く出していないにも関わらず、回答に対して良し悪しを評価している
後出しで考え(要件)を出す、一番面倒なタイプの質問者
君は後出しで好き勝手にいえるから気楽だろうが、回答者は要件まっさらな状態で回答して悪評価されたらたまったものではないだろうな
0239Name_Not_Found垢版2019/07/14(日) 11:08:33.13ID:???
もらった回答で品評会開くのは勘弁だな
0240Name_Not_Found垢版2019/07/14(日) 11:14:57.78ID:???
>>215>>99に近しいものを感じる(同じ人かもしれない)
コミュニケーション能力(他人への説明能力)に問題があるんだよな…
0242Name_Not_Found垢版2019/07/14(日) 11:54:38.04ID:???
>>241
"「マルチイクナイ」防止" で予防している割に、爪が甘いな
あるいは、マルチポストの問題点を理解していないのか
0244Name_Not_Found垢版2019/07/14(日) 12:40:14.00ID:???
>>227
知られていないと言ったけどASCIIの範囲ならまだ予想も付きやすいかもしれない

だけどただ単にこのゲームをクリアするためではなくて
これは文字を変換する技能を問うているのだと思えば
特に日本に住んでいる我々はひらがなや漢字の文字コードでマッチさせることも有るだろう

>>228
求められない大量のマジックナンバーならそうして持っておくのも良いと思うけど
今回の場合簡単に分かりやすく求められるんだから求めたほうがより良いよ

>>234
JS界は「自然」の範囲が広いから今回のように単純な問題の場合どう書いても自然だから安心していい
ただ俺だったらこういう感じで書くかな
str.replace( /[A-Z]/gu, c => String.fromCodePoint( c.codePointAt() + 32 ) )

色んな書き方を見て知識を増やしたいというのなら、こういう書き方もできる
new TextDecoder( ).decode( new TextEncoder( ).encode( str ).map( p => p | 32 ) )

モダンな言語としてはif文for文や演算子を減らしてスッキリさせるのが良いと思う
ただバイナリ弄ったりして速度を稼ぎたいときは最適化を期待してあえて古風に書くけどね
0245Name_Not_Found垢版2019/07/14(日) 13:55:28.91ID:???
>>227

> A String value is a member of the String type. Each integer value in the
> sequence usually represents a single 16-bit unit of UTF-16 text. However,
> ECMAScript does not place any restrictions or requirements on the values
> except that they must be 16-bit unsigned integers.

という仕様が前提なら、us-ascii / JIS X 0301 そのままの文字コードとは限らないのでは?
実装依存ということだろう
0246Name_Not_Found垢版2019/07/14(日) 22:57:47.86ID:???
<div id="a">
<span class="b">あ い う え お</span>
<span class="b">か き く け こ</span>
</div>

↑ここからjQueryで

"あ い う え お\n
か き く け こ"

と、文字列を取り出しつつ改行(\n)を挟む簡単な方法ってないですかね

とりあえず
$('#a').html().replace()
でタグそのものを除去しつつ置換するか、
$('.b')に対してeachなどでループする方法くらいしか思い浮かびませんが
何か遠回りしてるような気がして
0248Name_Not_Found垢版2019/07/15(月) 00:34:47.53ID:???
lcoation.reload()を使って何十回も同じページをリロードしていると、
オブジェクトが捨てられないのか、メモリリークしてどんどんブラウザが遅く&不安定になっていきます
ググっても同様の質問はあるようですが、しかし綺麗な解決策は出て来ませんでした
現在のスクリプト等のことは全部忘れていいからただ単純にリロードさせたいだけなのですが
メモリリークしない方法はないのでしょうか?
実質的にリロードできれば変わったトリックでもいいのですが。
0249Name_Not_Found垢版2019/07/15(月) 00:42:13.47ID:???
>>246
親要素を取得してどうにかする、とか
表示すべきコンテンツが具体的に分からないから正確な所は何とも
0251Name_Not_Found垢版2019/07/15(月) 02:15:29.60ID:???
HTMLCanvasElement.getContext('webgl')で取得したRenderingContextを破棄して
再度同じCanvasElementからRenderingContextを取得することは可能ですか?
0252Name_Not_Found垢版2019/07/15(月) 07:45:36.28ID:???
>>247
ESではUTF16で無いといけないとは決められていないじゃないか

>>251
コンテキストは一度取得するとその要素に紐付いて永続的に残る
同じ状態のものを何度も取得することはできても
破棄してやり直すことは要素ごとを破棄してやり直さない限りできない
0255Name_Not_Found垢版2019/07/15(月) 17:17:01.43ID:???
>>248
本当にそういうメモリリークなのならスクリプトで対処することじゃない
Webコンテンツというのは残るものなので場当たり的な対応はすべきでない
きちんとブラウザの問題としてissueを投げて根本から対応してもらうべき
0256Name_Not_Found垢版2019/07/15(月) 17:33:47.63ID:???
広告ブロックや動画ダウンロード等の拡張が原因だったりして
0257Name_Not_Found垢版2019/07/15(月) 20:12:16.31ID:???
248ですが中間報告をば。
ふと、 location.reload() する直前で document.body.remove() するという手を思いつき実行してみた所
とりあえず1日程度の起動ではブラウザの挙動が悪くならなくなったっぽい気がします
まったくリークしてないかは不明
自分がググった限り(少なくとも日本語と英語圏では)この問題で質問する人はいても
有効な解決策を回答してる場面は見当たらなかったのでこれでいいかどうかは分かりません
0258Name_Not_Found垢版2019/07/15(月) 21:06:01.97ID:???
何十回もリロードってDDoSアプリでも作ってんのか?
0259Name_Not_Found垢版2019/07/15(月) 21:22:16.33ID:???
>>257
とにかく正確に再現できる最低限の手順を用意してブラウザにissueを投げろ
ここで書いてくれたら検証してこっちでissueを調べて挙げてやってもいい
いずれにしろ今の所君がそう感じるというだけの話だからこれ以上相手にはできない
0260Name_Not_Found垢版2019/07/15(月) 21:56:38.01ID:???
>>258
Distrusting and Cynical? You May be Hurting Your Brain: Dementia Linked to Cynical Distrust : Health & Medicine : Science World Report
ttps://www.scienceworldreport.com/articles/15059/20140529/distrusting-cynical-hurting-brain-dementia-linked-distrust.htm
Why Random Acts of Kindness Matter to Your Wellbeing | Psychology Today
ttps://www.psychologytoday.com/us/blog/emotional-nourishment/201711/why-random-acts-kindness-matter-your-wellbeing
0262Name_Not_Found垢版2019/07/16(火) 05:05:28.40ID:ZHmuKmI7
これポップアップ用のhtmlなんですが、アラートが出ません
何らかのapiが必要なら教えてください
https://ideone.com/QScjMX
firefoxです
0263Name_Not_Found垢版2019/07/16(火) 05:58:45.13ID:ZHmuKmI7
こういうアドオンのでバッグをするには、
firefoxの場合、インスペクター>コンソール内のどの項目を使うといいんでしょうか
0264Name_Not_Found垢版2019/07/16(火) 08:20:18.45ID:???
最近の質問は「調査の丸投げ」って感じだなー
「自ら学ぶ人」の意味をよく考えた方がいい
0265Name_Not_Found垢版2019/07/16(火) 11:26:55.17ID:???
>>252
でも usual だね

EBCDIC でも何でも良いからWeb制作に関する範囲で
UTF-16で実装「されていない」例あるの?
0266Name_Not_Found垢版2019/07/16(火) 11:33:56.08ID:???
ん?ここは実際のブラウザの話はしないんじゃなかったっけ?
0267Name_Not_Found垢版2019/07/16(火) 12:22:22.56ID:???
>>266
>>99ないし>41が「動くかどうかは話をしたくない」といってるだけ
彼一人が守れば良い
0269Name_Not_Found垢版2019/07/16(火) 12:36:46.81ID:???
>>267
> 彼一人が守れば良い
同意。まじソレな。

>>246
こんな感じ
console.log($.map($('.b'), e => e.textContent).join('\n'));
0270Name_Not_Found垢版2019/07/16(火) 12:45:56.31ID:???
>>262
それが動かないのならあなたの環境がおかしい
0272Name_Not_Found垢版2019/07/16(火) 15:24:35.03ID:ZHmuKmI7
>>270
どうすれば特定出来ますか
0273Name_Not_Found垢版2019/07/16(火) 18:54:42.77ID:???
>>267
お前もしつこいな
俺は「動くかどうかは話をしたくない」とは言っていないと何度も説明しただろ
Web仕様が実際どう動くかは勿論話すべき
だけどそのブラウザ固有の問題はどうなんだろうねと言っただけ
そこに関しても話すことを反対してはいないだろ
いい加減にしてくれ
0274Name_Not_Found垢版2019/07/16(火) 19:08:58.89ID:???
つうか俺はむしろマニアックだったりエッジな質問への回答を荒れることなく行える場を作りたいと長年思っていて
テンプレ議論の機会が来たと思ったのでそうした面で基準を定めた方が良いんじゃないかという問題提起をしてみたのであって
俺の思いはあるけどとにかく決まっていることが大事で、決めてくれさえすれば俺は素直にそれに従って回答をしていくと言ってるのに
どう勘違いしたら>>267みたいなほんと真反対な勘違いができるんだろうな
0275Name_Not_Found垢版2019/07/16(火) 19:56:28.91ID:???
>>273-274
>>41だけ読むと、そうは読めなくて、複数のレスを繋ぎ合わせてようやく、解読出来るか出来ないかのレベル
どこで訂正したのか知らないし、どれとどれが同じ人なのかも分からない
後出しで持論付け足しを繰り返してまで自己主張するなら、トリップを付けなよ
はっきりいって、君の説明力が低すぎるのが問題
0277Name_Not_Found垢版2019/07/16(火) 20:40:27.54ID:???
>>275
>>41はただの俺(>>36)をからかった荒らしレス

あと絶対に勘違いしてもらいたくないのが自己主張を俺から始めたわけではないということ
俺が>>10のレスを書いた後>>33というレスが来たから俺は33に俺の思いと一般論として>>36を書いたが
その時点では別に俺が10であるというのをアピールする必要性はない
そしてその後も36に対してのレスが色んな人に突っ込まれたためあくまで突っ込んできたその人個人に対して順次個別に説明していっただけ

断じてこれは俺が望んで始めたことではないし、いきなり自己主張を始めたみたいに言われても困る
俺は俺として基本的に俺にレスを付けた人に対して「同じ様に」個別にレスを付けてるだけで
レスも付いてない、なりすましとも言えないような幼稚なレスを見て勝手に同一人物だと混同するのは俺の責任ではない

全部読まないと分からないと言うが、そこも意味が分からない
41を読んで267の発言が出るのは分かる
だが99をどう読んでも267の発言は出ないだろう

俺が怒ってるのは俺の説明を全部推測して漏れなく見ろと言ってるのではない
誰が連続で話してるのかを想定しなかったことではなく、むしろ想定して思い込んだことに対して怒ってる
全部読むどころか、99を全く読んでいないではないか

どうして99が41と同じ、だから99の内容も読まず41が言いたいんだろうと勘違いをし、
しかもそれをコテなどを付けない俺の責任と言えるのか、それが心底訳がわからなくて驚く
基本を言うならばレスなんてそのレスだけを読んで反応すればいいだけだろう
なんで自らわざわざ難しいことをして失敗したことに対して俺が責任取らなきゃならないのか

俺も誰が同一なんて全く気にせず、最後のまとめを除き直接言われたことに対して直接答えることを繰り返しただけだから
マナーとして通しで矛盾が少ないように発言しようとはしてるが、けして連続性にこだわってはないし、
なんか俺が連続して自己主張してるみたいに捉えられると本当に困る
俺はその時その時で最も良いと思ったことを発言してるだけだから難しく考えるな
0279Name_Not_Found垢版2019/07/16(火) 20:54:03.99ID:???
>>275
多分俺の説明は分かりにくいだろうからもう一レス追加するけど
俺は>>99に対して>>267のレスが付いたから
99の俺として267にレスを付けてる

まあ99とは言うが99はそれだけで完結していないので
実際はそれに含まれているレスチェーンも多分に含みはする

とにかく俺は>>99の俺として、初めて>>41と混同されたことに対して怒ってる
だから俺にレスを付けなければ別に41と他のどれを混同しようが勝手だし、
もし俺を思って41に反応したレスがあっても41は41で41に対するレスは41に対するレスなので
俺は気にしないというか、その自然な流れを尊重することにしているので入っていくことはしない、実際そうしてきた

だがそこらをもし勘違いしたとして、それは言わなかったり分かりやすくしなかった俺の責任ではない
大々的、ざっくばらんに自己主張演説を俺がしていたわけではないのだから
0280Name_Not_Found垢版2019/07/16(火) 21:51:58.72ID:???
>>277
連続性が重要でないなら、コメントを書いた人にが非難されるだけで「君でない別人」を非難されようが気にする必要はないでしょ
そして、君は「誤解するな。俺がいってるのは...」と弁解する必要もない
君が書いている事と君が過去に書いている事は何の連続性もないわけだからね
0281Name_Not_Found垢版2019/07/16(火) 22:19:31.50ID:???
>>277
> けして連続性にこだわってはないし、
> なんか俺が連続して自己主張してるみたいに捉えられると本当に困る

お前が誰かは知らんが、

>>279
> まあ99とは言うが99はそれだけで完結していないので
> 実際はそれに含まれているレスチェーンも多分に含みはする

レスチェーンをお前が書いたのなら、何連投もしてる
内容が伴っているなら良かったんだが、発展性のない愚痴を延々と語るだけで、皆がうんざりしているのがはたから見ていて良くわかった
0282Name_Not_Found垢版2019/07/17(水) 07:03:08.59ID:???
>>280
俺でない別人を非難しようが知ったことではない
だが事実Aと書いてあることをBと思い、思うだけではなく他人に嘘を教える>>267
プログラマ精神として、回答者精神として見過ごせない

俺からすると267はJSの型は全てオブジェクトだとかいう発言と同じ
だからつい調子に乗って「解説」をしてしまった
てへぺろ

>>281
うんざりさせてしまって申し訳ない
だけど俺は最初からうんざりしていた
それに対する申し訳ないという気持ちを受け取っておこう
0283Name_Not_Found垢版2019/07/17(水) 10:46:26.06ID:/2qSQIzg
firefoxでアドオン作ってるんですが、ページの内容を取得するにはどの辺使えばいいか教えてください
資料がなさすぎる
0284215 (ワッチョイ 7e8f-XC/u)垢版2019/07/17(水) 10:47:26.84ID:99YTPkGu0
プリミティブ型以外全部オブジェクトなんじゃなかったっけ
0285215 (ワッチョイ 7e8f-XC/u)垢版2019/07/17(水) 10:48:50.52ID:99YTPkGu0
ごめんなさい>先日御意見・御感想くださった方々

途中経過を下手に書くのもアレですが
「問答まとめ」はココに書いても良いでしょうか
0286Name_Not_Found垢版2019/07/17(水) 12:17:36.50ID:???
>>285
その無駄な1レスで聞くくらいなら素直に書いたら?
0287143垢版2019/07/17(水) 12:18:35.29ID:???
>>145
ありがとうございました。そういやProxomitronをはるか昔に名前だけ知ってたのですが
こういう凄まじいソフトがあったとはw
特定部分だけ書き換えてそこそこ動くことが分かったのですが、
もうちょっと時間を掛けて詳細な使い方を調べて当初の方針通りsetTimeoutを記述している部分を
別の名前の関数に上書きし時間の部分だけ0にしてsetTimeoutに投げて動かすことができました。
試行錯誤に本当に時間がかかったなあ…
0288Name_Not_Found垢版2019/07/17(水) 12:35:52.42ID:???
>>283
コンテンツスクリプトから普通にDOM操作すればいいだけ
0289Name_Not_Found垢版2019/07/17(水) 12:36:39.67ID:???
>>282
君が書いた事実を確認できるのは君だけ
「嘘か本当か分からないもの」を推測で補完されるのは、止めようがないでしょ
「連続性に拘ってない」と君はいうけど、レスチェーン上では連続性を期待してるし、今だって期待してるからレスが成り立つわけだし
君にレスするには連続性の認識は必須

君は結局、連続性を期待していて、自分の意図が伝わらない事に腹を立ててる
その原因は、「一つのコメントで意図が伝わるように書いてないから」
君にそれが出来れば問題ないけど、今での流れを見る限り出来るとは思えない
だから、トリップをお勧めした
0291Name_Not_Found垢版2019/07/17(水) 15:26:08.62ID:/2qSQIzg
>>288
ありがとう
0292Name_Not_Found垢版2019/07/17(水) 16:53:08.43ID:/2qSQIzg
コンテンツスクリプトって大雑把にいうとなんですか?
これを指定しないとページの操作は出来ないというところまでわかりますた
0293Name_Not_Found垢版2019/07/17(水) 18:42:50.04ID:/2qSQIzg
vs codeってjavascriptのインテリセンス出ませんか?
innerhtmlが出ない
0295Name_Not_Found垢版2019/07/17(水) 20:18:21.15ID:???
>>289
レスチェーン上で連続性があるのは当たり前では?
一つのコメントで意図が伝わるように云々は済まないが俺は必要性を感じていない
質問に対して回答し、それで分からないところがあるのは回答者の責任ではない

質問者が分からないけどどうでもいいやと思えばそこで話は終わりで、
質問者がここが聞きたいと思えばそこをより深く掘り下げていく
質問者が最初に質問しているのだから、自ら学ぶために流れを自由に作るのは当然質問者であるはずだ
回答者がどこまでも質問者のためを思ってこれが1レスで完結している完璧な回答だと押し付ける方がおこがましいんじゃないか?

俺は最初から全てをわかってもらおうという気持ちは一切ない
物事がそんなにシンプルだとは考えていないし、単純化して教えるのは良いことかもしれないがね
ともかく俺のレスに対して気になるところがあれば喜んでその指摘を受け入れるし
それに対して誠実にレスを返すというのが俺の流儀
俺はあくまで1回1回会話を返してるだけだからわざわざトリップを付ける必要性は感じない
トリップを付けろという君がまず付けてみればいいのでは?

というか初っ端の
>>「嘘か本当か分からないもの」を推測で補完されるのは、止めようがないでしょ
という発言から俺には理解できない
多分だけど、君は文章を読む力が弱いんだろう、そこは俺が文章を書く力が弱いのとおあいこだ
俺はどうして怒ってるのかを説明したよね

もしくは君にとっての「推測」とは、目隠しをして当てずっぽうをすることなのか?
君の脳というのはそれほどまでにスカスカなんだろうか
それとも「おあいこ」なんだろうか
むしろ君に興味が沸いてくるね
0296Name_Not_Found垢版2019/07/17(水) 20:23:11.83ID:/2qSQIzg
>>294
どうも
ページ内のhtmlで動かすものってことですね
userchromeとusercontentの違いみたいな
0297Name_Not_Found垢版2019/07/17(水) 20:33:02.16ID:???
>>295
そりゃ、お前は困らんだろうな
困るのは周りだけ
0299Name_Not_Found垢版2019/07/18(木) 05:02:17.32ID:1cUBF1u8
electron製のフリーソフトってあるんですか?あまり使われていない印象です
firefoxのアドオン作りつつ、electronでデスクトップアプリを作りたい
C#でもいいですけど、、、
同じjavascriptでできるのが良いなと思って、electronも少しづつやってます
0300Name_Not_Found垢版2019/07/18(木) 07:14:37.45ID:???
ツクールとかエレクトロンじゃなかった?
0301Name_Not_Found垢版2019/07/18(木) 07:20:48.69ID:1cUBF1u8
そうなんですかね
C#もやって、javascriptもやって、となると初心者の自分にはきついので流用できるといいなーなんて。
0302Name_Not_Found垢版2019/07/18(木) 07:26:22.27ID:1cUBF1u8
var get_html = document.getElementsByTagName("html");
window.alert(get_html);

これでhtml collectionというのが帰ってくるんですけど、htmlタグではなくて、全体を取得しちゃってる感じですかね?
0304Name_Not_Found垢版2019/07/18(木) 10:53:55.00ID:1cUBF1u8
配列なんですか。
まだjavascriptがよくわからなくて
ただ、htmlタグに属性を追加するなど、書き換えたかったのです
0305Name_Not_Found垢版2019/07/18(木) 11:37:50.39ID:???
先頭の一つだけ欲しい時はdocument.querySelector("html")
0306Name_Not_Found垢版2019/07/18(木) 11:45:06.03ID:1cUBF1u8
どうもです
0308Name_Not_Found垢版2019/07/18(木) 17:46:27.42ID:1cUBF1u8
firefoxで背景を黒くするアドオン、dark readerのようなものを制作しているのですが、どこにcssを指定したら良いものでしょうか
https://mawatari.jp/archives/css-selector-priority#matome
このサイトによると優先順位が最も高いのはimportant指定したものとあります
ということは、インラインにimportant指定すればいいわけですよね

もっとスマートな方法はあるんでしょうか?
0309Name_Not_Found垢版2019/07/18(木) 17:58:58.28ID:x0YcemEL
それってサイトがprefers-color-schemeとか定義してたらちゃんと読み取ってくれんの?
こっちはわざわざデザイナー多く雇って画像から何から全部作ってるのに
何でもかんでも勝手に適当に一律に弄られたら困るんだけど
0311Name_Not_Found垢版2019/07/18(木) 18:22:30.31ID:1cUBF1u8
>>309
上のリンクの説明だと、インラインCSSが最も優先されるわけで、その定義を探す必要はあるんでしょうか?優先される側で指定されたものが上書きされると思っていたんですが。
0312Name_Not_Found垢版2019/07/18(木) 18:30:58.72ID:???
>>311
色に影響する定義って沢山あるし
Paint APIだってある
一律に制御することはできないしして欲しくない
0313Name_Not_Found垢版2019/07/18(木) 18:46:43.03ID:???
>>312
拡張やユーザCSSがauthor declarationsより優先されるのは自明で、それを承知で>>308は改変しようとしてる
問題が起きても責任の所在は308にあるので、気にする必要はないのでは?
0314Name_Not_Found垢版2019/07/18(木) 18:47:04.34ID:1cUBF1u8
>>312
サイトごとに違うのでセオリーみたいなものはないってことですね
dark readerがどうやってるのかわかりませんが、一応ほとんどのサイトで機能しますね
0315Name_Not_Found垢版2019/07/18(木) 18:51:18.02ID:???
>>308
横からちょっかい出すのにスマートな方法なんてないよ
0316Name_Not_Found垢版2019/07/18(木) 19:40:11.44ID:???
>>311
誰にレスしてるの?
スレ違いのCSS質問と教えて貰ったんだから、追加質問は控えるべきじゃないの
0317Name_Not_Found垢版2019/07/18(木) 19:53:41.03ID:???
まあ、ユーザCSSで十分な要件だし、わざわざ拡張を作る必要もないよなあ
昔はProxomitronで書き換えてたけど、ブラウザも便利になったもんだ
0318Name_Not_Found垢版2019/07/18(木) 20:01:39.29ID:???
今はProxomitronではなくFiddlerを使うらしい
0319Name_Not_Found垢版2019/07/18(木) 20:07:44.51ID:???
>>318
Fiddlerに通信内容を書き換える機能があるの?
ただのパケットキャプチャソフトだと思ってた
0320Name_Not_Found垢版2019/07/18(木) 20:25:48.24ID:???
>>319
標準機能としてユーザーエージェントの偽称機能があるぞw
Ruleの一つとして用意されており、カスタムRuleも作れる
0322Name_Not_Found垢版2019/07/18(木) 21:47:44.44ID:???
それを言うならこのスレ民的にはキャプチャやプロキシはNodeを使うでしょ
DOMパーサとかのライブラリも豊富だし
0323Name_Not_Found垢版2019/07/18(木) 23:20:14.13ID:???
>>304
要素の操作は、jQuery が簡単!

初心者に、お勧め
0324Name_Not_Found垢版2019/07/18(木) 23:26:18.93ID:???
そろそろ本腰入れてjQueryを潰す頃か
4,5年かけてFlashを潰すため2chは勿論色んなブログを廻ったあの日のように
0325Name_Not_Found垢版2019/07/19(金) 11:24:26.72ID:???
本腰を入れるために、まずAppleにjQueryが動かないように頼んではどうかね?
FlashもSafariで動かなくすることで徐々に潰していくことが出来た。
ウェブ標準技術で動くjQueryをどうやって動かなくするのかは知らんが(笑)
0326Name_Not_Found垢版2019/07/19(金) 12:48:58.46ID:???
動かなくする必要はない。
これは駄目なものなんだというイメージを閲覧者に少しずつ植え付けていけるようネガティブキャンペーンをすればOK
0328Name_Not_Found垢版2019/07/19(金) 15:49:13.93ID:???
githubがjQuery廃止、bootstrapも5から廃止と来たらそろそろラスボスWordPressから廃止来て欲しいね。
Webサイト全体の3割、CMSサイトに限れば6割のシェアを持つコイツがデフォで採用してることがjQueryのシェアを押し上げてる元凶だからね。
0331Name_Not_Found垢版2019/07/20(土) 15:10:27.08ID:???
1〜9 の整数の乱数が、25個ほしいです。
下の公式を、ラムダ式かメソッドにして、配列に入れてもらえませんか?

var min = 1 ;
var max = 9 ;

var a = Math.floor( Math.random() * (max + 1 - min) ) + min ;
0333331垢版2019/07/20(土) 16:06:15.14ID:???
let get_random_int = ( min, max ) => {
return Math.floor( Math.random() * (max + 1 - min) ) + min;
};

console.log( get_random_int( 1, 9 ) );

ここまでは出来ました

このメソッドを、任意の回数、例えば、25回呼んで、配列に入れるには、どうすればよいですか?
map を使うのですか?
0334331垢版2019/07/20(土) 21:49:10.36ID:???
出来ました。
ただ、乱数が偏っているような気もするが

function get_random_int( ) {
return function( ) {
const min = 1
const max = 9
return Math.floor( Math.random( ) * ( max + 1 - min ) ) + min ;
};
}

const ary = [ ...Array( 25 ) ].map( get_random_int( ) )

console.log( ary );

出力
[ 2, 8, 6, 2, 5, 7, 8, 1, 4, 6, 7, 1, 7, 7, 5, 4, 7, 4, 1, 3, 4, 5, 6, 8, 6 ]
0337Name_Not_Found垢版2019/07/21(日) 13:19:40.94ID:???
>>334
精度を気にするのならrandom関数は自分で実装した方がいい

var rngstate = crypto.getRandomValues(new Uint32Array(2))
function MathRandom() {
var r0 = (Math.imul(18030, rngstate[0] & 0xFFFF) + (rngstate[0] >>> 16)) | 0
rngstate[0] = r0
var r1 = (Math.imul(36969, rngstate[1] & 0xFFFF) + (rngstate[1] >>> 16)) | 0
rngstate[1] = r1
var x = ((r0 << 16) + (r1 & 0xFFFF)) | 0
return (x < 0 ? (x + 0x100000000) : x) * 2.3283064365386962890625e-10
}
0338Name_Not_Found垢版2019/07/21(日) 13:42:05.73ID:???
>>337
サイコロを6回ふると同じ目がでてきます。偏ってますね。
真の乱数というのは6回サイコロを振ったとき同じ目が出ないもんですよ。
0339Name_Not_Found垢版2019/07/21(日) 14:01:02.40ID:???
>>338
同じ数字が出てほしくないなら
予め配列を作っておいてそれをシャッフルするとかはどう?
0340Name_Not_Found垢版2019/07/21(日) 14:01:44.27ID:???
> 真の乱数というのは6回サイコロを振ったとき同じ目が出ないもんですよ。
乱数をなんだと思っているんだ?
0341Name_Not_Found垢版2019/07/21(日) 14:17:07.24ID:???
>>340
これだと、乱数どころか規則正しい配列だよなあ
6回振れば、必ず目的の数値が1回出るわけだし
0342Name_Not_Found垢版2019/07/21(日) 14:43:26.88ID:???
確率で言えば6回サイコロを振れば6割の確率で数字が連続することがある
偏ってないってことが偏ってるんだよ
0343Name_Not_Found垢版2019/07/21(日) 15:16:26.19ID:???
>>338
> 真の乱数というのは6回サイコロを振ったとき同じ目が出ないもんですよ。

12回サイコロを振って、同じ目が2回ずつ出るとする
出た目を順番に並べて、12個の数値を持つ数列とする
数列から適当な場所で「連続した6個の数値」を取得した場合、どこをとっても同じ目が存在しない

この数列がどういう規則性を持つのか、を考えてみるといい
0344Name_Not_Found垢版2019/07/21(日) 16:01:43.22ID:???
>>338
今コインを投げて表が出ました。
もう一度投げて表が出る確率は?
一般人「1/2」
お前(バカ)「次に表が出ると表表となって偏っている!次は裏が出て表裏とならなければ乱数とは言えない!だから次に表が出る確率は0%だ!これが正しい乱数だ!」
0345Name_Not_Found垢版2019/07/21(日) 16:35:27.33ID:???
乱数の使用目的にもよるでしょ
ゲームとかに用いられる乱数では人間が不平等感を感じないように調整されている
0346Name_Not_Found垢版2019/07/21(日) 17:01:41.97ID:???
>>345
ゲームはそりゃ調整されてることもあるだろうね
何を言いたいのかよくわからないが
>>338がバカだって現実は何も変わらないね
0347Name_Not_Found垢版2019/07/21(日) 20:50:40.84ID:???
>>338がバカって。。。
いつからこのスレはジョークにジョークで返す余裕もなくなったんだろうね
>>339とかはあえて真面目に回答して煽り返してるが
0349Name_Not_Found垢版2019/07/21(日) 21:19:04.01ID:???
>>348
2chで大昔からあるバカ煽りでしょ
お前大丈夫?
ここがどこだか分かってるか?
0350Name_Not_Found垢版2019/07/21(日) 21:25:42.50ID:???
>>349
あー、誤情報を書いちゃった時に「ジョーク」といっておけば流せると妄信している人を嘲笑するやつね
0351Name_Not_Found垢版2019/07/21(日) 21:33:24.66ID:???
>>340のアドバイスが豚に真珠
>>338>>345も「それは乱数じゃない」という事実に気が付いてない、という事に苦笑した
楽しくないジョークをありがとう
0352Name_Not_Found垢版2019/07/21(日) 21:37:21.80ID:???
>>350,351
思い込みの激しいアスペくんには難しいかったね
ここ流のコミュニケーションができないのであれば
yahoo知恵遅れにでも移ればいいよ
0353Name_Not_Found垢版2019/07/21(日) 21:51:37.55ID:???
これからは嘘八百を回答して、散々悩んで貰った後に「ジョーク」と後出しする事にしましょう。
どうぞ笑ってやってください。
0354Name_Not_Found垢版2019/07/21(日) 22:09:41.78ID:???
正しい回答を嘘と反論するのが5chの楽しみ方だよな
質問者は右往左往して楽しんでくれ
0355Name_Not_Found垢版2019/07/21(日) 22:31:01.54ID:???
右往左往する奴は最初からお呼びでない
嘘を嘘と分からないやつはお呼びでない
0356Name_Not_Found垢版2019/07/21(日) 22:32:16.27ID:???
情報弱者に嘘を教えるのがここ流のコミュニケーション
知識に疎い質問者は初めから敗者なのである
0357Name_Not_Found垢版2019/07/21(日) 22:46:25.61ID:???
当たり前
それが2chであり5ch
情弱を情弱と叩き続けて煽り続けてきたのがこのスレで
それでも食い下がってくる質問者を叩き直してきたのがこのスレ
自ら学ぶ気のない奴は来るな
初心者ですとでも書かれようものなら罵倒を浴びせたのがこのスレ
0358Name_Not_Found垢版2019/07/21(日) 22:51:43.23ID:???
自ら学ぶ気のある人に嘘を教えて追い出すのがこのスレ
0359Name_Not_Found垢版2019/07/22(月) 01:13:16.03ID:???
本当に学ぶ気のあるやつは勝手に学ぶ
ここに来るやつはやる気を上げてほしいだけのヘタレか制作依頼者ばかり
0360Name_Not_Found垢版2019/07/22(月) 08:10:49.02ID:???
>>359
> ここに来るやつはやる気を上げてほしいだけのヘタレか制作依頼者ばかり

それは同意
0361Name_Not_Found垢版2019/07/22(月) 08:55:51.12ID:???
少なくとも10年くらい前はそんなこと無かった
jQueryが広く使われるようになってから変な質問をする人が多くなったと思う
0362Name_Not_Found垢版2019/07/22(月) 10:35:36.85ID:???
requestAnimationFrameを呼ぶタイミングは
コールバックの最初のほうが良いですか?後ろのほうが良いですか?
0363Name_Not_Found垢版2019/07/22(月) 12:16:35.95ID:???
>>362
こういう質問もな
他人の物差しで良し悪しを判断して貰って思考停止したいだけ
0365Name_Not_Found垢版2019/07/22(月) 18:13:12.66ID:???
分からないんだろ、と煽っても無駄です
0367Name_Not_Found垢版2019/07/22(月) 20:30:41.92ID:???
脱jQueryとはいうけれどフロントエンドフレームワークも沼だな
0368Name_Not_Found垢版2019/07/22(月) 21:22:15.01ID:???
>>362
同じだから悩まなくていい
ただrequestAnimationFrameかrequestPostAnimationFrameかはしっかり悩まないといけない
0371Name_Not_Found垢版2019/07/23(火) 08:29:39.93ID:???
自分の考えを述べずに他人にお伺いを立てる奴は総じて自助努力が足りない
このスレの質問者のことだ
0373Name_Not_Found垢版2019/07/23(火) 11:29:19.53ID:???
>>368
ありがとうございます
requestPostAnimationFrameは使わなくても良さそうでした
0376Name_Not_Found垢版2019/07/23(火) 12:46:13.45ID:???
>>375
よく分からんが、嘘を書いてもジョークといっておけば、流せるのがここ流のコミュニケーションらしい
0377Name_Not_Found垢版2019/07/23(火) 18:57:30.14ID:???
>>376
何が言いたいのお前
荒らしてるやつが居るから俺も荒らしてやった
どうだ!ってことか?
0378Name_Not_Found垢版2019/07/23(火) 19:19:27.17ID:???
>>377
>>347の思想の持ち主が回答したんじゃね、といっただけ

彼を支持したわけでもなし
文句があるなら、本人にいってやれ
0379Name_Not_Found垢版2019/07/23(火) 19:21:57.51ID:???
>>347に問題が有るなら>>378にも当然問題があるとわからないのか
こういう自覚の無い荒らしはたちが悪い
0380Name_Not_Found垢版2019/07/23(火) 23:34:41.87ID:psgBedrU
npmでシェルスクリプトだけのパッケージを配布してもOKですか?
0383Name_Not_Found垢版2019/07/24(水) 10:30:17.00ID:Remlr8vY
>>382
なんでだめなんでしょうか?
規約に書いてありますか?
0384Name_Not_Found垢版2019/07/25(木) 05:30:19.35ID:???
npm で、それをインストールしても、

require, import できないから、JavaScript で使えない!
0385Name_Not_Found垢版2019/07/25(木) 07:59:59.99ID:???
*-cli みたいな、node_modules/.bin に置くことを想定したパッケージならあるんじゃね?
0386Name_Not_Found垢版2019/07/26(金) 08:52:52.98ID:3uP+oR/U
for ( i=0; i<arr.length i++) {

if (何らかの条件) {
(何らかの処理)
return false?break?
}

 (最終的な処理)
}

例えばループ中、i=2のときにifの「何らかの条件」に合致したとして
その場合は「最終的な処理」をさせずにi=3へ移行したいのですが
return false?break?のところは何と書けばよいでしょうか?
0388386垢版2019/07/26(金) 09:21:15.14ID:???
>>387
あっそれですありがとうございます!
今までifの条件を逆にしてどうにかしてましたが、アーリーリターン的な書き方を覚えたかったので…
0389Name_Not_Found垢版2019/07/26(金) 14:08:44.61ID:???
>>338
サイコロを6回ふったとき同じ目が出ない確率を求めよ(夏休みの宿題)
0390Name_Not_Found垢版2019/07/26(金) 22:04:51.16ID:???
数学と現実は違う
現実と人の頭の中の世界はもっと違う
数学を使って人間の頭の中の世界と向き合うのがフロントエンドエンジニア
いい加減気が付いたほうが良い
0391Name_Not_Found垢版2019/07/27(土) 15:05:10.79ID:???
カルドセプトサーガ「真の乱数とは奇数と偶数が交互に出る」
0393Name_Not_Found垢版2019/07/27(土) 17:17:05.00ID:???
document.writeを使わずにインナーテキストを書き換える方法についてお訊ねしたいのですが
要素を取得してからelement.innerTextなどを書き換える以外で同じことをする方法ありますか?
0402Name_Not_Found垢版2019/07/30(火) 15:42:28.02ID:j7QmNAUu
JSを使ってアドセンス広告を任意の位置に挿入するスクリプトを書いてるのですが、

Ins.style.display = 'block';
Ins.dataset.adClient = ‘aaaaaaa’;
Ins.dataset.adSlot= ‘111111’;


上記のような値に、レクタングルを全幅表示させる「data-full-width-responsive=‘true’」というパラーメータを追記すると、どのような構文になるのでしょうか…?


Ins.style.display = 'block';
Ins.dataset.adClient = ‘aaaaaaa’;
Ins.dataset.adSlot= ‘111111’;
Ins.dataset.full-width-responsive=‘true’;


と書いてみたところ、動作しませんでした…。
ご教授いただければ幸いです。
0403Name_Not_Found垢版2019/07/30(火) 16:33:23.21ID:j7QmNAUu
>>402
すみません、自己解決しました。。
0404Name_Not_Found垢版2019/07/30(火) 16:39:39.39ID:j7QmNAUu
連投すみません;

かなり初歩的な質問なのですが、よく「document.writeは使うな」という警告を耳にしますが、あれはなぜなのでしょうか?
window.onloadイベントを記述してもNGなのでしょうか…?

現状、document.writeでスクリプトを読み込んでいるのですが、別の方法に変えたほうが良いのでしょうか?
0406Name_Not_Found垢版2019/07/30(火) 20:06:14.66ID:???
>>404
使うなというのではなく、初期から実装されてたから今では古いし、他の手段があるからという事
あとDOMを扱う時に不具合が生じるケースがある(どのような場合か知っていれば問題ない)

そのくらいか?
0408Name_Not_Found垢版2019/07/31(水) 08:18:02.44ID:???
相変わらず、自助努力する気のない丸投げ質問ばがりだな
0409Name_Not_Found垢版2019/07/31(水) 09:56:39.11ID:???
>>406
レンダリングの最適化を妨げるので使うなとされている
使わない事を誓うフィーチャーポリシーすら定義されている
0410Name_Not_Found垢版2019/07/31(水) 11:08:38.69ID:8ILJEm94
JavaScriptコードがレンダリングに必須な場合
どうやって最適化するんだろうか?

遅い回線使ってると時たま見るよね。
ページ読み込んでる途中はレンダリングが崩れていて、
ページ読み込み完了したらやっとまともにレンダリングされるページ

JavaScriptを非同期で読み込むことが目的になってしまって
レンダリングが人間にとって最適化されてない
0411Name_Not_Found垢版2019/07/31(水) 11:38:38.17ID:???
document.writeなんてIE6の頃ですら使わない方がいいって言われてたのになんでいまだに使いたがるんだろうか?
0412Name_Not_Found垢版2019/07/31(水) 13:47:00.98ID:???
document.writeが適切な場合だから
0413Name_Not_Found垢版2019/07/31(水) 15:22:50.27ID:???
document.write を使うと、一旦、すべての要素が消えてから、新しく作られるから!
0414Name_Not_Found垢版2019/07/31(水) 16:27:47.86ID:???
Javascriptがレンダリングに必須なことなんて殆どない
0415Name_Not_Found垢版2019/07/31(水) 17:24:56.19ID:nbAt67+R
>>391
線形合同法を利用してる分際で出しゃばりやがってw
0416Name_Not_Found垢版2019/07/31(水) 18:30:21.52ID:???
appendChilde的なのを期待して使っちゃう初心者は多いだろうね
実際は>>413なんだけど
0417Name_Not_Found垢版2019/07/31(水) 20:52:51.40ID:???
>>410
回線が遅いと言うだけで処理性能やストレージが満足に使えるならやりようはいくらでもある
ブラウザも先読み機能が強化されているしSWでキャッシュ周りもいじれる
0418Name_Not_Found垢版2019/07/31(水) 20:58:52.92ID:???
>>417
最適化っていうのは、単に先読みのことだったの?
ってことは回線が遅いとレンダリングが崩れるよね
0419Name_Not_Found垢版2019/07/31(水) 21:16:30.36ID:???
>>418
>>410で述べられてる最適化はまた別でしょ
同期script及びdocument.writeがどう最適化を阻害するかは
調べたら詳しく出てくるだろうからここで適当に説明することはしないけど
0420Name_Not_Found垢版2019/07/31(水) 21:28:07.47ID:???
崩れるのが嫌ならロード終わるまで表示させなきゃいいじゃん
0421Name_Not_Found垢版2019/07/31(水) 21:29:34.42ID:???
それを実現するのが「ブロック」なんだよ
0422Name_Not_Found垢版2019/08/01(木) 12:16:34.08ID:???
すごく恥ずかしい質問なのですが
HTMLに点在するscriptタグの変数というのは共有されてるんですか??
ポリフィルとかの変数と自分のスクリプトの変数と名前が同じだとどうなるのかな???と思いました
0423Name_Not_Found垢版2019/08/01(木) 12:25:35.94ID:???
共有される、但しモジュールならされない
後に実行された方に上書きされる
0424Name_Not_Found垢版2019/08/01(木) 12:41:23.14ID:???
だから一般的なライブラリは変数や関数名が競合しないように(function() {〜})();で囲って
必要最低限だけwindow.〜に代入して外部に公開してる
0425Name_Not_Found垢版2019/08/01(木) 12:41:37.68ID:???
>>423
やっぱりされるんですね
自分のはモジュール???ではないと思うので気をつけます
ありがとうござました
0426Name_Not_Found垢版2019/08/01(木) 12:50:40.53ID:???
>>424
ありがとうございます
入門書を読んだぐらいなので何となくしかわからないですが調べて勉強してみます
0427Name_Not_Found垢版2019/08/01(木) 14:02:44.46ID:L/xYC/oK
オブジェクトの中身を、オブジェクト名を指名せずにキー名だけで取得できるようにする方法ないですか?
と質問しようとしましたが

let obj = {'dog': '犬', 'cat': '猫'}

Object.keys(obj).forEach( function (key){

window[ key ] = obj[ key ]
})

console.log(cat)
console.log(dog)

できちゃいましたね…
もし他にいい方法があれば教えていただきたいです
0428Name_Not_Found垢版2019/08/01(木) 18:24:26.72ID:???
>>422の疑問が湧くのももっともなんだよね
どうも解説書にこういった肝心なことが書かれてないことが多すぎる

多くのJavascript入門書に欠けている(重要な)記述
・var等の単語の語源の紹介
・スクリプト同士の変数や関数名は共有されているのかどうかの疑問
・ユーザースクリプトやブラウザ拡張機能のスクリプトは、ブラウザや、見ているページに対して、どのように存在するのか
・イベントリスナーやsetTimeout等に無名関数を登録する時変数の中身を値渡しする方法
・beautifierやLintの存在とそれらをローカルで使うためのエディタやプラグインの紹介
・ブラウザの開発ツールの使い方(特に効果的な使い方のtips)
これらを書かない著者はボンクラだわ
0429Name_Not_Found垢版2019/08/01(木) 20:24:24.70ID:???
結果として変数が共有されるとも言えるが
もっと素直にグローバルが同じと考えたほうが良い
0430Name_Not_Found垢版2019/08/01(木) 20:25:35.73ID:???
そういや略語の一覧や元になった単語は教えたほうがいいよな
strをずっと攻撃力と思ってたわははは
0431Name_Not_Found垢版2019/08/01(木) 20:54:44.83ID:???
varはvariableで変数なんだなって分かるけどletとかdimとか未だに良く分からない・・・
0432Name_Not_Found垢版2019/08/01(木) 21:05:03.67ID:???
letはLet's la 前進のLetだし、
dimはディメンジョンのdimだろ
0433Name_Not_Found垢版2019/08/01(木) 21:22:23.90ID:???
letはもともと数学の言い回しだそうな。
Let x be 100 in the following fomula.
0434Name_Not_Found垢版2019/08/01(木) 21:26:54.58ID:???
>varはvariableで変数

それじゃまだ丸暗記の域を出ないでしょ
variという語根に「変わる」という意味があってバラエティとかバリエーションと同じ部品であって
variableは当然-able(可能)がついてるから「変わることができる」という意味だ、まで説明しないと
0436Name_Not_Found垢版2019/08/01(木) 22:52:12.65ID:???
言語によってletが定数だったりするからカオス
0437Name_Not_Found垢版2019/08/01(木) 22:53:29.01ID:???
letが定数になるってどの言語?
0439Name_Not_Found垢版2019/08/01(木) 23:11:48.88ID:???
外から渡されたスクリプトを安全に実行するのにサンドボックスを作ろうとしているんだけど、
WebWorkerってスクリプト本体をstringで渡すことってできないんだっけ?

あるいはeval()でグローバルオブジェクトを任意に指定できたらそれが一番楽なんだが、
なんでできないんだろう。
0441Name_Not_Found垢版2019/08/01(木) 23:39:32.05ID:???

今のeval()が許されてるのに逆にそれより危険になるって?マウントとりたいにしても雑すぎ。
0442Name_Not_Found垢版2019/08/02(金) 00:11:07.24ID:???
evalが許されてることがなにか問題あるの?
サンドボックスというのは環境を隔離するものであって
evalの危険性とは全く別物なんだけど

ちなみにevalの危険性とは利用者が、利用者自身を危険にさらすことができるってことな
サーバー側が危険になるわけじゃな無いし、悪意がある人がeval使ってなにかできるわけじゃない。
evalと別のなにかの脆弱性を併用して攻撃することはあるが、
その場合は脆弱性自体が悪いのであってevalそのものは危険なものじゃない。
evalはユーザーがソースコードを書き換えられるのと同じ程度の話
0443Name_Not_Found垢版2019/08/02(金) 02:56:23.64ID:SwpHAZj0
つまり諸刃の剣だから最終手段、と
0444Name_Not_Found垢版2019/08/02(金) 06:27:31.97ID:???
>>439
ずっと議論されてるから、もう2・3年待てばESに入る
意見があるなら今が参加するチャンス
0445Name_Not_Found垢版2019/08/02(金) 06:31:48.68ID:???
>>441
寝てたら>>442が代わりに言ってくれてたわ
もう少し深く考える癖を付けたほうが良いぞ
0446Name_Not_Found垢版2019/08/02(金) 06:32:12.81ID:???
>>439
WebWorkerを文字列から作ることはできる
だけど必ずしも安全とは言えない
0447Name_Not_Found垢版2019/08/02(金) 08:11:48.50ID:???
>evalが許されてることがなにか問題あるの?

evalが許されていること自体が問題だと言ったつもりはないが?
ただ、呼び出し元と同じグローバルオブジェクトにアクセスできるのは安全じゃないから
それを差し替えられたら良いという話。
少なくとも現状より危険になるわけじゃないから>>440は的外れだと言ったまで。
0448Name_Not_Found垢版2019/08/02(金) 13:20:41.19ID:???
>>422-429
<script>
var a = 1;
</script>

<script>
var a = 2;
</script>

<script>
console.log( a ); // 2
</script>
0449Name_Not_Found垢版2019/08/02(金) 15:05:37.23ID:???
>>428みたいなFAQをスレのテンプレに入れればいいと思う
0450404垢版2019/08/02(金) 15:30:37.79ID:3e/9quPm
返信が遅れてすみません;

>>405
その人とは別人ですー

>>406
>>409
なるほど…。よく「document.writeは使うなとあれほど」みたいなこと言われたのでSEOに悪いのかなと…。
レンダリングをブロックするということは、読み込み速度が遅くなったりするのでしょうか?
多用することでSEOに響くのであれば別の方法で代用したいのですが。。
通常、document.write的な動作を行いたい場合、相場としてどのような方法がメジャーなのでしょうか?
0451Name_Not_Found垢版2019/08/02(金) 15:35:39.39ID:???
SEO? あれすべてがデマだけど?
SEOにいいやり方なんて無い。
コンテンツがすべて。HTMLの書き方で差は生まれない。
0452404垢版2019/08/02(金) 15:38:52.57ID:3e/9quPm
innnerHTML?というのはメジャーな代用法だそうですが、document.writeで作ったプログラムを全て書き換える場合に中々互換性が確保できず混乱しています…。

変数に文字列を格納→そのまま出力といったシンプルな方法はないのでしょうか。。
0453Name_Not_Found垢版2019/08/02(金) 16:06:32.25ID:???
無理して書き換えなくてもいいと思うが
documen.writeをそのまま置き換えたいならdocument.body.innerHTML += で良いんじゃね
0454Name_Not_Found垢版2019/08/02(金) 16:38:50.93ID:???
>>450
そう遅くなる。ブラウザにもよるがdocument.writeしたことによる再レンダリングが重かった場合画面が一瞬白くなったりする事があって不格好

>>453
body直に+=するよりはdocument.createElementで適当な要素作ってそれのinnerHTMLに突っ込んでdocument.body.appendChildした方がいい気がする
0455Name_Not_Found垢版2019/08/02(金) 19:48:19.62ID:???
>>451
wordpressでテンプレ変えるだけでも結構差が出るよ
ただ、SEOにゴリゴリ特化して複雑になったものはあまり良くない
シンプルでツボだけちゃんと抑えてる物が流入量多い
アウトラインは作っておいたほうが良い
0456Name_Not_Found垢版2019/08/02(金) 21:35:22.58ID:???
>>427
with構文を使う方法(sloppyモードのみ):
let obj = {dog: '犬', cat: '猫'};
with (obj) {
console.log(cat);
console.log(dog);
}
0458Name_Not_Found垢版2019/08/02(金) 22:14:58.81ID:???
>>450
script要素ノードの弟位置にinsertAdjacentHTMLで挿入すれば良い
0460Name_Not_Found垢版2019/08/04(日) 20:38:12.89ID:???
Chromeで対応しているコーディックかの確認ができません
Firefoxでは実際の対応状況が反映されているようです
どうしたら良いでしょうか

await navigator.mediaCapabilities.decodingInfo({type: 'file', video: {
contentType: 'video/webm; codecs="av1"',
width: 3840,
height: 2160,
bitrate: 20*1024*1024,
framerate: 60,
}})
0461Name_Not_Found垢版2019/08/04(日) 21:06:06.67ID:???
chromeの場合はcodecs="av01.0.05M.08"のようにきっちり書かないとだめなのよ
0462Name_Not_Found垢版2019/08/05(月) 12:26:50.54ID:???
ありがとうございます。
contentTypeはきっちり反映されるようになりました。
ですがその他の値をべらぼうな値にしてもtrueになってしまうようです。
0463404垢版2019/08/07(水) 20:47:01.75ID:rraEgMJ2
>>454
ありがとうございます。
とりあえずその方法で置換できないか試してみます。


あとちょっと複雑なことをやっていて、

<div>
<p>りんご</p>
<p>ばなな</p>
<p>みかん</p>
<p>ぶどう</p>
</div>

↑みたいなHTMLを出力し、かつ<p>タグ内の文章をランダムで表示させており、
配列に変換してランダムに吐き出すと言うのを

【くだもの.js】

ver list[
<p>りんご</p>,
<p>ばなな</p>,
<p>みかん</p>,
<p>ぶどう</p>,
]
function Kudamono(){
var N = Math.floor(Math.random() * list.length);
document.write(list[N]);
list.splice(N,4);
}

と言う形でやっているのですが、何か良い代替案があれば教えて頂けるとめちゃ嬉しいです。自分でも試行錯誤します。
0464Name_Not_Found垢版2019/08/07(水) 21:08:45.57ID:???
あれid表示されるようになったのかな
0465Name_Not_Found垢版2019/08/07(水) 21:11:11.26ID:???
よく見たらその人と思われるレスだけid付いてるけどどうやってるの?
0466Name_Not_Found垢版2019/08/07(水) 21:21:15.06ID:R/swKGJ+
課金すればIDがつくんだよ
0467Name_Not_Found垢版2019/08/07(水) 22:00:32.28ID:0g+k5t7K
こうかな
0468Name_Not_Found垢版2019/08/07(水) 22:02:11.46ID:D7VQxMNX
課金してみたわ
0469Name_Not_Found垢版2019/08/07(水) 22:07:34.97ID:0g+k5t7K
やったwあたった

>>463
上の人は配列の中を文章だけにしてp=document.createElement('p')でP要素を作って
p.innerTextに配列の文章を入れなさいよってことを言いたかったじゃないの伝わってないみたいだけど

思うにそれHTMLに全部マークアップしといてランダムで隠す方が楽なんじゃないかな
イチイチ生成する意味なくないか
0470404垢版2019/08/07(水) 22:21:08.55ID:rraEgMJ2
>>469
要素を作るまではできたのですが、それを”その場に吐き出す=スクリプトを書いた場所にそのまま出力する”と言うのができないのですよね…。

例えば

<div id kudamono></div>
<scr>kudamono. js</scr>

こう書けばいかようにもなると思うのですが、、

<scr>kudamono. js</scr>

↑これだけで全て出力できるようなメソッドがわからなくて詰んでます…。
0471404垢版2019/08/07(水) 22:23:19.04ID:rraEgMJ2
insertHTMLでbodyに書き出すと本当にbody直下に書き出しといった形になってしまうので…。
本当に「document.write」と全く同じことができる書き方、現状では無いのでしょうか?
0472Name_Not_Found垢版2019/08/07(水) 22:29:30.84ID:D7VQxMNX
>>470
scr要素って何?
0473404垢版2019/08/07(水) 22:32:09.31ID:rraEgMJ2
>>472
scriptと書いたところ謎の理由で書き込めなかったので、「scr」と略しました。
0474Name_Not_Found垢版2019/08/07(水) 23:07:20.81ID:0g+k5t7K
>>470
なんでよ
document.getElementById('kudamono').appendChild(p)じゃだめなのか
0475404垢版2019/08/07(水) 23:15:26.37ID:rraEgMJ2
>>474
document.getElementById('kudamono')
.appendChild(p)

でやる場合、もともとのHTMLに

<div class=kudamono><./div>

と記述していないとダメですよね?

これは”無から””その場に”書き出すという
document.writeの代用にはならないんですよ…。

なぜなら<scrpt></scrpt>の記述”のみ”で成立しないので…。
0477476垢版2019/08/07(水) 23:18:58.06ID:???
まあ、insertBeforeの方が良いとは思うが
0478Name_Not_Found垢版2019/08/07(水) 23:23:29.99ID:0g+k5t7K
>>475
あーそういうことか
要素を挿入したい場所の親なり兄弟なりセレクタで指定すれば同じことできるでしょ
0479404垢版2019/08/07(水) 23:35:48.56ID:rraEgMJ2
>>476
ありがとうございます。
insertAdjacentHTMLで親要素を取得して終了タグ直前に挿入、といった形で落ち着きそうです。
nextSiblingでも同じことができそうですが、レンダリング速度など考えるとどちらが良いのでしょうか?
0480Name_Not_Found垢版2019/08/08(木) 04:30:17.78ID:???
>>475
jQuery なら、これで、body に、div.kudamono を作れる。
その後に、document.getElementById('kudamono').appendChild(p) と続ければよい

<script type="text/javascript" src="file:///C:/Users/Owner/Documents/JS/jQuery/jquery-3.1.0.min.js"></script>

<script>
$( 'body' ).append( '<div class=kudamono></div>' );
</script>
0481480垢版2019/08/08(木) 07:25:38.74ID:???
修正

kudamono は、id か

>$( 'body' ).append( '<div class=kudamono></div>' );

$( 'body' ).append( '<div id=kudamono></div>' );
0482476垢版2019/08/08(木) 11:53:43.42ID:???
>>479
レンダリング速度よりもXSS等のセキュリティリスクを考慮した方が良い
俺なら、insertBeforeか自作のinsertAfterで対応する
必要なら、DocumentFragmentも使う
0483404垢版2019/08/08(木) 15:02:42.60ID:VHDntjL2
>>480
ありがとうございます。
ただ、やはりそちらのやり方ですとどうしてもbody直下への挿入となるため、<scrpt>kudamono,js</scrpt>を記述した箇所にそのままの書き出しといった形にならないため、やはりdocument.writeの代用にはならないのですよね…。
ただJQueryだとそこまでスッキリした記述ができるんですね!教えて頂いてありがとうございます。
0484404垢版2019/08/08(木) 15:06:53.91ID:VHDntjL2
>>482
なるほどです。
insertBeforeで挿入したいのですが、.insertAdjacentHTMLの”beforeend”に該当する記述はinsertBedoreで可能なのでしょうか?
つまり


<div>
・コンテンツ
・コンテンツ
←ここに挿入するやり方がわからない(insertBefore ???)
</div>
←ここに挿入はわかる(insertBefore+nextSbling)or(nsertAdjacentHTML”beforeend”)
0485404垢版2019/08/08(木) 15:11:07.88ID:VHDntjL2
また新たな疑問なのですが…

innerHTMLやinsertAdjacentHTMLで外部スクリプトを書き出そうとすると、一部正常に動作しないものがあるようなのですが…これは何が原因なのでしょうか?

外部から呼び出す類のスクリプト(アンケートサービスなど)を記述すると、スマホビューで表示されません(PCでは表示される)

そもそもinnerHTMLやinsertAdjacentHTMLではスクリプトを記述することができないのでしょうか?
0486404垢版2019/08/08(木) 15:11:55.43ID:VHDntjL2
なんども質問してしまい申し訳ありません。。
他に質問ある方などいましたら是非そちらの方を優先されてください><
0487Name_Not_Found垢版2019/08/08(木) 15:25:46.00ID:???
質問があります。質問してもいいですか?という質問をしてもいいですか?
0488Name_Not_Found垢版2019/08/08(木) 16:56:22.96ID:???
「CSSセレクタで指定すれば可能」というレスを
スルーしてるぐらいだからそりゃできないだろな
ちょっとは自分で調べるなりすればいいのに
1から10まで教えてもらえると思うなよ
0489Name_Not_Found垢版2019/08/08(木) 18:54:55.21ID:???
function sengen(name, value) {
?????? //呼び出し元で let name = value する
}

function kidou() {
sengen('aiueo', 999);
}

kidou()

という形で呼ぶと、グローバルでもsengen()関数内でもなくkidou()関数内で
let aiueo = 999;
と変数を宣言してくれるようにする方法って何かないでしょうか?
あくまでkidou()内にはletと書かずに
無理ですかね?
0492Name_Not_Found垢版2019/08/08(木) 21:24:11.02ID:???
スコープやコンテキストに触る必要があるから
唯一with-proxyで全体を囲めば限定的に可能
0493Name_Not_Found垢版2019/08/08(木) 21:31:15.33ID:???
何をしたいかでなく何故そうしたいのかを書けよ
0494480垢版2019/08/08(木) 22:41:09.02ID:???
>>484

>>480-481
にも書いたように、

jQuery では、append で、
指定した要素の最後に、引数で指定した内容を追加できる。

id=box の要素の最後に、div を追加する。
$('#box').append('<div>...</div>');

初心者に、素のJavaScript(JS)は難しいから、jQueryを学ぶ方が早い

例えば、Showroom を見るときに、多くのアバターが邪魔なので削除しているけど、
素のJSでは、要素を削除するのにも、
一々、その親要素を取得して、親から子要素を削除するように書くから、面倒

var elem = document.getElementById( 'js-avatar' );
elem.parentNode.removeChild( elem );
0495480垢版2019/08/08(木) 22:52:23.50ID:???
>>485
innerHTML には、HTMLタグを書いて実行できるけど、
innerText には文字列しか書けない

素のJavaScript では、スマホ用ブラウザなどへの互換性が悪い。
新しめのメソッドなどを使うと、スマホには実装されていないなどが起きる

初心者には、互換性が高い、jQuery を勧める

jQueryを使わない場合は、自分で書いたメソッドが、どのブラウザで使えるのか、
一々、互換性を調べなければならないので、何年も掛かる
0496Name_Not_Found垢版2019/08/09(金) 00:19:23.88ID:???
上の人じゃないんですが、括弧でくるんで
(a = document.createElement(a')).setAttribute('foo','bar')
のような書き方をするのは短く書ける以外に何か利点があるんですか?
0497Name_Not_Found垢版2019/08/09(金) 01:03:36.21ID:???
普通は、これで良いだろ。
document.createElement( 'a' ).setAttribute( 'foo','bar' )

a = document.createElement( 'a' )
これは、a という変数を、後で使いたいから、一旦、代入するのだろう

だから、下の2行と同じ意味。
a = document.createElement( 'a' )
a.setAttribute( 'foo','bar' )

そして、それ以降で、a を使う
0498476垢版2019/08/09(金) 07:59:17.78ID:???
>>479
> insertAdjacentHTMLの”beforeend”に該当する記述は

appendChild
0499476垢版2019/08/09(金) 08:13:35.94ID:???
>>485
DOM API全てで外部スクリプトを書いたscript要素を挿入出来る
実行順の問題か、コードがSPに対応していないか、ノードが出現する前に参照しようとしているか、script[tyoe=defer],async,moduleを使用しているか…etc
0500476垢版2019/08/09(金) 08:16:19.95ID:???
>>489
返り値にして、分割代入で受け取る
0501476垢版2019/08/09(金) 08:27:24.46ID:wUCuxxOg
ぶっちゃけ、>>493が最重要
「やりたいこと」だけ先行すると、「やりたいこと」が不適切な手段だった場合に気がつけない

「最終目標」を踏まえて、最適解を見つける必要がある
最終目標は「document.writeの代替コードが欲しい」ではなくて、

- なぜdocument.writeが必要なのか
- document.writeではなく、代替コードである必然性はあるのか
- document.writeをなぜ使用してはいけないのか

このように、「なぜその手段を選択したのか」を尋ねられたら時に「論理的な理由」を説明出来るようになって、良いコードを書けるようになる
0502404垢版2019/08/09(金) 08:31:31.97ID:Pbz7Qbgw
>>494
>>495
ありがとうございます。JQuery楽そうなんで換装できるよう勉強してみます

>>499
色々試した結果、その箇所だけ新たにノードを生成して個別に挿入したら正常に動作しました。実行順序の問題か、もしくは使用しているブログサービス特有の問題みたいです。ありがとうございます。
0503404垢版2019/08/09(金) 08:45:43.61ID:Pbz7Qbgw
>>501
そうですよね…。
一応コード全体の書き換えは終わり、実装もできそうなのですが…。

書いているブログの記事下に、過去のおすすめ記事や人気商品などをランダムで表示させるスクリプトを書いていて、記事下に<scrpt>randam.js</scrpt>と書いて一括管理しています。
ブログサービスを利用しているのでphpも使えず、jsを使うしかないというね。

- なぜdocument.writeが必要なのか
過去の記事は別のファイル(kiji.js)で管理したいので、それをjs内で呼び出して使うのにdocument.writeが便利→多用してしまうという感じです。
あと単純に「その場に書く」ということができるので便利。。(ブログサービスの都合上、cssのクラス名がpc-スマホ上で違ったりするので、クラスを指定して挿入よりその場に書き出せる方が便利)


- document.writeではなく、代替コードである必然性はあるのか
これはむしろ私が最初に疑問に思ったので質問した次第です。
使っていて特に表示速度に問題もなく、ページが真っ白になるという事もないのですが、「document.writeは非推奨」という話を何回も目にしたので、変えたほうが良いのかなと…。
0504Name_Not_Found垢版2019/08/09(金) 08:57:25.72ID:???
だから変えた方が良いって皆言ってるじゃない
これ以上は君が調べて自ら解決するべきことだよ
それで話は終わりなの ほんとしつこいね
変えなくてもいいって言ってほしいだけなんでしょ
0505Name_Not_Found垢版2019/08/09(金) 09:49:30.79ID:???
>>503
document.writeはHTML5の仕様で非推奨なはずで、だからみんな非推奨と言ってるので
使えないわけではないから、使いたければ使ってもいいんだろうけど
ただ、質問されたら、非推奨だから別の方法でって答えしか返せないのは当然だと思う
0506Name_Not_Found垢版2019/08/09(金) 22:35:07.13ID:qeDXchc7
自分の言ってる事が正しいと思うなら回答を気にせずに好きに実装していいんだぞ
死ぬ程大変な思いをすることになるけど、趣味でやる分にはとてもいい勉強になる
俺はなった、ありゃーやるべきだ
>>404は好きにやってしまえば良い
0507Name_Not_Found垢版2019/08/10(土) 10:48:10.83ID:???
すみません;
質問し直します

「document.writeは使うな」という警告を耳にしますが、私は誰がなんと言おうとも頑として聞かずdocument.write使いたいので、免罪符となる「document.writeを使っても問題ない理由」をでっち上げていただけないでしょうか?
0508Name_Not_Found垢版2019/08/10(土) 12:00:45.28ID:OSm48tTb
(ヤバい、かなり難しい・・・)
0509Name_Not_Found垢版2019/08/10(土) 12:34:08.44ID:???
>>507
例えばstyleタグを生成する場合。

document.writeを使わないなら、DOMが構築された後に呼ばれるので
わずかに構築済みのDOM(ただしスタイルがあたってない)ものが表示されてしまう

レンダリングがブロックされてしまうというが、そもそもstyleタグを生成する場合
レンダリングをブロックしたいわけでdocument.writeを使うのは願ったり叶ったり
0512Name_Not_Found垢版2019/08/11(日) 01:34:28.12ID:???
1.物理・数学の知識をjavascriptで活かすには何が一番有利?
2.ブラウザゲームが作りたい。専門書が多く出版されている物理エンジンはどれでしょうか?
0514Name_Not_Found垢版2019/08/11(日) 07:57:15.05ID:???
物理・数学の知識を活かすって何が言いたいのか良くわからんな
ゲーム用の物理エンジンというのも必ずしも物理学的に忠実なものではなくて
性能的、面白さを出すために擬似的なものを使うのが主流だし
0515Name_Not_Found垢版2019/08/11(日) 09:21:26.73ID:???
自分が勝てるホームを探してるんだろw
物理・数学の知識がある(自称)のに
自分が何も作れないのは題材が悪いんだって考えてる。
0516Name_Not_Found垢版2019/08/11(日) 09:38:50.42ID:0HXmsQsU
数学や物理だとpythonの方が向いてるよ
物理エンジンでどうこうしたいならc#+unityだけど、別に数学の知識は不要。パラメータ変更するだけで大抵のことは出来る
0517404垢版2019/08/11(日) 13:34:30.36ID:Hw0y73vf
>>504
すみません、先述の「document.writeは使わない方が良いのか?」に関する疑問はすでに解決済みです

>>503>>501さんの

なぜdocument.writeが必要なのか
なぜそれを使用してはいけないのか?
に対する回答を明確にせよ

という意見に回答しただけですので、
決して今「document.writeをどうしても使いたい!どうして使っちゃいけないの?」みたいなことを思っているわけではないです…。
0518404垢版2019/08/11(日) 13:36:12.05ID:Hw0y73vf
>>505
document.writeはどうして使っちゃいけないの?
→非推奨だから

で、もう既に私の疑問は解決済みです。
誤解を招くような書き方をしてすみませんでした。。

あと>>507さんは私とは別の人ですので悪しからず…。
0519Name_Not_Found垢版2019/08/11(日) 13:55:32.74ID:0HXmsQsU
よく見たら既に使われているので支障があれば変えたいって質問内容だったのね
当然誰も読まないから>>507みたいにおもちゃにされとるだけ
0520Name_Not_Found垢版2019/08/11(日) 14:31:24.23ID:???
非推奨なのはパフォーマンス上の理由だから、パフォーマンス出なくて構わないならどんどん使っていけ。
0521Name_Not_Found垢版2019/08/11(日) 15:10:53.07ID:0HXmsQsU
いつの間にか使えなくなってるぞ
0523Name_Not_Found垢版2019/08/11(日) 16:18:50.06ID:0HXmsQsU
>>522
flashが全滅したのをもうお忘れで?
0524Name_Not_Found垢版2019/08/11(日) 16:43:34.39ID:???
flashはそもそもweb標準じゃないがw
仕様書に名前すら出てこないがwww
単なるサードパーティーのプラグインでセキュリティチョンボ大杉のうんこなので閉め出されたゴミだがwwwww
0525Name_Not_Found垢版2019/08/11(日) 16:53:52.00ID:???
さすがにflashが終わったからdocument.write終わるってのは頭おかしい。
風が吹いたからヤったとかいうのと同じレベルで意味不明。
0526Name_Not_Found垢版2019/08/11(日) 17:00:36.38ID:0HXmsQsU
>>524
全面的に同意
ただ何故か日本では大流行で、標準機能をはるかに越えた単価だった

>>525
いや、それと同等の事が起きるって話しだよ
appleがslash締め出したように、ブラウザがdocument.writeを使えなくするのは時間の問題


標準はあまり関係ない
なぜなら標準はブラウザの実装を元に作られるから
0527Name_Not_Found垢版2019/08/11(日) 17:19:52.54ID:???
さすがに、standardから削る前に実装を廃止しちゃう早漏なブラウザメーカーはないだろう
0528Name_Not_Found垢版2019/08/11(日) 17:26:42.87ID:???
RegExpのプロパティやメソッドは一部消えるな
0529Name_Not_Found垢版2019/08/11(日) 17:27:29.90ID:???
Flashは存在を許すことで明確で積極的な害があったが
document.writeに関しては同期XHRと同じく非推奨以上にする積極的な理由がないでしょう

それに昔と違って今はFeature-Policyがあるんだからパフォーマンスの問題だって
Feature-Policy: {"disable":["sync-xhr","docwrite"]}
とか指定されているサイトでのみで最適化していけばいいという流れでしょ
0530Name_Not_Found垢版2019/08/11(日) 17:30:58.33ID:???
>>528
消える?
むしろ仕様に乗せる案がようやくStage3まで来たところだけど
0531Name_Not_Found垢版2019/08/11(日) 17:40:25.97ID:???
>>526
> ブラウザがdocument.writeを使えなくするのは時間の問題

時間の問題w
そこまで言うなら根拠だしてどうぞ。
どこでそんな話が進んでいますか?
ハヤク!
0532Name_Not_Found垢版2019/08/11(日) 17:41:32.75ID:0HXmsQsU
>>531
非推奨
はい論破
0533Name_Not_Found垢版2019/08/11(日) 17:44:57.92ID:???
>>532
> ブラウザがdocument.writeを使えなくするのは時間の問題

ブラウザがdocument.writeを使えなくする根拠マダー?ww
おかしいなぁwwまだ使えるんだけど?www
あくしろよ嘘吐きノロマwwwww
0534Name_Not_Found垢版2019/08/11(日) 17:47:39.76ID:???
いまだにブラウザデフォがsloppyモードでwith文も使えるブラウザがdocument.write消す分けねーだろwebが壊れるわ
0535Name_Not_Found垢版2019/08/11(日) 17:48:00.59ID:0HXmsQsU
まぁ別に100%廃止される予定だから今すぐやめろなんて言ってないぜ
phpのmysqlも10年ぐらい掛けてじっくり廃止したが、それでもやぱり大混乱が起きた。弊社です。
非推奨の機能なんて1005使わない方が良い。
単にバージョンアップが無いだけでなく、その機能はいずれ使用できなくなる。

一ヶ月しか使わないランペならともかく、ずっと使うつもりなら絶対に使うべきではない
0536Name_Not_Found垢版2019/08/11(日) 17:48:57.72ID:0HXmsQsU
>>533-534
反論は出来ないよ
ただ、非推奨の機能なんて当然将来削除予定に上がるんだから初心者に勧めるなってだけの話しだ
0537Name_Not_Found垢版2019/08/11(日) 17:54:06.33ID:???
正しい→非推奨だから使わない方がいい
嘘松→非推奨だから削除される
0538Name_Not_Found垢版2019/08/11(日) 17:54:10.74ID:0HXmsQsU
ちょっと訂正、>>535
>phpのmysqlも
>phpのmysql系の関数も


>>534
俺もそう思ってたけどmysql系の関数がなくなってphp5以前の半分ぐらいかな、死滅した。
俺はいくつかのwebサイトを復旧中なんだ
日本全体では相当に多いと思う。この事実は否定できない
もちろん急ぐところは特急料金もらってる。超バブルだ。
0539Name_Not_Found垢版2019/08/11(日) 17:56:10.35ID:0HXmsQsU
>>537
非推奨のままずっと存在した機能って何かあるの?
それと削除された機能の割合があれば教えて欲しい。体感では100%全部無くなっている。
0540Name_Not_Found垢版2019/08/11(日) 17:59:18.90ID:???
>>538
rubyやらphpやらから来た人にありがちな勘違いなんだけどjsはそれら言語と違って「仕様変更して前のはメジャーバージョンアップのとき消せばいいや」ってのが通じない言語なんだよね。
「webを壊す」とか「don't break the web」とかで検索して学んでよそこら辺の概念は。
同じように考えてたら笑われるよ。
0541Name_Not_Found垢版2019/08/11(日) 18:02:49.48ID:???
>>539
嘘乙。
セキュリティなどのやむにやまれぬ事情やベンダー固有機能とかでない限り非推奨機能でも基本残ってて使えるわ。
100%とか笑わせるなよw
0542Name_Not_Found垢版2019/08/11(日) 18:05:06.62ID:0HXmsQsU
>>541
事情なんてしらねーよ
無くなったものはなくなっただけだ
0543Name_Not_Found垢版2019/08/11(日) 18:05:24.80ID:???
むしろ消えた機能出した方が早いだろ。すぐ出せるだろ100%らしいし
0544Name_Not_Found垢版2019/08/11(日) 18:06:33.38ID:???
>>536
誰も勧めてなんかないでしょ
というか10年後使えなくなるかもしれないから今から気をつけるって
10年前Chromeが出てから、色んな機能がユーザーアクションが必要になったり、
プレフィックス付きが無効化されたり、WebComponent周りも大きく変わったけど
それらを10年前に予測することはできないでしょ

自分が勝手に気をつけるのなら良いけれど、
今実際に決まってることとしたらFeature-Policyで抑制して行こうということなのに
勝手に使えなくなるとかいう予想を押し付けるのはおかしいと思う

Webっていうのは記録でも有るんだから昔の物がそのまま見えないと行けない
writeなんかはコンテンツの内容表示に直接影響する機能なんだから
よほどの理由がない限り廃止することはできないと考えるのが普通

TLSやHTTPの将来の一定バージョン以降ではいくつかの機能を廃止するとかはできるだろうけどね
0545Name_Not_Found垢版2019/08/11(日) 18:07:17.29ID:0HXmsQsU
>>543
知るかwww
社内のミスならともかく、言語の仕様変更なんて共有して終わりだよ
ただ一番大きかったのはundefined
この辺りの仕様がなんか変わってえらい目にあったのは覚えてる
0546Name_Not_Found垢版2019/08/11(日) 18:08:31.29ID:0HXmsQsU
>>544
あの〜それそのままmysql*関数に言って頂いてよろしいですかね〜
0547Name_Not_Found垢版2019/08/11(日) 18:09:25.90ID:???
他の言語のように仕様変更してなかったことにできるならtypeof null → objectの仕様バグがいまだに残ってるわけないわな。
web技術の宿命や事情も知らないくせに門外漢が知った風な口聞かないでほしい。
0548Name_Not_Found垢版2019/08/11(日) 18:11:44.22ID:???
いいからdon't break the web で検索しろカス
mysqlやらphpと同列に語るとはヘソが茶を沸かすわ
0549Name_Not_Found垢版2019/08/11(日) 18:22:45.91ID:0HXmsQsU
>>547
もうさすがに無理があったのでFWに投げた

>>548
思想とかしらねーよwww
結局実装すっるのはブラウザなんだから全く信用できない
0550Name_Not_Found垢版2019/08/11(日) 18:25:33.17ID:0HXmsQsU
どういう標準作るかはどうでもいんだ
それをどう実装するかがブラウザにかかっている

全企業全部統一なら分かるけど、何故か例外をだす企業がいる
それだけの話しだ
0551Name_Not_Found垢版2019/08/11(日) 18:57:18.58ID:???
>>550
それがWebだから
そうじゃないプロプラエティな技術も沢山あるのだから
嫌ならそちらでやればいい

悪いところを無くすことは絶対にできない
良いところがあればその分悪いところがあるのだから
あとはどれを選ぶかは好みの問題
0552Name_Not_Found垢版2019/08/11(日) 19:21:45.67ID:???
そもそもWeb技術のうちどれをどれだけ採用して
どれだけ独自機能を乗せるかはブラウザの自由でしょ
ブラウザってただの1アプリなんだから
0553Name_Not_Found垢版2019/08/11(日) 19:23:02.76ID:0HXmsQsU
>>551
webは使わざるを得ない状況になっている
使わなければ良い、はもう通じない

あとは言語の開発に参加するぐらいだ
なので俺はphpのデバッガに参加したところ。バグフィックスをバンバン出している

選ぶじゃない、作るんだよ
jsはまだ開発に参加してないけど、そろそろ行こうかなって思っている
0554Name_Not_Found垢版2019/08/11(日) 19:32:56.52ID:???
>>553
言語の開発に参加した所で君が思ってるところは変わらないでしょ
TC39でJSエンジンもWebブラウザも作ってWebを乗っ取るってこと?
それはできないし通用しないと思うよ

それにね、技術の上に理念が乗っかってできてるものの
理念を否定することはその存在そのものの消滅を意味するでしょ
WebはWebだから支持されてるんじゃない
Webの理念が受けたから今の大きなWebがあるんだから

Webって実質まだ20年くらいのもの
Webの理念を否定して仮にWebを変えられたとしても
別の存在が数年の間に取って代わるようになるだけでしょ

つまるところWebは細かい部分を変えるしか無いの
理念の部分を変えようなど机上の空論でしかないの
0555Name_Not_Found垢版2019/08/11(日) 19:46:16.32ID:0HXmsQsU
>>554
どれだけ論破していただいても構わないんだけど、

Document.write()
が消えるか消えないか、これだけの話し

これで言えば俺は消えると思う
evaklに近いこれをどれだけ受け入れるか?

まぁそれだけの話しだな
0556Name_Not_Found垢版2019/08/11(日) 20:02:27.35ID:???
>>555
受け入れるという人はいない
それと将来まで使える形で残しておくかは別の話

document.writeはFeature-Policyで制限されたり
HTTPのバージョンで制限されることは十二分に考えられるけど
基本的には10年後も使える形で残ってるよ
自称JS仙人の俺が保証する
0559Name_Not_Found垢版2019/08/11(日) 21:50:55.26ID:???
そりゃ互換性が一番重要だから廃止するわけがないだろう
0560Name_Not_Found垢版2019/08/11(日) 22:15:32.77ID:???
使おうとしたらエラー出たんだけど?
0561Name_Not_Found垢版2019/08/11(日) 22:24:59.97ID:???
>>555
残念evalも消えてません。
なーんにもお前の思う通りにならないねww
バーカwww
0562Name_Not_Found垢版2019/08/11(日) 23:41:19.99ID:???
>>560
まだ使えると書いた
今まで使えてきた環境では使え無くなったりする流れではなく使えるということ
まだ正式仕様にはなっていないので現時点でモダンブラウザ間で互換性が取れているわけではない
0563Name_Not_Found垢版2019/08/12(月) 08:29:15.07ID:???
上で言ってるのは廃止された時、何も準備してない奴が阿鼻叫喚になるだけだな
俺は順次書き換えているからなんでもいいぞ
0564Name_Not_Found垢版2019/08/12(月) 08:48:57.88ID:???
廃止しますって話を聞いてからでも十分間に合うで
0565Name_Not_Found垢版2019/08/12(月) 09:50:41.40ID:???
「document.writeが非推奨」を記述している仕様書はあるの?
自分も使わないけど、あくまで機能的な面で使わないだけで、「非推奨だから使わない」は全く分からない
0566Name_Not_Found垢版2019/08/12(月) 11:18:26.69ID:???
おはようございます!
データを取りに行って、なかったときundefinedエラーになるので
try/catchでしのいでいる部分があるのですが
例えば、要素がなかったときのquerySelectorAll().length的な
別のテクニックって何かありますでしょうか?
void 0とかtypeofで比較する方法はだめでした
0567Name_Not_Found垢版2019/08/12(月) 11:53:39.11ID:???
>>565
HTML Standatdに書いてある
でも「記述している仕様書はあるのか」という判断基準は危険だよ
昨今ChromeチームがGitHubとかで公開したアイディアをWeb標準と言って自分に実装することが問題視されているけど
そのように仕様書なんて誰でも作れるもので超有名な仕様書だって大抵エディタは数人しか居ないのだから
非推奨と書いてあったってそのはそれを書いた人が非推奨と書いただけでしかなく、
仕様書がそれが法律というわけでもないし、推奨しないという言葉に明確な定義も効果も定められて居ないのだから

結局Webって皆で作るものだから、皆がどう思っていてどうしていきたいのかが重要
勿論皆と言っても自分の意見を出す人が少数居て、その中で特に引っ張っている人が少数という構図だから
基本的にはリーダーの発言発表をチェックして色んなメーリングリストに参加して雰囲気を掴んで
一緒に流れを作っていくという気概を持っておかないとね もし外部に判断基準を求めるのなら
0568Name_Not_Found垢版2019/08/12(月) 12:38:13.34ID:???
>>567
どこに「非推奨(NOT RECOMENDED)」と書いてあるの?
https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#document.write()
https://momdo.github.io/html/dynamic-markup-insertion.html#document.write()

そもそも、HTML仕様における「非推奨」は HTML 4.01 まで存在したけど、HTML Standard以降はなかったと思うんだけどな…

> 非推奨と書いてあったってそのはそれを書いた人が非推奨と書いただけでしかなく、

それは「非推奨」を仕様で定義せず、各々の主観で物申してる場合の話だよね
Web標準仕様では通例的に RFC 2119 が参照される事が多いし、それに留まらず、通常は「非推奨の理由」にも仕様は言及する
重要なのは仕様における「非推奨の定義」「非推奨の理由」を正確に把握する事だよ
0569Name_Not_Found垢版2019/08/12(月) 12:50:23.13ID:???
仕様で「非推奨」が未定義なら、彼らのいう「document.writeは非推奨」が主観的根拠を基にするもので厳格な定義じゃない
彼らの意見を目にして>>503

> 「document.writeは非推奨」という話を何回も目にしたので、変えたほうが良いのかなと…。

のように判断するのは、ただの思考停止だよ
0571Name_Not_Found垢版2019/08/12(月) 13:36:59.36ID:???
>>568
そこに書いてあるじゃない
For all these reasons, use of this method is strongly discouraged って
でも比較的大人数が長時間議論して練ってバージョンを区切って出していた時代とは違うのだから
非推奨の定義や理由だって結局少数のエディタの主観的根拠に基づくものでしか無い

今回だって警告の元はここ
https://www.w3.org/Bugs/Public/show_bug.cgi?id=9767#c32
document.write() behaviour is so crazy at this point that I've added a warning discouraging authors from using it.
あのHTML仕様界の王様、最も影響力のある人物であるHixieが「振る舞いがクレイジーだから警告しとこ」という理由で追加したものが10年も残ってる
元々はただwriteで書き込まれたスクリプトを動的に実行すべきかどうかという話でしかないのに、Hixieが主観的根拠というか気分で入れたものでしかない

仕様って言うのは結局そういうものでしか無い
0572Name_Not_Found垢版2019/08/12(月) 14:20:54.20ID:???
>>571
繰り返すが、「非推奨」と書いてない
それでも「書いてある」と主張するなら、「仕様書の警告文から判断して、非推奨だと俺は思う」と主張するのが正しい
あなたの個人的見解を聞いているのではない
仕様書は書いた通りに読むだけで主観的解釈を交えた曲解はよろしくない
0573Name_Not_Found垢版2019/08/12(月) 14:32:17.52ID:???
仕様の「非推奨」と個人の「非推奨」の違いか
0574Name_Not_Found垢版2019/08/12(月) 14:51:09.79ID:???
>>572
警告文も仕様の一部で強く推奨しないと書いてあるのだから
それを書かれたとおりに読めばこのメソッドは非推奨なんだと言うことになるだろう

君は何?項目にNOT RECOMENDEDマークが付いてたりしないと非推奨と思わないの?
それこそ君の仕様に書いてあることに対する主観的解釈、個人的見解だと思うけど

Webに関する議論全般において通例的にRFC2119が参照されると思うのもただの君の古い考えだし
その範囲でしか非推奨という日本語訳を使えないというのも君のあまりにも頭の硬すぎる独自の考えでしょ
RFC2119のNOT RECOMENDEDはにしたって
具体的にそれを持ってこの機能が将来どうなるかとか、効果を表すものではなく
ただその仕様に従って欲しい度合いの強さを表すものでしか無い

もし仕様書に警告という形でその仕様に対するより詳しい事項がわざわざ書いてあるのに
キーワード1つ書くやり方に従っていないのであれば正式なものではないというような解釈をするのは
あまりに身勝手で意味のない考えだとしか言えないね
0575Name_Not_Found垢版2019/08/12(月) 14:56:18.87ID:???
>>566
なんのデータを取りに行くのか知らないが
普通にnullやundefinedと比較したら良いんじゃねーの?
0576Name_Not_Found垢版2019/08/12(月) 15:01:11.74ID:???
>>574
> 警告文も仕様の一部で強く推奨しないと書いてあるのだから

どの文面?
0577Name_Not_Found垢版2019/08/12(月) 15:08:11.48ID:???
俺も「強く推奨しない」とは読めなかったわ
どこだろ?
0578Name_Not_Found垢版2019/08/12(月) 15:13:17.15ID:???
For all these reasons, use of this method is strongly discouraged.
じゃないの
0580Name_Not_Found垢版2019/08/12(月) 18:00:46.34ID:???
要所要所で使い分ければ良いだけなのに、document.write非推奨厨は最近DOMを覚えたオレすげーなのか?
Googleアナリティクスだって少し前まではdocument.write使ってたし…

でもGoogle(Chrome)を基準にWeb標準がコロコロ替えられるのは確かに迷惑
0581Name_Not_Found垢版2019/08/12(月) 18:07:57.84ID:???
>>575
最後にちょっと書いてますがfalsyな値と比較する方法ではだめでした
0582Name_Not_Found垢版2019/08/12(月) 18:15:34.84ID:???
>>581
どうやって取得してるかまず書けよ
fetchやajax系ならstatus見ろとか助言できるだろボケ
0583Name_Not_Found垢版2019/08/12(月) 18:22:09.41ID:???
obj.prop をチェックしようとして obj 自体が null とかいうパターンだったりして
0584Name_Not_Found垢版2019/08/12(月) 18:38:43.44ID:???
「仕様書にはこう書いてある!(`・ω・´)キリッ」
「独自解釈乙論破!」

みたいな流れは



夏だなぁ
0585Name_Not_Found垢版2019/08/12(月) 18:55:47.04ID:???
>>580
よく見返してご覧よ
変えたほうが良いかと質問者が質問してるから
変えたほうが良いけど好きにすればという声が多数でしょ
非推奨だから死んでも使うなと言ってるやつ居るか?
被害妄想は大概にしようよ
0586Name_Not_Found垢版2019/08/12(月) 21:44:25.31ID:???
>>537で終わってる
非推奨であろうがなかろうが使えなくはならない
0587Name_Not_Found垢版2019/08/13(火) 11:13:07.53ID:???
自分のメモ帳を見返してみたら
Title:javascript アロー関数
(a,b)=>a+b,[]
//第2引数も指定できる

という謎メモを発見しましたがさっぱりです
どういうことなのか解読してみてください
0588Name_Not_Found垢版2019/08/13(火) 11:55:24.81ID:???
解読する恩恵が欠片もない
今アロー関数のことが分かっていれば良い
無駄なことにエネルギーと時間をを使うな
0591Name_Not_Found垢版2019/08/13(火) 12:37:19.84ID:???
無駄コードをよく見るなら、環境を変えた方がいいかもね
0592Name_Not_Found垢版2019/08/13(火) 14:34:39.19ID:???
無駄?
アロー関数とカンマ演算子の関係、もしくはカンマで区切られて式として評価される区内においての挙動って
重要なポイントであり、テクニックというかコーディングスキルとして大切だと思うが
0593Name_Not_Found垢版2019/08/14(水) 08:17:32.22ID:???
>>592
>>587はカンマ演算子によって、評価値は []
アロー関数をどうやって参照して呼び出すの?
0594Name_Not_Found垢版2019/08/14(水) 09:45:48.35ID:???
>>587はおそらくArray.prototype.reduceに関するメモ。
ただし例がよくない。
最初は
[1, 2, 3].reduce((a, b) => a + b)
//=> 6
とでもやっていたのだろう。
reduceが第一引数のコールバック関数に加えて第二引数として初期値も与えられると知ってメモしたのだろうが、その際コード例を上のままにしてしまった、と。
コード例としては
[1, 2, 3].reduce((a, b) => a + b, [])
だと何がしたいのかワケワカメだからな。

なお当たり前だがこの引数リストのカンマはカンマ演算子ではない。
>>592はマヌケ。
0596Name_Not_Found垢版2019/08/14(水) 12:46:48.19ID:???
>>594
カンマ演算子だけの話なんてしてなく
お前が言ってることも含んでるんだが
お前こそマヌケか?
0597Name_Not_Found垢版2019/08/14(水) 13:27:36.07ID:???
>>587は、
[1, 2, 3].reduce((a, b) => a + b, 10000) //=> 10006
とでもメモしとけばこんなことにはならなかった。
さらに言うと面倒でも
[1, 2, 3].reduce((acc, n) => acc + n, 10000)
のようにアキュムレータと値が弁別できるように書いた方がよい。
aとbじゃパッと見まるで同格みたいじゃん。
0599Name_Not_Found垢版2019/08/14(水) 23:52:44.68ID:???
>>593,598
何が言いたいのかようやく分かった
だけどそれこそが言いたいこと
(a, b) => a + b, []
が評価されて
(a, b) => a + (b, [])
になるか
((a, b) => a + b), []
になるかという話
0600Name_Not_Found垢版2019/08/15(木) 00:46:20.69ID:???
ドツボだね
バカ丸出し
下になるのは当然で、その上でカンマ前のアロー関数に意味はあるの?あるというなら有効なコード書いてみろと言ってる
0601Name_Not_Found垢版2019/08/15(木) 01:35:53.85ID:???
>>600
いくらでもあるでしょ
if(f = (a, b) => a + b, f() )
みたいなケースとか
前者になるか校舎になるか知っておかないといけないでしょ
0603Name_Not_Found垢版2019/08/15(木) 02:54:08.97ID:???
>>602
言いたいことは分かるが>>592を見てもらえれば分かるが
俺はより一般的な形において話していたつもりだ
一方君の言いたいことは分かるから不毛な言い争いになる前にこれでもう終わりにしよう
0604Name_Not_Found垢版2019/08/15(木) 03:00:20.58ID:???
君らはいちいち煽りと喧嘩という名の議論()をしないとまともなコミュニケーションにならないの?
まぁこのスレに限った話ではないけど
有益な内容なんだろうけど読んでてすげー疲れるわ
0605Name_Not_Found垢版2019/08/15(木) 07:08:39.95ID:???
っていうここがどこだか忘れてる奴が多いこと
0606Name_Not_Found垢版2019/08/15(木) 08:00:27.13ID:???
5chで品行方正な議論がしたという変態
0608Name_Not_Found垢版2019/08/15(木) 19:37:38.40ID:???
品行方正になれとまでは思わないけど指摘がお互いにすれ違っていたりして微妙
議論するなら変に端折ったりせずにまともな文章をお互いに書け
出来ないなら仲良し同士でツイッターでもやってろ
0610Name_Not_Found垢版2019/08/15(木) 20:59:06.35ID:???
元々の発端は>>592
>>598が「カンマ演算子が有効なコード」を求めたが、>>587と関わりのないコードが出てきた
0611Name_Not_Found垢版2019/08/15(木) 20:59:13.79ID:???
>>607
なんで,[]に拘る必要がある?
元の質問者の質問答えるわけでもないのに
アロー関数とカンマ演算子の一般的な関係について言ってるんだが

>>609 >>601
0612Name_Not_Found垢版2019/08/15(木) 21:04:46.47ID:???
>>611
つまり、誰も質問していない「カンマ演算子の遣い方」を唐突に書きだしたという事か
0613Name_Not_Found垢版2019/08/15(木) 22:26:48.65ID:???
>>612
君は脳内メモリが1kbくらいしかないのか?

>>592で今までの流れからくる話としてカンマで区切られて式として評価される区内との場合と、
それに付け加えてついでにカンマつながりでカンマ演算子の場合も書いただけなのに

何故かカンマ演算子の部分だけを切り取って>>587と無理矢理絡めて話そうとする
頓珍漢なレスが>>593で付いたことがややこしくなった原因でしょ

どんだけ視野が狭くて自分勝手だったらそういう考え方ができるんだか
0614Name_Not_Found垢版2019/08/15(木) 22:41:39.81ID:???
>>592>>587がカンマ演算子じゃない事に気が付けなかっただけでしょ
0615Name_Not_Found垢版2019/08/15(木) 23:43:41.88ID:???
>>614
>>587だけで評価したら取り上げたらカンマ演算子でしょ
ただしコメントの内容からするか関数呼び出し式中のカンマでしょ
だからわざわざ両方に触れて書いてるんでしょ
0616Name_Not_Found垢版2019/08/16(金) 07:40:21.59ID:???
>>615
> ただしコメントの内容からするか関数呼び出し式中のカンマでしょ
だから、「無駄コード」といわれたのに、>>592が無駄じゃない云々でカンマ演算子をとりあげる頓珍漢なレスをしてるんでしょ
0617Name_Not_Found垢版2019/08/16(金) 08:17:11.69ID:???
>>589,591は「カンマ演算子が無駄」と考えていて、>>592が「カンマ演算子を含めて、無駄じゃない」と反論しているのが争点
「カンマ演算子だと、どう考えても、おかしいでしょ」に対して「カンマ演算子にはこんな便利な使い方がある」とか「なぜ、カンマ演算子に拘る?」とか、主題(>>587)から逸れた切り返しをしていて、噛み合ってない
>>592が反論するには、「>>587でもカンマ演算子でこんなコードが書ける」と返して、>>592でカンマ演算子を取り上げるべきの正当性を主張する必要がある
0618Name_Not_Found垢版2019/08/16(金) 09:13:05.41ID:???
>>594のエスパーが正しいならそもそも>>587のカンマは単なる引数リストのカンマであってカンマ演算子ではない。
0619Name_Not_Found垢版2019/08/16(金) 12:50:08.09ID:???
>>617,618
済まないが俺としたら只々なんでそこに執拗に突っ込まれるのかが理解できない
俺が何を取り上げようが俺の勝手でしょ
俺は経緯も一通り説明したのにまだ同じ突っ込みを繰り返す理由が分からん
一体どうなったら満足なんだ?
0620Name_Not_Found垢版2019/08/16(金) 13:22:58.60ID:???
勘違いしましたごめんなさいって一言言えば良いんじゃね
0621Name_Not_Found垢版2019/08/16(金) 18:07:40.62ID:???
その言い草だと、>>592に対しても「何を拘ってるんだ?」で終わるわけで、自分に甘く、他人に厳しい人だな
0622Name_Not_Found垢版2019/08/16(金) 21:16:37.14ID:???
>>620
実際に勘違いしていないので謝りたくはないところだが
今回は別に自分の主張も引っ張る価値もないどうでもいいものなので
君が謝って欲しいということであればそちらを取る

勘違いしましたごめんなさい
0623Name_Not_Found垢版2019/08/16(金) 21:57:42.61ID:???
あやまれって…
どっかの国のデモみたいだなレベルヒクッ
0624Name_Not_Found垢版2019/08/16(金) 22:12:32.20ID:???
彼が長いこと引っ張るもんだから、カンマ演算子で使えるコードがあるのかと悩んでしまった
態度が大きいのがデフォなだけで、根拠があるわけではなかったみたいだな、やれやれ
0625Name_Not_Found垢版2019/08/16(金) 23:01:20.72ID:???
自分の非を認めずどっかの国みたいに騒ぐから突っ込まれてたんだろ
0626Name_Not_Found垢版2019/08/16(金) 23:27:05.18ID:???
どっかの国みたいに謝罪と賠償を請求して騒いでるようにしか見えない
0627Name_Not_Found垢版2019/08/16(金) 23:34:37.45ID:???
謝罪しろ。金を出せと言ってるんじゃない。
まあ、金だすっていうなら受け取るけど、
金で解決はできない。謝罪しろ。
何度、金を出しても言い続ける。次の金はまだか?
0628Name_Not_Found垢版2019/08/16(金) 23:38:36.41ID:???
謝罪など要らん
正しい内容だけを書け
間違えたら、訂正しろ
言い訳がましい理屈を並べ立てるのが突っ込まれる原因
0630Name_Not_Found垢版2019/08/17(土) 11:33:00.11ID:???
他人を否定する時には>>592のような偉そうな態度をとるが、自分が否定された時には話題を逸らして躱す、スタンスの切替が非難されてる
能動/受動共にスタンスを統一するというのは大事な事だよ
0631Name_Not_Found垢版2019/08/17(土) 12:24:08.65ID:???
>>628は当然の主張だと思うけど、他から見ると、ただの「偉そうな人」に見えるのかな

- >>587で「カンマ演算子を使った有効なコード」があるなら、それを書く
- >>587で「カンマ演算子を使った有効なコード」がないなら、「>>587はカンマ演算子ではありません。>>592は間違いでした。混乱させてごめんなさい。」と書く

事実確認を軽視して、「言葉だけの謝罪」をしているから「謝罪など要らん」といわれるんでしょ
事実確認せずにgdgdとお茶を濁しているから、>>624みたいな被害者が出てきて、ただの時間泥棒と化してる
0632Name_Not_Found垢版2019/08/17(土) 12:25:17.05ID:???
>>630
もう分かったから
俺が悪かったから勘弁して
0635Name_Not_Found垢版2019/08/18(日) 02:10:23.73ID:???
>>631
なんだこいつ

お前のなんとか心を満たすための下らねぇ謝罪要求と、自分の正当性を延々と書き込んでたお陰で無駄にスレが消費されるわ肝心の技術的な話題が一切出てこなくなった

気分が悪いし迷惑だから俺に謝罪しろ!ここにいる全員にあやまれ!
0636Name_Not_Found垢版2019/08/18(日) 03:48:43.98ID:???
ネタには勘違いをなんとか言い訳しようとする必死さがない
0639Name_Not_Found垢版2019/08/18(日) 11:39:10.90ID:???
ここ民度悪いね
js選ばないほうがよさそう
0640Name_Not_Found垢版2019/08/18(日) 14:58:45.26ID:???
ここマウント取りたい猿が多いからね
0641Name_Not_Found垢版2019/08/18(日) 14:58:54.81ID:???
真面目に回答や反論すると、「何必死になってんの?」と煽られる程度には民度が低い
0642Name_Not_Found垢版2019/08/18(日) 15:03:48.87ID:???
マウンターでない奴をマウンター扱いする荒らしもいるから、質が悪い
0643Name_Not_Found垢版2019/08/18(日) 20:35:03.74ID:???
Array#indexOfとArray#findIndexについて
配列からオブジェクト自身を検索するとき、どっちがいいですか?

[obj1,obj2,obj3].indexOf(obj2)
[obj1,obj2,obj3.findIndex(obj=>obj===obj2)
0644Name_Not_Found垢版2019/08/18(日) 20:35:40.96ID:???
ミスりました
[obj1,obj2,obj3].findIndex(obj=>obj===obj2)
0645Name_Not_Found垢版2019/08/18(日) 20:48:35.59ID:???
どっちでもいい
前後の状況にもよる
0646Name_Not_Found垢版2019/08/18(日) 21:05:15.74ID:???
>>645
ありがとうございます!
findIndexのほうが冗長で遅いと思ってたので
このコードを見かけて、実は挙動が違うのかなと思いまして
ありがとうございました
0647Name_Not_Found垢版2019/08/19(月) 19:49:39.14ID:???
入れ子的な非同期通信をやりたいのですが
https://i.imgur.com/K0qlToO.jpg
こういう感じの処理をしてみたいのですが苦戦しています
(右側のthen(hoge())毎に複数$.getし、かつhoge内もthen(hoge())も順番を守る、みたいな)

↓こういう単純なやつだと上手く言ってくれるのですが
function hoge(){
return $.ajax({url:'https://jquery.com',type:'GET'}).then(_=>console.log(1)).then(_=>console.log(2))
}
$.ajax({url:'https://jquery.com',type:'GET'}).then(hoge()).then(hoge())

入れ子になると
function hoge(){
return $.ajax({url:'https://jquery.com',type:'GET'})
.then(function(){
return $.when($.ajax({url:'https://jquery.com',type:'GET'}).done(_=>console.log('$get 1-1')),$.ajax({url:'https://jquery.com',type:'GET'}).done(_=>console.log('$get 1-2')))
})
.then(_=>console.log('$get 2'))
}
Promise.all([hoge(),hoge()]);
上手くいったり行かなかったりします(おそらく通信速度の影響?)
なので最初の単純な方も上手くいってるのかどうかすら怪しいです

何かテンプレみたいなものがあればおねがいします
0648Name_Not_Found垢版2019/08/19(月) 21:28:16.34ID:???
>>647
> (右側のthen(hoge())毎に複数$.getし、かつhoge内もthen(hoge())も順番を守る、みたいな)

これってもはや同期的に処理するのとなにも違わないのでは……
0649Name_Not_Found垢版2019/08/19(月) 21:41:15.83ID:???
Promise.allとか$.whenとか使うと順番通りにならねえんじゃね?
0650Name_Not_Found垢版2019/08/19(月) 21:54:12.66ID:???
example.com みたいなサイトを使えば?
jquery.com は、テスト用のサイトじゃないだろ

タイムアウト時間も、関係あるかも

今は非同期処理に、axios を使うのが普通
0651Name_Not_Found垢版2019/08/19(月) 22:28:44.17ID:???
へぇw
非同期処理に、ねぇww
0652Name_Not_Found垢版2019/08/19(月) 22:38:33.97ID:???
>>648
説明不足でした
複数の$.getのとこは順序にこだわりなく全部終了するまでは待って欲しい程度でした
>>649
今はLOADINGみたいな変数をsetIntervalで監視してやってるのですが
何かもっとクールな方法がないものかと・・
>>650
たしかに、別のサイトでjquery読み込んでテストしてみます
axios初めて耳にしました調べてみます
0653Name_Not_Found垢版2019/08/19(月) 23:01:56.68ID:???
>>652
いやだから右側の処理をしたいんだろ?
hoge終わったら次のhogeが実行してほしいんだろ?
Promise.allは全部同時に実行されるんだから使わずに
同じような引数で右の処理を行ってくれるような関数を実装しろよ
0654Name_Not_Found垢版2019/08/19(月) 23:15:44.48ID:???
>>647
色々言いたいことあるけど最初の例で
〜then(hoge()) ←hogeを即時実行しちゃって大丈夫なの?
それともこれがjQuery wayなのか知らんけど
0655Name_Not_Found垢版2019/08/19(月) 23:40:36.79ID:???
jQuery関係なく、JavaScriptのPromiseっていうのは
こういうもんだ
0656Name_Not_Found垢版2019/08/20(火) 04:20:25.78ID:???
その"こういう"が何かを書けっつー話
自分がわかってるつもりで書いても何も伝わらねーの
0657Name_Not_Found垢版2019/08/20(火) 06:23:02.11ID:???
>>656
JavaScriptのPromiseを勉強してからもう一回来てくれる?
0659Name_Not_Found垢版2019/08/20(火) 07:17:29.57ID:???
>>658
はい勉強しました。
これで問題解決でいいですよね
0663Name_Not_Found垢版2019/08/20(火) 08:24:28.96ID:???
どっちが解決したのか分からんが、>>654が解決したなら、良かったな
0664Name_Not_Found垢版2019/08/20(火) 08:38:28.55ID:???
本人「横からだが〜」
wwww
0665Name_Not_Found垢版2019/08/20(火) 12:42:01.42ID:???
どっちにしろ普通の頭持ってりゃここまでのレスで解決するだろ
0666Name_Not_Found垢版2019/08/20(火) 13:17:40.81ID:???
説明もできずに「解決したんだから結果オーライ」みたいなバカしかいないの?
0667Name_Not_Found垢版2019/08/20(火) 13:32:38.41ID:???
煽っても答えが出てくるわけではないよ
0668Name_Not_Found垢版2019/08/20(火) 15:17:39.58ID:???
そもそも答えが書ける人間は「こういう」なんて書かないしな
0669Name_Not_Found垢版2019/08/20(火) 23:44:21.81ID:???
ajaxでtimeoutはあるのですがfilesizeで何バイトダウンロードしたら通信切るやり方教えてください
0670Name_Not_Found垢版2019/08/20(火) 23:55:44.22ID:???
もっと論理的に、正確に書いてくれ!

処理A が成功したら、処理B を行うとか

プログラマーなんだから、yes/no と、順番を明確に書いてくれ!
0671Name_Not_Found垢版2019/08/20(火) 23:58:57.71ID:???
>>669
XMLHttpRequestオブジェのprogressイベントを監視しろ
0673Name_Not_Found垢版2019/08/22(木) 10:42:17.99ID:xQgFxHX7
[1,21,33,46,58,64]みたいな配列があって、それぞれが1=りんご,21=スイカ,33=みかん,46=ぶどうみたいになっているんだけど、
配列内の数値が30以上50以下の時にだけ_で繋げて、みかん_ぶどうみたいに出力するのってどうすれば良いですか?
0677Name_Not_Found垢版2019/08/22(木) 19:30:57.37ID:???
> 俺だったらreduce使うかな
は、

俺だったらfor文使うかな
と言ってるのと同じで、なにも役に立つことを言ってない
0678Name_Not_Found垢版2019/08/22(木) 20:26:30.65ID:???
>>673
すまんがまず仕様を明確に示してくれないと何も答えられん
・数字↔果物の対応関係と文字列のデータは何処にどう置いてあるのか
・_で繋げるのは分かったのでみかんとぶどうは何処から来たのか
・配列は必ず昇順なのか
0681Name_Not_Found垢版2019/08/23(金) 00:39:14.48ID:???
Ruby で作った

require 'csv'

str = <<"EOT"
id,fruit
1,りんご
21,スイカ
33,みかん
46,ぶどう
55,なし
EOT

options = { :headers => true }

# 2次元配列
ary = CSV.parse( str, options ).each_with_object( [ ] ) { | row, ary |
ary.push [ row[ 'id' ].to_i, row[ 'fruit' ] ]
}

ary_2 = ary.select { |ary| 30 <= ary[ 0 ] && ary[ 0 ] <= 50 }
.map { |ary| ary[ 1 ] } # フルーツ名

p res = ary_2.join( "_" ) #=> "みかん_ぶどう"
0682Name_Not_Found垢版2019/08/23(金) 10:17:43.71ID:???
javascript初心者なのですが、よろしくお願いいたします。

【環境】windows10 1809、Chrome(Vivaldi)
【何をしたのか】
月イチで使う、web上の申込フォームがあります。
毎月同じような内容を入力→申込を繰り返すのですが、
その入力をブックマークレットで半自動化しようと思っています。
今回詰まっているのは、textの欄にクリップボードの文字列を貼り付けする処理の記述についてです。
【期待する結果】クリップボードの文字列を、目的の欄に貼り付けしたい。
【サンプルコード】
let chk = document.getElementsByTagName('input');
for (let i = 0; i < chk.length; i++) {
if (chk[i].type=='text'
&& chk[i].title=='利用者番号'){
chk[i].value =  //クリップボードの値//  ←ここの記述がわからないです
}
if (chk[i].type=='submit'
&& chk[i].value=='申込'){
chk[i].click();
}
}
0683Name_Not_Found垢版2019/08/23(金) 13:47:23.98ID:???
>>682
クリップボード chrome javascript ペーストで検索したら答えに行き着くんじゃね?
検索した上で出来なかったのなら【何をしたいのか】ではなく【何をしたのか】を書けよ
0685Name_Not_Found垢版2019/08/23(金) 19:44:04.29ID:???
>>682
>>684でいいけど
クリップボードの読み取りはclickやkeydown等のユーザーアクションによるイベントからでないと動かないのでボタン等をページに挿入してやる必要がある
さらにブラウザのサイト設定で明示的にクリップボードを許可しておく
0686681垢版2019/08/24(土) 08:36:30.75ID:???
Ruby では、powershell, clip コマンドも呼べる

# クリップボード内の複数行文字列の、各行の先頭・末尾から、
# 連続する空白類を除去して、クリップボードに入れる

str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換

ary = str.each_line.map( &:strip ) # 連続する空白類を除去する

IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
0687Name_Not_Found垢版2019/08/24(土) 11:11:10.40ID:???
何でもreadLineとかストリーム的に読むのって古臭いと言うか不便というか気持ち悪くないのかな
0688Name_Not_Found垢版2019/08/24(土) 12:54:56.25ID:/S1NGUjk
オペレーターだらけなのも気持ち悪いだろ
0689Name_Not_Found垢版2019/08/24(土) 13:28:19.84ID:???
別に絶対的に悪いということを言うつもりはないけど
Perlを引きずってるのがよく分かるね
0690Name_Not_Found垢版2019/08/24(土) 13:38:26.50ID:???
Perlはシェルスクリプトを引きずっている
0691Name_Not_Found垢版2019/08/24(土) 18:25:29.78ID:???
var tostr = {1:"りんご",21:"スイカ",33:"みかん",46:"ぶどう"};
var res = [1,21,33,46,58,64]
.filter(val => val >= 30 && val <=50)
.map(val => tostr[val])
.join("_");

たったこれだけのことをするのに>>681みたいに書かなきゃいけない言語ってやばない?
0693Name_Not_Found垢版2019/08/25(日) 06:33:17.22ID:???
とても初歩的な質問なんだが

Makefileを作成して(内容はwebから拾ってきたものをコピペ)package.jsonと同じディレクトリにおけばmakeコマンドが使えるようになるということらしいけど
makeコマンドを使おうとすると
>make : 用語 'make' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。
ってなってしまうのはどうしたらいいんだろう?
0695Name_Not_Found垢版2019/08/25(日) 06:47:00.71ID:???
あ、makeもパッケージをインストールしないと使えないのか
上手くいったありがとう
0696Name_Not_Found垢版2019/08/25(日) 23:46:41.10ID:???
コマンドプロンプトで、そのコマンドの実行ファイル(.exe)を探すと、
漏れは、make をインストールしていないが、node.js をインストールしている場合、

where make
情報: 与えられたパターンのファイルが見つかりませんでした。

where node
C:\Program Files\nodejs\node.exe

PowerShell で、環境変数Path を表示すると、

$env:Path.split(";")

C:\Program Files\nodejs\
と表示されるので、ちゃんと、実行ファイルのあるフォルダが、環境変数Path に追加されている

つまり、実行ファイルから、拡張子を除いたものが、コマンド名となる!
ただし、その実行ファイルのあるフォルダが、環境変数Path に追加されていることが必要です!

普通は、個別のユーザー環境変数Path に追加する。
すべてのユーザーで共通にするなら、システム環境変数Path に追加する

コマンドプロンプトで、メモ帳のコマンドのパスを探すと、
where notepad

C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe

このように、2つ以上見つかった場合は、一番上の実行ファイルが実行される
0697Name_Not_Found垢版2019/08/26(月) 10:17:23.90ID:???
未経験でこれからフロントエンドの開発を行うとき、生のJSを覚えるべきなのかaltJSを利用すべきなのかどちらがよい?
用途は趣味用のユーティリティを自作する程度で、経験はwindows向けにC#、androidアプリをかじった程度
0698Name_Not_Found垢版2019/08/26(月) 15:45:00.62ID:I/PPoBgZ
altJS一択
0699Name_Not_Found垢版2019/08/26(月) 15:56:00.50ID:???
× altJS一択
○ TypeScript一択

その他のaltJSは全滅した
0700Name_Not_Found垢版2019/08/26(月) 16:04:35.34ID:I/PPoBgZ
勝手にkotlinをころすな
0701Name_Not_Found垢版2019/08/26(月) 16:05:53.68ID:???
kotlinはaltJSって言いたいの?え?(笑)え?え?(笑)
0702Name_Not_Found垢版2019/08/27(火) 04:31:20.64ID:???
JSの代替になりうるもの、つまるところ通常JSに変換できるようになっている言語で
特にDOMサポートもされているものはaltJSと呼んでいいだろう
0704Name_Not_Found垢版2019/08/28(水) 00:52:35.55ID:???
生のJSというかESではいかんの?
TSとか、angular以外で使ったことない印象
0705Name_Not_Found垢版2019/08/28(水) 06:30:48.19ID:???
別に好きにしたら
JS界やWeb界で確立されている手法は少ない
変化も早いし
だからとにかく好きにしたら良い
0706Name_Not_Found垢版2019/08/30(金) 10:27:44.19ID:Gb5+V9qd
CSSのpositionを総まとめ!absoluteやfixedの使い方は?
https://saruwakakun.com/html-css/basic/relative-absolute-fixed

このサルワカのサイトで、スクロールしていくと、

1. CSSのpositionとは?
2. positionとセットで使うtop・bottom・left・right

など、その章に入ると、
画面の上に、その章のタイトルが表示されるのは、どういう仕組みでしょうか?

今のスクロール位置を取得して、それと何を比べているのでしょうか?
0707Name_Not_Found垢版2019/08/30(金) 10:46:38.74ID:???
ズブのど素人ですお手柔らかお願いします
通信でパソコンにデータを受け取るのに
websocket.apiというのがあって
URLとtokenが書いてあるのですが
具体的にどうしたら良いのか分かりません
またdatastore.apiというのもあって
同様にURLとtokenが書いてあります
これはなんに使うのでしょうか?
0708Name_Not_Found垢版2019/08/30(金) 10:56:09.75ID:???
ずぶのド素人に教えても理解できない
0709Name_Not_Found垢版2019/08/30(金) 12:50:49.40ID:???
>>707
素人なのは別に良いので
素人なら素人なりに伝える努力をしてくれ
とりあえず>>1読もう
0710Name_Not_Found垢版2019/08/30(金) 18:24:33.43ID:???
>>706
今のスクロール位置がその章全体の要素内に含まれているかを比べてるんじゃね
0711Name_Not_Found垢版2019/08/30(金) 23:09:10.69ID:???
「websocket」で検索して、目的・使い方を調べれば?
0712Name_Not_Found垢版2019/08/30(金) 23:33:22.06ID:???
>>707
「API」っていうものがどういうものか調べて理解できれば、
おのずとURLとトークンがどういうものかも分かると思う。

ものにもよるけどAPIって簡単なものも用意されてるはずだから、まずは調べながら実際に試してみたほうが理解が早いとも思う。
0713Name_Not_Found垢版2019/08/31(土) 01:54:58.74ID:???
ズブです
アドバイス感謝します
調べてみます
0714Name_Not_Found垢版2019/09/01(日) 18:26:17.33ID:???
{name: 'ken', blood: 'a', city: 'tokyo'}
という形式のオブジェクトがある人数分あったときに
bloodで{AB: ['john', 'marie', 'adam']}のようなオブジェクトを作るときは
どうすればいいのでしょうか?
0715Name_Not_Found垢版2019/09/01(日) 18:48:19.84ID:???
function blood() {
 return {AB: ['john', 'marie', 'adam']};
}

はい、bloodで{AB: ['john', 'marie', 'adam']}というオブジェクトを作りました
0716Name_Not_Found垢版2019/09/01(日) 18:55:31.71ID:???
>>714
bloodType = {
 A: [],
 B: [],
 AB: [],
 O: []
};
bloodType.AB.push(john);
bloodType.AB.push(marie);
bloodType.AB.push(adam);

みたいな感じではダメ?
0717Name_Not_Found垢版2019/09/01(日) 20:02:00.83ID:???
>>716
ありがとうございます
bloodTypeオブジェクトの各要素に、対応するnameの値を振り分けるときに
「bloodの値が'a'のオブジェクトのnameの値」をpushする
というような値の取り出し方ってできませんか
0718Name_Not_Found垢版2019/09/01(日) 20:15:36.01ID:???
あ、もしかしてこれであってます?
const obj = {name: 'ken', blood: 'a', city: 'tokyo'};
bloodType[obj.blood].push(obj.name);
0719Name_Not_Found垢版2019/09/01(日) 21:44:30.66ID:???
皆さんKV Storageってまだimportmapにポリフィル併記して使ってると思いますけど
ポリフィルは自分が差し替えない限りずっと同じものですが
stdの方は将来的に実装が変化しない保証というのはあるのでしょうか

もしバージョン指定のような形になったとき、
WebComponentのv0のように古いバージョンのサポートを辞める可能性があるのでしょうか
そうなると、どれほど普及しようと必ずstdにポリフィルを併記し続けていかないといけないのでしょうか
0721Name_Not_Found垢版2019/09/02(月) 10:47:19.12ID:???
shiftキーを押された状態にする方法を教えてください。
checkboxをonでshiftキーon、offでshiftキーoff、としたいのです。
タッチデバイスで利用します。jQuery使用でもいいです。
よろしくお願いします。
0726Name_Not_Found垢版2019/09/03(火) 01:10:47.24ID:???
foreach で return が使えないようなのですが、値を外で受け取る方法はないのでしょうか?
現状、外に空の配列を置いて、そこへ push しています。
0727Name_Not_Found垢版2019/09/03(火) 06:41:28.65ID:???
Ruby では、each_with_object の引数に、空配列・空辞書などを蓄積器として渡すと、
それが2つ目のブロック引数に渡ってくるので、そこにpush していくと、
最終的に、蓄積器を返り値として返してくれる

つまり、ループ内に蓄積器を置ける。
普通だと、ループ外に蓄積器を置くけど

ary_1 = [ 1, 2 ]

ary = ary_1.each_with_object( [] ) do | item, ary_2 |
ary_2.push item * 3
end

p ary #=> [3, 6]

同様に、map を使っても、蓄積器を返り値として返してくれる

p ary_3 = ary_1.map { |item| item * 3 } #=> [3, 6]
0729Name_Not_Found垢版2019/09/03(火) 07:37:32.87ID:???
>>728
プログラム板では有名な荒らしだからスルー推奨

「Rubyでは」「Ruby では」をNGしましょう
っていうのがあっちこっちのスレのテンプレに入ってるくらい有名なので触るのはやめよう
0730Name_Not_Found垢版2019/09/03(火) 08:53:02.36ID:???
>>724
それをshiftキーに当てはめるにはどうすればいいでしょうか?
0731Name_Not_Found垢版2019/09/03(火) 11:05:40.82ID:???
>>726
簡単なコードであればforeachの代わりにmapやreduceなどのJavaScript標準の関数を使用します。
JavaScript標準の関数でできない、または面倒なものは、UnderscoreやLodashというライブラリがよく使われます。
何が適切かは内容によります。
0732Name_Not_Found垢版2019/09/03(火) 14:24:17.03ID:???
>>721
javascriptでキーイベントを発生させる
https://teratail.com/questions/78596

>event.ctrlKey = true; // コントロールキー

シフトキーなら、
event.shiftKey = true; // シフトキー

ただし、入力コントロールの、keydown イベントハンドラー内で、
$( this ).trigger( event );
みたいに、同じ入力コントロールに対して、トリガーを呼ぶと、
無限ループになって、stack overflow エラーになる!

それと、誰が質問者か分からないので、
投稿時には、名前欄に、721 と入れてくれ!
0733721垢版2019/09/03(火) 15:43:48.37ID:???
俺は721ではない
0734732垢版2019/09/03(火) 16:22:31.11ID:???
Edge・Chrome でも、

入力コントロールに対して、トリガーを呼んでも、入力できないw
0735732垢版2019/09/03(火) 19:06:34.78ID:???
>734
修正

入力コントロールに対して、トリガーを呼んでも、
コントロールには表示されないけど、情報は送られているw
0736732垢版2019/09/03(火) 19:19:51.19ID:???
ここまでやってみた結論!

HTML 内のjQuery のトリガーでは、
入力コントロールに情報は送られているが、表示はされない!

一方、Selenium WebDriver で、ブラウザを自動操作すると、
入力コントロールに表示もされる!
0737Name_Not_Found垢版2019/09/03(火) 19:26:50.88ID:nxPodWfI
できるだけシンプルなテトリスチュート教えて下さい
0738732垢版2019/09/03(火) 20:53:56.17ID:???
シフトキーの有無で、何をやりたいのか、知らないけど、
keydown で、シフトキーの有無を判別しても、
keyCode から、charCode(文字)へ変換できない!

以下のサイトで、それらの変換辞書を作っている!
https://www.code-adviser.com/detail_1772179
https://jsfiddle.net/5hhu896g/1/

<input type="text" id="text_2">

$( '#text_2' ).on( {
'keydown': function( e ) {
console.log( e.type, e.key, e.shiftKey, e.charCode );
},

'keypress': function( e ) {
console.log( e.type, e.key, e.shiftKey, e.charCode );
}
} );

$( '#text_2' ).trigger( $.Event( 'keydown', { key: 65, shiftKey: true } ) );
$( '#text_2' ).trigger( $.Event( 'keypress', { key: 65, shiftKey: true } ) );
0739732垢版2019/09/03(火) 21:15:25.77ID:???
>738
修正

2箇所の
>key: 65
key: "a"

keyCode なら、数字で良いけど、
key は文字列でした
0740721垢版2019/09/03(火) 21:45:17.90ID:???
canvas上でマウスで要素を複数選択する際、
PCではshift+要素クリックで可能なのですが
タッチデバイスではこれができないため
checkboxを設けてshiftキーを押した状態を疑似させたいのです。
よってキーを押されたらとのイベントではなく文字通り>>721の通りにしたいのです。
0741732垢版2019/09/04(水) 00:32:14.34ID:???
複数選択したい要素が、例えば、Bootstrap の、
トグルボタングループ、チェックボックスグループ、セレクトボックスなどなら、複数選択できる

複数選択でも、ctrl キーとshift キーでは、複数選択される範囲が異なる。
セレクトボックスで確認してみて

Canvas 上ということは、上記のコントロールではなく、画像の一部分か何か?
特定の範囲を表すコントロールは、知らない。
そういうものなら、自作しないといけないのでは?

選択したら色を反転して、解除したら色を元に戻すとか?
それは、かなり難しい

>721 のように、特定のキーを押し続けている状態を維持することは無理です!
キーを押すと、すぐに放されるから。
または、押し続けると、連続して押されてしまうから

まあ、セレクトボックスで、複数選択を試してみれば?
0742Name_Not_Found垢版2019/09/04(水) 08:24:24.81ID:???
>>740
だから、>>724で「イベント発行しか出来ない」というてるのに、>>730に答えても要件を満たさない事に、なぜ気が付かない?

touch系イベントで複数選択可能なように、あなたがコードを書く以外に方法はない
0743742垢版2019/09/04(水) 08:28:14.21ID:wtmdhF4X
>>741
checkbox使うなら、そこからcanvasを直接操作すればよい
0744Name_Not_Found垢版2019/09/04(水) 10:28:36.79ID:???
タッチイベントを横取してイベントを発行すればいい
0745732垢版2019/09/04(水) 11:46:06.75ID:???
セレクトボックスみたいに、複数選択できるHTML 要素なら、
その機能を、HTML/CSS がやってくれるから楽

でも、Canvas 上で単なる画像なら、HTML要素じゃないから大変!

画像を選択したら、選択したように色も変えたりしないといけないし、
どの部分を選択しているのか、自分で管理しないといけない

そもそも、タッチした座標が、どの画像の部分にあるのかも、計算しないといけない。
全く、ゲームプログラミングそのもの!

HTML で作る、普通のウェブページじゃない!
0746Name_Not_Found垢版2019/09/04(水) 11:57:20.58ID:8Za3ARZ8
ロジック学ぶなら言語は関係ないわよね?
0748Name_Not_Found垢版2019/09/04(水) 18:45:11.05ID:8Za3ARZ8
vs codeにjavascriptのデバッガついてないの?
0749Name_Not_Found垢版2019/09/04(水) 18:50:46.52ID:8Za3ARZ8
下のコンソールにリアルタイムで構文をチェックしてくれるあの機能ないの?
0750Name_Not_Found垢版2019/09/04(水) 18:52:14.31ID:???
デバッグがしたいのか構文チェックがしたいのか意味不明
0751Name_Not_Found垢版2019/09/04(水) 19:03:54.98ID:8Za3ARZ8
eslintってのがあった
ごめn
0752Name_Not_Found垢版2019/09/04(水) 19:08:37.93ID:8Za3ARZ8
やっぱだめだ

を忘れてもエラーでないし
0753Name_Not_Found垢版2019/09/04(水) 19:10:54.36ID:8Za3ARZ8
ブラウザでデバッグするもんなのjsって
0755721垢版2019/09/04(水) 19:18:38.55ID:???
>>741
>>745
>画像の一部分か何か?
>キーを押すと、すぐに放されるから。
>または、押し続けると、連続して押されてしまうから

まさにその通りです。それらは全てできあがってて不要で超簡単なのです。
ただ逆にそれ以外あまりいじれないという。

みなさんどうもでした。
0756Name_Not_Found垢版2019/09/05(木) 00:49:32.86ID:???
>>745
普通はオブジェクトツリーとイベントバブリングを構築して
isPointInPathで済ますと思うから計算はしなくていい
0757732垢版2019/09/05(木) 12:16:36.44ID:???
パズドラ・Jewels などによくある、画像の一部分を選択するのは、ゲームプログラミングだよ。
HTML, JavaScript のゲームプログラミングの本などを読まないと、無理

選択されたように見せるだけでも、かなり苦戦する

https://www.emanueleferonato.com/

こういうイタリア人が、Phaser でゲームプログラミングしてる。
彼は昔、Cocos2d-x(JS 版)の本も書いていたけど、最近は、Phaserばっかり!
0760Name_Not_Found (ワッチョイ 4301-kPz+)垢版2019/09/05(木) 20:16:44.22ID:???0
const matched = value.match(/正規表現/)[0] || ''

これだと結局、右辺にたどり着く前に左辺の時点で「[0]を読み取れない」って怒られるんですけど
ここからあまり変数を増やしたりせずに
「マッチしたならその文字列、しなかったなら空の文字列」を代入する方法ってないですか?

const matched = (value.match(/正規表現/)) ? value.match(/正規表現/)[0] : ''
だと同じこと2回書くことになりますし…
0761Name_Not_Found垢版2019/09/05(木) 20:20:30.04ID:???
>>760
初めから [0] ではない生データをとるのが最良
const matched = (value.match(/正規表現/)||[''])[0]
0762Name_Not_Found垢版2019/09/05(木) 20:39:32.85ID:???
新規イオンカード発行で20%キャッシュバック祭り始まるぞ!増税前に大きい買い物するチャンス!

イオンカード決済で10%、イオン口座引き落とし設定で更に+10%
計20%最大10万円まで還元
https://i.imgur.com/Q3BbxXw.jpg

入会時紹介コード1500P
https://i.imgur.com/zSlYyfQ.jpg


※イオンカードセレクト(イオン銀行と一体型したクレカ)がオススメ
0765760垢版2019/09/05(木) 23:33:33.33ID:???
>>761
あーなるほど!
|| はいろんな場所で柔軟に使えるらしいことは知ってましたが、この例を見てとてもすんなり腑に落ちました…!


>>764
分割代入ですね、配列の中が変数1つなら自ずと[0]が入ると…!

それぞれすっきりした記述ですごく参考になりました、ありがとうございます
0766Name_Not_Found垢版2019/09/06(金) 06:42:56.42ID:???
「|| ['']」より「|.?」の方がスマート
0767Name_Not_Found垢版2019/09/06(金) 07:41:48.98ID:???
天才「自分の頭を使って考え適切なものを選ぶ」
馬鹿「何も考えたくない。全部同じものを使う」
0768Name_Not_Found垢版2019/09/06(金) 07:45:58.66ID:???
>>767
天才と馬鹿というよりは普通の人と馬鹿じゃない?
天才は「この世にない方法を編み出す」みたいな
0769Name_Not_Found垢版2019/09/06(金) 08:24:08.66ID:???
天才「独創的な考えを短時間で思索する」
常人「時間をかけて考える」
怠惰「先人に聞く」(同じ問題を何度でも)
0770Name_Not_Found垢版2019/09/06(金) 08:38:46.18ID:???
馬鹿「考えるの面倒くさい、全部同じやり方でいいじゃん、コピペ楽じゃん」
0771Name_Not_Found垢版2019/09/06(金) 12:33:04.61ID:???
>>768
天才とは才能が秀でている者を指す言葉で
新たな手法を編み出すと言うのはその一部
何れにしても大抵の人には何らかの才能が有る
0772Name_Not_Found垢版2019/09/06(金) 13:34:20.23ID:???
>>771
ただ才能が秀でてるくらいでは天才とは言わないよ
それはただの「秀才」

天才ってのは大抵の努力では到達できないレベルでかつ社会や歴史的に影響を与えるレベルじゃなきゃ天才などとは呼ばれない
0773Name_Not_Found垢版2019/09/06(金) 19:09:07.27ID:???
>>772
それは違う
過去に天才と呼ばれたり偉人とされた人がどういう人だったのか勉強してから発言した方がいいよ
0774Name_Not_Found垢版2019/09/06(金) 19:12:48.10ID:???
>>767
> 天才「自分の頭を使って考え適切なものを選ぶ」

これは常人の範疇
天才でなくても可能
0775Name_Not_Found垢版2019/09/06(金) 19:45:45.61ID:???
どう違うのか自分では説明できないのに他人に勉強しろとか文句付けてる時点でこいつは頭悪そう
0778Name_Not_Found垢版2019/09/07(土) 02:57:11.21ID:VPSBl1x1
二次元配列があった場合、javascriptはx(横)から先に読むんですか?
普通はyからだとおもうんですが。
0779Name_Not_Found垢版2019/09/07(土) 07:20:03.71ID:VPSBl1x1
すみません
0780Name_Not_Found垢版2019/09/07(土) 12:31:56.32ID:???
JSにアクセスアシスト付き多次元配列は無い
単純に配列が入れ子になっているだけ
考えを整理しろ
0781Name_Not_Found垢版2019/09/07(土) 15:49:57.39ID:???
配列の入れ子で質問があります。
for文の i を1階層目のインデックス番号として使用すると、エラーになってしまうようです。
何が原因なのでしょうか。
また、回避策はありますでしょうか。

var arr = [
[1, 2, 3],
[4, 5, 6]
]
for (var i = 0; i <= arr.length; i++) {
console.log(arr[1][1]); // ok
console.log(arr[1][i]); // ok
console.log(arr[i][2]); // err なぜ?
}
0782Name_Not_Found垢版2019/09/07(土) 16:11:16.88ID:???
for (var i = 0; i <= arr.length; i++) {
console.log( i ); // ok
console.log( i, arr[i][2] ); // err なぜ?
}

出力
0
0 3

1
1 6

2
Cannot read property '2' of undefined

そこは、0〜1 の範囲だろ。
2 は、範囲外!
0783Name_Not_Found垢版2019/09/07(土) 17:19:21.88ID:???
i <= arr.length だから2までインクリメントされてるって話ではないの?
i < arr.length にすればいいだけでは?
0784Name_Not_Found垢版2019/09/07(土) 18:59:38.64ID:???
>>782-783
さっそくありがとうございます。
まさか <= となっているのが原因だったとは全く気づきませんでした。
やむおえず forEach で代替しておりました。

お二人様本当に助かりました。
0785Name_Not_Found垢版2019/09/08(日) 22:07:23.83ID:???
aryAry.forEach((ary)=>{
  // ...
  // 長い記述
  // ...
  ary.forEach((value)=>{ "なんかする"; });
})

↑のような場合、なんかする関数が何度も作られ効率が悪い(測ると実際遅い)ですよね?
外だせばいいじゃんってことですが、1箇所でしか使わないのに記述がバラけるのが少し嫌だなと思い
何かいいとこ取りした綺麗な書き方はないか、というのが質問です
(外に変数だけ用意しといて nanka || (nanka=(value)=>{ "なんかする"; }) みたいなことはできるかも)
0786Name_Not_Found垢版2019/09/08(日) 22:17:03.03ID:???
>>785
どれくらい遅くなりましたか?
パーセンテージじゃなくて実時間(n回で○ms)で答えてください
0787Name_Not_Found垢版2019/09/08(日) 22:25:29.87ID:???
クソ長い記述の方を外出し出来ないのか?
0791Name_Not_Found垢版2019/09/09(月) 00:41:49.81ID:???
数千回以上呼び出されるようなものでない限り気にしなくていいぞ
多くの場合長い記述の方を見直したほうが結果が出る

どうしてもってのならforEachも関数も遅いんだからどっちも使うの禁止な
0792Name_Not_Found垢版2019/09/09(月) 07:02:02.70ID:???
千回でも数千人の環境で数十回実行されたら1億とか超える
そうするとそこに手を入れて削減できる実行時間が1時間とかになる可能性があるのだから
気にするくらいはしないとだめ
0794Name_Not_Found垢版2019/09/09(月) 09:03:46.38ID:???
>>792
JavaScriptはクライアント側で動くんだよ
だから何千人、何万人来ようが
かかる時間は50万回で300ms程度
0795Name_Not_Found垢版2019/09/09(月) 09:17:33.49ID:???
Googleはページ表示まで2秒以内にすべきとしているし、Amazonは0.1秒の差が1%の売上に影響するとしている
それからすると、300msは決して小さい数字ではない
0796Name_Not_Found垢版2019/09/09(月) 09:51:05.83ID:???
Nodeとかサーバーサイドならアホみたいなループは使わなくて済むように考えたほうが良いだろうね
0797Name_Not_Found垢版2019/09/09(月) 11:15:51.29ID:???
>>795
> それからすると、300msは決して小さい数字ではない
50万回で300msな

5万回なら30ms、5千回なら3ms
500回なら0.3ms、50回なら0.03ms
って計算できるやろ?

小さいかどうかは、ループ回数で決まるんだよ
0798Name_Not_Found垢版2019/09/09(月) 12:53:08.40ID:???
単純に1分考えて世界中のコンピューターの負担を1時間分節約できるのなら
まあ良いプログラマとしてはやるべきだな
塵も積もれば山となるし
0799Name_Not_Found垢版2019/09/09(月) 13:38:23.04ID:???
1分考えて、節約できるのは0.03msとか
逆にコストが掛かってる
0800Name_Not_Found垢版2019/09/09(月) 18:02:54.05ID:???
短期的な見方しか出来ないのか
0801Name_Not_Found垢版2019/09/09(月) 18:05:09.63ID:???
>>794
> だから何千人、何万人来ようが
> かかる時間は50万回で300ms程度

脳内データを元に仮設を立てられましても…
0802Name_Not_Found垢版2019/09/09(月) 18:39:17.38ID:???
1回が「0.0006ms = 0.6us = 600ns」の処理速度で実行可能なCPUがデファクトスタンダードな世界に生きてるんだろうさ
スマートフォンのスペックに相当余裕がある夢物語だな
0803Name_Not_Found垢版2019/09/09(月) 19:27:22.63ID:???
>>801
そこを突っ込むとかバカか?
クライアントで動かすとは誰も言ってないのだからそちらを突っ込むべきだろう
0808Name_Not_Found垢版2019/09/10(火) 00:19:40.38ID:???
>>806
確定してないからこそのツッコミどころだろ
0809Name_Not_Found垢版2019/09/10(火) 06:39:53.18ID:???
>>808
未確定なら、クライアントの話をしても問題あるまい
0810Name_Not_Found垢版2019/09/10(火) 09:44:22.79ID:???
> 単純に1分考えて世界中のコンピューターの負担を1時間分節約できるのなら

CPUにはアイドル時間という何も処理してない時間があって、
ネットワークやディスクアクセスのI/Oによってその時間がどうしても生まれる。
300ms程度増えたってCPUの使用率が50%から50.01%になる程度で
何もしないアイドル時間が減るだけでコンピュータの負担は減らない
1時間節約するには、何億アクセスレベルの処理が必要でしょう
0811Name_Not_Found垢版2019/09/10(火) 12:31:40.22ID:???
>>766

それなんですか?
検索したら「パイプライン演算子」 |> ってのは出てきましたが、 |.? についてはわからず…
0812Name_Not_Found垢版2019/09/10(火) 13:06:17.32ID:???
>>811
value.match(/正規表現|.?/);
こういう事なんだろうけどこれじゃマッチしなかった時どこか1文字拾っちゃう可能性あるわな

matchだけでやるならこうかな?
value.match(/正規表現|$/);
0813Name_Not_Found垢版2019/09/10(火) 13:26:22.24ID:???
>>809
クライアントに確定したかのように話すのはツッコミどころだろ
0814Name_Not_Found垢版2019/09/10(火) 15:22:21.37ID:???
文字列と正規表現の合致チェックをする場合、
文字列のmatchメソッドを使っても、
正規表現のtestメソッドを使っても、結果は同じなのでしょうか?
どっちの方がいいとかありますか?
0815Name_Not_Found垢版2019/09/10(火) 15:41:57.71ID:???
>>812
あぁなるほど、.?という何やら特殊なプロパティがいつの間にかできてたのかと思ったら
||['']のところに置き換えるってわけじゃなくて単に正規表現の中に入れると


正規表現で^(先頭)や$(末尾)は必ずヒットするけど長さは0文字…!
言われてみればそうですね、注意は必要なものの何かしら応用できそうです
0816Name_Not_Found垢版2019/09/10(火) 16:27:29.30ID:???
testのほうがだいぶ高速みたいだけど、比較するなら正規表現のmatchメソッドでないの?
0817Name_Not_Found垢版2019/09/10(火) 17:43:10.03ID:???
>>816
そうなんですね
単なる真偽チェックならtestでやった方がよさそうですね
ありがとうございました
0819Name_Not_Found垢版2019/09/10(火) 20:05:57.88ID:???
>>818
どう見ても確定したかのように言ってるだろ
0820Name_Not_Found垢版2019/09/10(火) 21:20:00.44ID:???
すごい初歩的な質問ですみません
window.onloadとimg.onloadでは、実行の順番みたいなものはありますか?
自作のプログラムでは、img.onloadの内容が終わってからwindow.onloadが実行されるみたいなのですが
0821Name_Not_Found垢版2019/09/10(火) 22:24:27.04ID:???
>>819
Node.jsが考慮外な程度でカリカリしなさんな
というか、そんないきり立って怒れるほど、Node.jsのシェアは高いの?
0822Name_Not_Found垢版2019/09/10(火) 23:19:51.72ID:???
文字列のn番目を書き換える方法って有る?
var a = "00000"; を n=3なら var a = "00100" にするような

n = "3";
i = 0;
var a = "";
while (i < 5) {
if (i == n) {
a += "1";
} else {
a += "0";
}
i++;
}
一応これで同じことはできる
0824Name_Not_Found垢版2019/09/10(火) 23:43:01.32ID:???
>>820
window.onloadはimgやiframe等も含めて必要な物が全て読み込み終わってから発生するイベント
DOM構築が終わってすぐ動いてほしいなら
document.addEventListener("DOMContentLoaded", 〜);
を使いましょう
0826Name_Not_Found垢版2019/09/10(火) 23:58:36.63ID:???
>>822
はい。
var func = ([...a], n) => (a[n - 1] = '1', a.join(''));

var a = '00000';
var n = 3;
func(a, n);
//=> "00100"
0828Name_Not_Found垢版2019/09/11(水) 00:08:07.13ID:lQgvfKkg
>>826
>>827
すげー
どっちも今の知識じゃわけわからんからググって勉強します
ありがとう
0829Name_Not_Found垢版2019/09/11(水) 00:12:32.60ID:???
>>826
やりたいことエスパーしてちょっと修正
var func = ([...a], n, c) => (a[n - 1] = c, a.join(''));

var a = '00000';
a = func(a, 3, '1');
console.log(a);
//=> 00100
0830Name_Not_Found垢版2019/09/11(水) 00:13:17.75ID:???
>>822
String型はプリミティブ値であり、プロパティ書換は不可
new Stringなら参照型だが、valueOfを書き換えて擬似的にプリミティブ値を書き換えるのが限度で、再代入とほぼ同じ
1文字レベルで書き換えたいなら、ユーザ定義コンストラクタ内でやるのが現実的
0831Name_Not_Found垢版2019/09/11(水) 00:25:54.15ID:???
>>829
これでもいいな。
var func = ([...s], n, c) => s.map((v, i) => i === n - 1 ? c : v).join(''));

var a = '00000';
a = func(a, 3, '1');
console.log(a);
//=> 00100
0832Name_Not_Found垢版2019/09/11(水) 00:37:52.76ID:???
>>831
灯台下暗し、spliceが一番シンプルか。
var func = ([...s], n, c) => (s.splice(n - 1, 1, c), s);

var a = '00000';
a = func(a, 3, '1');
console.log(a);
//=> 00100
0833Name_Not_Found垢版2019/09/11(水) 00:39:08.86ID:???
>>832
おっとjoin忘れたw
var func = ([...s], n, c) => (s.splice(n - 1, 1, c), s.join(''));

var a = '00000';
a = func(a, 3, '1');
console.log(a);
//=> 00100
0834Name_Not_Found垢版2019/09/11(水) 00:56:53.30ID:???
いいかげんjQueryから脱しようと思い、例えば<input>タグ内のテキストの書き換え処理を
$elem.val('テキスト')
でなく
elem.value = 'テキスト'
に変えてみました

そしたら気付いたのですが、JSでは関数が少ないためval()のようなメソッドが(エディタの色変えも相俟って)目立つのに対し
単にプロパティへの代入という形で書くと、どういう意味の代入なのかパッと見で区別しづらく…

Vanilla JSでもあえて明示的にするために、こういうちょっとした代入処理も独自関数にしたりするものでしょうか?
それとも気にせずに「 .value = 」で代入しちゃってれば慣れる感じですか?
0835Name_Not_Found垢版2019/09/11(水) 01:01:12.97ID:???
ほら、意味もなくjQuery脱出なんかするから
そういうことを考えなければいけなくなったw
0836Name_Not_Found垢版2019/09/11(水) 01:10:05.37ID:???
>>834
プロパティ代入なんて当たり前
関数が良いなら、setAttribute() があるが、属性とプロパティでは意味が違う
valueに限らず、DOMを基礎から学習すべき
0837Name_Not_Found垢版2019/09/11(水) 01:11:29.35ID:???
jQueryをやめるということは、そういう設計も
自分で考えて判断するということです。
jQueryがやってくれていた作業を自分でやるということなんですよ
0838834垢版2019/09/11(水) 01:12:57.08ID:???
>>835
いや、元々jQueryではできないことをするためにいちいちget()したり、
これをするときはjQueryオブジェクトでこれをするときは違って…って使い分けるのが面倒すぎたので…
0839Name_Not_Found垢版2019/09/11(水) 01:15:23.02ID:???
jQueryでできないけど、get()で出来ることって?
0840834垢版2019/09/11(水) 01:29:30.64ID:???
>>836
当たり前なのはそうですが、なんでもかんでも = だと可読性悪くないですか?という話です

そりゃsetAttribute('value', 'テキスト')とvalue = 'テキスト'は全然違いますよね
いきなり「DOMを基礎から学習すべき」という発言に至られた理由はちょっと推察しかねますが…


>>837
とりあえず使う関数やメソッドは自分で用意してますし設計を自分でするのは望むところですが
自分の脳内だけで好き勝手やる前に、まずは先人の話を聞こうと思い
0841Name_Not_Found垢版2019/09/11(水) 02:25:13.89ID:???
>>840
そもそも、なぜ「関数」が良くて、「プロパティ」が直観的でないと思ったのか、を論理だてて考える必要があると思う
プロパティにはgetter/setterもあれば、Proxyもある
処理が伴うプロパティは全く珍しくないし、DOMには反映型属性もある
原理さえ覚えれば、「プロパティだから直観的でない」と思う事はない
0842Name_Not_Found垢版2019/09/11(水) 02:59:44.41ID:???
どちらかといえば、jQueryが何でもかんでも関数化していて、分かりづらい印象だけどな…
jQuery#valがなぜ関数か、って実装当時はsetterがIEになくて、相互運用性の為に関数を採用しただけ
input要素のvalue属性を見るなら、状態を表すプロパティが直感的
0843Name_Not_Found垢版2019/09/11(水) 03:14:24.76ID:???
> jQuery#valがなぜ関数か、

基本的な設計に従って、 $('.class').val(123) ってするためやろ
なに勘違いしてるんだ?
0844Name_Not_Found垢版2019/09/11(水) 03:32:41.92ID:???
あと、setterは、Firefox2(2006年10月)やSafari3(2007年6月)以上から対応だから、
jQueryリリース(2006年8月)時点ではどのブラウザも対応してねーよ
0845Name_Not_Found垢版2019/09/11(水) 03:34:58.13ID:???
プロパティじゃメソッドチェーンも使えないし
0846Name_Not_Found垢版2019/09/11(水) 07:18:37.57ID:???
>>840
jQueryほとんど使わないんだけど
代入が可読性悪いなんて思ったことないので気持ちがわからない
慣れだと思う
0847Name_Not_Found垢版2019/09/11(水) 07:23:31.14ID:???
未だにjQueryがブラウザ間の互換性をもたらすライブラリだと思ってる人がいるんだね。
jQueryはDOM要素をリスト処理できるようにするライブラリだよ。
0848Name_Not_Found垢版2019/09/11(水) 08:12:53.13ID:???
どちらかといえば、jQueryのメソッドチェーンは気持ち悪く感じるな
何でもかんでもjQueryオブジェクトにのメソッドにして、返り値をjQueryオブジェクトにする
メソッドチェーンの為に複数の役割を強引に一つに統合した感が強い
0849Name_Not_Found垢版2019/09/11(水) 10:40:20.20ID:???
漏れは、Ruby でも、grep 時に困るから、短い表記は避ける。
代入よりは、setAttribute などの方が、検索しやすい

ただ、速度が遅くなるのが嫌なら、コメントを付ける

ary = [ ]

ary << "a" # Array#push
ary.push 1

p ary #=> ["a", 1]

>>821
Ruby でも開発時には、Node.js, jQuery, Bootstrap, Webpack, Babel などは必須。
npm, yarn などのパッケージマネージャーが無いと、異なるバージョンを管理できないから
0850Name_Not_Found垢版2019/09/11(水) 11:49:26.28ID:???
rubyってなんにもできないんだね
0851Name_Not_Found垢版2019/09/11(水) 12:55:41.41ID:???
>>848
メソッドチェーンはパフォーマンスのために有るんだよ。

もしメソッドチェーンがなければ、$(セレクタ)を一旦ローカル変数に入れないと
メソッドを呼び出す毎に、内部でquerySelectorAllする必要がある
メソッドチェーンが有るのでローカル変数を使うこと無く、
パフォーマンスを落とすこと無くメソッドを実行できる
0852Name_Not_Found垢版2019/09/11(水) 12:57:48.16ID:???
>>849
開発環境としてのNode.jsではなくて、サーバサイドスクリプトとして、だよ
クライアントに限定するな云々はそういうことだよね?
0853Name_Not_Found垢版2019/09/11(水) 12:58:46.17ID:???
>>849
重要なのは短いかどうかじゃなくて、
単語で区別できるかどうかやろ?

setAttributeでもattrでも検索性は変わらない


> ary.push 1

あちこちでpushが使われてるのに、検索しやすくなるわけがない
<< で検索しても何も違いはない
0854Name_Not_Found垢版2019/09/11(水) 13:59:29.46ID:???
>>851
一旦ローカル変数に入れれば解決するのならパフォーマンスのためじゃないじゃん
0855Name_Not_Found垢版2019/09/11(水) 17:37:06.64ID:???
Ruby でも、メソッドチェーンのままなら、遅延処理ができる場合がある

例えば、a().b().c()
で、途中で実体化しないで、最後の所でだけ実体化する

Generator みたいに、無限配列の最初の5つとか、取得できる

もし、これを途中で変数に入れると、先に無限配列が実体化されて、エラーになる。
ただし、関数のまま持ち運べば、OK なのかな?
0856Name_Not_Found垢版2019/09/11(水) 18:19:34.91ID:???
jQueryはNode,Element,HTMLCollectionmHTMLAnchorElement...etcを廃止して、全メソッドをNodeListに生やしているようなもの
で、9割以上のメソッドを「絶対NodeListを返す関数」にしてメソッドチェーンを強引に実装

複数のオブジェクト指向から、jQuery単独の独裁思想に染まっているわけだな
ESで「Arrayだけあればいいのた」と唱えるようなもの
0857Name_Not_Found垢版2019/09/11(水) 19:06:58.05ID:ZNEGXZLe
ム板は人いなさそうだったけどNode.jsの話はここでいい?

Node.jsでファイルの排他ロックってどーやんの?
自分で実装するか外部ライブラリをインストールして使うしかない?
0860Name_Not_Found垢版2019/09/11(水) 19:51:21.33ID:???
>>856
えーと、事実を述べたってのはわかるけど、、
別にそれ悪いことじゃないよね
0863Name_Not_Found垢版2019/09/11(水) 23:44:46.42ID:???
>>862には排他制御気にしなくていいどうだすごいだろみたいなことかいてあるんだけど…
0864Name_Not_Found垢版2019/09/12(木) 00:21:22.73ID:???
シングルスレッドだから1プロセス内のメモリの競合はないけど、
マルチプロセスでファイル操作するなら排他ロックは要るやろ。
0865Name_Not_Found垢版2019/09/12(木) 02:22:59.71ID:???
>>862にはシングルスレッドは誤解でスレッドプールがあってマルチスレッド走る
けどそんな実装意識しないで使えるって書いてあるけど…
0866Name_Not_Found垢版2019/09/12(木) 06:36:16.16ID:???
>>864
ファイルならロックができるでしょ
自身がマルチプロセスとか全く関係なく
他のアプリから触られるかもしれないのでロックするのが常識
0867Name_Not_Found垢版2019/09/12(木) 06:50:04.98ID:???
誰もファイルをロックできないなんて言ってないんだがw
>>863が排他制御気にしなくていいと書いてあるって言ったからファイルの排他は要るやろと言っただけで
0868Name_Not_Found垢版2019/09/12(木) 07:08:32.16ID:???
誰もファイルをロックできないなんて言ってるなんて言ってないんだがw
マルチプロセスとか関係ないやろと言っただけで
0869Name_Not_Found垢版2019/09/12(木) 07:13:48.16ID:???
>ファイルならロックができるでしょ

これはどういう必要性があって言ったんだ?
ロックできると理解してる相手にこれを言う思考回路が理解できんわw
0871Name_Not_Found垢版2019/09/12(木) 08:34:08.92ID:???
そのページ持ち出した奴どういう意図か知らんが、ファイルの排他制御全然関係ないじゃん。
nodeならfs.openにflags指定するだけだろ。
0872Name_Not_Found垢版2019/09/12(木) 08:51:32.51ID:???
>>857
ファイルもDBも排他制御ぐらい付いてるのが普通だ通ってた
むしろ、出来ない言語はあるのかな
0873Name_Not_Found垢版2019/09/12(木) 12:43:57.27ID:???
>>869
理解できないのは完全に君のオツムの問題だね
0875Name_Not_Found垢版2019/09/12(木) 20:31:35.20ID:???
>>857
async await 関連の排他ロックは色々あるよ

node.jsは
「既にこの世にあるコードは例え1行でも自分では書かん!」みたいな文化あるんで
npm漁ればコレでもかっつーくらい色々あるよ
0878Name_Not_Found垢版2019/09/12(木) 23:46:36.62ID:???
要素の座標を取得して、要素をクリック時にその値を使用するとした場合、
事前に取得してクリック時の処理を軽減する方が望ましいのでしょうか?

事前に取得する場合は、ブラウザをリサイズしたときに、要素の高さが変わる
可能性があるため、リサイズする度に値を取得する必要があります。

このような場合、記述が増えるけども、クリック時の処理の軽減に努めるべきなのか、
座標の取得など大した処理ではないので、クリック時に取得するべきなのか、
構成の考え方について、ご指導お願いいたします。
0880Name_Not_Found垢版2019/09/13(金) 00:01:09.21ID:???
早速ありがとうございます。

全く説明できそうにないので、クリック時に取得します。
少し↑でも何万回繰り返すと、ほんの少し早くなる・・・みたいなこと
書いてありましたし。
フロント側で初心者なので、対して難しい処理できませんので。

モヤモヤが晴れました!
0881Name_Not_Found垢版2019/09/13(金) 00:48:02.48ID:???
凄い丁寧で分かりやすく説明できるアホな質問者だったな
0882Name_Not_Found垢版2019/09/13(金) 01:02:46.26ID:???
async関数でreturn trueしてるコードを見かけますが、
これは普通の関数でのreturn Promise.resolve(true)と同じですか?
async関数は明示的に値を返さなくてもPromiseを返しているようですが、これらに違いはあるのでしょうか
0883Name_Not_Found垢版2019/09/13(金) 01:12:55.35ID:yX+pvisW
>>882
おなじ
asyncで関数を呼んだ時点で、Promiseが返ってる
その関数がreturnすると、そのPromiseがresolve(返り値)する
その関数が何か値をthrowすると、そのPromiseがreject(値)する
0884Name_Not_Found垢版2019/09/13(金) 01:13:46.53ID:yX+pvisW
すまぬちょいおかしかった

誤:asyncで関数を呼んだ時点
正:asyncの関数を呼んだ時点
0887Name_Not_Found垢版2019/09/13(金) 12:12:28.54ID:???
flock(群れ)ではないんじゃない?
分からんけど
0888Name_Not_Found垢版2019/09/13(金) 14:09:26.17ID:???
>>885
NONBLOCKはプロセスをブロックするかどうかで逆立ちしたってファイルロックとは関係が無い

>>887
そのとおりだがflockはfile lockの略だ
0889Name_Not_Found垢版2019/09/13(金) 20:01:31.56ID:???
ファイルロックはクロスプラットフォームの実装が面倒そうだな…
0890Name_Not_Found垢版2019/09/13(金) 20:58:35.31ID:???
>>882
プロミスを解決するためのreturnと、解決されたプロミスを返すreturnは概念的に違う
0892Name_Not_Found垢版2019/09/14(土) 14:42:46.92ID:???
ドキュメントが読み込まれて
src属性とかのソースをブラウザがとりにいく前に
srcをとりにいかないようノードを削除したいのですが
どのイベントを使えばいいですか?
onloadでは一旦srcをとってきてから削除になるのでリクエストは発生してしまいます
0894Name_Not_Found垢版2019/09/14(土) 15:59:06.50ID:???
サービスワーカーですか?ありがとうございます
XHRから手つけてないのでちょっと読みましたが全くわかりませんでした
ちょっと頑張って勉強してみます
0895Name_Not_Found垢版2019/09/14(土) 17:20:44.51ID:???
サービスワーカーじゃ初回訪問時はアウトじゃん
はぁ〜つっかえ
0899Name_Not_Found垢版2019/09/14(土) 17:38:48.68ID:???
>>892
イベントじゃ無理だよ
そんなイベントはない。

無理にやるなら、document.writeを使って、HTML全体をコメント化する。
そして、ページ読み込みあとにHTMLを解析すればできるかもしれないけど
HTMLの中にコメント有るとうまく行かないし、まあまず無理

ブラウザ拡張を作るぐらいかねぇ
0900Name_Not_Found垢版2019/09/14(土) 22:37:09.67ID:???
ブラウザ拡張も通信内容を完全に横取りできるAPIは削除される
0904Name_Not_Found垢版2019/09/15(日) 12:31:14.97ID:???
まだ1つも案が出てきてないのに代替案ってどういうこと?
0908Name_Not_Found垢版2019/09/15(日) 13:31:42.66ID:???
な、なんか狐に
つつまれたような
気がする・・・。
     ∧_∧
     /   ヽ
    |` ´|
`<>○<>\= oノ
 /ハ\⊂二_ヽ
`/ ∧_∧ヽ  |
|(´∀`)|ヽ | |ヽ
| \yノ |(  |ノ |
ヽ___ノと_ノ_ノ
0910Name_Not_Found垢版2019/09/15(日) 19:33:59.59ID:AQXA6Vga
テトリスに関してなんですが、
if (tetro[y][x])
でブロックのいちを指定できるのはなぜですか。
if tetro[y][x] == 1{}
とかだったらわかるんですが

https://youtu.be/LJlKaTwtSdI?t=743
0911Name_Not_Found垢版2019/09/15(日) 20:05:31.12ID:???
>>910
jsではfalse, 0, "", null, undedined, nan以外は全部trueとして扱われるので、
if 1はif 1 == 1 と同じ働きをする
0913Name_Not_Found垢版2019/09/15(日) 23:12:05.56ID:???
>>911
全部ではない
例えば[[IsHTMLDDA]]内部スロットがあるオブジェクトはfalsy
0914Name_Not_Found垢版2019/09/16(月) 05:52:28.95ID:???
配列の中に連想配列を格納してある場合、forEach的なループ処理はできますか?
Object.keys()の forEach は無理そうでした・・・
0918Name_Not_Found垢版2019/09/16(月) 09:48:37.99ID:3yY5DvmS
>>911
>>912
どうも
わかりやすい表記に変更したほうがいいですね
0920Name_Not_Found垢版2019/09/16(月) 13:22:26.70ID:???
Ruby なら、辞書も簡単に繰り返せるけど

hash = { 1 => 9, "a" => "X" }

p hash.keys #=> [1, "a"]

hash.each { |key, val| p [ key, val ] }

出力
[1, 9]
["a", "X"]
0922Name_Not_Found垢版2019/09/16(月) 13:57:34.06ID:???
NCはもう死んでるいまはWASM
WASMでRubyのようなモダン言語を動かそうと思ったらエンジンごと移植しないといけないので
それならRuby2JSトランスレータ使うほうが現実的
もう数年したらWASMがGCに対応するからそこからがWebマルチ言語の本番
このページをずっとチェックしてろ
https://github.com/WebAssembly/proposals
0923Name_Not_Found垢版2019/09/16(月) 13:59:10.09ID:???
え?Ruby動かないんですか!?
それじゃゴミじゃないですか!
0924Name_Not_Found垢版2019/09/16(月) 14:00:29.05ID:???
そういうのはもう良いから
そんな言語同士で張り合うような時代じゃないから
0925Name_Not_Found垢版2019/09/16(月) 14:19:44.51ID:???
たしかに。全部jsの時代だもんな。
0926Name_Not_Found垢版2019/09/16(月) 14:34:06.61ID:???
Rubyは荒らしだから触るなとあれほど・・・
0927Name_Not_Found垢版2019/09/16(月) 14:39:34.32ID:???
wasmはjs製のjsコンパイラをさっさと作っとけば爆発的に流行っただろうに
0928Name_Not_Found垢版2019/09/16(月) 14:50:03.65ID:???
js自体がコンパイルに向いていないのが最大のネック
0929Name_Not_Found垢版2019/09/16(月) 14:57:35.76ID:3yY5DvmS
vscodeを使っているんですが、補完してくれるアドオンないでしょうか
getcontext2dが出てこないのですが、これはもしやjavascriptと関係ないですか?
0930Name_Not_Found垢版2019/09/16(月) 14:59:22.10ID:3yY5DvmS
あと、fillstyleとかも出ませんね
eslintというのを使っています
0931Name_Not_Found垢版2019/09/16(月) 15:13:37.33ID:???
getContext("2d")はHTMLCanvasElementのメソッド
fillStyleはCanvasRenderingContext2Dのプロパティ
getContextを呼び出そうとしているインスタンスがCanvasじゃなかったら当然補完は死ぬ

ESLintはLinterであって補完とか関係ない
0932Name_Not_Found垢版2019/09/16(月) 15:26:16.92ID:3yY5DvmS
勘違いしてました
linterは構文チェックですね
ということは今使えているのはvscodeデフォルトの補完ということですかね
canvasを使用していますが、getcontextは補完に出てこないです
0933920垢版2019/09/16(月) 16:08:53.15ID:???
>>921
Ruby は、サーバー側で使われる。
サーバー側は、Ruby on Rails, JavaScript のNode.js とか

サーバー側で、HTML を組み立てるまでが仕事

クライアント側は、jQuery, Bootstrap, Vue.js とか

最近のサーバー側では、マイクロサービスで、Go を使うこともあるらしい。
サーバー側のJava, Python などは、Rubyよりも、遥かにシェアが少ない
0934Name_Not_Found垢版2019/09/16(月) 16:10:37.59ID:???
getContextで保管してくれるのは難しいでしょ
('2d')に限らないんだし
ChromeのConsoleとSourceパネルのライブエディタ使って開発するしかないんじゃない
0935Name_Not_Found垢版2019/09/16(月) 16:18:21.89ID:???
getContextも引数は定数なんだから難しくはないっしょ
0936Name_Not_Found垢版2019/09/16(月) 16:59:51.13ID:???
>>932
HTMLCanvasElementなら、.geぐらいで出る
getElementByIdで取得したHTMLElementでCanvasと認識されてなかったら出ない
認識させるにはTypeScriptだったら型付けるだけだけどJavaScriptだとinstanceofとかかな(分からん)
Canvasさえ認識されればgetContext("2d")の型は自動的に判明するから問題ないはず
0937Name_Not_Found垢版2019/09/16(月) 17:01:32.77ID:???
>>934
TypeScriptの型で"2d"だった場合〜って感じで定義されているから補完できる
0938Name_Not_Found垢版2019/09/16(月) 17:10:46.66ID:???
DOMツリーから探してきた要素がcanvasかどうかなんて
エディタの知ったことじゃ無いわな
0939Name_Not_Found垢版2019/09/16(月) 17:21:54.36ID:3yY5DvmS
型付け出来ないことが補完されない原因なら、すべての候補出しちゃえばいいんじゃないんですか
0940Name_Not_Found垢版2019/09/16(月) 17:36:35.80ID:???
そんなんここで聞かれても…

どうしても補完して欲しいならtypescript使うかjsdoc形式でコメントしておくか
0941Name_Not_Found垢版2019/09/16(月) 17:41:34.80ID:???
>>939
それじゃあ存在しないメソッド呼んじゃうじゃん…

if (canvas instanceof HTMLCanvasElement) {
// getContext補完される
}
// 補完されない
0942Name_Not_Found垢版2019/09/16(月) 17:49:37.50ID:3yY5DvmS
typescriptの導入からわからんので、覚えます
0943Name_Not_Found垢版2019/09/16(月) 18:07:11.39ID:???
>>941
そもそもHTMLCanvasElementなどが書き換えられていない保証がないのでは?
もしくはHTMLCanvasElementベースのカスタムエレメントでgetContextが殺されてるかもしれないし
0944Name_Not_Found垢版2019/09/16(月) 18:47:16.47ID:???
>>943
HTMLCanvasElement自体の書き換え、お行儀悪過ぎるしそれはやる奴がダメな気がする
0946Name_Not_Found垢版2019/09/16(月) 20:06:21.12ID:???
instanceof演算子ってSymbol.hasInstanceの影響を受けるから静的解析には使えないんじゃないの?
0947Name_Not_Found垢版2019/09/17(火) 02:38:42.81ID:???
javascriptには連想配列をオブジェクトと呼ぶとあったのですが、
配列用のカッコに値を格納しコンソールログで出力したところ、
オブジェクトとは違う出力結果となりました。
これは連想配列と考えてよいのでしょうか。

var a = {};
a[5] = 'abc';
a[4] = 'def';
console.log(a); // Object {4: "def", 5: "abc"}

var b = [];
b[5] = 'abc';
b[4] = 'def';
console.log(b); // [4: "def", 5: "abc"]
0948Name_Not_Found垢版2019/09/17(火) 02:46:03.99ID:???
>>947
連想配列をオブジェクトと呼ぶが、配列もまたオブジェクトなので連想配列として使えるが使わないほうが良い
0949Name_Not_Found垢版2019/09/17(火) 06:36:27.27ID:???
連想配列なんていう用語はJS仕様にはないので
連想配列と考えてよいかどうかは自分自身が決めること
0951Name_Not_Found垢版2019/09/17(火) 12:31:33.93ID:???
確かにMapが近いだろうが、最終的には個々の「連想配列」のイメージに引きずられるからな
標準仕様で定義されていない用語は使わない方が混乱が少ない
https://teratail.com/questions/211927
0952Name_Not_Found垢版2019/09/17(火) 13:28:05.79ID:???
配列は、キーを数値だけに限定したもの

Object を、連想配列・辞書のように使うと、__proto__ というキーでバグるから、要注意!
Haxe では、キーの前に、@ を連結してた

キーがabc なら、@abc にする。
__proto__ なら、@__proto__ になるのでバグらない

ES2015 以降なら、Map を使えばよい
0953Name_Not_Found垢版2019/09/17(火) 17:46:41.98ID:???
型付きの配列っていつから入ったっけ?
0954Name_Not_Found垢版2019/09/17(火) 18:16:57.35ID:???
Mapにreduceやfilterがないのはなぜ?
配列にしては低機能過ぎでは?
0957Name_Not_Found垢版2019/09/17(火) 20:23:13.67ID:???
http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/15-4_Array_Objects.html
new MapはES3のArrayにも及ばないんじゃないかな
sort,slice,unshift,concat...etc
配列としては足りない機能がかなりある
0958Name_Not_Found垢版2019/09/17(火) 20:34:11.67ID:???
>>947 です。
配列用のカッコでも行けるけど使わない方がよいのですね。
forのiと連動させつつ、歯抜けでpushして配列使えたらよいなと
試してみたところでして。

普通にオブジェクトか配列きちんと埋めて使います。
ありがとうございました
0960Name_Not_Found垢版2019/09/17(火) 22:00:28.65ID:???
>>954
JSの場合後戻りできないので慎重になっているだけ
議論はちゃんと進んでいる
0961Name_Not_Found垢版2019/09/18(水) 13:40:07.67ID:???
const str = `abc
123`

const lines = str.split( "\n" ); // 配列
console.log( lines ) //=> [ 'abc', '123' ]

1行ずつ処理するのに、上のように、split を使って、一旦配列に入れたのですが、
下のRuby みたいに、配列に入れずに、そのまま1行ずつ処理できますか?

str = <<"EOT"
abc
123
EOT

str.each_line do |line|
line.chomp! # 末尾の改行を削除する
p line
end

出力
"abc"
"123"
0962Name_Not_Found垢版2019/09/18(水) 16:22:21.37ID:???
str.split('\n').forEach(line => console.log(line))
str.replace(/.+/gm, line => console.log(line))
0963Name_Not_Found垢版2019/09/18(水) 17:27:38.91ID:???
下の方そんな動作するんだ。意外だ
0964Name_Not_Found垢版2019/09/18(水) 22:38:26.97ID:???
下で空行処理する場合は適当に変えてね
0965Name_Not_Found垢版2019/09/19(木) 07:17:22.03ID:???
>>962
> str.replace(/.+/gm, line => console.log(line))

"." を使うなら、mフラグが不要では?
0970Name_Not_Found垢版2019/09/20(金) 01:35:52.57ID:???
ちょっと見ない間に定数宣言もできるようになったんか
0971Name_Not_Found垢版2019/09/20(金) 02:10:30.22ID:???
>>964
空行も処理するのは、
console.log(str.replace(/^.*$/gm, line => line + ' peropero'))
または、
for (const line of /^.*$/gm) console.log(line + ' peropero')
0972Name_Not_Found垢版2019/09/20(金) 02:28:18.29ID:9OhScHGM
質問です

let str1 = '庭には二羽鶏がいるオムライス食べたい2日目';
let str2 = 'にわにはにわにわとりがいるおむらいすたべたいふつかめ';

このstr2のテキストから
str1の中の平仮名以外の文字の読み仮名に該当する部分を取り出したくて試行錯誤してます

str1を平仮名とそれ以外に割って
['庭','には','二羽鶏','がいる','オムライス食','べたい','2日目']

str2の先頭から、配列2つ目の「には」が出てくるまでが
配列1つ目の「庭」の読み仮名だ!

という方針でやってみて、上記の例だとうまくいくんですが
indexOfの引数になる平仮名が漢字の読みに含まれてしまうと失敗します

let str1 = '煮蛤には焼酎よりも日本酒';
let str2 = 'にはまぐりにはしょうちゅうよりもにほんしゅ';

これだと、配列2つ目の「には」が、読み仮名となる「にはまぐり」に含まれてしまうので


どうも方針が間違ってる気がしているのですが
なにかうまいやり方はありますでしょうか
0975Name_Not_Found垢版2019/09/20(金) 06:18:09.57ID:???
>>967,968
お前大丈夫か?
被害妄想も大概にしろ
いつ誰が>>965がおかしいと言った?
0976Name_Not_Found垢版2019/09/20(金) 06:41:03.69ID:???
>>975
「知ったか」と「無知」にレスアンカーを付けないで、なぜ通じると思ったんだ?
0977Name_Not_Found垢版2019/09/20(金) 06:58:37.28ID:???
>>972
単純に、漢字とその読み仮名を定義すれば?

"赤色" : [ "あかいろ", "せきしょく" ]

プログラム板のアルゴリズムとか、日本語解析などのスレで聞けば?
0978Name_Not_Found垢版2019/09/20(金) 07:22:40.81ID:???
>972
漢字部分を.+に置き換えた正規表現でひとつのマッチは
得られると思う。
ただ、受理できる全パターンの列挙とその中から
正解を選び出す手段は別に必要かな。
0979Name_Not_Found垢版2019/09/20(金) 07:55:43.75ID:???
>>972
漢字と平仮名の対応表なしに正解を導き出すのは不可能

庭にわ二羽庭
にわにわにわにわ

プロクラムには、各々の漢字の「にわ」と「にわにわ」を区別出来ない
全パターンを掲示して、人間に正解を選んで貰うのが次善解
0981972垢版2019/09/20(金) 12:53:22.10ID:9OhScHGM
>>977-979
あざます
やっぱ無理ですかねー
なんかこう、確実に一致する平仮名は含まれているので
うまーくマスキング出来ないかなーとか思って始めてみたんですが
0982Name_Not_Found垢版2019/09/20(金) 13:52:27.02ID:???
考えないで脳死回答すると後ろからみていきゃいいんじゃね
0984972垢版2019/09/20(金) 14:32:09.50ID:9OhScHGM
>>983
あざます
形態素解析は>>972よりも先に思いついて、まず品詞で割ってみたんですが
平仮名化の精度が微妙だったんでですよね…
このアプローチも頑張ってみます
0985972垢版2019/09/20(金) 16:04:24.35ID:9OhScHGM
>>983
いろいろゴニョゴニョしたんですが
最初は茶筅の形態素解析を使って失敗していたんですが
gooラボの形態素解析APIは品詞分解した結果に読み仮名が付いていました!
これでかなり精度上がりました
ありがとうございました!
0987Name_Not_Found垢版2019/09/20(金) 18:57:52.46ID:YH5m6cro
>>981
おもしろそうなのでちょっとやってみた。

const kanafuri = (漢字かな混じり文, かな文) => {
const matches = [...漢字かな混じり文.matchAll(/(?<ひらがな>\p{Script=Hiragana}+)|(?<ひらがな以外>[\P{Script=Hiragana}]+)/gu)]
const 行頭の文字種 = matches[0].groups.ひらがな ? 'ひらがな' : 'ひらがな以外'
const 行末の文字種 = matches[matches.length - 1].groups.ひらがな ? 'ひらがな' : 'ひらがな以外'
const ひらがなchunks = matches.filter(({groups: {ひらがな}}) => ひらがな).map(([match]) => match)
const [_, ...よみがなchunks] = RegExp((行頭の文字種 === 'ひらがな以外' ? '(.+)' : '') + ひらがなchunks.join`(.+)` + (行末の文字種 === 'ひらがな以外' ? '(.+)' : ''), 'gu').exec(かな文)
result = ''
for (const {groups: {ひらがな, ひらがな以外}} of matches) {
if (ひらがな) {
// ひらがなのときの処理
result += ひらがな
} else {
// ひらがな以外のときの処理
result += ひらがな以外 + '【' + よみがなchunks.shift() + '】'
}
}
return result
}
0988Name_Not_Found垢版2019/09/20(金) 19:06:33.56ID:YH5m6cro
>>987
const str1_漢字 = '庭には二羽鶏がいるオムライス食べたい2日目'
const str1_かな = 'にわにはにわにわとりがいるおむらいすたべたいふつかめ'
const str2_漢字 = '煮蛤には焼酎よりも日本酒'
const str2_かな = 'にはまぐりにはしょうちゅうよりもにほんしゅ'
const str3_漢字 = 'あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、' + //5ch制限のため改行
'うつくしい森で飾られたモリーオ市、郊外のぎらぎらひかる草の波。'
const str3_かな = 'あのいーはとーゔぉのすきとおったかぜ、なつでもにわにつめたさをもつあおいそら、' + //5ch制限のため改行
'うつくしいもりでかざられたもりーおし、こうがいのぎらぎらひかるくさのなみ。'
console.log(kanafuri(str1_漢字, str1_かな))
//=> 庭【にわ】には二羽鶏【にわにわとり】がいるオムライス食【おむらいすた】べたい2日目【ふつかめ】
console.log(kanafuri(str2_漢字, str2_かな))
//=> 煮蛤【にはまぐり】には焼酎【しょうちゅう】よりも日本酒【にほんしゅ】
console.log(kanafuri(str3_漢字, str3_かな))
//=> あのイーハトーヴォ【いーはとーゔぉ】のすきとおった風、夏【かぜ、なつ】でも底【にわ】に冷【つめ】たさをもつ青【あお】いそら、【、】
//5ch制限のため改行
うつくしい森【もり】で飾【かざ】られたモリーオ市、郊外【もりーおし、こうがい】のぎらぎらひかる草【くさ】の波。【なみ。】

、や。の扱いが不服だが疲れたのでここまでにする。
参考:
Unicode property escapes
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes
Unicodeの文字プロパティを指定した正規表現をみてみる(ECMAScript2018)
https://blog.tes.co.jp/entry/2018/06/29/145450
0989Name_Not_Found垢版2019/09/20(金) 19:44:22.15ID:???
アホみたいにズラズラ書かずにコード投稿サイトに書いてくれ
>>1にも書いてあるだろ

しかもJaneだとインデントもされないし読みにくいことこの上ない
0990Name_Not_Found垢版2019/09/20(金) 19:55:31.65ID:YH5m6cro
まあもうスレも終わりだしまた今度な。
0991Name_Not_Found垢版2019/09/20(金) 20:00:14.89ID:???
> また今度な。

絶対やらないパターンな
0992Name_Not_Found垢版2019/09/20(金) 20:18:23.94ID:YH5m6cro
イーハトーヴォのかな文、誤字ったぜ…
底をにわって書いちゃったんだぜ。
例文1でにわにわうるさいから…
0993972垢版2019/09/20(金) 20:18:33.26ID:9OhScHGM
まあまあ

>>987
あざます
勉強になりました
0994Name_Not_Found垢版2019/09/20(金) 23:04:30.94ID:???
インデントが無くなっても、VSCode のフォーマットの拡張機能で、自動的にインデントされるだろ?
0995Name_Not_Found垢版2019/09/21(土) 00:19:45.06ID:???
5ちゃんに長々と書かれてるコードをいちいちエディタにペーストしないわ
0996Name_Not_Found垢版2019/09/21(土) 00:25:51.17ID:???
つまり5ちゃんに長々と書くことによって、みんながコードをいちいちエディタにペーストする手間を省いたわけだ。親切!
1000Name_Not_Found垢版2019/09/21(土) 17:08:00.94ID:???
>>999
形態素解析APIで解決したって言ってんだろうがマヌケ
10011001垢版Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 77日 22時間 54分 33秒
10021002垢版Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況