X



+ JavaScript の質問用スレッド vol.141 +
レス数が1000を超えています。これ以上書き込みはできません。
0001Name_Not_Found
垢版 |
2019/06/02(日) 20:29:34.65ID:lOlHu299
JavaScriptの質問スレ。次スレは>>950が立てる事

■ 質問者向けルール
・メール欄は空欄にしてIDを出す事
・テンプレ使う方が回答率が高い。使用は自由
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問・回答以外は他所で
・分からない単語は無理に使うな

■ 質問テンプレート
【何をどうしたいか】 簡潔に
【jQueryがNGかどうか】 jQuery使いたくなければ「NG」と記述。
【サンプルコード】以下シミュレートサイトを利用の事
http://jsbin.com/ http://jsfiddle.net/

■ 回答者向けルール
・煽り、批判に意味はない。代案を出せ
・多様性を忘れるな。クソコード、クソ環境が好きな土人も世界にはたくさんいる
・HTML・CSSで実装しても良い

■ 参考URL
jsリファレンス https://developer.mozilla.org/ja/docs/Web/JavaScript
jQuery 便利ライブラリ。wordpressには標準で組み込まれている http://jquery.com/download/
AngularJS フレームワーク https://angularjs.org/
Node.js フレームワーク https://nodejs.org/ja/
threejs 3DCG用ライブラリ http://threejs.org/

■ 前スレ
https://ff5ch.syoboi.jp/?q=JavaScript%E3%80%80%E8%B3%AA%E5%95%8F%E7%94%A8
0003Name_Not_Found
垢版 |
2019/07/01(月) 23:15:05.91ID:089iiE6S
JavascriptでDataTablesが使われているときに
左上のselectをTampermonkeyから自動でselectedにしても
表が更新されません。
どうすればいいのでしょうか。
0005Name_Not_Found
垢版 |
2020/08/30(日) 22:13:26.64ID:???
let ooo={a:"hoge", b:"huga"};
let c = ooo?.a;

としたときの'?'は何んと言いますか そしてその働きはどのようなものですか
0008Name_Not_Found
垢版 |
2020/09/24(木) 12:21:37.88ID:???
WEB components の質問

https://pastebin.pl/view/b2947a05
で、id="NG" のタグがうまく(id="OK"のように)レンダリングできないのは仕様?
仕様なら、どこを見れば載ってる?
0009Name_Not_Found
垢版 |
2020/09/24(木) 13:09:06.09ID:???
OKの方は既にDOMに追加されてるのでコンストラクタが呼ばれた時には中身のtextContentも存在するけど
NGの方はtest-elemがcreateElement相当された時点でコンストラクタが呼ばれるのでまだ中身は無いという単純な話だが
仕様のどこにあるかは知らん
0010Name_Not_Found
垢版 |
2020/09/24(木) 14:09:42.16ID:???
>>9
HTMLの読み込みで
OKのほうは読み込んでいたノードに対する適用
NGのほうは読み込みながら適用
これに差が出るってのはどうなんでしょう?
という疑問はやはり拭えません


で、関係はしていますが別の質問です

属性は変更イベントを受け取れますが、textContentだとユーザー入力でない変更なのでchangeイベントも発生しません
今はtextContentは諦めて属性に逃げてますが、イベントがあれば問題は解決します

なにかイベントありませんか?
0011Name_Not_Found
垢版 |
2020/09/24(木) 16:25:46.80ID:???
>>10
自力で部分的に解決

MutationObserver で childList を監視させると取れます

chrome, edge なら!
firefox ... MDNで読んだのになんで?

救われることに、firefox は connectedCallback で取れたりするんですが、
まさかのブラウザ依存が……
0012Name_Not_Found
垢版 |
2020/09/24(木) 17:22:35.65ID:???
>>11
connectedCallback で監視開始の observe() を呼んでいたため、

firefox だけは DOM に突っ込む前に textContent が設定されていたためイベントを拾えなかった

ということに気付きました
お騒がせ申し訳ない

https://pastebin.pl/78eec28c
0014Name_Not_Found
垢版 |
2020/09/25(金) 21:54:58.22ID:???
VScodeについての質問なんですが……

delete this._observe;
と、オブジェクトのプロパティを削除しようとしているのですが
';' が必要です。ts(1005)
とのエラーになります

ファイルは普通の js (ES6) なのに TypeScript として lint が走っているように見えます
拡張機能は日本語パックと Go と Markdown 関係しか入れていないつもりですが、知らないだけで TypeScript 関係まで入っているかと思います

どの設定が悪さをしているのか分かりませんでしょうか?
0015Name_Not_Found
垢版 |
2020/09/25(金) 22:01:13.95ID:???
>>14
クライアントのスクリプトなのでリソース扱いであり
支障はないと言えばないのですが、気持ち悪くて
0016Name_Not_Found
垢版 |
2020/09/26(土) 16:09:34.29ID:WsQ9X/qo
VSCodeを使わない
0017Name_Not_Found
垢版 |
2020/09/27(日) 01:48:27.84ID:???
「vscode linter 設定」とかで、検索すれば?

それか、プログラム板のVSCode のスレで聞くとか?
0018Name_Not_Found
垢版 |
2020/09/27(日) 04:45:42.58ID:???
>>17
TypeScript の設定を見ろという記事を見つけて、
設定をすべてオフにしたら出なくなりました
0019Name_Not_Found
垢版 |
2020/09/28(月) 06:56:05.87ID:???
その場しのぎではなく、きちんと拡張子に応じた動作をするよう設定しないとまた後で困るぞ
0020Name_Not_Found
垢版 |
2020/10/06(火) 13:22:56.15ID:???
一時的なノードを作ってインナーテキストを全選択してコピー→削除
というコードを仕込んでるんですが文字化けして困ってます
別のブログとかでも試したのですが1つのサイトだけで起こるんですよね
何が原因なんでしょうか・・
0021Name_Not_Found
垢版 |
2020/10/06(火) 13:53:05.60ID:???
>>20
文字コードを正しく処理できてないから
0022Name_Not_Found
垢版 |
2020/10/06(火) 20:32:36.99ID:???
>>21
metaとかscriptタグのcharset属性のことで合ってます?
そこら辺は大丈夫そうなんですよね・・
JSのコード内でエンコード指定するというのはやり方がわからないです
0023Name_Not_Found
垢版 |
2020/10/06(火) 22:12:42.67ID:???
コードもサイトも公開せずに質問しても誰も答えてくれないよ

まずは再現可能な最小限のコードを公開する努力をして
0024Name_Not_Found
垢版 |
2020/10/06(火) 22:42:54.11ID:g8H7luqq
画面の上部に常時表示される角丸のメニューを、
ディスプレイに嵌る場合はなるべく一杯上に嵌めたいです。
どのようにディスプレイの角のパスを取得して計算することができますでしょうか?

1.ぴったり嵌るときはぴったり表示する
2.鋭角過ぎるときは、上に詰めて角を余らせる
3.鈍角過ぎるときは、横で引っ掛けて上を余らせる

どうぞよろしくおねがいします
0025Name_Not_Found
垢版 |
2020/10/06(火) 22:45:09.78ID:g8H7luqq

0026Name_Not_Found
垢版 |
2020/10/06(火) 22:54:43.21ID:g8H7luqq
私が試したこととしましては、角を無視して表示するモードにして、
角の境界見込み位置で1pxだけ反転させたり点滅させたりして、
ユーザーが気になって触れば角からその点は外れているとして統計を取りましたが、
iPhoneXRなど、既にマップがよく分かっているものを
1px単位で実際に見える範囲を突き止めるのには使えそうでしたが、
マイナーな機種だと数が集まらず難しそうでした
0027Name_Not_Found
垢版 |
2020/10/07(水) 05:49:41.79ID:???
>>22
JS は、UTF-8 だけじゃないの?
他のエンコードなんてあるのか?

HTML が、sjis とか、保存したファイルが、sjis とかで、
エンコードの不一致が起きているのかも

最近は知らないけど、5ch も、sjis じゃないの?
0028Name_Not_Found
垢版 |
2020/10/07(水) 12:50:12.79ID:???
jsはunicode
幾つで分割するかは指定はない
文字列は16
0029Name_Not_Found
垢版 |
2020/10/11(日) 00:34:32.49ID:4ahb+a/J
確かに、単純にString取り扱う場合でもutf16だから、サロゲートペアとかで化けてる可能性もあるよねー。

ガチで文字コードとやり合うなら、TextEncoderは対応UTF8だけになっちゃったよね。TextDecoder使えば一応、ガチにutf8以外でもデコード出来るかもだけれど、商用で使うにはまだ怖い感じ?
https://developer.mozilla.org/ja/docs/Web/API/TextDecoder

html読みこんでDOMにパースしてる場合、文字コードはBOM、HTTPヘッダでも指定可能だから、その辺のチェックも面倒臭いよね。
0030Name_Not_Found
垢版 |
2020/10/11(日) 02:10:35.03ID:???
JSの問題じゃない
JSには直背データをやり取りする仕様はない
JSのコードも書かれている物が直接評価されるわけではない
エンジンが直接ファイルを開くわけではない
その前にブラウザだったりオーナーが適切にデコードしたものが渡ってくる
そこの問題だからJSでどうこうしようと考えるのが間違い
0031Name_Not_Found
垢版 |
2020/10/12(月) 12:10:00.67ID:bAGbj3Sn
chromeのデベロッパーツールのコンソール画面で、例えば「window」と打ち込むとでてくる要素を
chrome extensionで使うjsで取得したいのですが可能でしょうか?
jsの方で単純にwindowを取得しても別物になってしまいます
0033Name_Not_Found
垢版 |
2020/10/12(月) 12:59:08.16ID:???
>>31
コンテンツスクリプトからwebページにscript要素作ってスクリプト注入
注入したスクリプトとやり取りしたいならpostMessage、カスタムイベント、隠し要素等を使う
Firefoxなら非標準だけどwrappedJSObjectとかもあるんだけどね
0034Name_Not_Found
垢版 |
2020/10/12(月) 13:20:36.69ID:bAGbj3Sn
>>32
>>33
ありがとうございます!
0035Name_Not_Found
垢版 |
2020/10/13(火) 05:59:50.72ID:???
質問文でググったら詳細で具体的な方法がいくつも出てくるのに
こんな短文でしかやり取りできないところでわざわざ聞く意味な
0036Name_Not_Found
垢版 |
2020/10/15(木) 01:24:58.47ID:???
嫌なら見なきゃいいじゃん
わざわざ見る意味ある?
0037Name_Not_Found
垢版 |
2020/10/15(木) 11:03:51.11ID:???
嫌だから見たくないと誰が言ったのだろうか?
0038Name_Not_Found
垢版 |
2020/10/15(木) 12:43:32.19ID:???
せやな、イヤだからイヤと言ってるだけ。
なんどもイヤと言い続ける

イヤと言われるのが嫌なら見なきゃ良いじゃんw
0039Name_Not_Found
垢版 |
2020/10/15(木) 16:29:15.69ID:???
イヤよイヤよも好きのうち
0040Name_Not_Found
垢版 |
2020/10/16(金) 06:15:44.24ID:???
>>38
お前大丈夫か?
なんでググらないの?と疑問を呈しているだけ
もとい、質問文でググったら案外分かるよというアドバイスを
率直に言うのも2chらしくないのでちょっとひねくれて面白く書いただけで
嫌もクソも無いんだが
0042Name_Not_Found
垢版 |
2020/10/16(金) 19:13:54.25ID:???
はい。マチガッておりますw
0043Name_Not_Found
垢版 |
2020/10/26(月) 21:12:37.36ID:???
<script
document.addEventListener('DOMContentLoaded', function() {
 var mql = window.matchMedia('(max-width: 780px)');
 function checkBreakPoint(mql) {
  if (mql.matches) {
   実行1
  } else {
   実行2
  }
 }
 mql.addListener(checkBreakPoint);
 checkBreakPoint(mql);
});
</script

こんな感じのやつをコピペしてもってきたんですが
ウィンドウサイズを変更すると780pxの境目で実行1、2がちゃんと実行されます
最初から780px以下の状態でページを表示したときに実行1が動くようにするにはどうすればよいのでしょうか
0045Name_Not_Found
垢版 |
2020/10/26(月) 21:42:14.53ID:???
スワセンできました。ありがとうございます
0046Name_Not_Found
垢版 |
2020/10/27(火) 19:29:38.90ID:???
AudioWorkletで鳴らす音がどうやってもぶつ切りになる
process()で処理されるサンプルが綺麗に繋がらんのだが
どうやれば隙間無く繋げられるのか
0047Name_Not_Found
垢版 |
2020/10/27(火) 19:35:52.19ID:???
仕様がまだワーキングドラフトじゃん。
ブラウザベンダもまだまともに実装してないだろ。
0048Name_Not_Found
垢版 |
2020/10/27(火) 22:37:14.91ID:???
>>46
ぶつ切りになって正解
オーディオエンジンもハードもしっかりしてて
不意な他プロセスの横やりも入らない
コンシューマーゲームでも音飛びすることはあるでしょ

ならブラウザでリアルタイムに再生する音が
どうしてぶつ切りにならないと思うの?

難しく考える必要はない。ぶつ切りには絶対になる
ならないほうがおかしい。

もしどうしてもなるべくそうなってほしくないなら、
リアルタイム性を犠牲にしてバッファを増やせばいいだけ

バッファを増やせば増やすほどリアルタイムは損なわれるが切れにくくなる
それ以外に良い方法など一切無い。
0049Name_Not_Found
垢版 |
2020/10/27(火) 23:35:19.80ID:???
質問いいですか?
ボタンを押したら、ヘッダーに認証情報を設定して、別サイトに画面遷移する仕組みを作りたいのですが、どのようにすれば実装できるでしょうか?
XMLHttpReqest使えば、通信は送れるけど画面遷移できない事まではわかりました。
2つのシステムを連携する仕組みで必要なんですが
0050Name_Not_Found
垢版 |
2020/10/27(火) 23:54:38.18ID:???
返ってきたものを描画すりゃええやん
0051Name_Not_Found
垢版 |
2020/10/28(水) 10:36:21.20ID:???
…そりゃそうだ。ありがとうございます。
頭にその発想が全くありませんでした
0052Name_Not_Found
垢版 |
2020/10/28(水) 19:17:43.26ID:???
>>50
駄目でしたぁ…帰ってきたhtmlを、window.openして、document.write(戻り値)で、書き込み。
ページは表示できるけど、urlは元ページから変更されない為、相対パスで記載されてるjsをロードできずエラー。
0053Name_Not_Found
垢版 |
2020/10/28(水) 19:37:23.30ID:???
サブウィンドウ開いた後、url変更しても
document.writeした時点で、呼び出し元のurlに戻ってしまう。
何か方法ないでしょうか?
0054Name_Not_Found
垢版 |
2020/10/28(水) 20:42:56.30ID:???
むしろ別サイトの画面から、CORS使って別サイトからのアクセス許容させた認証サイトにPOSTしてトークン貰ってきたらどうだろうか?
0055Name_Not_Found
垢版 |
2020/10/31(土) 22:07:20.30ID:???
aaa.jp サイト名1
bbb.com サイト名2

↑html内にこういうリンクとサイト名があった時

↓htmlを実行した時にだけこういう風にプルダウンメニューで自動でタグ挿入するjavascriptはどう記述すんの
<select>
<option value="">リンク
<option value="aaa.jp">サイト名1
<option value="bbb.com">サイト名2
</select>

optionタグ大量に記述するより開いた時にだけ挿入する方がソーススッキリするし
0056Name_Not_Found
垢版 |
2020/11/01(日) 00:39:29.82ID:???
<select id="">
<option value="sitelinks">リンク
</select>
<スクリプト>
const links = [
['aaa.jp', 'サイト名1'],
['bbb.com', 'サイト名2'],
];
document.querySelector('#sitelinks').innerHTML += links.reduce((acc, [url, name]) => acc + `<option value="${url}">${name}`, '');
</スクリプト>

なんかスクリプトタグで書き込みエラーなったみたいだからカタカナで。
0057Name_Not_Found
垢版 |
2020/11/02(月) 18:56:39.10ID:???
質問いいでしょうか。当方、かなりのJavaScript初心者のため、質問の意味が分かりにくかったらすみません。
スマホ上で、図のようなドーナッツ型の要素の上を@から順に指でなぞり、一度も画面から指を離さずにBまでなぞったら背景色が変わる、Eまでなぞったら背景色が変わる、一周して@まで戻ったら別ページに飛ぶ(斜線部にはみ出たらだめ、最初からやり直し)というものを作りたいのですが、可能でしょうか。
touchmoveイベントで、@からGまでの通過点を指定して、それらの通過点まで来たら何か起こるようにする、ということは出来ますか。
もし分かる方がいたら、教えてもらえますか。よろしくお願いします。https://i.imgur.com/XLq3URL.jpg
0058Name_Not_Found
垢版 |
2020/11/02(月) 23:16:31.60ID:???
できません。
スマホの基本はボタンを画面に並べてそれを押してもらうことです。

まず、小さな画面のラインを精密になぞり続けるというのが不可能な人間が大勢います。
そして、世の中にはそれをWebで実行するだけのハード性能と精度を備えていないスマホが大量にあります。

日本で人気のあるスマホは大画面で特別高スペックなので勘違いしがちですが、
スマホでそのようなことを考えることがそもそもナンセンスです。
0059Name_Not_Found
垢版 |
2020/11/02(月) 23:25:32.74ID:???
基本なんか聞いてません。
ジジイのUX論なんか聞いてません。
発展途上国のことなんか知りません。
分からないなら黙って発展途上国にお帰りください(笑)
0060Name_Not_Found
垢版 |
2020/11/03(火) 00:20:26.37ID:???
>>57
できます。実装方法はいろいろあると思います。
原始的で素朴(だけどめんどくさい)実装は、@からGまでのx座標とy座標と半径または直径の情報を持っておいて、
さらに@通過フラグからG通過フラグまでを初期値falseでグローバルに用意しておきます。
touchstartとtouchendには@通過フラグからG通過フラグまでのfalseリセット処理を書いておきます。
touchmoveには、ドーナツ外の座標だったら@通過フラグからG通過フラグまでのfalseリセット処理と、以下の判定処理を書きます
@領域内(@のx,y,半径と現在x,yから計算)なら
 @通過フラグからG通過フラグまですべてtrueなら別ページに飛ぶ処理
 そうではなく@通過フラグからG通過フラグまですべてfalseなら@通過フラグにtrueセット
 そうではなく@通過フラグがtrueかつA通過フラグからG通過フラグまですべてfalseならなにもしない
 それ以外なら@通過フラグからG通過フラグまでfalseリセット
A領域内(計算)なら
 @通過フラグがtrueかつA通過フラグからG通過フラグまですべてfalseならA通過フラグにtrueセット
 そうではなく@通過フラグがtrueかつA通過フラグがtrueかつB通過フラグからG通過フラグまですべてfalseならなにもしない
 それ以外なら@通過フラグからG通過フラグまでfalseリセット
B領域内(計算)なら
 @通過フラグがtrueかつA通過フラグがtrueかつB通過フラグからG通過フラグまですべてfalseならB通過フラグにtrueセットし、背景色を変える処理
 そうではなく@通過フラグがtrueかつA通過フラグがtrueかつB通過フラグがtrueかつC通過フラグからG通過フラグまですべてfalseならなにもしない
 それ以外なら@通過フラグからG通過フラグまでfalseリセット

という風に地道に書いていきます。
0061Name_Not_Found
垢版 |
2020/11/03(火) 01:12:30.43ID:???
そんなアホな実装があるか
Canvas使えばパス内に座標があるか教えてくれるのだから
ドーナツパス内に無ければリセット、
各数字円パス内あればその数字に触れたとすればいいだけだろ
0062Name_Not_Found
垢版 |
2020/11/03(火) 01:48:31.24ID:???
へえ、canvasでtouchmoveイベント使えるんだ。知らなかった。
あと、回答してやれよ。他人にケチつけてないで。
0063Name_Not_Found
垢版 |
2020/11/03(火) 02:00:03.37ID:???
回答になってる
できるかできないかというだけの質問に対して道筋まで示してるんだから十二分だろ
これ以上は余計なお世話と言うもの

それにどうせ細かく示しても質問者がそのとおり作れるわけではないんだから
流石にそろそろPointerEvents使えよとか一々突っ込むのも面倒だし
あとは「自ら」頑張ればいいさ
0064Name_Not_Found
垢版 |
2020/11/03(火) 02:03:23.62ID:???
>>62
あとお前にケチつけてるわけではないから
質問者に安価つけてもとてもまともじゃなさそうだから
お前に言っただけだから
0065Name_Not_Found
垢版 |
2020/11/03(火) 11:25:05.26ID:???
57です。>>60 >>61回答していただきありがとうございました。あとは自分で取り組んでみます。
0066Name_Not_Found
垢版 |
2020/11/03(火) 21:15:06.21ID:???
あとは と言いう言葉が出る時点でもう成功することはない
君はまだスタートラインにも経っていない 1mmも進んでいない
あとは ではなく 全部 君が取り組もうという気がなければゴールにはたどり着けない
0067Name_Not_Found
垢版 |
2020/11/04(水) 01:07:09.32ID:???
自己紹介乙。
お前みたいなミジメな人生にならないよう頑張るわww
0068Name_Not_Found
垢版 |
2020/11/04(水) 21:14:35.02ID:???
>>67
お前キチガイか?
ここの住民と人生比べてるようじゃオシマイやぞ
ちゃんともっとマシなところを見て黙って頑張れ
0069Name_Not_Found
垢版 |
2020/11/04(水) 23:26:57.62ID:???
お前の人生そんなに終わってるのかw
かわいそwww
0070Name_Not_Found
垢版 |
2020/11/05(木) 12:29:52.73ID:???
同情は良いから 勿体ない
お前に人に同情できるほどの余裕はないだろ
自分だけを可愛がってろ
0072Name_Not_Found
垢版 |
2020/11/05(木) 20:29:18.38ID:???
以上
GPT-3どうしの日本語レスバトル
いかかでしたでしょうか?
面白いと思ってくれた方はこちらのリポジトリをフォローください
https://github.com/openai/gpt-3
0073Name_Not_Found
垢版 |
2020/11/11(水) 13:27:31.62ID:???
canvas上にある座標x,yをclickイベントでクリックしたいのですが可能でしょうか?
canvas上のx,yにのせた現在のマウスポインタの位置をクリックでも構いません。
もしやり方があったらお教え下さい。
0075Name_Not_Found
垢版 |
2020/11/11(水) 18:25:24.31ID:???
質問文の「clickイベントでクリックしたい」は書かれたままの意味なんだろか?
0076Name_Not_Found
垢版 |
2020/11/11(水) 18:35:20.33ID:???
>>74
ありがとうございます
早速見てきます

>>75
domelement.click()とかでbuttonやaやimgなんかを押すように
canvas上に配置された非html要素のボタンを
マウスでクリックした時同様に押したいという意味です
0077Name_Not_Found
垢版 |
2020/11/11(水) 19:43:38.16ID:???
ページによってはevent.isTrusted見てスクリプトから作ったイベントは弾くかもしれんけどね
0078Name_Not_Found
垢版 |
2020/11/11(水) 20:32:54.82ID:???
どう見ても製作者サイドの質問だと思うが…
0079Name_Not_Found
垢版 |
2020/11/11(水) 21:15:27.66ID:???
どう見たら製作者サイドの質問だと思うのか…
0080Name_Not_Found
垢版 |
2020/11/17(火) 23:06:38.68ID:Af32yMxt
for-inの列挙順って今はどうなってるの?
0081Name_Not_Found
垢版 |
2020/11/18(水) 09:06:00.90ID:???
一応、現状でV8だと、配列のindex値と見なせるもの(0,1,2,...)の昇順に続き、それ以外の文字列プロパティ定義順、が得られる。Object.keysとかだとこれにSymbol値が続く。

オブジェクトのプロパティの列挙順は仕様上保証されているものではない。

従って、プロパティの順序が重要であれば、Mapを使うか、他の方法で順序管理するか、で対応するべき。
0082Name_Not_Found
垢版 |
2020/11/19(木) 01:37:39.15ID:???
仕様上保証されていないわけないでしょ
なにさらっといい加減なこと言ってんの
0083Name_Not_Found
垢版 |
2020/11/19(木) 02:24:16.98ID:???
>>82
仕様にも明記されてるんだけど
なにいい加減なこと言ってんの?
0086Name_Not_Found
垢版 |
2020/11/19(木) 04:05:41.99ID:???
>>85
嘘つきとまでは言う気はないが、仕様について語るのなら
ちゃんと仕様を確認した方が良いわな
0087Name_Not_Found
垢版 |
2020/11/19(木) 15:35:49.72ID:???
>>86

>>84が噓つきだと言われてんだぞ
本人なら救いようがないかも
0089Name_Not_Found
垢版 |
2020/11/19(木) 22:37:05.38ID:???
ProxyでownKeys使えば、Object.getOwnPropertyNamesとかReflect.ownKeysとかでイテレートすると任意の順でイテレート出来るって話も。
enumerateとかは廃止されたけれど、あれはfor...inの順序は弄れなかった?

その辺の拡張を意識して、列挙順を保証したくないんじゃないのか、という気がするねぇ。もう10年したら保証されてたりするのかねぇ?
0090Name_Not_Found
垢版 |
2020/11/20(金) 06:44:30.01ID:???
>>88
いや、勘違いしてるのは君だから
ちゃんとその下読んでる?
互換性のために定義されていないのはProxyだったり外様オブジェクトが介在する特殊な状況だけ
そしてそこで定義できないのはある意味当たり前
しかし一般にはCreateForInIteratorで処理するとされてその順序は定義されている
0091Name_Not_Found
垢版 |
2020/11/20(金) 07:02:53.24ID:???
☓定義されている
☓定義されていない
○ECMA仕様では一部定義されるようになった
○ECMA仕様では定義されたが例外も多い

そもそも>>80がECMA仕様のことを聞いてると考えるのが間違っている
普通の人はECMA仕様にどう書いてあるかを考えたりはしないし興味はない
昔は順番が保証されないと聞いたが今はどうなのかという質問だろう

とすると昔が実際にバラバラだったが、今は揃ってきてるよ
でもいつも絶対に同じになると思ってると怪我するかもしれないよと
質問者が昔聞いたであろう雰囲気的に答えるのが良いのではないのか?
0092Name_Not_Found
垢版 |
2020/11/20(金) 14:12:11.84ID:???
>>90
噓つき君まだ息してたのかw
そしてさらに嘘を重ねるw

某総理大臣みたいだなww
0093Name_Not_Found
垢版 |
2020/11/20(金) 14:25:31.62ID:???
「The order of enumerating the properties is not specified」ってはっきり仕様に明記されてる

「嘘つきとまでは言う気はないが、仕様について語るのならちゃんと仕様を確認した方が良いわな」
0094Name_Not_Found
垢版 |
2020/11/20(金) 14:29:06.34ID:???
またstaticおじさんばりの言い訳がはじまりそう

997 名前:Name_Not_Found Mail:sage 投稿日:2020/10/23(金) 06:42:33.51 ID:???
>>992
すまんけど俺は仕様書を読めるし長年読んできたし、
ES6の前からDiscasにも参加してクラスシステムやthisが絡むの議論にも
さんざん参加してきたし、十分深く理解してるから
0095Name_Not_Found
垢版 |
2020/11/20(金) 18:05:43.01ID:???
最近、「わからせおじさん」というのが流行っているらしい
どんな生意気なガキも「わからせる」ことができるすごい「おじさん」らしい
0097Name_Not_Found
垢版 |
2020/11/20(金) 22:18:18.18ID:???
>>96
2つ間違ってる

一つは意図的だろうがEnumerateObjectPropertiesが返すイテレータが
CreateForInIteratorと同じように動作しなくてもいいケースってのは決して例外的ではない

もう一つは勘違いだろうけどCreateForInIteratorと同じように動作すべきケースであっても
列挙順序が保証されてるわけじゃない
https://github.com/tc39/ecma262/issues/1819

結局最初に>>81の人が書いてるように
「オブジェクトのプロパティの列挙順は仕様上保証されているものではない」が正しい
0099Name_Not_Found
垢版 |
2020/11/22(日) 10:16:12.13ID:???
>>97
>>決して例外的ではない
例外的かどうかというのは主観の問題なので君がそう思うということを否定したりはしない

>>列挙順序が保証されてるわけじゃない
確かに[[OwnPropertyKeys]]で順序が確定しないタイプのオブジェクトもある
だがそれはプロキシやモジュールや外様であって、既に省かれているでしょう?
もし他に具体的ケースがあるなら教えてほしい

オーソドックスなオブジェクトはOrdinaryOwnPropertyKeysを経由するので順序は保証されている
https://tc39.es/ecma262/#sec-ordinaryownpropertykeys

重箱の角をつついてちょっとでも齟齬があれば認めないというのは自分は違うと思う
>>80はプロキシをfor-inにかけたり、列挙中にオブジェクトを弄くり回したりと極端な状況下での挙動を想定してるのか?

実際に同じ質問を隣の席の人から聞かれたら、モジュールには使えないしとか言うのか?
素直にシンプルに答えるなら「保証されている」と答えるのが良いと自分は思う

もしそれが言いすぎだという人がいるなら、たしかにそうかも知れないけれど、
少なくとも昔にくらべて、「今」はここまでは「保証されている」というのが決まっていて
それはオーソドックスな状況下に適応されるものなんだから、
保証されていないというのも言いすぎじゃない?
保証されていない
0101Name_Not_Found
垢版 |
2020/11/22(日) 20:41:54.86ID:PtogewyP
外様、と表現されているもので挙動が変わり得る、を以て「仕様上保証されているものではない。」と書いたのだが、理解頂けなかったようで。

そんなもんはぶっちゃけ、どうでもいいんだけれど、V8でMapやSetが重い点に関して、何か情報頂けないか。
Objectのプロパティアクセスがカリカリチューニングで早いのは当然、と言うかそうじゃないと使い物にならない、のは想像に易い。
MapやSetの速度改善は、
・あり得るのか
・進む予定はあるのか
・進む可能性はあるのか

例えば万単位でPush的な操作した際の処理時間がObjectよりかなり遅いと思っている。
logとか手元に残してなくてごめん。
0102Name_Not_Found
垢版 |
2020/11/23(月) 20:54:12.11ID:???
仕様に大変詳しいここのお偉方様に質問です
配列の要素やオブジェクトのプロパティに値を代入する変数に対して、
constを使わずにletを使う例を見るのですが、これはconstの意味の取り間違えですか?
それとも"内容を変更する可能性がある"という目印のため、あえてそうする風習があるのですか?
0103Name_Not_Found
垢版 |
2020/11/23(月) 23:52:42.52ID:???
>>101
いやいや、流石にそれはない
JSは拡張自由であり、基本的に実行環境で拡張して使うスクリプト言語なんだから外様のことまで考えてたらきりがない
例えばオブジェクトをブーリアン型に変換したらtrueになるが、document.allなど外様を考えたらその限りではなくなるでしょ
外様を考慮するのは流石にバカとしか言いようがないよ
0104Name_Not_Found
垢版 |
2020/11/24(火) 01:35:13.37ID:???
“外様”なんて書き方してる時点で理解してないの丸わかりだよね
0106Name_Not_Found
垢版 |
2020/11/24(火) 06:43:02.59ID:???
>>105
let a = [];
とか
for (let a of array)
でその後a自体に代入しないケースです
0107Name_Not_Found
垢版 |
2020/11/24(火) 07:56:22.81ID:???
単に無頓着なだけなんじゃない?
0108Name_Not_Found
垢版 |
2020/11/24(火) 10:32:41.76ID:???
for...ofやfor...inについては、for文の印象を引き摺って、考え無しにletを使ってしまっているのではないか。varしか無かった時代の名残りとも言えるかも。

let a = [];についてはもしかすると、aに対して要素の編集、変更をしたいんだよ、と明示したくてletにしているのかもしれない。編集したい内容次第では、代入した方が早いような配列操作は結構多い。その辺の修正を見越してletで定義しているのか?

根本的には書いた人間に聞くのが良いのかと。
0109Name_Not_Found
垢版 |
2020/11/24(火) 16:02:54.40ID:???
for..of/for..inのパターンは考えなしにletでもいいんじゃないかという気がしないでもない
このケースで誤って再代入して困るようなコードってどんなの?
0110102
垢版 |
2020/11/24(火) 21:00:18.55ID:???
ふむふむ
皆様ありがとうございました
個人的にはconst厨なので気になるのですが(というかJSにconst厨なんてあり得ないと思ってる)
varからの移行で、というのはあるかもしれません
for-ofにconstが使えなかった時もありましたしね
0111102
垢版 |
2020/11/24(火) 21:04:33.20ID:???
>>109
そりゃあうっかり再代入したあとに再代入してないつもりで使ったときに困るんじゃないですか
constの利点は意図しない再代入をエラーで気づかせてくれることですから
それ以上でもそれ以下でもないと思います
0112Name_Not_Found
垢版 |
2020/11/24(火) 21:18:54.93ID:???
イミュータブル流行ってんのも巨大オブジェクトの差分検出に必要とかいうクソどうでもいい理由だしな。
俺は全部letで書くぜ!
0113Name_Not_Found
垢版 |
2020/11/24(火) 22:18:18.53ID:???
for..ofとかのスニペットはletでそろえておいて
eslintのprefer-constでfixすることにした
0114Name_Not_Found
垢版 |
2020/11/25(水) 06:58:23.34ID:???
letでも再定義はできないのだから
値を設定するときにlet x=vの形で書く以上うっかり再代入なんてありえない
例えば関数頭でこの変数の値は不定だと思って定義して
その中のクロージャで、よし弄るぞってなることもありえない

まずより広範囲で使われることになるオブジェクトをfreezeするとか
プロパティごとに設定すべき(privateも含めて)という話なら分かるが
constだけに拘っても得られるものは自己満足だけ
0115Name_Not_Found
垢版 |
2020/11/25(水) 09:00:07.89ID:???
あるとすれば、後続処理でブロックスコープなり、即時関数なり使っていて、その中でletで再代入を前提とした同名の変数を定義していて、何かしらの修正時に、この同名変数の定義部分が無くなったが、この同名変数への再代入処理が残っている、と言う場合くらい?
そもそも別スコープとは言えど、同名で変数定義するのは避けよう、と言う程度な問題ではある。
0116Name_Not_Found
垢版 |
2020/11/25(水) 16:03:06.05ID:???
>>115
なるほどねー

自分の場合はループ内にそんな長々と処理かかないからその問題はまず発生しないな
for-of/for-inでletにするかconstにするか一瞬考えたりconstからletに変更するほうが無駄に思えてきた
0117Name_Not_Found
垢版 |
2020/11/25(水) 18:43:32.92ID:???
>>114
「うっかり」が「ありえない」と考えるか「ありえる」と考えるかの違い
結局好きにすればいいと思うよ
0119Name_Not_Found
垢版 |
2020/11/25(水) 21:07:53.57ID:???
>>117
先の理由で広範囲だったり遠方で使う一部の定数になら使う意味があると思う
ということはそういう定数をそういう定数ですよと効果的に示すために使ったほうが
あるかないかもわからない「うっかり」のために全部constにするよりはメリットが大きいんじゃないかという話

そうじゃない大部分の変数はスコープを短くするのが基本なんだから
痴呆でも無い限りそんなうっかりが起こることはない
それが起こる確率とconstとletで2文字多い分打ち間違えやらでトラブる確率どっちが高いのかって話だよ

拘るのは結構だが、constだけに拘ってオブジェクトを放置したり
型周りを放置するのは本当に理にかなっているのか?
まあそこまでするなら結論altJSでやれと言いたいけどな
0120Name_Not_Found
垢版 |
2020/11/25(水) 21:28:17.45ID:???
だから好きにすれば?
お前が絶対じゃないよ
0122Name_Not_Found
垢版 |
2020/11/25(水) 22:14:18.69ID:???
お前の意見には全然賛同できないし
お前もこっちの意見には絶対に靡かないと分かってる
0123Name_Not_Found
垢版 |
2020/11/26(木) 20:22:58.80ID:???
個人的は、
全てconstに出来ないのは能力不足だとは思う。
全てconstにせよ、は合理的じゃないから採用はしない。

だからどうした、俺の美学…と言う話だなぁ。

ついでに言えば、varはもう、特殊過ぎて使いこなせる気がしないから使わない。昔使ってた自分を褒めてあげたい。
0124Name_Not_Found
垢版 |
2020/11/26(木) 20:36:28.06ID:???
特殊過ぎ?
関数スコープであることとカツ上げ以外何かあったっけ?
0126Name_Not_Found
垢版 |
2020/11/26(木) 21:02:13.55ID:cncsRNnB
Win7-Pro,Chrome86.0
JavaScriptで変数に割り当てられるバイト数(使用メモリ量)で質問です。

例えば、var kazu=123.56 も Number.MAX_VALUE も予め割り当て同じバイト数で、
その中で2進法で表現されているのでしょうか?
つまり、どちらも2進数でNビット使われているとか。
0127Name_Not_Found
垢版 |
2020/11/26(木) 22:19:46.39ID:???
レガシーでvar hoge=1とかfunction hoge{}とかグローバルに書くと、window.hogeが生えるのがクソキモイ。怖くて使えなーい。
もう、関数宣言とかvarとか使わないから、モジュールでどう動くのかは知らないけど、多分使わない。

Numberって、IEEE 754 の倍精度 64ビットバイナリ形式な浮動小数なんじゃなかったかい?
プロパティ拡張とかも出来ないはずだから、多分ほぼそのまんまだとは思うけれど、V8の実装の詳細は知らない。

探せばV8のソース見れるから、ソース見て追うのが間違い無いとは思う。
0128Name_Not_Found
垢版 |
2020/11/26(木) 22:22:33.55ID:???
すみません。質問させてください

Math.floor(Math.random()
でテキストを5〜6項目程度
setInterval('location.reload()',timer);
で自動でランダム表示させてます。
その際、テキスト内容をgetElementById("span1").innerHTMLでフォーム入力で書き換えたいのですが
location.reload()でクリアされてしまします。
フォーム入力で設定したテキスト内容をlocation.reload()でも反映させ続ける方法は
ないでしょうか?

基礎知識が無い中、見様見真似で作成しており不明瞭な点ばかりかとおもいますが
なんとかご教示のほうよろしくお願いします。
0129Name_Not_Found
垢版 |
2020/11/26(木) 22:33:29.81ID:dDu6BHnc
setInterval('location.reload()',timer);
文字列で処理食わさずに、関数食わせましょう。
setInterval(()=>{location.reload();},timer);

getElementById("span1").innerHTML
書き込む場合はinsertAdjacentHTMLを使う癖を付けた方がいいと思うよ。文字列書くだけならtextContentを使えばいい。

location.reload()はHTML自体を読み直す命令だから、inputの属性値も初期化される。
書き換えたないだけなら、reloadせずに、直接エレメントの属性値書き換える処理を呼ぶべき。

reloadで復元したいならば、localStrageとかsessionStrageとか使えば復元は可能。
oninputとかonchangeでストレージに値保存しておいて、読み込み時にそこから読み出せば復元できる。
けれど、ぱっと見た限りでは、やりたいことの正攻法はストレージではない感じ。reloadしなければならない必然性はある?
0130Name_Not_Found
垢版 |
2020/11/26(木) 22:56:53.73ID:???
>>126
エンジンがどんな最適化をするかによる
V8などで昔っから使われている数値に関する有名な最適化はアドレスに畳み込んで参照を省略するというもの
例えば変数aとbにnumber型が入っているときに、a+bをすると
普通なら例えばaはアドレス1001、bはアドレス1010というのが入っているポインタであって、
まずそれを解決して各参照先からdouble(8バイト浮動小数点型)を取ってきてから演算を行う
だが、これではあまりに効率が悪い

ところでアドレスはこの例では4桁あるが、その全ては必要なくて1000〜1111で十分だとする
そうすれば0000〜0111までが特別なアドレスとして扱える
そこで000〜111までの数値のときには、参照先というものを作らず、頭に0をつけて
0000〜0111という形にする

そうすれば、aが2でbが3などの小さい整数のときは、参照先を解決しなくても、
アドレスをそのまま演算すれば計算結果が得られる
この「小さい整数」をSMIと言って、実際はアドレスは32bitなので31bitで表せる整数までSMIとして特別扱いされていた。
ただし近年64bit環境では32bit intのフルの範囲の整数が対象になることになって分かりやすくなった。

そして実際には各エンジンは、float型やint/uint32型など、たくさんの型を認識して最適化できる
ただそれらの多くは型付配列だったり、asm.jsなどに時の最適化のためで、
多くの場合普通の数値はdoubleかSMIとして扱われることになる
なぜかというと、あまりに細分化すると、異なる型同士の演算が増えて逆に非効率になるから
今でさえV8が吐くアセンブリで最も目立つものは、ポインタがSMIかどうかのチェックになっている

あと他にも文字列型で、utf16で1文字2byte使う代わりに、アルファベット列等の場合に
(不要になる1byteを省略するという形で)utf8で扱ってメモリを節約する処理系もある
そのように実際値の確保に何bit使われるかというのは、エンジンによるし、その最適化段階にもよる
0131Name_Not_Found
垢版 |
2020/11/26(木) 22:57:36.23ID:/k6mmmPp
>>124
巻き上げられない変数など存在しない
変数というのはスコープに属していて
その割当範囲で有効になるものなんだから存在や定義が
巻き上げられて行われるのは当たり前のこと
let.constがvarと違うのは当該宣言に達するまで初期化まではされないということ
よって仮想的にスコープの先頭から当該宣言までの間が
変数が定義はされているけれど未初期化なので使えない区間(TDZ)となる。
0132128
垢版 |
2020/11/26(木) 23:24:49.45ID:???
>>129
ご返信ありがとうございます。

質問テンプレート無視してました。すみません。

事務所の大画面スクリーンに周知事項や注意喚起のメッセージを
10項目程度ランダムで表示させております。
終日表示させているので規則性があるとキツイかなと思いまして。
現状はhtmlソースを上書き更新しているのですが
誰でもテキストボックスやformから入力更新できるようにしたいと
考えております。
0133Name_Not_Found
垢版 |
2020/11/26(木) 23:24:56.57ID:???
>>131
hoistされないとかあるの!?ってなったのでスッキリした
0134Name_Not_Found
垢版 |
2020/11/27(金) 00:30:37.82ID:???
>>126
JSのスペック的にはNumberは64bit
Chromeの場合はsmall integerなら32bit, それ以外は32bit(ポインタ)+64bit(ヒープ)
細かく使用メモリサイズを意識する必要があるならまずはプロファイラを使って計測すること
0135Name_Not_Found
垢版 |
2020/11/27(金) 00:34:14.79ID:???
あ、small integerってのは31bitで表現できる符号付き整数(-2^31〜 2^31-1)
>>130に書いてるようにアドレスが入ってるのか値が入ってるのかの識別にbottomの1bit使ってる
(tagged pointerっていう実装パターン)
0136Name_Not_Found
垢版 |
2020/11/27(金) 03:09:34.07ID:???
>>129
> 文字列で処理食わさずに、関数食わせましょう。

なぜ?

> 書き込む場合はinsertAdjacentHTMLを使う癖を付けた方がいいと思うよ。

なぜ?
0137Name_Not_Found
垢版 |
2020/11/27(金) 04:27:11.02ID:???
textContentプロパティとinnerHTMLプロパティの違い
https://itsakura.com/js-textcontent-innerhtml

<h1>あ</h1>
などと、タグを入力された場合に、挙動が異なる

innerHTMLでは、h1タグが解釈されて、文字が大きく表示される
0138Name_Not_Found
垢版 |
2020/11/27(金) 08:47:36.05ID:???
文字列で食わせると、evalとかfunctionコンストラクタ的な挙動になって結果動くんだけどね。デメリット挙げれば「実行される文字列の内容次第ではセキュリティ上まずい」とか「エスケープ書かなければいけなくなる」とか「呼び出してる変数のスコープが...」とか「タイマーが満たされる都度コンパイルが動く」とかかな。面倒事のが多いから使わない。


追記せず、操作せず、上書きだけできればいいならinnerHTMLで良いんだけれどね。innerHTML触ると該当ノード内部が再パースされる。変更の都度、対象の.childNodesが作り直される。対してinsertAdjacentHTMLは兄弟ノードは保たれる。

つまり、
document.body.innerHTML = '<div id="dv"></div>';
const dv = document.getElementById( "dv" );//これに何かイベント付けたり追記とかするかもよ。
document.body.innerHTML += 'hoge';//ここはinsert(略)で処理するべき
const dv2 = document.getElementById( "dv" );
console.log( dv == dv2 );
これはfalseになる。

innerHTMLに何か流し込みたい場合、HTMLTemplateElement.innerHTMLとか使うと言うのも一手。
Documentのノード操作でinnerHTMLって、全childNodes消したい時くらいしか。
0139128
垢版 |
2020/11/27(金) 13:46:24.98ID:???
>>138
ご返信ありがとうございます。
ランダム表示は絶対にしたいので
location.reload()以外の方法で対応するしかないようですね。
・テキストをランダム表示
・フォームからテキストをタグ入力

なにかいい案はございますでしょうか?
0140Name_Not_Found
垢版 |
2020/11/27(金) 15:59:35.02ID:???
id="hoge"なエレメントが居るとして。

const hoge = document.querySelector("#hoge");//Domの参照取得しておく
const randamHoge = ()=>{
const r = Math.random();
const str = ( r < 0.5 ? "ほげ" : ( r < 0.8 ? "ふが" : "ぴよ" ) );//乱数から適当に文字列選択。
hoge.textContent = str;//Domに反映
setTimeout( randamHoge , 1000 * 5 );//とりあえず5秒で更新
};
randamHoge();

こんな感じでやれば終わる話じゃないのかい?
これは即席コードで修正した方が良さげな箇所多いけど。
0141Name_Not_Found
垢版 |
2020/11/27(金) 18:46:46.94ID:???
>>139
どうしても自作でやりたいわけじゃなければ出来合いのカルーセルとかスライドショーを使えば?

例えばslickなら毎回ランダムなスライド番号でslickGotoを呼び出すような関数をsetIntervalに渡してやればok
スライドのHTMLへの追加/削除はslickAdd/slickRemove
https://kenwheeler.github.io/slick/

追加された内容も含めて表示内容を永続化する場合は
入力者が1つのPCの1つのブラウザを使う前提ならlocalStorageでも可
そうじゃなければ最低限のWebアプリ作ってファイルかDBに保存
0142Name_Not_Found
垢版 |
2020/11/27(金) 18:49:57.07ID:???
あと、こういうのって誰でも直接書き込めると問題ある内容を書き込んじゃうやつもいるから
ログだったり反映前に承認を得るか通知を飛ばすような仕組みを用意もあったほうがいいかも
それができなければ面倒でも1~2人の担当者を経由させたほうが無難

会社の規模とか民度による
0143Name_Not_Found
垢版 |
2020/11/27(金) 21:28:32.59ID:???
何事もそうだが内容を規制しようというのは非常に難しい
それよりも信頼できる人を厳選して誰が書き込むかの部分で規制したほうが良い
0144Name_Not_Found
垢版 |
2020/11/28(土) 00:16:25.26ID:???
全体リロードするからおかしくなるんだから、fetchで事足りる、
あるいは更新したい部分だけiframeに切り出したら済むのではないだろうか?
0145126
垢版 |
2020/11/29(日) 17:07:21.02ID:???
(JavaScriptで変数に割り当てられるバイト数(使用メモリ量)の質問)

皆さん有り難うございます。
レスアンカーを列挙したら「ERROR; レスアンカーがおかしいです。」とか表示された、
0146Name_Not_Found
垢版 |
2020/11/30(月) 13:03:16.55ID:???
ひょっとして、レスアンカーの個数制限とか、あるのか?
0147128,139
垢版 |
2020/11/30(月) 14:56:33.43ID:???
皆様、レスありがとうございます。
返信頂いた内容への理解が難しく申し訳ないです。
勉強してまいります。
ありがとうございました!!
0148Name_Not_Found
垢版 |
2020/12/02(水) 06:45:09.18ID:n2XAqGFW
もしかして、Chromeでローカルの XMLHttpRequest は不可になった?
去年5月のコードに書いたコードをテキストファイル読み込みに使ったら
from origin 'null' has been blocked by CORS policy ・・・ と出た
0149Name_Not_Found
垢版 |
2020/12/02(水) 11:38:13.86ID:4cm3WIbu
xhrもfetchもfileプロトコルは同一生成元ポリシーでエラーになる。
同一生成元ポリシーが、fileプロトコルは全て別のオリジンと見なす、と言う動作になっている。

一応、起動オプション触れば同一生成元ポリシーは抜けられたハズ。
ただ、モジュールスクリプトは確か、起動オプション触るだけだと上手く動かなかった気がする。

ローカルにWebサーバ導入する頃合い、と考えた方が良いかもしれない。
0150Name_Not_Found
垢版 |
2020/12/02(水) 15:57:18.38ID:???
VSCode の拡張機能、open in browser では、ローカルファイル・アクセスだから、CORS 制限あり
file:///C:/Users/Owner/Documents/test.htm

一方、Live Server では、サーバーを立てているから、CORS にならない
http://127.0.0.1:5500/test.htm

同様に、コマンドプロンプト・PowerShell から、
1-liner で、Ruby で作られた遅いウェブサーバー、WEBrick を起動すると、
ruby -run -e httpd . -p 8080

これも、サーバー経由だから、CORS にならない
http://localhost:8080/test.htm

Ruby on Rails では、Node.js のwebpack-dev-server を使っている
0151Name_Not_Found
垢版 |
2020/12/02(水) 22:20:32.74ID:???
moduleはfile:だとmimetypeでダメなんじゃなかったか。
これって何か抜け道あるの?
0152Name_Not_Found
垢版 |
2020/12/02(水) 23:49:14.42ID:???
>>148です。ゴメンなさい。2行目の日本語がおかしかった。

正) 去年5月に書いたコードをテキストファイル読み込みに使ったら
0153Name_Not_Found
垢版 |
2020/12/03(木) 06:39:01.76ID:???
moduleはJSを読み込むため専用の構文じゃないからmimetypeが必要
0154Name_Not_Found
垢版 |
2020/12/07(月) 13:57:53.30ID:???
ひさびさにjavascriptいじってますがpromiseの概念がさっぱりわかりません
これっていつごろから当たり前に使われはじめてますか?
0156Name_Not_Found
垢版 |
2020/12/07(月) 15:46:56.86ID:???
>>154
プロミスは非同期(イベントが起きたタイミング)で、事前に設定しておいた正常/エラー処理関数を呼び出してくれるクラス
これが無い時代は、例えばHTTP通信でサーバが結果を返してくれるまで処理が止まる(同期)
0158Name_Not_Found
垢版 |
2020/12/07(月) 19:03:31.46ID:???
ん、止まらなかった?ならすまん
0159Name_Not_Found
垢版 |
2020/12/07(月) 20:23:50.85ID:???
普通は結果に対して何をするかでロジックを書くが、
プロミスは結果が出てるかもしれないし、まだ出ていないかもしれないという抽象体で
それに対する処理もまたプロミスとなるということが味噌でしょ
0161Name_Not_Found
垢版 |
2020/12/07(月) 21:24:48.64ID:???
「プロミス」と書くと貸金屋さんっぽいな
0162Name_Not_Found
垢版 |
2020/12/07(月) 21:47:16.93ID:???
Promiseは「処理が終わったら結果をこの箱の中に入れておきますから」という箱

その箱に対して「結果が出たら箱の中身を取り出して次にこの処理をしてね」という
処理の予約を付け足すことができる

付け足された処理も「終わったらこの箱に結果を入れておきますから」というまた別の箱を返す

終わってるかもしれないし終わってないかもしれないというコンテキストで値を包む箱がPromise
そのコンテキストを楽に処理できるようにするための機能がいくつか付いてくる箱
0163Name_Not_Found
垢版 |
2020/12/07(月) 22:23:26.06ID:???
>>154
初期の頃からある資料はこれだったかな?
http://wiki.commonjs.org/wiki/Promises

概念的には結構前から有るはずだが、JavaScriptに登場したのは2009年頃
このページを見る限りフレームワークのDojoがDeferredとして取り入れた

その後CommonJSでPromise/AやらBやら、いろんな仕様で検討が行われた
とはいえCommonJS自体がそんなに使われていたわけじゃないので
この時代に気づいている人は少ないと思う

多くの人がPromiseを認識したのは2011/1にリリースされたjQuery 1.5のDeferredだろう
当時のDeferredは今のPromiseとは仕様が異なるが概念的には同じもの
Deferredとはなんぞや?と人々が四苦八苦したのはこの頃

そしてES6でPromiseとしてJavaScriptの仕様になったのが2015年だね
もちろんその少し前からES5で使えるPromise実装はでていた

つまりは10年ぐらい前から使われ始めてた
0164Name_Not_Found
垢版 |
2020/12/07(月) 23:03:33.08ID:???
ES6のまえにHTML5ムーブメントの初期にDOM Promiseが入ってる
0165Name_Not_Found
垢版 |
2020/12/08(火) 01:15:02.12ID:???
DOM Promiseって実装されたの?
検討だけで使ったことがある人はいないと思うんだけど
0166Name_Not_Found
垢版 |
2020/12/08(火) 21:19:00.52ID:???
普通に使われてた
ES6は機能が多すぎて勧告後も実装率は低かった
勧告の前後1年くらいは実際はDOM Promiseの実装が機能していた
0167Name_Not_Found
垢版 |
2020/12/08(火) 22:20:08.76ID:???
>>166
DOM Promiseは当たり前には使われてないでしょ

ES6のPromiseは勧告1年前の2014年前半には主要ブラウザに実装されてたぞ
その頃からpolyfill使いはじめて徐々にPromiseが当たり前になっていった
0168Name_Not_Found
垢版 |
2020/12/09(水) 06:38:51.06ID:???
V8だと3.23には実装が移されたがそれはDOM PromiseV8推しの独自Promiseであって
仕様にほぼほぼ準拠したのはようやく4.9になってから
要するに30〜50くらいは実はDOM Promiseだった
0171154
垢版 |
2020/12/09(水) 21:12:32.00ID:???
ようやく書けた(;´Д`) bbx規制食らってました
皆様レスありがとうございます
大変参考になりました
jQueryのDefferdという別アプローチを示していただけたのが幸いして
いい資料にありつけて結構理解は進んだと思います
0172Name_Not_Found
垢版 |
2020/12/12(土) 21:49:10.77ID:???
ブラウザの戻るボタンで戻ったとき、どこのページのURLから戻ったのかURLを取得する方法は?
document.referrerでは取得できませんでした
0173Name_Not_Found
垢版 |
2020/12/12(土) 22:02:48.79ID:???
divの中にある他ドメインページを表示するiframeの部分をクリックしてもクリックしたことにならないです。
どうすればiframeもクリックしたことにできますか?
0174Name_Not_Found
垢版 |
2020/12/12(土) 22:41:42.21ID:???
iframe 内は、自分のサイトじゃなく、別人のサイトだから、アクセスできないのでは?
0175Name_Not_Found
垢版 |
2020/12/12(土) 23:34:45.41ID:???
>>173
プロキシかましてAccess-Control-Allow-Originを上書きしてやると自由自在
0176Name_Not_Found
垢版 |
2020/12/12(土) 23:36:00.91ID:???
>>175はスクレイピング用ね
自分がWebサイト提供側ならやめとけ
0177Name_Not_Found
垢版 |
2020/12/13(日) 10:50:39.50ID:???
>>172
SPAで設計しとけば当然分かる
その範囲で判決できないのなら無理・無謀
0178Name_Not_Found
垢版 |
2020/12/13(日) 12:52:46.25ID:???
jqueryのiframe trackerというプラグインでiframeクリック判定できたで
0179Name_Not_Found
垢版 |
2020/12/15(火) 11:32:37.62ID:OadvKw/9
Chromeだとwindow.open()で共有ファイルサーバへのリンクがブロックされるんですが、回避できる方法はないでしょうか。
Chromeのプラグインとかは入れたくないです。。。
0181Name_Not_Found
垢版 |
2020/12/15(火) 12:46:49.99ID:???
ローカルサーバーを立てな
0182Name_Not_Found
垢版 |
2020/12/15(火) 23:52:08.27ID:???
VSCode の拡張機能、open in browser では、ローカルファイル・アクセスだから、CORS 制限あり
file:///C:/Users/Owner/Documents/test.htm

一方、Live Server では、サーバーを立てているから、CORS にならない
http://127.0.0.1:5500/test.htm

同様に、コマンドプロンプト・PowerShell から、
1-liner で、Ruby で作られた遅いウェブサーバー、WEBrick を起動すると、
ruby -run -e httpd . -p 8080

これも、サーバー経由だから、CORS にならない
http://localhost:8080/test.htm

Ruby on Rails では、Node.js のwebpack-dev-server を使っている
0183Name_Not_Found
垢版 |
2020/12/16(水) 00:24:41.85ID:???
Ruby でNG登録しとくと捗るぞ
0185Name_Not_Found
垢版 |
2020/12/16(水) 10:23:52.07ID:???
このrubyさんはあちこちでrubyならrubyならって言ってるが
誰もrubyの質問なんてしてないんですよ?
糖質なんですか?いい加減にしてください!!!!
0186Name_Not_Found
垢版 |
2020/12/16(水) 19:07:14.20ID:???
とあるショートコーディングで、
C=[t=[b=[{max:M,min:N,random:R}=Math]]];
というのがあったのですが、
{max:M,min:N,random:R}=Math
は分割代入でM,N,Rがそれぞれmax,min,random 関数になってるのは
理解できたのですが、その外側のC=[t=[b=[...の部分はそれぞれどういう意味を持っているのでしょうか?
また、この記法に何か特別な名前はあるのでしょうか
0187Name_Not_Found
垢版 |
2020/12/16(水) 21:33:49.63ID:???
>>186
難読化したコードかな?
bやtという変数に値を代入する式でその式の評価結果をarrayの要素にしてる
0188Name_Not_Found
垢版 |
2020/12/16(水) 23:14:34.94ID:???
展開するとこうかな。最初の3行より後は意味があるとは思えないけど…
M = Math.max;
N = Math.min;
R = Math.random;
b = [Math];
t = [b];
C = [t];
0189Name_Not_Found
垢版 |
2020/12/17(木) 23:07:06.79ID:???
select で選択した項目のvalueを引数としてメソッドを呼ぶ…という作りにしたいのですが、
2度目にメソッドを呼び出すとエラーがでてしまいます。

単純に上書きされて呼び出せると思っていたのですが、何が工夫が必要なのでしょうか?
0190Name_Not_Found
垢版 |
2020/12/17(木) 23:10:19.09ID:???
>>189
ちょっと言ってることわからないから
サンプルコードとエラーメッセージの内容を書いて
0191Name_Not_Found
垢版 |
2020/12/17(木) 23:52:24.28ID:???
>>189
どうも
メソッドの作りが複雑でエラーは直接関係無さそうなもので、 Uncaught Error と出ています。

作りは簡略化していますが下記のような感じです。
select のプルダウンで選択した項目の value を引数としてスムーススクロールの easing関数を
都度変更する…といった感じです。
初回は問題ないのに、2回目の呼び出しでエラーが出ています…

<select id="easingSelect">
 <option value="linear">linear</option>
 <option value="easeOutExpo">easeOutExpo</option>
 ...
</select>

var obj = {
  easing: 'easeOutExpo',
  ...
}
var easingSelect = document.getElementById('easingSelect');
 easingSelect.addEventListener('change', function() {
  var value = easingSelect.value;
  obj.easing = value;
  scroll(obj);
});
0192Name_Not_Found
垢版 |
2020/12/18(金) 14:41:48.00ID:???
何回か選択して、F12 開発者ツールのコンソールで確認すると、ちゃんと代入されているから、
scroll という関数内の処理が、間違っているのでは?

obj.easing = easingSelect.value;
console.log( obj );
scroll( obj );

出力
{easing: "easeOutExpo"}
{easing: "linear"}
0193Name_Not_Found
垢版 |
2020/12/18(金) 16:15:52.23ID:???
Uncaught Errorじゃエラーの中身わからないじゃん
イベントリスナー呼ばれるところからデバッガでステップ実行して直接のエラー原因を把握したら?
0194Name_Not_Found
垢版 |
2020/12/18(金) 19:34:00.02ID:???
それができたらこんなとこにコネーよw
0195Name_Not_Found
垢版 |
2020/12/18(金) 21:49:14.29ID:???
マジかw
それでいままでよく開発できたな
最初はdebugger;って書いて後は流れで
0196Name_Not_Found
垢版 |
2020/12/18(金) 21:55:15.25ID:???
まずvar easingSelect = document.getElementById('easingSelect');
とする時点でバカ
Id属性を持つ要素はそのId名でwindowに登録される
この1文が丸々不要
0197Name_Not_Found
垢版 |
2020/12/18(金) 22:13:41.96ID:???
>>196
お前がアホやろww
ネタならいいんだけど
0198Name_Not_Found
垢版 |
2020/12/18(金) 22:47:07.82ID:???
ぷっ
まさか知らなかった?
ハズいね(。>﹏<。)
0199Name_Not_Found
垢版 |
2020/12/18(金) 23:53:09.69ID:???
>>198
ネタじゃなくマジだったのかーww
グローバル経由でアクセスできてもそれに依存するコードは書くなって話

そんなコード書いてたら速攻辞めてもらうわ
0200Name_Not_Found
垢版 |
2020/12/19(土) 00:41:35.75ID:???
で?どうせ理由説明できないんだろw
0201Name_Not_Found
垢版 |
2020/12/19(土) 01:02:56.87ID:???
ぷっ
教えてもらわないと理由が分からないのかよw
0202Name_Not_Found
垢版 |
2020/12/19(土) 02:01:36.81ID:???
そもそも教えられないだろw理由知らないで言ってるくせにw
0203Name_Not_Found
垢版 |
2020/12/19(土) 06:35:10.45ID:???
理由は昔は独自実装だったから
でも今は2020年、サイバーパンクが発売される年だ
老害に巻き込むな!!(怒)
0204Name_Not_Found
垢版 |
2020/12/19(土) 08:50:57.21ID:???
バカ「こうしろ!/こうするな!」
ぼく「根拠は?」
バカ「う、うるさい!俺たちは昔からこうしてきたんだ!」
0205Name_Not_Found
垢版 |
2020/12/19(土) 10:47:07.68ID:???
>>192-193
JSで作ったスムーススクロールでして、そのスクロール関数を呼び出すときのパラメーター代わりが>>191の obj になります。
エラーの内容をしっかり見たところ、 throe new で自前エラーの振り分けの中の1つで、
パラメータで渡したIDが存在しないよ…というものでした。

初回はOKで2回目がNGな理由がサッパリわかりません…

↓あたりが原因なのでしょうか?
javascriptで同じ名前で複数の関数
ttps://teratail.com/questions/101023
0206Name_Not_Found
垢版 |
2020/12/19(土) 12:11:03.77ID:???
>>205
デバッガでパラメータで何が渡されてるのか確認しなって
ステップ実行して動作を確認するのが見るのが一番確実

1. 開発ツールのソースタブでブレークポイントを設定する
2. ソースにdebugger;と書いてブレークポイントを設定してからページ全体を実行する
3. 例外が出た時にデバッガを起動するようにソースタブから設定しておく

のどれか
0207Name_Not_Found
垢版 |
2020/12/19(土) 12:44:34.96ID:???
>>205
エラーの文言をそのままコピペで貼って
0208Name_Not_Found
垢版 |
2020/12/19(土) 13:15:53.20ID:???
>>206
検証ツールのデバッグ?使ったことないので、調べて試してみます。

>>207
こちらになります

Uncaught Error: ID name [[object HTMLDivElement]] is not defined.
  at 〇〇〇.js:1415

  at Array.forEach (<anonymous>)

  at getAnchor (〇〇〇.js:1410)

  at smoothScroll (〇〇〇.js:1488)
  at HTMLSelectElement.<anonymous> (index.html:192)
0209Name_Not_Found
垢版 |
2020/12/19(土) 14:23:12.79ID:???
恥ずかしがらずに再現できるソース出しなよ
0210Name_Not_Found
垢版 |
2020/12/19(土) 15:15:12.73ID:???
>>208
>Uncaught Error: ID name [[object HTMLDivElement]] is not defined.

throwしてるところ見れば分かるんだと思うが
本来ならID name ‘easeOutExpo’ is not defined.みたいなエラーになるはずじゃないの?
もしそうならHTMLDivElementが渡ってるってこと

デバッガの使い方
https://developers.google.com/web/tools/chrome-devtools/javascript
0211Name_Not_Found
垢版 |
2020/12/20(日) 09:53:53.92ID:???
>>208
>>191の簡略化ってのが正しい前提とするけど
scroll(obj)でイージングの種類を変更するんじゃなくてスクロールしようとしてない?
イージング変更するだけならアンカー(リンク)をgetする必要はないと思う
自分も試してみたけどselectの値はちゃんと取れているから
>>192と同じ意見で、scroll(obj)に問題がある可能性が一番高いと思う
0212Name_Not_Found
垢版 |
2020/12/22(火) 00:13:24.01ID:???
xhr = new XMLHttpRequest();(中略)xhr.send(formData)でPOST送信するとフォーム要素名1=フォームの入力値1&フォーム要素名2=フォームの入力値2
というような形式ではなくバウンダリで区切られた形式になってしまいます。
どうすれば前者のような形式で送信できますか?
0215Name_Not_Found
垢版 |
2020/12/29(火) 00:17:55.04ID:???
addEventListener で追加したイベントを removeEventListener で削除したいと思っています。
その際に引数を渡す必要があり、handleEvent を用いると実現できそうでしたが、2点疑問がわきました。

@下記のようにvar宣言しない場合のオブジェクトのプロパティの寿命ってどこまででしょうか?
Aきっちり変数内でvar宣言して、オブジェクト名でメソッド呼ぶべきですか?

var sample = function(targetId, arr) {
 abc.addEventListener('click', {
  targetId: targetId,
  arr: arr,
  handleEvent: test
 });
};
0216Name_Not_Found
垢版 |
2020/12/29(火) 01:16:39.80ID:???
>>215
その疑問の前に・・・
listenerとしてaddする関数を関数宣言するか変数に保存しておくかして
removeEventListenerに渡すもんでしょ?
0217Name_Not_Found
垢版 |
2020/12/29(火) 01:35:17.09ID:???
複数の変数を返すときはreturn{a,b,c};
受けとるときはvar {a,b,c}=func1();という書き方でも問題ないですか?
0219Name_Not_Found
垢版 |
2020/12/30(水) 09:32:30.19ID:???
>>216
すみません。はしょりすぎました。
改めて下記でお願いします。

var abc = function() {..};
var sample = function(targetId, arr) {
 abc.addEventListener('click', {
  targetId: targetId,
  arr: arr,
  handleEvent: test
 });
};
0220Name_Not_Found
垢版 |
2020/12/30(水) 12:45:00.06ID:???
特定のtable内にあるリンクや画像にtabキーでカーソル移動できないようにするにはどうしたらいいんですか?
0221Name_Not_Found
垢版 |
2020/12/30(水) 12:52:36.26ID:???
tabindex="-1"つければ? 知らんけど
0223Name_Not_Found
垢版 |
2020/12/30(水) 14:14:21.58ID:???
特定の要素の背景色によって条件分岐したいのですが、条件の判定に失敗します
背景色Greenの要素ですが、if文がfalseになり処理されません
#00FF00にしてもダメです
どうすればいいでしょうか?
jqueryを適用してます

html
<div id="yen1"></div>

css
#yen1 {
background-color: green;
}

js

$(function () {
$("#yen1").click(function (e) {
if (e.target.style.backgroundColor == "Green") {
event.target.style.backgroundColor = "Blue";
}

e.preventDefault();
});
});
0225Name_Not_Found
垢版 |
2020/12/30(水) 14:24:52.91ID:???
getcomputedstyle で "rgb(0, 128, 0)" 知らんけど
0226Name_Not_Found
垢版 |
2020/12/30(水) 14:37:54.39ID:???
>>219
余計わからんなったわw
removeEventListenerの第二引数にlistenerを渡せなくて困ってるのかと思ったが違ってたのかな

>その際に引数を渡す必要があり
何の関数にどの引数を渡す必要があるの?
0227Name_Not_Found
垢版 |
2020/12/30(水) 14:39:12.76ID:???
>>225
一応できました。ありがとうございます。
プロパティを条件に指定するだけで、javascriptだと記述量多めですね……
0228Name_Not_Found
垢版 |
2020/12/30(水) 14:49:19.26ID:???
>>219
無名オブジェクトであってもイベントリスナが有効なうちは参照が存在するわけだから勝手に消えない
イベントリスナ内でremoveEventListener("click", this)するのは当然問題ない
0229Name_Not_Found
垢版 |
2020/12/30(水) 15:07:17.28ID:???
>>219
targetIdやarrにthis経由アクセスするvar test = function(){…};をhandleEventに設定しようとしてるのかな?

クロージャで外の変数にアクセスする必要がある場合でも
後からremoveしたいならその参照を後からでもアクセス可能なように
どこかにとっておく方法が普通だと思うんだけどな
0230Name_Not_Found
垢版 |
2020/12/30(水) 15:08:17.92ID:???
>>228
>イベントリスナ内でremoveEventListener("click", this)するのは当然問題ない

そういう用途ならわざわざhandleEvent使おうとしない気がする
0231Name_Not_Found
垢版 |
2020/12/30(水) 15:53:12.90ID:???
>>226
渡せなくて困ってたところに解決方法を見つけたので、試してみつつの質問でした…

>>228
無名オブジェクトと呼ぶのですね!
レス内容を見るに、イベントリスナからの参照が終われば消えるのですね。
もしかしたらグローバル変数扱いになるのかも…?と思ってました。

>>229
とっておかないと上手く行きませんでした…
上手く説明できないのですが解決しましたので、次のレスに一応書いておきます…
0232Name_Not_Found
垢版 |
2020/12/30(水) 15:54:50.13ID:???
>>230
意図としましては、メソッドを細かく作りつつ入れ子で宣言しないようにしてみたいといった感じです。

>>231の続きです

var abc = function() {
 ...;
 abcToggle(this, 'remove');
};
var abcToggle = function(obj, str) {
 if (str === 'add') {
  abc.addEventListener('click', obj);
  return;
 }
 abc.removeEventListener('click', obj);
};
var sample = function(targetId, arr) {
 var obj = {
  targetId: targetId,
  arr: arr,
  handleEvent: abc
 };
 abcToggle(obj, 'add');
};
0233Name_Not_Found
垢版 |
2020/12/30(水) 18:47:05.22ID:???
>>232
イベントハンドラ実行時にremoveしたのでよければ↓こういうのでよくね?

var sample = function(targetId) {
  const listener = () => {
    console.log(targetId);
    element.removeEventListener('click', listener);
  }
  element.addEventListener('click', listener)
}
0234Name_Not_Found
垢版 |
2020/12/30(水) 19:11:48.68ID:???
今時はIE捨てられるなら、イベント1回だけ実行はaddEventListener第三引数の{ once: true }でいいし
0235Name_Not_Found
垢版 |
2020/12/30(水) 19:46:11.93ID:???
>>233
モーダルスライドで複数の閉じるボタンへのイベント付け外しで >>232 を利用しています。
>>233 のような作りに落とし込もうと考えてみましたが今は思いつかなそうです…

後々パッと思いつくかもしれませんので、いただいた記述はありがたく取っておきます。

>>234
会社がIE捨てれてないので、ザックリ学んだもののたまにアロー関数を見るとテンぱってしまいます…
0236Name_Not_Found
垢版 |
2020/12/31(木) 00:54:09.05ID:???
別にIEを捨てる必要は無いでしょ
Edgeを使えばいいだけ
0237Name_Not_Found
垢版 |
2021/01/02(土) 13:32:10.50ID:???
js のforループでhoge in Arrayの時ってなにがhoge にはいりますか?
0239Name_Not_Found
垢版 |
2021/01/05(火) 18:05:24.13ID:???
chromeの検証ツールでデバッグについて勉強中です。
breakpointを設置してElementsタブでイベントを設置した要素を選択すると
Sourcesタブに強制で移動されてVM〇〇〇〇といった謎のファイルの処理が始まってしまいます。

自分で調べてみたところVMがvirtual machineの略っぽいことまでしかわかりませんでした。
これって何なのでしょうか?
また、表示されない方法があれば教えていただきたいです。
強制でタブが切り替えられるのはかなりイライラしてしまいます。
0240Name_Not_Found
垢版 |
2021/01/05(火) 18:35:23.07ID:???
format() やfストリングで、例えば普段は小数点以下第2位までの数値表示で、整数部桁が大きくなる場合は小数点以下は第1位にしたりして、数値全体の最大桁数は固定にすることってできますか?
0242Name_Not_Found
垢版 |
2021/01/05(火) 19:49:22.10ID:???
>>240
あ、すみません。pythonスレと間違えてしまいました…
0243Name_Not_Found
垢版 |
2021/01/05(火) 21:55:23.14ID:???
>>239
breakpointをElementsタブから設定してるんだと思うが
Sourcesタブに移動せずにElementsタブに居座って何をしようとしてるの?

breakpointはJavaScriptの実行を一時停止してそこからステップ実行等をするためのものなので
どのソース行で停止してるかわかるようにSourcesタブに移動するのは当然だと思うんだが

VM〇〇〇〇はコンソールから追加したコードを実行する箇所がbreakpointになってたんじゃないのかな
adblockとかのプラグインとかもVMから始まる名前になることがあったかも
0245Name_Not_Found
垢版 |
2021/01/06(水) 00:02:56.91ID:???
>>243
breakpointはSourcesタブで設置しています。
イベントリスナをしっかりremoveできているか確認するためElementsタブに移動して
該当要素を選択しEvent Listenersタブをチェックしようとしたとき
または更新ボタンを押すとVM〇〇〇が表示されてしまっている状態です・・・・・

コンソールからは何も追加してないので何故表示されるのかわからないですね・・・・・

>>244
ショートカットありがとうございます。
凄い沢山あるのですね。かいつまんで覚えます。
0246Name_Not_Found
垢版 |
2021/01/06(水) 00:41:43.88ID:???
>>245
あーそういう確認方法なのか
じゃElementsタブかSourcesタブを右クリックしてMove to bottomして両方を同時に開くようにでもしたら?

あとChromeの開発ツールだとgetEventListeners(element).clickでイベントリスナの一覧が取得できるので
コンソールでgetEventListeners($('.title')).click.forEach(x=>console.log(x.listener))とかやれば
.titleのclickイベントのリスナが確認できる
0247Name_Not_Found
垢版 |
2021/01/06(水) 13:01:42.19ID:???
クッキーの有効期限を更新しないでデータだけ更新するにはどうしたらいいんですか?
例えば1日のクリック数をクッキーに書き込む場合クッキーの有効期限は最初のクリックで
1日に設定されるけど2クリック以降の有効期限はそのまんまにしておきたいので
0249Name_Not_Found
垢版 |
2021/01/07(木) 23:33:54.54ID:???
>>247
おまえ何言ってんだ?
有効期限を更新したくなかったら、今と同じ有効期限を設定すればいいだけだろ
赤子でもわかるぜそんなこと
0250Name_Not_Found
垢版 |
2021/01/08(金) 19:05:36.69ID:???
赤子のレベルが高過ぎて草
0251Name_Not_Found
垢版 |
2021/01/09(土) 11:23:18.35ID:???
getElementsByClassNameってdocumentとelementあるけど
要素の場所絞れてる場合element使う方がよいですか?
cssみたいに子要素から探していく仕様なら狭い方が多少は早い可能性ありそうかなと。
0253Name_Not_Found
垢版 |
2021/01/09(土) 11:33:09.84ID:???
でもまあ良い子はquerySelectorAll使うけどね
0254Name_Not_Found
垢版 |
2021/01/09(土) 12:30:35.02ID:???
>>252
ありがとうございます
狭めるよう努めます。

>>253
元々querySelectorAllを使ってたのですが、そっちは遅いと見たので
作り変えている最中に思った疑問が>>251です。
0255Name_Not_Found
垢版 |
2021/01/09(土) 22:49:59.78ID:???
> cssみたいに子要素から探していく仕様なら狭い方が多少は早い可能性ありそうかなと。
まったくないよ
0256Name_Not_Found
垢版 |
2021/01/09(土) 22:50:15.29ID:???
> 元々querySelectorAllを使ってたのですが、そっちは遅いと見たので
全く遅くないよ
0257Name_Not_Found
垢版 |
2021/01/09(土) 22:50:34.81ID:???
> 作り変えている最中に思った疑問が>>251です。

無駄なことに時間を使ってるよ
0258Name_Not_Found
垢版 |
2021/01/09(土) 23:56:01.77ID:???
少なくとも早いかどうかを気にするのではなくて
複数同名のclassが出て来るかもしれないから要素起点にするかとか
その要素下でなくなるかもしれないからルート起点にするかとか
そういうことを打ち込む直前に無意識にさっと考えて
自然で妥当なコードを書いていくもの

それとquerySelectorが遅いだろうと決めつけるのはダメ
エンジンはよく使われる機能をよく使われるように最適化されていく
単純に考えたらgetElementsByClassNameの方が早いはずだが
セレクタ探索は複雑だからこそ最適化しないといけないので
キャッシュを効かせたりだとかもされている
今はgetElements早いかもしれないが、今後もそうだという保証はない

そして速度の最適化は最後、実際に足を引っ張っている部分があれば
きちんと分析して改善していくというのが基本
0259Name_Not_Found
垢版 |
2021/01/10(日) 00:26:34.79ID:???
>>258
わかりみのよいレスありがとうございます
現状若干getElementsClassNameの方が速いのと
動的・静的で使い分けろとあったので、思考停止で動的のがいいでしょ
ってことでclassNameを選んでしまいました。

昔querySelectorで組んだやつをメンテナンスがてら
書き直してみようと思ってましたけど止めますわw
0260Name_Not_Found
垢版 |
2021/01/10(日) 09:12:50.39ID:???
素人・・・速いって聞いたからこっちに書き換えよう
プロ・・・速い?ならどのくらいか計測するべきだ。1ミリ秒以下?
誰がそんな違いわかるんだ?そんなことのためにお前は無駄な人件費を使うのか?
損してるだけだろ
0261Name_Not_Found
垢版 |
2021/01/10(日) 15:13:48.50ID:???
Image オブジェクトについてお聞きしたいのですが
単純に、inputタグの file で選択した画像情報をFileReaderに読ませて、
Imageオブジェクトに設定し、読み込み完了したら〜というコードをだいぶ端折ってますが簡単に書いてみました。

iObj = new Image();

iObj.onload = function() {
console.log( "読み込まれた" );
};

iObj.src = FileReaderで読み込んだ画像情報;


これ、PCのブラウザとAndroidのChromeではすべて正常に動くんですけど、
少し大きい画像(3MBくらい)の画像で試すと、
AndroidのFirefoxだけ、Imageオブジェクト関連が正常に動作しません。
setIntervalなどで、completeを監視しても false しか返してくれません。
小さい画像だと問題なく動くのですが…

他の手持ちのブラウザは全部試して動作確認出来たのですが、AndroidのFirefoxだけダメでした。
調べても同じ症状の人がおらず、原因がつかめないので困ってます。
なにか画像サイズの制限でもあるのでしょうか?

よろしくお願い致します。
0262261
垢版 |
2021/01/10(日) 15:53:13.19ID:???
自己解決しました。
海外の掲示板に同じ人がいました…

AndroidのFirefoxはバージョンが古い上に、URLの文字数の制限が極端に短いらしく
blob形式に変換する事でうまく行きました。
0263Name_Not_Found
垢版 |
2021/01/10(日) 16:31:33.39ID:???
fetch(url).then(response=>response.json()); // 実際はasync/awaitを付けています
こんな感じのコードなんですがpendingがコンソールに出力されています
でも特にエラー等なくデータを取得できており動作も兼々期待通りなのですが
これはどういうことなのでしょう?
0264Name_Not_Found
垢版 |
2021/01/10(日) 16:37:04.26ID:???
>>263
コンソール出力してるコードはどこ?
0265Name_Not_Found
垢版 |
2021/01/10(日) 16:39:40.97ID:???
>>264
console.logみたいな出力するコードはないです
fetchがpromiseを返すからコンソールに表示されているんだと思ってましたが…
0266Name_Not_Found
垢版 |
2021/01/10(日) 17:33:15.73ID:???
あー、コンソールに直接打ち込んでるのかな?
関数定義にはasync/await付けてるけど実行時にawaitつけてないからじゃない?

async function foo() {
return await fetch(url).then(response=>response.json)
}

foo()
//=> Promise {<pending>}

await foo()
//=> json
0267Name_Not_Found
垢版 |
2021/01/10(日) 17:53:47.12ID:???
出力した時点でpendingってだけでしょ
0268Name_Not_Found
垢版 |
2021/01/11(月) 01:07:44.98ID:???
>>265
Promiseを返すとなぜコンソールに出力されるんだ?
0270Name_Not_Found
垢版 |
2021/01/11(月) 18:38:54.98ID:???
iframeでonmouseoverは動作したけど
document.createElement("iframe");で作ったiframeではonmouseoverが動作しませんでした
どうすれば動作しますか?
0271263
垢版 |
2021/01/11(月) 18:49:26.05ID:???
ブラウザが同期的に出力してるだけなんですね
勉強になりましたありがとうございました
0272Name_Not_Found
垢版 |
2021/01/11(月) 18:54:21.82ID:???
>>270
まず最初に問題が再現できるコードを提出しましょう
0273Name_Not_Found
垢版 |
2021/01/11(月) 18:56:26.50ID:???
>>271
自分で出力しなければコンソールには何も出力されないよ
少なくともChrome, Firefox, Safariなどの一般的なブラウザでは

>>267
awaitしてる(らしい)のに??
0274Name_Not_Found
垢版 |
2021/01/11(月) 20:12:37.75ID:???
>>273
もう終わったことにしつこい
二度と書き込むな
0275Name_Not_Found
垢版 |
2021/01/11(月) 21:23:46.35ID:???
awaitしてるのにpendingはたしかに謎ですね。
0277Name_Not_Found
垢版 |
2021/01/12(火) 20:23:41.81ID:???
うっわ、これ自演なのか
ここまでヒドイのは久しぶりに見たな
>>271の意味不明なレスも納得
0278Name_Not_Found
垢版 |
2021/01/12(火) 21:42:28.95ID:???
イベントリスナーって設置しっぱなしでよいものでしょうか?
イベントを設置している間はそれに伴う変数などが保持されたままになってたりしますか?

解除できるタイミングがあれば解除しておく方が良いのですかね・・・・・・?
0279Name_Not_Found
垢版 |
2021/01/13(水) 06:13:39.84ID:???
>>277
自演じゃなくて君が皆から非難されてるだけ
現実を見ようね
0280Name_Not_Found
垢版 |
2021/01/13(水) 08:52:09.05ID:???
マウスが左クリックされたか調べるのはどうやればいいんですか?
onclickだとインラインフレームとかでは反応しないので
どのフォームでもとにかく左クリックされれば反応するようにしたいんで
0282Name_Not_Found
垢版 |
2021/01/14(木) 17:40:59.23ID:???
XHRでwgetみたいにクロスドメインで公開しているjsonファイルをGETしようとすると、エラーになります
開発者ツールでネットワークを見ると応答は200で内容も戻ってはいます(読める)
しかし、受信結果としてはCORS違反としてエラーにされてしまいます
xhr.open("GET", url);
xhr.onreadystatechangeにハンドラ設定
xhr.send(null);
ブラウザのJavaScriptでは別のドメインのファイルは取れないのでしょうか?
単純リクエストにしたいのですが……
0283Name_Not_Found
垢版 |
2021/01/14(木) 18:04:31.60ID:???
>>282
>ブラウザのJavaScriptでは別のドメインのファイルは取れないのでしょうか?
取れる場合/方法もあれば取れない場合/方法もある

CORS違反と出てるんだから何が原因で違反に該当してるのかを確認すればいい
CORSはJS使うなら必須知識
0284Name_Not_Found
垢版 |
2021/01/14(木) 18:21:28.85ID:???
>>283
Access-Control-Allow-Origin: * 返してくるサーバだけなのか
デフォルト設定の S3 じゃダメということになる
0285Name_Not_Found
垢版 |
2021/01/14(木) 19:06:57.44ID:???
>>283
GETでヘッダを返すようにしたらCORS違反は消えました
ありがとうございました
S3とGCPは設定したけど……apacheの静的ファイルにも設定しなきゃ……調べるの面倒

いや、XHRでのGETのCORSを誤解していました
XHRでは単純リクエストでGETできないとは思いませんでした
普通に静的ファイルとして公開しているファイルならば、クロスドメインで取得不可にするほうが稀のはず
だから、GET応答にCORS関連のヘッダが無い場合には*扱いに倒すだろう、という思い込みです
0286Name_Not_Found
垢版 |
2021/01/14(木) 23:26:48.13ID:???
最近は指定無しだと制限が厳しいほうに倒されるよ。chromeに限らず。
0287Name_Not_Found
垢版 |
2021/01/19(火) 14:52:19.19ID:GRDuHD+B
FireFox 用、常に同じ表示サイズでスクリーンショットを取るために
ポップアップウィンドウを表示して自分自身のHTMLコードをコピーしています。
width=617 は、私の環境だとこれで 600x300 で撮れるための調整が入ってます。
\u003c はブラウザの誤認識回避用です。
一応これで大抵のブラウザでエラーにならないと思います。
というか、こういう書き方でエラーになるブラウザを知ってる人は教えてくれたら嬉しいです、
ってことでよろしくお願いします。

function popupSnapWin()
{
let aHeadInrHTML = document.getElementsByTagName('head');
let aBodyInrHTML = document.getElementsByTagName('body');
let sCloneHTML = ''
+ "\u003c!DOCTYPE html>\n"
+ "\u003chtml lang='ja'>\n"
+ "\u003chead>\n"
+ aHeadInrHTML[0].innerHTML
+ "\u003c/head>\n"
+ "\u003cbody>\n"
+ aBodyInrHTML[0].innerHTML
+ "\u003c/body>\n"
+ "\u003c/html>\n"
;
//console.log("(test) sCloneHTML ↓\n" + sCloneHTML );
let oPopWinObj = window.open('about:blank','forSnapShot','width=617,height=300');
oPopWinObj.document.write( sCloneHTML );
}
0288Name_Not_Found
垢版 |
2021/01/19(火) 16:33:40.78ID:???
ポップアップブロックに引っかかるので
むしろエラーにならないブラウザのほうが稀
0289Name_Not_Found
垢版 |
2021/01/19(火) 20:04:48.89ID:???
devilspie2 とか sizer 使えば?
0290Name_Not_Found
垢版 |
2021/01/20(水) 07:37:06.76ID:zsIGEcOR
>>288
他で使ってもらう場合にはポップアップ禁止を解除しなきゃダメなのね。
私のブラウザは以前他の用事で解除してたのを忘れてました、注意しないと駄目ですね。

あと、ブラウザというかアプリのリサイズフリーソフトはPCを変えるたびに消失してるのと、
Windowsのアプデで使えなくなるソフトが多すぎて、
ソフトはなるべく増やさない方向で考えてます。
0291Name_Not_Found
垢版 |
2021/01/20(水) 13:14:19.51ID:???
>>285
>クロスドメインで取得不可にするほうが稀のはず

それを認めれば、自分のコンテンツが、
訳の分からない・犯罪的なサイトに使われるので、危険!
0292Name_Not_Found
垢版 |
2021/01/20(水) 13:40:29.19ID:???
>>287
Ruby みたいに、HTML エスケープ出来ないの?

html = <<'HTML'
<!DOCTYPE html>
<html lang='ja'>
</html>
HTML

require "cgi/escape"

puts CGI.escapeHTML( html )

出力
&lt;!DOCTYPE html&gt;
&lt;html lang='ja'&gt;
&lt;/html&gt;
0293292
垢版 |
2021/01/20(水) 16:50:52.92ID:???
これで動くかね?

let aHeadInrHTML = document.getElementsByTagName('head');
let aBodyInrHTML = document.getElementsByTagName('body');

let sCloneHTML = `
<!DOCTYPE html>
<html lang='ja'>
<head>
${ aHeadInrHTML[0].innerHTML }
</head>
<body>
${ aBodyInrHTML[0].innerHTML }
</body>
</html>
`;
0294Name_Not_Found
垢版 |
2021/01/23(土) 15:27:42.88ID:???
vueスレが死んでたのでお願いします
ちょっと興味があるのでどんな風に使われてるのか調べてみたんですが
使ってるらしいサイトのソースを見てもそれっぽい痕跡がありません
痕跡というのはvue.js読み込んだりvueインスタンス作成したり
html中に{{var}}みたいなテンプレート変数のようなものやv-forみたいな属性がありません
チュートリアルの最初のほうに書かれてるやつしかまだ見てないのですが
本当にvue.jsを採用してるサイトのソースを見てるとしたら
なんか思ってるのと違うのかな?という感じなんですが
確実にここはゴリゴリにvue.js使ってるよ!ソース見ればわかるだろ?
というようなサイトあったら教えていただけませんか?
0295Name_Not_Found
垢版 |
2021/01/23(土) 15:52:03.60ID:???
可読性は悪いしオーバーヘッド大きすぎて遅いからねぇ
0297Name_Not_Found
垢版 |
2021/01/24(日) 12:55:43.13ID:???
申し訳ないと思うのであれば、別のサイトを用意していただけませんか?
0298Name_Not_Found
垢版 |
2021/01/24(日) 19:18:06.27ID:???
イベントハンドルをグローバル変数にしてイベントを追加した場合は
イベントの重複登録が起こっても、重複にならないようです。
逆にローカル変数だと重複が起こるのですが何故でしょうか?

var handle = {
obj: hoge;
handleEvent: hage
};
window.addEventListener('resize', handleObj);
0299Name_Not_Found
垢版 |
2021/01/24(日) 21:36:48.97ID:???
それはグローバルかどうかじゃなく
同じインスタンスを登録してるのか
異なるインスタンスを登録してるかの違いでしょ

中途半端なコードじゃなく
問題が再現できる最小限のコードを出してね
0300294
垢版 |
2021/01/25(月) 14:11:34.79ID:???
>>296
レスありがとうございます
ビルドされているということは>>294であげたようなコードから
一般的なhtmlに変換されるような感じなのでしょうか?
ビルドされていないという状態は一般的ではなさそうなので
もう少しチュートリアル読み進めてみようと思います
0301Name_Not_Found
垢版 |
2021/01/25(月) 20:52:59.40ID:???
javascriptからアプリを起動しツイートしようとすると
このページをtwitterで開きますか?のように確認ウィンドウが出てしまうのですが
これを回避することは可能なのでしょうか?
0303Name_Not_Found
垢版 |
2021/01/26(火) 12:24:06.77ID:OSBnDhig
vscodeでconsole.logは可能でしょうか?
ターミナルでただファイル名を指定しただけでは、jsファイルが開くだけどす(´・ω・`)
0304Name_Not_Found
垢版 |
2021/01/26(火) 14:12:01.88ID:OSBnDhig
youtubeのトップページのおすすめを削除したいのですが、特定のチャンネルだけ残すという処理はCSSだけでは無理ですよね?
0305Name_Not_Found
垢版 |
2021/01/26(火) 16:20:27.69ID:???
CSSのみで指定できる箇所にチャンネルを識別できる情報があれば可能なければ不可能

それすらわからない君にはどのみち無理ですね
0306Name_Not_Found
垢版 |
2021/01/26(火) 18:03:14.66ID:OSBnDhig
firefoxアドオンで特定のチャンネルだけなんてことできたらなと
0307Name_Not_Found
垢版 |
2021/01/28(木) 10:12:40.84ID:???
>>303
VSCode はエディタだから、実行環境がない

実行環境にはブラウザか、Node.js を使う。
Ruby on Rails などを使う人は、Node.js もインストールしてる

VSCodeの事は、プログラム板のスレで聞いて下さい
0310Name_Not_Found
垢版 |
2021/01/29(金) 23:44:34.02ID:???
スレここであってるかな?
fancybox3に詳しい人います?
マイナーなのか調べてもあんまりヒットしないし公式ドキュメント見てもわからんくて。。

いわゆるモーダル系のjsライブラリなんだけど背景クリックしてもモーダルを閉じないオプションあれば教えてください
0311Name_Not_Found
垢版 |
2021/01/30(土) 00:02:38.11ID:???
>>310
clickSlide: falseかclickOutside: falseあたりじゃない?
0312Name_Not_Found
垢版 |
2021/01/31(日) 22:50:58.75ID:???
子要素のイベントを親要素が取得する方法ってイベントバブリングだかで取得するしかないのでしょうか?
例えばモーダルの中にアコーディオンメニューがあった場合、アコーディオンをクリックすると高さが増えるので
ブラウザの高さよりも高くなることもあると思います。
その場合に、クラスを付与してモニョモニョしたいといった用途です。

また、モーダルの中でアコーディオンメニューが開くに限定せず、何かがクリックされて高さが変動する、
不特定な状態で進めたいと考えています。

現状イベントバブリングで対応できそうだったのですが、不特定なクリックイベント側で
e.stopPropagation(); の記述があったら詰んでしまうと思いまして代替案が無いか質問いたしました。
0313Name_Not_Found
垢版 |
2021/02/01(月) 09:33:45.49ID:???
子要素の高さに合わせて親要素の高さが可変するように作っておくべき
0314Name_Not_Found
垢版 |
2021/02/01(月) 14:12:42.87ID:???
モーダルがブラウザの高さを超えた場合にレイアウトがが変わる仕様なので、質問しました。
バブリングを使わなくても、同等のイベントを記述すれば、捕捉できそうなので解決ということで。
ありがとうございました。
0315Name_Not_Found
垢版 |
2021/02/02(火) 21:00:07.62ID:???
すみません。
どちらかというとプログラミング一般の質問になってしまうのかもしれないのですが
ご意見をいただけますと幸いです。

なにかしらのフォームがあるとします。
ちなみにサーバーはNodeですが、あまり関係ありません。
UXのためにフォームにはバリデーションがしっかりかけられており、
ユーザーが期待しない値を入力したときには親切なエラーが定義されています。

こういう状態で、サーバー側に意図しない値が来たときの挙動はどうすれば良いでしょうか?
それが悪意のあるものであれば、どのように対応しても良いと思いますが、
ブラウザが古い、何かしらのアシストツールの効果、(想定外の)APIとしての利用なども考えられると思います。

ケースバイケースだと思いますが、ベテランの人たちの直感的に、
サーバー側でもきっちり値の判定をして、HTTPエラーコードを返すのが良いのか、
親切なエラーメッセージを返すのが良いのか、どちらでしょうか。

それとも、校正はバリデーションに全て任せて、値を有効値に加工してそのまま鵜呑みにするのが良いのでしょうか。
例えば値Xがユーザーの年齢なら、Xは1桁か2桁の数字列文字列を確認した後数値に直し、if(X<=3)throwなどとする代わりに、
X = +Xなどとして、Xがたとえ0や負値になっても(それが脆弱性に繋がりそうでない感じなら)そのまま扱う、ということです。
0316Name_Not_Found
垢版 |
2021/02/02(火) 22:20:45.01ID:???
サーバー側でも基本的に同じチェックをして入力が不正ならエラーとして扱う
ただし親切なエラーメッセージを出すかどうかはものによる
不親切でもよければ汎用的なエラーメッセージを使うことはよくある

クライアント側に比べてサーバー側の入力チェックを緩くするケースは
種類の異なる複数のクライアントをサポートする必要があって
一番緩いクライアント仕様に合わせる必要がある時くらい
0317Name_Not_Found
垢版 |
2021/02/02(火) 22:44:07.51ID:???
悪意について書いてるから理解してるじゃない
それが最低ラインだから当然だよね

鵜呑みにというか忖度すると、思ってもみなかった所で躓くから、俺はサーバでは厳密にエラー入力として処理
それが不便なら入力の方でマイナス符号とかの不正入力はバリデーションすればいいって主張
エラーメッセージは好きにすればいいと思うけど、そんな物を利用者に見せたりしても仕方ないと思う
親切なエラーメッセージに凝るくらいなら親切な入力で弾いとけよと
0318Name_Not_Found
垢版 |
2021/02/03(水) 19:08:03.55ID:???
なるほど。
・手を抜くなら徹底的に手を抜く
・厳密にするなら徹底的に厳密にする
という2択に自分の中で無意識に絞っていましたが、
正解はその間にありそうだということに気づくことができました。
どうもありがとうございました。
0319Name_Not_Found
垢版 |
2021/02/03(水) 23:55:59.94ID:???
関数のイベントオブジェクトを引数として利用する場合、他の引数ってどうやって渡せばよいのでしょうか?
下みたいなときにイベントオブジェクト以外渡せなくないでしょうか?
var hoge = function(e) {
console.log(e.currentTarget);
}
0320Name_Not_Found
垢版 |
2021/02/04(木) 00:09:14.80ID:???
>>319
自レスです。
条件を追加でコールバック関数の場合でお願いします。
さらにイベントだけでなくロード時にも発火します。

var target = .....;
obj = {
fuga: fuga,
handleEvent: hoge
};
var hoge = function(引数1, 引数2) {
console.log(e.currentTarget);
}
hoge(str);
target.addEventListener('click' obj);
0321Name_Not_Found
垢版 |
2021/02/04(木) 00:29:04.09ID:???
部分適用して一引数関数にすればいい

var hoge = function(a, e) {
return function(e) {console.log(a, e.currentTarget)}
}
とか
var hoge = (a, e) => (e) => console.log(a, e.currenTarget)
とか

でtarget.addEventListener('click' hoge(str));
0322Name_Not_Found
垢版 |
2021/02/04(木) 00:31:11.92ID:???
あとは引数で渡すんじゃなくclosureで外側のスコープの変数をキャプチャするか
0323Name_Not_Found
垢版 |
2021/02/04(木) 05:12:24.83ID:???
はい、jsのクソ仕様来ました〜
0325Name_Not_Found
垢版 |
2021/02/04(木) 09:53:27.62ID:???
クロージャーはクソ仕様
C言語にそのようなものはない
0326Name_Not_Found
垢版 |
2021/02/04(木) 10:40:45.99ID:???
関数に放り込むべき2つ目の引数はいつ決定するの?
まさかクリックした瞬間って訳でもないだろうし
年取ったせいかコード読んでも意図が読めん
0327Name_Not_Found
垢版 |
2021/02/04(木) 12:15:22.73ID:???
addEventListenerした後に追加の引数の値が決まるなら
オブジェクトにしておいて値を変えればいい

handleEvent()実装したオブジェクトを使うなら
そのオブジェクトのプロパティを使うようにメソッドを実装しておいて
あとからプロパティの値を変更する
0328Name_Not_Found
垢版 |
2021/02/04(木) 15:44:58.18ID:???
比較対象が化石のC言語て・・
0329Name_Not_Found
垢版 |
2021/02/04(木) 20:06:53.15ID:???
>>326
年のせいにするな。お前がアホなんや
0330Name_Not_Found
垢版 |
2021/02/04(木) 23:56:11.87ID:???
>>323
JSには基本的に「クソ仕様」というものはない
主要なコミュニティがあってスタイルが決まっている言語とは違って
そういう束縛がなくバリエーションに富んだ書き方が自由にできるのがJSの良さ
それが嫌なら幾らでもaltJSがある

JSをわざわざ使っていて厳格だとか単純性にこだわるのはアホ
JSをあえて使うのならその奥深い複雑性を活かして効率化を図り、
厳格性ではなく曖昧性を生かして問題を問題でないように吸収するのがJSの使い方
それが嫌ならJSで頑張ろうとせずに素直にaltJSを使うのが1000倍賢い

Cが使いたかったらCで書いてemscriptenでも通せばいいだけ
無理してJSでC風に書く必要はないし、ましてや他人にそれを押し付ける理由は1つもない
0333Name_Not_Found
垢版 |
2021/02/06(土) 05:36:08.78ID:???
Rustとかもクロージャあるぞ。
てか最近は言語にクロージャ無いとweb用だろうがシステム用だろうがバカにされるのでJavaにもC#にもSwiftにもKotlinにもあるもしくは追加された。
0334Name_Not_Found
垢版 |
2021/02/06(土) 07:06:12.78ID:???
>>332
私は「基本的に」と言った
var、undefinedもそれ自体がまるごとクソ仕様なのではない
使い方、組み合わせによっては注意すべきポイントが出てくるということで
そういう機能までクソ仕様と言ったら多くの言語の多くの機能がクソ仕様になる
var、undefinedも他の言語も含めて広い目で見たとき取り立ててクソ仕様と断定できるほどではない
分かったか?(ドヤ)
0335Name_Not_Found
垢版 |
2021/02/06(土) 13:19:10.11ID:???
お前あいかわらず長文クソレスしかしないな
0336Name_Not_Found
垢版 |
2021/02/06(土) 17:25:44.40ID:???
クロージャーって1回しか使わない処理をエレガントに書くためのものだろう?
簡単な条件式で内容変える程度なら三項演算子とかでもいいけど(あれはエレガントとは言えぬが)
0337Name_Not_Found
垢版 |
2021/02/06(土) 17:26:53.12ID:???
クロージャってjsだと劣化クラスみたいな感じだよな
他の言語のクロージャとは違う
0338Name_Not_Found
垢版 |
2021/02/06(土) 17:45:41.48ID:???
>>336
1回しか使わないんだったら引数で渡せばいい話で、外のスコープの変数にアクセスする必要なんてない。

>>337
javaと間違えてね?
0339Name_Not_Found
垢版 |
2021/02/06(土) 18:10:28.35ID:???
>>336
それは単なる無名関数では?w
使わなかろうがクロージャくらい覚えとけよw
なんで知らない段階で否定すんだよw
否定するにしても知ってて否定するほうがカッコいいぞ?w
0340Name_Not_Found
垢版 |
2021/02/06(土) 18:42:06.41ID:???
>>337
>他の言語のクロージャとは違う

何が違うの?
0341Name_Not_Found
垢版 |
2021/02/06(土) 21:07:05.29ID:???
>>339
別に否定なんてしとらんが
ていうか無名関数とクロージャーって同じものじゃないのけ
0343Name_Not_Found
垢版 |
2021/02/06(土) 22:24:45.99ID:???
関数とスコープくらい別物
0344Name_Not_Found
垢版 |
2021/02/06(土) 23:51:31.68ID:???
関数とスコープは直交した概念だから比較対象として不適切
0345Name_Not_Found
垢版 |
2021/02/07(日) 00:31:10.16ID:???
んでもクロージャーって、意図からしてスコープの追加じゃない?
0346Name_Not_Found
垢版 |
2021/02/07(日) 06:24:00.68ID:???
>>341
JSは全てのユーザー定義関数がクロージャと言って良い
クロージャにならない関数はビルトインとかnew Functionで生成したものとかごく一部
0347Name_Not_Found
垢版 |
2021/02/07(日) 08:08:12.06ID:???
new Function 構文を使った事なかったんで知らんかった
ローカルではなくグローバルのレキシカル環境を参照するから個別なクロージャには出来ないのか
0350Name_Not_Found
垢版 |
2021/02/07(日) 19:31:55.79ID:???
>>334
基本的にどんな言語にもクソ仕様はあります
JavaScriptも例外ではありません
0351Name_Not_Found
垢版 |
2021/02/08(月) 19:34:52.98ID:???
おまえの中ではそうなんだろうな
0352Name_Not_Found
垢版 |
2021/02/09(火) 09:17:56.38ID:???
私の中ではJavaScriptはクソじゃないんですよw
0353Name_Not_Found
垢版 |
2021/02/09(火) 23:25:50.76ID:???
だれもJavaScriptはクソだとか言ってないが
0354Name_Not_Found
垢版 |
2021/02/10(水) 14:01:57.27ID:02B7n2v2
あるid の要素を削除するとか、
あるclass の最初の要素を削除するのを、

一々、削除する要素の親を取得してから、
その子を削除するように書いているのですが、
これを関数でまとめられないですか?

あるインスタンス.parentNode.removeChild( そのインスタンス ); みたいに

var elements = document.getElementsByClassName( 'abc' ) ;
elements[ 0 ].parentNode.removeChild( elements[ 0 ] ) ;

var elem = document.getElementById( 'xyz' );
elem.parentNode.removeChild( elem );
0355Name_Not_Found
垢版 |
2021/02/10(水) 14:12:20.92ID:???
element.remove()
IE未対応だがポリフィルで実現可能
0356354
垢版 |
2021/02/10(水) 16:13:05.45ID:???
remove( ) で出来ました!

var elements = document.getElementsByClassName( 'abc' );
elements[ 0 ].remove( );

var elem = document.getElementById( 'xyz' );
elem.remove( );
0357Name_Not_Found
垢版 |
2021/02/10(水) 23:09:03.83ID:???
jQueryなら
$('.abc').remove();
$('#abc').remove();
0358Name_Not_Found
垢版 |
2021/02/11(木) 19:47:57.74ID:???
・馬鹿の例
var elem = document.getElementById( 'xyz' );
elem.remove( );

・チキ外
$('#xyz').remove();

・俺
xyz.remove();;;;;;
0360Name_Not_Found
垢版 |
2021/02/11(木) 22:55:52.63ID:???
根本的にdocument.getElementByIdとか使うのはアドホック的で美しくない
ユーザースクリプトとかでないのならもうすこしスクリプトドリブンでDOMを作って
美しくアクセスできるvDOMを使ってやるべし
0362Name_Not_Found
垢版 |
2021/02/12(金) 01:19:46.83ID:???
色んなサイトで散々解説されてる
具体的に言えないのであれば勉強しろ
0363Name_Not_Found
垢版 |
2021/02/12(金) 05:09:25.74ID:???
>>358
abcクラスを消す場合はどうするの?って言われたら困るやろ?
やぶ蛇になるようなレスしないでおこうね
0364Name_Not_Found
垢版 |
2021/02/12(金) 06:26:53.76ID:???
特定のクラスの最初の要素をターゲットにするというのはナンセンスなので問題ないよ。
0365Name_Not_Found
垢版 |
2021/02/12(金) 10:33:55.73ID:???
>>361
まずES5までのクラスシステムをnew演算子のふるまいとプロトタイプがどう扱われるかしっかり理解する
そしたらhomeObjectとnewTargetの概念が分かれば理解できる。
0366354
垢版 |
2021/02/12(金) 14:27:00.04ID:???
Showroom を見るときに、Ruby のSelenium Webdriver で、
邪魔なアバター・アイコン・メニューなどを削除してから見てる

漏れは、動画しか見ないから、他のサービスはいらない
0367Name_Not_Found
垢版 |
2021/02/12(金) 20:28:01.50ID:???
推奨NGワード: Ruby, 漏れ
0368Name_Not_Found
垢版 |
2021/02/13(土) 10:11:52.65ID:???
<li>
<input>
</li>

という構造で、通常時はliにborder付けて、
input:checkedの時はborderを消すということをしたいのです

プログラムはさっぱりなので、ざっくりtoggleを調べてみましたがinputがcheckedかどうかの状態を取得する方法がよく分かりません

このページの例が結構近いのかなと思いましたが、この例だとonclickで判定してますがcheckedで判定する方法はあるんでしょうか
https://web-tsuku.life/classlist-toggle/
0369Name_Not_Found
垢版 |
2021/02/13(土) 11:11:28.29ID:/SfB+VpU
>>368
DOMからinput要素を取得すると
checkedというプロパティを持ってて
booleanでチェックされてるか否かが取得できる

ので
li要素とその子要素のinput要素をセットでDOMから取得しておいて
input要素のcheckedに応じてliのclassNameを差し替える関数を用意して
input要素のonchangeイベントにフックして実行するといいよ
0370Name_Not_Found
垢版 |
2021/02/13(土) 11:13:22.98ID:/SfB+VpU
ごめん
onclickの方が実用的かもしれん
0372Name_Not_Found
垢版 |
2021/02/13(土) 18:26:08.08ID:???
input type="checkbox"
https://developer.mozilla.org/ja/docs/Web/HTML/Element/input/checkbox

checked は、チェックボックスが既定で (ページが読み込まれたときに) チェックされているかどうかを示します。
チェックボックスが現在チェックされているかどうかを示すものではありません。
チェックボックスの状態が変化した場合、このコンテンツ属性は変化を反映しません。
(HTMLInputElement の checked IDL 属性のみが更新されます。)

だから、チェックの有無に応じて、適当なクラスを付け外して、目印にすれば?

例えば、チェックされたら、class="abc" を付ける。
チェックを外したら、class="abc" を削除する
0373Name_Not_Found
垢版 |
2021/02/13(土) 18:33:39.19ID:???
試しに書いてみたが考慮点が多すぎて気軽に書くには割に合わないな
https://jsfiddle.net/Lqhm8ot0/

気軽にやりたければ親要素を変更するよりも
子要素か兄弟要素にしてCSSで対応する方法で我慢

親要素を変更するなら自分で状態をオブジェクトや配列で管理して
ユーザーアクションに応じて状態を更新する関数(イベントハンドラ)と
状態の更新に応じてUIを更新する関数は分けたほうが見通しがいい
0375Name_Not_Found
垢版 |
2021/02/13(土) 19:06:14.31ID:???
IE以外はtoggleの第二引数がサポートされてるから
li.classList.toggle(‘active’, input.checked)みたいに書けるよ
0378Name_Not_Found
垢版 |
2021/02/15(月) 01:12:47.46ID:???
一部を抜粋してきたのでわかりづらいかもしれませんが
下記はキー入力などを停止するための記述の一部です

if文の条件の意図って何なのでしょうか?
イベントオブジェクトがあればpreventDefaultメソッドは必ず持っているものだと
思うのですが、何を確認しているのかわかりません。
イベントオブジェクトを取得できたか確認しているのですかね?

var e = e || window.event;
if (e.preventDefault) e.preventDefault();
0379Name_Not_Found
垢版 |
2021/02/15(月) 01:47:14.81ID:???
IE8以下にはなかったので古い時代のコードやね
0380Name_Not_Found
垢版 |
2021/02/15(月) 05:47:08.53ID:???
jQueryとか使ってればわかりやすかったのにね
0381Name_Not_Found
垢版 |
2021/02/15(月) 12:26:16.73ID:???
>>379
ありがとうございます。
IEがpreventDefaultに対応していなバージョンに対する振り分けだったのですね。
そんな時代があったこと知りませんでした。
0382Name_Not_Found
垢版 |
2021/02/15(月) 14:14:00.92ID:???
>>381
2000〜2010年に世界でWEB制作に使われた労力の
半分はIEに対応するためと言っても過言ではない
0383Name_Not_Found
垢版 |
2021/02/15(月) 16:32:39.90ID:???
>>382
ie死ねって本気で呪ってた
今はmacのsafariが怨めしい
0385Name_Not_Found
垢版 |
2021/02/15(月) 18:50:29.66ID:???
>>383
whatwgの中心メンバーのくせに対応遅いよね
0386Name_Not_Found
垢版 |
2021/02/17(水) 07:01:31.07ID:???
SafariはIEとは大きく違う
Apple製品が欲しいけど、他を買わざるを得ない人は居ても、その逆は基本的にはない
最先端とか最高のものを求める人はApple製品は買わない
ブランドが持つ総合的な価値で買ってる
つまりそもそもSafariでChromeと同じように表示する必要はなく
どちらかといえば差別化をしたほうが良いくらい
0387Name_Not_Found
垢版 |
2021/02/17(水) 07:05:28.72ID:???
>>386
いやレンダリングは同じじゃなきゃ困るだろw
0388Name_Not_Found
垢版 |
2021/02/17(水) 07:10:49.71ID:???
そりゃ大体は同じでないといけないが、
細部は異なって当然でしょ
だって違うブラウザなのだから
車でもメーカー・車種によって細部の操作感は違うでしょ

ブランドごとにむしろ細部が違うからこそ価値が出てくるわけで
その価値を認めてる人たちがそのブランドを使ってるんでしょ
0389Name_Not_Found
垢版 |
2021/02/17(水) 10:16:50.65ID:???
今のSafariは細部とは言い難い差異があるから困るんじゃね?
0390Name_Not_Found
垢版 |
2021/02/17(水) 15:04:07.43ID:???
もともとSafariは、KHTMLのブラウザエンジンをパクって作ったもの
KHTMLをパクってWebKitにしたのがApple
そのWebKitをパクってBlinkにしたのがGoogle
そのBlinkを搭載したChroniumを利用してるのがEdge
つまり全ての成果をMicrosoftが利用することとなった
0391Name_Not_Found
垢版 |
2021/02/17(水) 15:05:31.13ID:???
最新のBlinkを利用する、ChromeとEdgeからすれば
旧世代のWebKitを使ってるのSafariという扱いなんだよ
0392Name_Not_Found
垢版 |
2021/02/17(水) 19:12:52.72ID:???
safariはサポート対象から外してるな
0393Name_Not_Found
垢版 |
2021/02/17(水) 19:30:39.10ID:???
IEユーザーにはどれだけこちらが正当なことを言っても全く通じないが
Safariユーザーにはその機能がないのはAppleの方針だと一言言うだけで納得するよね

努力すればできることでどうしても対応して欲しいという話になったら最近は海外に投げてる
椅子に座ってひたすらキーボードを叩いて解決するような仕事は日本人プログラマがすることではないし、
逆に言えばスピードとコストでは奴らに遠く及ばないと思い始めてる
0394Name_Not_Found
垢版 |
2021/02/17(水) 20:04:58.26ID:???
>>391
別に古いわけじゃなくない?
blinkがWebKitからフォークしたのが数年前ってだけで

オープンソースはあまり得意ではない?
0397Name_Not_Found
垢版 |
2021/02/18(木) 06:37:29.11ID:???
iphoneのユーザー数とIE含むレガシーブラウザのユーザー数はそうは変わらないしな
0399Name_Not_Found
垢版 |
2021/02/18(木) 17:22:19.16ID:???
今javascriptとnode.jsを勉強してるんですがこの2つだけじゃ身につけにくいプログラミング言語の特徴みたいなのありますか?
型とかポインタ?とかかなと思うんですが
0400Name_Not_Found
垢版 |
2021/02/18(木) 17:36:00.26ID:???
実業務でポインタなんか全く使わんからいらん
型はTypeScriptにすりゃええよ
0401Name_Not_Found
垢版 |
2021/02/18(木) 17:48:04.73ID:???
ありがとうございます!
0402Name_Not_Found
垢版 |
2021/02/18(木) 19:59:44.49ID:???
>>399
型もポインタも明示的に指定しない分余計に意識が必要
コードに書かないということは自分の頭で分かってないといけないから
JSで学べないことはないよ♡
0403Name_Not_Found
垢版 |
2021/02/18(木) 20:24:49.74ID:???
>>394
WebKitは旧世代だよ
Googleの開発スピードにAppleは追いつけない
ウェブは高速で進化してる、その中でAppleは置いてきぼり
0404Name_Not_Found
垢版 |
2021/02/18(木) 20:54:59.84ID:???
>>403
どの辺が旧世代なのかは説明できないんでしょ?
だからお前はダメなんだよ
0405Name_Not_Found
垢版 |
2021/02/18(木) 21:21:10.26ID:???
>>399
型に関係する部分くらいだね
静的型付け/型チェック、クラスベースのオブジェクト指向、インターフェース、
関数の型、メソッドオーバーロード、Enum, ジェネリクス、代数型、Null Safetyなど

あと強いて言えばマクロ、メタプログラミング、マルチスレッド辺り
0406Name_Not_Found
垢版 |
2021/02/18(木) 21:37:29.04ID:???
>>398
世界平均ではごく少数だけど
日本、北朝鮮、アフリカ諸国、東欧、南米とかに
偏って存在してる

日本以外ははふっるい中古PCが多いせい

日本は00年代の早くから
IEをフロントエンドとする企業向けWebシステムを
企業毎に高いお金かけてオリジナルで導入した
っていう、当時としては先進的な動向が原因

フロントエンド開発者はずっと
IEはクソだから見捨てようって言い続けてきたけど
SIerも広告代理店もそれを客に進言できなかったし
企業のシステム担当もChromeのインストールを認められなかった

そして今に至る
0407Name_Not_Found
垢版 |
2021/02/19(金) 05:28:33.36ID:???
>>404
https://gigazine.net/news/20200629-apple-web-api-decline/

Safariが使えないAPI

・Web Bluetooth
・Web MIDI API
・Magnetometer API
・Web NFC
・Navigator API: deviceMemory
・NetworkInformation API
・Battery Status API
・Web Bluetooth Scanning
・AmbientLightSensor API
・EME Extension: HDCP Policy Check
・Proximity API
・WebHID API
・Serial API
・WebUSB
・Idle Detection
0408Name_Not_Found
垢版 |
2021/02/19(金) 06:28:22.55ID:???
Safariが使えないと考えるからおかしい Chromeが積極的なだけ
何かの導入に消極的なことは、ただ遅れてることとは違う
消極的というのは積極的とおなじだけ特徴的だし、特長になりうる

どうしても先進機能を使いたい・使わせたいならChromeを使えばいい
でもSafariを使っている人はそもそもそういうことを求めてはいない
アイホンは諦めろ それだけでしょ
0409Name_Not_Found
垢版 |
2021/02/19(金) 08:28:01.65ID:???
>>407
それらは遅れてるんじゃなくて明確な意図を持って実装しないという話では
ほとんどのものはブラウザにハード触らせたいGoogleが自分の都合で実装して
それをブラウザにハード触らせたくないAppleが自分の都合で実装しないと言ってるんでしょ

それらに関してはMozillaもApple寄りだし
その件に限ってはAppleの方針に賛成だな
何でもかんでもブラウザが触れるのは嫌だ
0410Name_Not_Found
垢版 |
2021/02/19(金) 11:31:17.97ID:???
>>409
他のブラウザができることをSafariはできないんだよ
だから旧世代

アップルがiOSアプリを売りつけるために
ブラウザの機能を制限してるのはわかるけどなw
0411Name_Not_Found
垢版 |
2021/02/19(金) 11:48:51.88ID:???
>>410
つまりIEは良かったと?
そんなばかなw
0412Name_Not_Found
垢版 |
2021/02/19(金) 17:26:09.40ID:???
ループ処理の中でイベントを設定して、呼び出されるコールバック関数側で
どうにかインデックス番号を取得する方法はありませんか?
無名関数を使わない方法が知りたいです。
よろしくお願いします。

var sample = function() {
console.log(i);
};
var arr = [xxx, yyy, zzz];
arr.forEach(function(v, i, arr) {
arr[i].addEventListener('click', sample);
});
0413Name_Not_Found
垢版 |
2021/02/19(金) 17:55:57.65ID:???
無名関数つかっとるやないけ
0414Name_Not_Found
垢版 |
2021/02/19(金) 18:00:11.84ID:???
>>412
>>321と同じ部分適用のパターン

第三引数のarrは必要ないよね?
v.addEventListenerで事足りる
0415Name_Not_Found
垢版 |
2021/02/19(金) 18:15:13.56ID:???
>>413
失礼いたしました。
イベントリスナで呼び出す関数に無名関数使わない方法で対応できたらと考えています。

>>414
ほんとですね!!!
全然気づきませんでした。

ついでに質問についても教えていただけますと幸いです。
0416Name_Not_Found
垢版 |
2021/02/19(金) 18:52:54.51ID:???
>>415

>>321を読んで考えて
もしわからないなら何がわからないのかを書いて
0417Name_Not_Found
垢版 |
2021/02/19(金) 19:36:36.57ID:???
>>416
すみませんが何が行われているのか全くわからないです
どうしましょ・・・・・・・・・・・
0418Name_Not_Found
垢版 |
2021/02/19(金) 21:05:13.87ID:???
>>417
まじかー
アロー関数じゃなくて普通の関数で書けば↓こんな形

var sample = function(i) {
return function() {console.log(i)};
};

var arr = [xxx, yyy, zzz];
arr.forEach(function(v, i) {
v.addEventListener('click', sample(i)); //← sample(i)を実行した結果のfunction(){console.log(i)}がイベントハンドラになる
});
0419Name_Not_Found
垢版 |
2021/02/19(金) 21:06:32.18ID:???
var sample = function(i) {
return function() {console.log(i)};
};

↑をアロー関数で書けば↓こうなる

var sample = (i) => () => console.log(i);
0420Name_Not_Found
垢版 |
2021/02/19(金) 21:16:32.41ID:???
>>418-419
アホ向けの解説多謝です
コールバック関数ってカッコ付けてよいのですね!!!
絶対カッコ取らないと駄目だと思ってました

少しいじってみますね
0421Name_Not_Found
垢版 |
2021/02/19(金) 21:25:53.87ID:???
この場合のsampleはコールバック関数ではなくてコールバック関数を生成する関数だよ
0422Name_Not_Found
垢版 |
2021/02/20(土) 00:21:02.58ID:???
今はもうだいぶ一般的になっちゃったけど昔は高階関数ってJSのお家芸みたいなとこあったよね。
いやlispとかまで言われたらあれだけどメインストリーム言語としては。
0423Name_Not_Found
垢版 |
2021/02/20(土) 06:40:02.35ID:???
イベントドリブンだからね
0424Name_Not_Found
垢版 |
2021/02/20(土) 11:29:55.21ID:???
>>421
ありがとうございます。

ちなみになのですが、関数の中で関数返しているのでsampleメソッドはクロージャ扱いになるんでしょうか?

また、詳細を調べる際のワードとしては「部分適用」になるのでしょうか?
部分適用という使い方としては出てくるのですが、今回のようにコールバック関数に引数を渡すための
手法の名前がありましたら、詳しく調べたいので教えていただけないでしょうか。
0425Name_Not_Found
垢版 |
2021/02/20(土) 12:34:53.59ID:???
>>424
ならない
この中でクロージャは 変数 i

function(i){...} だけで有効であるはずのローカルスコープの変数 i が、sampleが返してくるコールバック関数を実行した時にも参照される
これは i の内容が、function(i) が実行された時のスコープの環境を参照して決定されるため
この様に、それが定義された環境が記録されていて、実行時に参照される変数をクロージャという
0426Name_Not_Found
垢版 |
2021/02/20(土) 12:43:44.44ID:???
>>424
sampleが返す関数がクロージャ
sample自体はクロージャではない

コールバック関数に引数を渡すための手法の名前は聞いたことがない

インラインの関数式でクロージャを使うほうが一般的なパターン
arr.forEach(function(v, i) {
v.addEventListener('click', () => console.log(i));
});
0427Name_Not_Found
垢版 |
2021/02/20(土) 12:47:49.71ID:???
部分適用は↓ここではちょっと違う解説をされてるけど
JSに限らずいろんな言語に共通する考え方
JSの場合は部分適用するのにクロージャを使うというだけ
https://ja.javascript.info/currying-partials
0428Name_Not_Found
垢版 |
2021/02/20(土) 20:19:10.74ID:???
クロージャを使う?
意味不明 JSのユーザー定義関数はほぼ全てクロージャになるんだが
0429Name_Not_Found
垢版 |
2021/02/20(土) 20:22:39.19ID:???
>>425-426
ありがとうございます。
クロージャはsampleの中の変数なのですね。
勘違いしていたようです・・・・・・

インラインだと冗長な気がしてしまって、名前付けた関数を
使うようにしてみているのですが、質問しました引数渡せない問題など
色々詰まってしまってますw

リンク先でしっかり学んできます!
0430Name_Not_Found
垢版 |
2021/02/20(土) 20:54:19.36ID:???
引数にこだわらずにhtmlエレメントに値持たせてもいいんやで?
var sample = function(event) {
console.log(event.target.dataset.index);
};
var arr = [xxx, yyy, zzz];
arr.forEach(function(v, i) {
v.dataset.index = i;
v.addEventListener('click', sample);
});
0431Name_Not_Found
垢版 |
2021/02/20(土) 23:39:34.27ID:RDdPohk5
>>428
詳しく!
0432Name_Not_Found
垢版 |
2021/02/21(日) 04:59:19.18ID:???
>>411
IEが良かったなんて言ってないけど?
Chrome or Edgeはいいよ
最先端だよ
0433Name_Not_Found
垢版 |
2021/02/21(日) 05:54:33.25ID:H6h5PYSO
>>432
だって他のブラウザに出来ないことができるのが良いって判断なんでしょ?
まさにIEじゃん、00年代の
0434Name_Not_Found
垢版 |
2021/02/21(日) 09:51:01.52ID:???
>>431
JSの関数コンテキストは定義された場所のスコープを引き継ぐのだからクロージャと言える
(実エンジンではデバックのための情報を除いてカットされる)
0435Name_Not_Found
垢版 |
2021/02/21(日) 09:54:45.81ID:???
横レスだけど偏屈になると歪んだ考え方しちゃうのね
IEができたこととは全く意味合いが異なると思うけどw
完全に拗らせてるわ
0436Name_Not_Found
垢版 |
2021/02/21(日) 10:32:53.63ID:???
そのうちNetscapeが1990年代の最先端で〜とか言い出しそう
0437Name_Not_Found
垢版 |
2021/02/21(日) 12:00:15.43ID:r7q3VAly
>>434
なるほど
0438Name_Not_Found
垢版 |
2021/02/21(日) 12:02:05.38ID:r7q3VAly
>>435
俺も横レスな上に
IEを擁護するようであれなんだが

IEが先進的だったこともあったんだぜ
xhrもネットスケープより前に出来てたし

まあそのせいで
向こう20年の悪夢を産んだわけだが
0439Name_Not_Found
垢版 |
2021/02/21(日) 12:33:24.68ID:???
どう見ても現代の話しているやつに、なんで唐突に20年前の話振り始めたん?
コミュ障なの?
0440438
垢版 |
2021/02/21(日) 12:37:53.17ID:r7q3VAly
ごめーん
俺は見ててちょっと懐かしくなっちゃっただけ
スレ違いすまぬ
0441Name_Not_Found
垢版 |
2021/02/21(日) 12:42:29.63ID:???
>>440
スレは合ってるよ
空気嫁ないガイジなだけだよ
0442438
垢版 |
2021/02/21(日) 12:48:48.77ID:r7q3VAly
ガイジってよく見るけど実はよくわかってない…
それを書くと俺はどんなダメージを負えばいいのん?
0443Name_Not_Found
垢版 |
2021/02/21(日) 13:01:14.41ID:???
>>433
> だって他のブラウザに出来ないことができるのが良いって判断なんでしょ?
そんなこと一言も言ってないよね。お前の思い込みだよね。

特定のOS専用や非公開な仕様ではなく
オープンなウェブ技術を開発、採用ししているブラウザが最先端のブラウザ
0444Name_Not_Found
垢版 |
2021/02/21(日) 13:03:35.69ID:???
>>438
その通り。技術自体はIEは先進的だった。
良くないのはその技術がクローズドだった点

オープンな場で議論して仕様を策定するのではなく
MSの気分次第で実装されていた

Chrome or Edgeではそうじゃないので最先端のブラウザだし
それに追いつけないSafariはもはや過去のブラウザ
Safariのために特別な対応が必要だったり
Safari自体を非推奨にしなければならなくなってる
0445Name_Not_Found
垢版 |
2021/02/21(日) 15:21:02.34ID:???
日本の与党と野党みたいなもんでしょ
本当であれば皆で方策を出し合って決めるのが理想だが
力ある者が思いついたアイディアに対して力なき者はただ難色を示すことが仕事になってるんでしょ

そこでとりあえずストップして内容を改めましょうかとか、
皆でミニマムなところからやってみて意見を出し合いましょうかとかなればいいんだけど、
意見が割れてるのね、じゃあそれぞれの方針でそれぞれでやって確かめていきましょとなって
結局は力ある者の意見が通ることになってるんでしょ

力関係が崩れている期間が長くなりすぎるとお互いに対する緊張感がなくなって
他所を見るより自分自身がどうやって行くかが重要になってくるからこうなってしまう
SafariもHTML5ムーブメント初期はデザイン方面などで色々とやる気だったけど
やる気だった方向性ではそんなに急には伸びそうになくて覇権は取れないし、
アプリプラットフォームとしてのWebという方向性ではビジネスの観点からやる気を出すことができない
だからこうなってしまうのは仕方がなかったこと

それとそもそもオープンオープンって言うけどさ
昔ながらの草案から段階踏んで比較的幅広いメンバーで議論を重ねて勧告へ向かっていくのとは違って
どっかのチームがGitHubに公開して、issueを受け付けとくね、聞くかどうかはしらんけど
とりあえず実装初めて使ってみながら変えていこう的なノリが最近多いのよ

公開ドキュメントによく鍵かかってたりもするし、リクエストしても承認されない
恣意的ではないかも知れないが、どうせ関係者しか関わってこないだろうという気持ちがある証拠だと思ってる
そういう機能をたくさん積んだブラウザが最先端のブラウザなんだろうか?
確かにプログラマとしてはまともで使える機能が多く乗った環境のほうが良い

でもユーザーにとっては例えばアクセシビリティが高いとか、セキュリティに拘ってるとかいうのでも
十分「最先端」のブラウザなんだよね
そんな今年1回使うかどうか分からない機能よりも、毎日の使い勝手のほうが重要なんだから
0446Name_Not_Found
垢版 |
2021/02/21(日) 16:52:19.79ID:???
linear-gradientで、transparentが使えないのはsafariだけ!
0447Name_Not_Found
垢版 |
2021/02/21(日) 16:57:23.34ID:???
IE問題とSafari問題は質が違うよね

ま、どうでもいいけど
0448Name_Not_Found
垢版 |
2021/02/21(日) 17:47:07.65ID:???
VSCodeで簡単なオススメlintってない?
ESLint は設定のやり方を読んだだけで投げ出すヘタレ
0449Name_Not_Found
垢版 |
2021/02/21(日) 19:57:41.64ID:???
>>418について再度質問させてください
条件を追加してしまい申し訳ないのですが、addしたイベントをremoveしたいと考えています。
このときに引数を渡す書き方だとremoveできないようで、振出しに戻ってしまいました。
引数を渡しつつ、どうにか解除する方法はありませんでしょうか?

元も子もないのですが、引数を渡さなければ解除できるようです。

var test = document.getElementsByClassName('test'),
removeBtn = document.getElementById('removeBtn');

var sample = function(i) {
return function() {console.log(i)};
};
Object.keys(test).forEach(function(v, i) {
test[v].addEventListener('click', sample(i));
});

var removeEvent = function() {
Object.keys(test).forEach(function(v, i) {
test[v].removeEventListener('click', sample(i));
});
};
removeBtn.addEventListener('click', removeEvent);
0450Name_Not_Found
垢版 |
2021/02/21(日) 20:44:34.22ID:???
>>449
それがダメなのはaddの時に渡すsample(i)とremoveの時に渡すsample(i)が
違うオブジェクトだからじゃないかな
removeに渡すのはaddと同じじゃないとダメだと思う
なのでaddの時に引数をキーにしたMap作っとくとか?
質問とは関係ないけど今はvarじゃなくてletとconst使う方がいいと思う

(略)
const map = new Map();

Object.keys(test).forEach(function(v, i) {
const func = sample(i)
test[v].addEventListener('click', func);
map.set(i, func)
});

var removeEvent = function() {
Object.keys(test).forEach(function(v, i) {
const func = map.get(i);
test[v].removeEventListener('click', func);
map.delete(i);
});
};
(略)

動作確認はしてない
0451Name_Not_Found
垢版 |
2021/02/21(日) 20:45:31.11ID:???
removeEventListenerするならsample(i)で生成された関数はaddEventListenerするのと同時にどこかに保存しておく必要がある

イベント付け外しするなら>>430の方が簡単
0452Name_Not_Found
垢版 |
2021/02/21(日) 22:23:40.76ID:???
ボタンならリスナー削除するよりDisabledにしたほうが親切だよね
リスナー削除して同じボタンに別のリスナーを追加するような使い方してるなら別だけど
0454Name_Not_Found
垢版 |
2021/02/21(日) 22:46:50.77ID:???
>>450-451
ありがとうございます。
きっちり動作していました。

まだしっかりと動作を把握できていないのですが、
渡す引数を含めて、ループごとに関数を保存する必要があるということでしょうか。
だとしたら思った以上に大掛かりなことになってしまっていますね。

引数渡すだけで処理難度凄い変わるのですね・・・・・・・・
0455Name_Not_Found
垢版 |
2021/02/21(日) 23:37:46.15ID:???
やり方に問題があるだけだと思うけどな
処理を無効にしたいだけなら、disabledってクラスでも付与して、
イベント内のif文で無効にすれば済む
イベント自体を削除する必要はない
0456Name_Not_Found
垢版 |
2021/02/22(月) 00:25:20.95ID:???
>>455
ボタン処理などではなく、、自作したメソッドのプレビューページでの問題発生でした。
メソッドを呼び出すにあたり、選択できるオプションが複数ありまして、
その項目をselect要素で選択すると、引数を上書きして、都度メソッドを読み直すという構成になっています。

同じメソッドを読み直すと、イベントが重複登録されてしまうようでして、それを解除しなければならない
という状態でした。
もっと良い方法がありましたら、改善したいと思っていますのでお知恵をお貸しください。
0457Name_Not_Found
垢版 |
2021/02/22(月) 00:53:58.62ID:???
なるほど、わからん

それは引数で渡すんじゃなくイベントリスナーの中で
選択したオプションを読めばよくね?
0458Name_Not_Found
垢版 |
2021/02/22(月) 01:35:12.73ID:???
昔と違ってremoveが必要なケースってそれほどない
0459Name_Not_Found
垢版 |
2021/02/22(月) 02:23:01.34ID:???
今はremoveするんじゃなくてclassを変更して
その表示状態を非表示に隠すだけだよ

JavaScriptの処理はclass属性の変更だけでDOM構造の変化もなく
ブラウザがネイティブに表示状態を処理するだけだから高速
0460Name_Not_Found
垢版 |
2021/02/22(月) 21:57:12.25ID:???
>>457
いくつか平行して進めておりまして、その内1つは
ご指摘いただいた通りselectで選択した値を取得させたところ、
あっさりできてしまいました。
恐らく他の自作メソッドでも対応できてしまいそうです。

イベントの設定と解除についてや、コールバック関数に引数を渡すという
テクニックが身に付いたのはとてもよかったのですが
どうやら無駄だったようです・・・・・・
楽しかったので気にしない方向で・・・・・
0461Name_Not_Found
垢版 |
2021/02/23(火) 22:53:14.96ID:???
関数に引数渡すなら関数自身にプロパティ追加するのもありじゃない
何かデメリットあったっけこの使い方?

var fn = function() {console.log(fn.str);};
fn.str = 'hoge';
fn();
0462Name_Not_Found
垢版 |
2021/02/23(火) 23:26:42.97ID:???
無理に組み込んでfn.strなどととしてアクセスすることになるよりも
バラバラに親関数でstrとして受け取ってstrとアクセスできる方が普通でしょ

strがfnの関数としての性質を表すプロパティならfnがstrの入れ物になるというのは分かるけど
そうではないのなら不自然でしょ  沢山渡す必要があるときも、同列にまとめて
{fn,str,......}の形で渡すとかにしたほうが良い
0463Name_Not_Found
垢版 |
2021/02/23(火) 23:57:29.42ID:???
スコープ狭めたいとかbindとか使うよりもと思ってたけど止めた方がいい?
普通にbind使うべきかな?
0464Name_Not_Found
垢版 |
2021/02/24(水) 02:05:48.18ID:???
ごめん質問の意味がよく分かんない
その「普通にbind使う」とやらのコード貼って
0465Name_Not_Found
垢版 |
2021/02/26(金) 07:07:35.27ID:???
>>460
無駄にはならない
常識レベルの基礎知識だから
0466Name_Not_Found
垢版 |
2021/02/26(金) 07:50:31.15ID:???
>>461
面白い気もするけど
それってfnの外に変数置いてるのと
やってることそんなに変わらなくない?
変数が散らからないだけで
0467Name_Not_Found
垢版 |
2021/02/27(土) 06:19:34.79ID:???
便利でよく使ってる、実数の小数部を切り捨てるテクニックの
const a = 3.9 | 0;
console.assert(a==3);
は、どうして機能するのでしょうか?
0468Name_Not_Found
垢版 |
2021/02/27(土) 06:22:08.02ID:???
| 演算子を使うといわゆる整数にキャストされる?
0469Name_Not_Found
垢版 |
2021/02/27(土) 11:25:35.88ID:???
>>467
JavaScriptがビット演算するときは64ビット浮動小数点数から32ビット整数に変換される
上位ビットは切り捨てられる
0470Name_Not_Found
垢版 |
2021/02/27(土) 11:49:57.85ID:???
整数部が32bit超えるとバグるし意図も伝わりにくいからMath.floorとかを使ったほうがいいんじゃね
0471Name_Not_Found
垢版 |
2021/02/27(土) 12:20:42.93ID:???
ありがとうございました

意図が、というのは問題ですが、
サイズに関しては2Dグラフィックでの長さ分割計算用途で、オーバーフローする可能性はない(あったら別のバグ)ため、
速度優先で行きます
0472Name_Not_Found
垢版 |
2021/02/27(土) 17:29:43.01ID:???
質問、というか単なるこだわり
確実に、好きにしろとか言われるはず

JavaScriptの業界だとメソッドやらプロパティやら頭小文字にしろとかうるさい(小文字で始める「べき」です)けど、自分のライブラリでは逆らって頭大文字で行ってる
そんなに非常識に見られるの?
0474Name_Not_Found
垢版 |
2021/02/27(土) 17:56:18.40ID:???
>>472
個人的な拘りだとか言いながらドレスコードガン無視した衣装で来店する程度には非常識
0475Name_Not_Found
垢版 |
2021/02/27(土) 18:20:41.84ID:???
何回注意しても屁理屈捏ねてマスク着用拒否して飛行機下ろされる非常識客くらい
0476Name_Not_Found
垢版 |
2021/02/27(土) 21:16:08.15ID:???
>>471
計測して比較したのかな?

bitwise ORとMath.floorやMath.truncとの速度差をケチるくらいに
速度重視のアプリはそもそもJavaScriptに向いてないと思うぞ
0478Name_Not_Found
垢版 |
2021/02/27(土) 22:08:10.94ID:???
いや、Math.trunc の方がいいのか?
なんで選択から外してたんだ?あれ?
0479Name_Not_Found
垢版 |
2021/02/27(土) 23:49:36.23ID:???
>>472
Ruby on Rails では、
ローカル変数は、snake。item_name
モジュール・クラス名は、Pascal・upper camel。ItemName

JavaScript では、
ローカル変数は、camel。itemName。少数派で、snakeを使う人もいる。
モジュール・クラス名は、Pascal

基本、フレームワークのプロジェクト規約に従う。
Railsでは、ファイル名・テーブル名の単数・複数形なども、命名規約で決まっている

勝手に決めると、ESLint などでも警告されるかも
0480Name_Not_Found
垢版 |
2021/02/28(日) 00:35:29.30ID:???
>>479
うーん、Goユーザーなんで小文字だとprivateスコープに見えちゃうという非常に個人的な感覚
#付けるとprivateになるという仕様候補の現状がとても気になる
0481Name_Not_Found
垢版 |
2021/02/28(日) 00:39:36.54ID:???
推奨NGワード: Ruby
推奨NGワード: Rails
0482Name_Not_Found
垢版 |
2021/02/28(日) 00:53:58.56ID:???
ところで、また特に回答が無くても困らない質問が一つ

querySelector のセレクタで妙な仕様を見ました
例えば id="abc¥def" とエスケープコードを入れたセレクタを指定するとき
"abc¥¥def" とエスケープを重ねて指定

……では駄目で "abc¥¥¥¥def" と二重にエスケープする必要があるとか
なんで?

こんな文言を id とか class に使うくらいなら自分は長い文言を使うんで困らないけど、なんで?
仕様書のparseについての項を読んでもよく分からなかった
querySelector の中ってJavaScriptとは管轄が違っていて、再び文字列解釈されるってことだよね
0483Name_Not_Found
垢版 |
2021/02/28(日) 01:01:26.38ID:???
最後自分で答え言ってるじゃん
0484Name_Not_Found
垢版 |
2021/02/28(日) 02:00:14.34ID:???
>>477
Math関数は中間表現から始まって最終的にアセンブラレベルに落として最適化されるので
何か最適化を妨げる状態でなければ十分に早いんだが、
厳密に言うとtruncはx86だとfloatなどに比べて冗長な命令を出さざるを得ない
対応SSEのバージョンが古ければ古いほど冗長になる
だからCPUレベルで原理的にどうしても遅くなる

ただしこの冗長というのは浮動小数点を丸めて整数にしたい場合、という注釈が付く
JSの場合は浮動小数点型がデフォなんだから
所謂ネイティブ言語では扱いにくい、浮動小数点型のまま0丸めする命令は使える

ただしここでも穴があって、V8は結果として内部整数を期待するので、
この命令を使う場合でもわざわざ整数に直してしまうこと、
そしてアセンブラ上で見かけ上命令数を同じにできても、
CPUに対する命令は更にCPUの中で独自の小さな命令にデコードされ最適化されることになり、
実実行時間で言うとやっぱりfloat系に比べて遅くなるということ

この手の演算を効率よくやりたければSIMD命令を使うのが良い
JSから表面的に触れるAPIは削除されてしまっているが、Wasmをちょっと噛ませてやれば使える
0486Name_Not_Found
垢版 |
2021/02/28(日) 04:39:02.46ID:???
こんなに頑張って説明してくれてるのにばっさり切られてて笑う
普段、そこまで深く考えないから、中々興味深かったけどな
0487Name_Not_Found
垢版 |
2021/02/28(日) 08:43:46.15ID:???
XSS(クロスサイトスクリプト)なんかを使ってjavascriptで悪さしようとしても限界あったりしない?
ブラウザを強制終了したら悪さはおしまいじゃないの?
もちろんcookieを盗み見てその情報を自分のとこに送ったりすることは出来るけど、パソコン自体に悪さをすることってできなくない?
結局ブラウザができることが出来るってだけだよね?
たとえば身代金を取るためにディスクの内容を全部暗号化するなんてことは出来ないよね?
0488Name_Not_Found
垢版 |
2021/02/28(日) 11:54:55.32ID:???
せやね。XSS使ってもネットワークつながっていない相手の家の鍵を
開けることは出来ないから限界あるよね
どんな犯罪道具にも限界はあるよ思うよ。うん。
0490Name_Not_Found
垢版 |
2021/02/28(日) 12:03:22.15ID:???
>>489
一部間違えていました
console.assert(dot2[0] == 0);
console.assert(dot2[1] == 10);
console.assert(dot2[2] == 20);
console.assert(dot2[3] == 30);
しかし問題はここではなく、

"[0, 0, 0, 0]" を "[0, 10, 20, 30]" に書き換えたのに "[0, 8, 17, 30]" になってしまう点です。
0491Name_Not_Found
垢版 |
2021/02/28(日) 12:21:23.57ID:???
>>488
「ネットにつながっていないパソコンには何も出来ない」ってことじゃなくて、
ネットにつながっててもパソコン本体に何か悪さをすることは出来ないんじゃないか、ということ。
ブラウザを強制終了させてしまえばその「悪さ」は終わるよね?ということ。
ブラウザの動作がおかしくなったってパソコンの通常のファイルまで書き換えられるなんてことはないはずだから。
0492Name_Not_Found
垢版 |
2021/02/28(日) 12:39:04.96ID:Cg2dttr3
>>487
個人の情報にはそんなに期待してない
セッションIDが抜けるのが本命
0493Name_Not_Found
垢版 |
2021/02/28(日) 12:43:43.24ID:???
あれ待てよ、ブラウザでファイルをダウンロードしてローカルなディスクに保存することできるよな
逆にブラウザを使ってローカルなファイルを選んでネット上の場所にアップロードすることもできる
ということはブラウザからローカルなファイルシステムにアクセスすることは出来るってこと?
普段はユーザに許可求めてるけどやろうと思えばそれを無視しちゃうことも出来るとか?
0494Name_Not_Found
垢版 |
2021/02/28(日) 12:46:17.04ID:???
>>492
それを入手するとそいつにとってどういう利益があるの?
「ログイン済み」の状態を作れるとか?
0495Name_Not_Found
垢版 |
2021/02/28(日) 12:55:28.07ID:???
httponly属性付けないでセッションid送るようなカスって居たりするの?
0496493
垢版 |
2021/02/28(日) 13:01:59.55ID:???
>>493
人間がブラウザを操作して出来ることと、html内に書かれたjavascriptで出来ることは別だったな
javascript でローカルなファイルを好き勝手にダウンロード、アップロード等で読み書きすることはさすがに普通は出来んよな
0497Name_Not_Found
垢版 |
2021/02/28(日) 13:04:14.33ID:???
>>489
MDNにあるputImageData の参考実装例を見ると、fillStateで rgbg()で色を設定して拡大範囲に対してfillするみたいだから、もうputImageDataの限界みたいですね
コンテキストのスムージングも弄ってみましたが効果なし
別の手段を考えます
0498Name_Not_Found
垢版 |
2021/02/28(日) 13:06:51.96ID:???
>>490
Chromeは[0, 8, 17, 30]

Firefox、IEは[0, 17, 25, 30]
アルファチャンネルが255以外の時のRGBはFirefox/IEは取りうる最大値、Chromeもよくわからんけど何らかの正規化がかかってる感じだね
0499Name_Not_Found
垢版 |
2021/02/28(日) 14:11:41.34ID:Cg2dttr3
>>494
セッションID手に入れば
わりと乗っ取れるよ
わりと
0500Name_Not_Found
垢版 |
2021/02/28(日) 14:30:31.17ID:???
>>491
XSS使って相手にウイルス実行させれば
パソコン本体に悪ささせられますが?
0501Name_Not_Found
垢版 |
2021/02/28(日) 14:54:08.24ID:???
>>500
xssとウィルス等は全く関係ないので無理
0502Name_Not_Found
垢版 |
2021/02/28(日) 14:56:12.59ID:???
明治時代以前に写真を撮られると魂を抜かれるとか思ってた人を笑えないんだよなぁ
0503Name_Not_Found
垢版 |
2021/02/28(日) 15:01:11.40ID:???
>>496
お前プログラム板で頓珍漢な質問してるやつやろ
知ったかぶりはやめて基礎を勉強しろな
0504Name_Not_Found
垢版 |
2021/02/28(日) 15:12:33.09ID:???
>>491
XSSは目的を達成する各種ステップの初期段階だからな

XSS対策すらまともにできてないサイトが
その他の対策は万全なんてことはありえないので標的にされやすい
0505Name_Not_Found
垢版 |
2021/02/28(日) 16:14:09.12ID:???
>>501
> xssとウィルス等は全く関係ないので無理

その理屈で言えば、バッファーオーバーフローも
ほぼすべての脆弱性も、バックドアも
ウイルスとは関係ないしパソコンに悪さをするものではない


それを使ってウイルスを侵入させるためのものでしかない
XSSもウイルスを侵入させるためのものであるということは同じ
0506Name_Not_Found
垢版 |
2021/02/28(日) 17:08:33.71ID:???
>>502
写真撮ってあげましょうか?から始まる一連の騙し手口みたいなもの
色よい返事が貰えれば脆弱であることが分かるので次のステップに進む
写真撮ってあげましょうか?はKill Chainの第一段階のreconに相当する
0507Name_Not_Found
垢版 |
2021/02/28(日) 18:47:09.66ID:???
>>505
ウイルスという言葉の意味を広げすぎじゃね?
たとえばメール送りつけて偽のネットバンキングのサイトに誘導してパスワードを盗むのはウイルスではないだろ
あるいはメールに実行ファイルを添付してそれ実行したらすべてのファイルが消去される、なんて荒っぽいのを「ウイルス」と呼ぶのは変だ
ウイルスってのはもっと巧妙な、しばらくは潜伏期間があるようなもののことじゃないか?
0508Name_Not_Found
垢版 |
2021/02/28(日) 19:43:08.62ID:???
そもそもXSSでウイルスは仕込めないだろ
どうやって増殖するのよ
0509Name_Not_Found
垢版 |
2021/02/28(日) 21:06:43.66ID:???
ウイルスは自己増殖するものに対する名前だったが
“ウイルス対策”という場合はその他の種類のマルウェアも含むのが通例
“マルウェア対策”のほうが用語としては正確だが
一般ユーザーには定着してないから便宜的に”ウイルス対策”と言う
0510Name_Not_Found
垢版 |
2021/02/28(日) 21:14:46.17ID:???
ウイルス(ラテン語: virus)は、他生物の細胞を利用して自己を複製させる、極微小な感染性の構造体で、タンパク質の殻とその内部に入っている核酸からなる。生命の最小単位である細胞やその生体膜である細胞膜も持たないこと、小器官がないこと、自己増殖することがないことから、生物かどうかについて議論がある[1]。一般的には、ウイルスは生物ではないとされる。

ウイルスは自己増殖するものに対する名前(笑)
0511Name_Not_Found
垢版 |
2021/02/28(日) 21:43:37.81ID:???
>>510
生物学的なウイルスや自己増殖の定義は詳しく知らんが
コンピュータウイルスの狭義の意味はホストを介して自己増殖(self-replication)する特徴を持ったもので間違いないで
0512Name_Not_Found
垢版 |
2021/02/28(日) 21:49:20.35ID:???
>>487
お前は毎日ポエムを日記サービスに鍵付きで投稿してるが
脆弱性のせいでそれが流失したら恥ずかしくて死ななきゃならなくなるだろ

まあそれは冗談だが、大事なデータはHDDにあるとは限らんだろ
Webサービスに非常にセンシティブなデータがあるかもしれないでしょ
それが漏れてからブラウザを強制終了させても遅いんだよ
0513Name_Not_Found
垢版 |
2021/02/28(日) 22:04:35.36ID:???
>>490,498
ふたりとも正気?
最初の「透明な黒」の背景に対して不透明度30/255のRGB(10,20,30)を描画したら
そのままRGB(10,20,30)になると本当に思うの?

ブラウザによって結果が違うのも当然
だって「透明な黒」に対して「半透明の色」を混ぜるという
非常にわけの分からないことをしているのだから
0514Name_Not_Found
垢版 |
2021/02/28(日) 22:10:12.58ID:???
XSS使えば正規のサイトに悪意のあるサイトを重ねてID/パスワードをだまし取ったりできる
ひっかかったやつがいればそれを活用して信頼できる相手からの無害なファイルに見せかけたペイロードを送る
それにも引っかかれば無事データぶっこ抜き
0515Name_Not_Found
垢版 |
2021/02/28(日) 22:58:05.45ID:Cg2dttr3
>>505
ウィルス注入は言い過ぎな気もする
仮に最終目的がウィルス注入だとしても
そのためのドアのこじ開けくらいじゃないかなあ

んでXSSの主だった攻撃は
個人のパソコンをどうこうすることではなくて
個人が使ってるサイト、ウェブサービスをごにょごにょすることにあると思う

んでんで
ドアをこじ開けた先でする悪さは
XSSとはまた別の名前がついてるんで
XSSでできることはブラウザの中だけ
って考えても間違いとは言い切れん
気がする
0516Name_Not_Found
垢版 |
2021/02/28(日) 23:00:21.48ID:???
使わなくなった配列とかオブジェクトのプロパティって都度空にしたり削除したりした方がよいのでしょうか?
0517Name_Not_Found
垢版 |
2021/02/28(日) 23:06:21.34ID:???
>>516
作っているものの内容によるけど、通常は気にしなくていい
0518Name_Not_Found
垢版 |
2021/02/28(日) 23:09:42.58ID:???
>>516
わざわざ削除しなくてもGCされるようにスコープ切って使えばいいんじゃないの
手動で削除したほうが望ましい場合ってあるのかな?
0519Name_Not_Found
垢版 |
2021/03/01(月) 00:51:47.73ID:???
>>513
putImageDataですよ
アルファ値も何もかも全部上書きする関数の話
0520Name_Not_Found
垢版 |
2021/03/01(月) 01:02:05.53ID:???
>>513
なお、[xx,xx,xx,0]を書き込むと無慈悲に[0,0,0,0]とRGBは無視されちゃう模様
透明なのに色があったらおかしいよね、という話だろうけど余計なお世話だなぁ
JavaScript だと低レベルAPIは存在せず、高レベル描画でエミュレートしてるようだから逆に仕方がないと諦め
どうしても必要だったら、サーバにimagedataデ=[タ渡してPNGにして返してくるWebAPI作ろうかな
0521Name_Not_Found
垢版 |
2021/03/01(月) 01:09:58.44ID:???
>>518
古代のVBAだとガベージが超頭悪かったんで、自分でデータのツリーとか末端まで参照を解放しておいてやらないと砂時計の刑
今時のガベージなら問題は少ないはず
0522Name_Not_Found
垢版 |
2021/03/01(月) 03:19:02.94ID:???
>>490
推測だが、
アルファ、30 / 256 = 0.117

つまり、0.117 減衰する。
つまり、1 - 0.117 = 0.883 倍になる

10 * 0.883 = 8.8
20 * 0.883 = 17.66

切り捨てて、8, 17
0523Name_Not_Found
垢版 |
2021/03/01(月) 03:48:13.20ID:???
>>515
そうだよ?
だから脆弱性には、例えばバッファーオーバーフローなどという
別の名前がついていて、それ自体はバッファーオーバーフローするだけで
悪さをするものじゃないって言ってるの
0524Name_Not_Found
垢版 |
2021/03/01(月) 07:08:27.36ID:???
>>519
違う違う、誰がそんなことを言った?
上書きではなく、上塗り
背景色とブレンドされる
0525Name_Not_Found
垢版 |
2021/03/01(月) 12:00:48.65ID:???
これがほんとの恥の上塗りなんちゃって
0526Name_Not_Found
垢版 |
2021/03/02(火) 12:37:53.45ID:???
APIの概要、仕様の基本的な部分を承知してないのに
よくブラウザの問題だとかあれこれ言えるなと思う

仕様調べるか、挙動から類推するか、自分で実験してみるか
何かしら確かめる作業をすれば気付けるだろうに

問題解決において実行系のバグを疑うのは
多くのステップを踏んだ最後の最後
質問者と頓珍漢な解答をした者ははまずその事から覚えた方がいい
0529Name_Not_Found
垢版 |
2021/03/03(水) 09:58:41.88ID:???
質問いいでしょうか?
jsonで下記のような配列を取得しまして、これを「3月3日」のような
文字列でも日付型にでもかまわないので変換したいのですが、
まとめて行うことは可能でしょうか?
[ "2021-03-03T00:00:00+09:00", "2021-03-04T00:00:00+09:00", "2021-03-05T00:00:00+09:00", "2021-03-06T00:00:00+09:00"]
0531Name_Not_Found
垢版 |
2021/03/03(水) 10:49:09.59ID:XzKEb7KX
>>529
mapでいいんじゃないかな
0532Name_Not_Found
垢版 |
2021/03/03(水) 12:45:54.43ID:???
mapだと個別に処理することになりませんか?
今32スレッドの5950Xを使っているので、要素が32以下の場合まとめて処理したいのです。
昔同じようなことをしようと思いFirefoxでparallelMapだかを使ったのですが、今はなくなっているようです。
どうしたらよろしいでしょうか?
0533Name_Not_Found
垢版 |
2021/03/03(水) 13:03:37.89ID:QC47j9E0
replaceでも出来なくはない気もするけど
一番早いのはmapなんじゃないかなあ
どうせシングルスレッドですしお寿司
0534Name_Not_Found
垢版 |
2021/03/03(水) 13:19:26.67ID:???
他の言語でもやたら並列化使おうとする人たまにいるけど
単純すぎるものは素直に処理した方が速いよ
0535Name_Not_Found
垢版 |
2021/03/03(水) 13:35:48.92ID:???
“まとめて”が”並列に”の意味だったとはw
0536Name_Not_Found
垢版 |
2021/03/03(水) 13:39:17.31ID:???
スレッドプールが立ち上がっててデータが大量にあるなら並列にやってもいいけど
そんなクソでかいjson扱う前にできることあるよね
0537Name_Not_Found
垢版 |
2021/03/03(水) 13:44:18.94ID:???
そんなに並列でスレッドを開始したり、終了を知らせたりする処理挟んでたら、
そっちに掛かる時間の方が日付型への変換より時間掛かるまでありそう
0538Name_Not_Found
垢版 |
2021/03/03(水) 14:31:10.16ID:???
web workerで出来るけどそんなレベルなら並列化にかかるコストの方が大きい
0539Name_Not_Found
垢版 |
2021/03/03(水) 16:17:27.66ID:???
並列化のほうがコストかかるかどうかはデータ量次第でしょ
決めつけはいかんよ

Firefoxの話を書いてるけどブラウザで実行する前提かどうかもわからない
0541Name_Not_Found
垢版 |
2021/03/03(水) 16:33:48.23ID:???
来年度予算案並に106兆とかあるかもしれんね
戦略の見直しが必要ですわ
0542Name_Not_Found
垢版 |
2021/03/03(水) 17:08:34.32ID:QC47j9E0
もしwebworkerでやることになった場合
やっぱ配列の中身を一個ずつ
postMessageしていくことになるんじゃろか?
0543Name_Not_Found
垢版 |
2021/03/03(水) 17:19:45.88ID:???
>>529の要件なら、正規表現で置き換えれば済む気がするけどな
何故こんなにも複雑な話になったのか
0544Name_Not_Found
垢版 |
2021/03/03(水) 17:53:03.35ID:???
そりゃ本人が並列処理をご所望だからだよ
0546Name_Not_Found
垢版 |
2021/03/03(水) 17:59:05.73ID:???
>>542
んなわけない
そんなことしたらデータ量に限らず低速化する
0547Name_Not_Found
垢版 |
2021/03/03(水) 18:16:49.56ID:QC47j9E0
>>546
丸っと渡した場合は
それが別スレ化するから本線が遅くならない
くらいのメリットですかね?
0548Name_Not_Found
垢版 |
2021/03/03(水) 18:31:15.78ID:???
>>545
時刻は全部00:00:00+09:00のデータで、月日をフォーマットするって内容だろ?
どこでロケールの問題が出てくるの?
0550529
垢版 |
2021/03/03(水) 23:34:28.84ID:eYe9orAH
>>529 です。たくさんのレスありがとうございます!
初学者なのでうまく説明ができずすみません…
mapで繰返し処理が出来るのはわかったのですが、
どのような記述になるんでしょうか…?
先程のjsonの配列[0]を取り出して、
date = new Date( json配列[0]);
var month = date.getMonth();
var day = date.getDate();
nDate= month + '月' + day + '日';
これで○月○日に変換できたのですが、これを
json配列の要素全てに繰返し処理したいんです。
要素数は10個ほどなので速度云々は問題無いと思うのですが…
0551Name_Not_Found
垢版 |
2021/03/03(水) 23:58:56.40ID:???
const input = [
"2021-03-03T00:00:00+09:00",
"2021-03-04T00:00:00+09:00",
"2021-03-05T00:00:00+09:00",
"2021-03-06T00:00:00+09:00"
]

//1. DateTimeFormat
const formatter = new Intl.DateTimeFormat('jp', {month: 'long' , day: 'numeric'})
input.map(x=>formatter.format(new Date(x)))

//2. Regex
const regex = /¥d{4}-(¥d{2})-(¥d{2})T.*/
const replacer = ($0, $1, $2) => `${Number($1)}月${Number($2)}日`
input.map(x=>x.replace(regex, replacer))
0552Name_Not_Found
垢版 |
2021/03/04(木) 00:19:36.02ID:???
すごい… 高度なコードです…
参考にさせていただきます。
0553Name_Not_Found
垢版 |
2021/03/04(木) 04:07:09.62ID:???
Node.js なら、Date 型へ変換できるけど、
環境依存だから、Moment.js とか使うのかな?
ブラウザは、よく知らない

const input = ['2021-03-03T00:00:00+09:00', '2021-03-04T00:00:00+09:00'];

let results = input.map( (str) => new Date(str) );
console.log(results);

出力
[ Wed Mar 03 2021 00:00:00 GMT+0900 (GMT+09:00), 
Thu Mar 04 2021 00:00:00 GMT+0900 (GMT+09:00) ] 
0554Name_Not_Found
垢版 |
2021/03/04(木) 04:44:27.91ID:MED6GxhC
HTML5 で name が非推奨になって、
forms['formName']['childname'].value
っていう、名前でのアクセス方法の代替方法を探してるんですが、id では出来ないようです。
children や elements を使ってるんですが、name と同じうように id 名でアクセスするいい方法を教えて下さい。
0555Name_Not_Found
垢版 |
2021/03/04(木) 06:16:57.54ID:???
>>554
getElementById でも querySelectors でも好きにしろ
0556Name_Not_Found
垢版 |
2021/03/04(木) 06:42:43.87ID:???
form の name は非推奨になってないんじゃないか?
非推奨になっちゃうとGETで &name=value という形でURLで値が渡せなくなる

namedItem(’id名’) というのが使えるようだ
forms['formName']['childname'].value は、nameの代わりにidを使って
forms.namedItem('formid').elements.namedItem('childId1').value
と書ける
0557Name_Not_Found
垢版 |
2021/03/04(木) 06:53:42.70ID:???
ありゃ
forms.namedItem('formid').elements.namedItem('childId1').value
を略して
forms['formid']['childId1'].value
でも行けたぞ
0560Name_Not_Found
垢版 |
2021/03/04(木) 12:37:43.13ID:???
「非推奨」と「廃止」は違う
「非推奨」とは即ち今はバリバリ使えるということだ
仮に「非推奨」な機能を使ってコンテンツを作り、その直後にメジャーブラウザが廃止を発表したとしても
実際に廃止される前にコンテンツの寿命が尽きる事が殆ど
よって何が一番ダメかというとこの手のことに真剣に考える事自体
0561Name_Not_Found
垢版 |
2021/03/04(木) 12:38:20.75ID:???
>>554
jQueryを使うのが一番

$('#id') でもなんでもすきな方法が使える
0562Name_Not_Found
垢版 |
2021/03/04(木) 22:07:58.82ID:???
ちょっと有り得ない現象に遭遇したのでどうしたらいいか指南お願いします

console.log(a)// -> {hoge:0}
console.log('hoge' in a)// -> true
console.log(a['hoge'])// -> undefined <-!?!?!?
console.log(a)// -> {hoge:0}

オブジェクトそのまま出力したらhogeってプロパティがある
プロパティ名をチェックしてもあると帰ってくる
なのにアクセスしたらundefined

行き詰まった\(^o^)/
データがバイナリ的に壊れてるとかですかねこれ
同じようなケースの経験ある人いますか?
0563Name_Not_Found
垢版 |
2021/03/04(木) 22:17:06.78ID:???
そのオブジェクトをどうやって生成したか?

それにどうやって、hoge 属性を追加したか?
0564Name_Not_Found
垢版 |
2021/03/04(木) 22:26:11.57ID:???
ajaxでDBから読んだデータをdatatableというライブラリに読ませてる中で発生
属性はajaxで取得した時点で付加されてます
それを弄らずに渡してるだけ

ある特定のデータだけで起こる
この変数をObject.assignでコピーした変数でも同様の現象
DBに格納されてるデータが壊れてるのか?🤔
0566Name_Not_Found
垢版 |
2021/03/04(木) 23:04:26.12ID:???
出来ないですね
マジで不思議
特定のデータで100%再現するからデータの問題かな
というかそう思いたい

他の言語でもこんなこと起きたことない
javascriptも10年以上世話になってるけどこんなの初めて
0567Name_Not_Found
垢版 |
2021/03/04(木) 23:16:00.18ID:???
var foo = {'hoge': 37};

コピペできるかな
0568Name_Not_Found
垢版 |
2021/03/04(木) 23:19:23.42ID:???
同じかどうかはわからんが不可視文字ってのがあるから
それを確認できるエディタかバイナリエディタで見るといい
>>567のやつコピペしたらfoo.hogeはundefinedになるはず
0569Name_Not_Found
垢版 |
2021/03/04(木) 23:19:25.93ID:???
実際にはプロパティ名は変数に格納されてるのそういう単純なミスではないです
0570Name_Not_Found
垢版 |
2021/03/04(木) 23:21:39.94ID:???
明日データベースの中身をバイナリエディタでみてみます
0571Name_Not_Found
垢版 |
2021/03/04(木) 23:57:52.84ID:g9iKb0Y+
ヘボですみません、色んな本読みましたが
var str = "a@b@c@d";
を[a, b@c@d]と分割する方法がわかりません。
最初の1回目の@だけ判断してsplitみたいに二つに分けたいんですがさっぱりです。
0572Name_Not_Found
垢版 |
2021/03/05(金) 00:04:46.84ID:???
単純でお馬鹿な方法だと、全部分割してから、二番目以降を連結したらどうか?
0573Name_Not_Found
垢版 |
2021/03/05(金) 00:12:22.48ID:???
正規表現使っていいなら
str.split(/@(.*)/,2)
0574Name_Not_Found
垢版 |
2021/03/05(金) 00:22:29.03ID:???
やり方は色々あるけど綺麗に書くのが難しいな
0575Name_Not_Found
垢版 |
2021/03/05(金) 00:31:20.72ID:???
他の言語のsplitでlimit引数与えると571みたいな動作になるのに
なぜjavascriptのsplitは全部分割してlimit以降を捨てるようにしたんだろう?
0576Name_Not_Found
垢版 |
2021/03/05(金) 01:06:20.76ID:???
var str = "1@2@3@4@5"
var splited = [str.slice(0, idx =
str.indexOf('@')), str.slice(++idx)]
0577Name_Not_Found
垢版 |
2021/03/05(金) 01:42:32.08ID:???
@がない場合があるかないか
0578Name_Not_Found
垢版 |
2021/03/05(金) 01:44:27.46ID:???
また、どうでもいい質問
window.requestAnimationFrame() の戻り値の requestId
window.cancelAnimationFrame() に渡すと callback は呼び出されない
こんな仕様があるんで騙されたけど、このリクエストって callback で次のリクエストを自分で呼ばないと駄目なのね
周期的に呼び出し続けるものだと思ってしまった

この仕様って何を考えて作ったんだろ?
呼び出すとは言ったが、(略)十年二十年後ということも!!
0579Name_Not_Found
垢版 |
2021/03/05(金) 06:31:03.92ID:???
Ruby では、
str = "a@b@c@d";

# 左からコロンで、2つに分割する。最大分割数・limit は2
p ary = str.split( '@', 2 )

出力
["a", "b@c@d"]

Lo-dash には、無いの?
0581Name_Not_Found
垢版 |
2021/03/05(金) 07:18:48.99ID:X3aPXloc
>>577
ありません、かならず@が存在します
綺麗に書くの難しいんですね、これ
0582Name_Not_Found
垢版 |
2021/03/05(金) 09:04:27.21ID:???
ペチパー的には>>573
pos = str.indexOf('@');
[str.substr(0, pos), str.substr(pos)];
だな
0583Name_Not_Found
垢版 |
2021/03/05(金) 11:38:31.33ID:???
const str = '';
const pos = str.indexOf('@');

let ary = [ ];
if (pos >= 0) {
ary = [str.substr(0, pos), str.substr(pos + 1)];
}

console.log( pos, ary )

出力
-1, [ ]
0585Name_Not_Found
垢版 |
2021/03/05(金) 12:53:04.04ID:???
>>573 のようなsplitにおけるキャプチャグループの挙動を知らなかったので、以下のように書いただろうと思う。
str.match(/(.*?)@(.*)/).slice(1)
0587Name_Not_Found
垢版 |
2021/03/05(金) 19:18:03.99ID:???
str.split(/@(.*)/)
で十分じゃん
0589Name_Not_Found
垢版 |
2021/03/05(金) 20:56:18.83ID:???
横にそれるがsliceじゃなくsubstr使う派って何を意図してるの?
0590Name_Not_Found
垢版 |
2021/03/05(金) 21:03:52.80ID:???
‘@‘の場合にどういう結果を得たいかで微妙に変わるな
0591Name_Not_Found
垢版 |
2021/03/05(金) 23:01:12.31ID:???
>>588
見てから言ってる
3つ目に空文字が入ったとして問題になることは希有でしょ
0592Name_Not_Found
垢版 |
2021/03/06(土) 08:53:36.10ID:???
webページの操作をjavascriptを使ってカスタマイズしたい
たとえば複数のページに分けられている文章を一度に読み込んで表示したりしたい

具体的にはローカルファイルでhtmlファイルを作ってその中でiframe内に他人が作った
web ページを表示させてその中身をjavasccripで操作したいんだけど、
こういうのはクロスオリジン要求ってことで基本的にだめだよね

でもそんなにマズいことか?と考えてみれば、ユーザが自分で知った上でやる分には危険はないはずだし、
「開発者用ツール」を使えば他人の作ったwebページの表示を変えることだって出来る
(htmlファイルののコピーはローカルにコピーされてるから)んだからそういうのをJavascriptで出来てもいいんじゃないの?と思う

できない?

selenium IDE とか言う、web 操作を自動化するツールがあるのは知ってる
そういうの使うしかない?
0593Name_Not_Found
垢版 |
2021/03/06(土) 09:04:35.84ID:???
じぶんでぶらうざつくればできるよ
0594Name_Not_Found
垢版 |
2021/03/06(土) 09:16:10.62ID:???
>>592
そんなにマズいことだからだよ

任意のサイトをフレームに読み込んでJavaScriptから操作させたとする
それは相手のページに自由にスクリプトを埋め込むことと同じ
つまりは歴としたCSRFだから、ハマチちゃん大増殖
0595Name_Not_Found
垢版 |
2021/03/06(土) 09:28:48.42ID:???
>>592
自分のページに
明らかに小さいフレーム埋め込むのしか想像してないっしょ
0596Name_Not_Found
垢版 |
2021/03/06(土) 09:52:25.83ID:???
>>594
それは偽サイトが作りやすくなるからダメってこと?
偽サイト作るなら別にそれなくても出来るよね
HTMLの中身全部コピーしてその偽サイトに置いちゃえばいいから
それやらないで、1枚HTMLの皮かぶせるだけで被害者を騙せるようになる?
ただ、そのHTMLの皮だってそれなりのURLのとこに置かないと騙せない気がするが
0597Name_Not_Found
垢版 |
2021/03/06(土) 09:58:39.63ID:???
>>595
うん
HTMLは一旦ローカルにコピーされてから表示されるわけで、同じオリジンのHTMLのコピーはjavascriptで好きに改変できるんだから、
iframe で表示するためにローカルにコピーしたHTMLだって好きに改変させてよ、と思う
開発者用ツールでは出来るんだし
0598Name_Not_Found
垢版 |
2021/03/06(土) 10:00:37.92ID:???
>>596
> ただ、そのHTMLの皮だってそれなりのURLのとこに置かないと騙せない気がするが

あ、メールの添付ファイルで送りつけちゃえばいいのか
0599Name_Not_Found
垢版 |
2021/03/06(土) 10:15:19.91ID:???
HTMLファイルを添付ファイルで送るんじゃなくて、メールをHTMLで書いてaタグのhref属性でヤバいとこにリンクして表示はまともなURLを表示すればいいか
0600Name_Not_Found
垢版 |
2021/03/06(土) 10:20:30.29ID:???
>>596
違う

もちろん自前で使うならば問題はない
しかし万が一そんなものが出回った場合に、製作者の責任とか難癖つけられて、とっても非難されるのは目に見えてる
だから、誰もそんなものは作ったとしても公開とかしない


具体的な攻撃シナリオを提示
ページに「視認できないサイズのiFrame」でアマゾンを開いておく
大体の人はログインしっぱなしだろう
そして iFrame の JavaScript を操作して、とにかく注文しまくる
0601Name_Not_Found
垢版 |
2021/03/06(土) 10:35:06.20ID:???
>>600
なるほど
それはヤバそうだ
基本的に人間が手動でできることはやりたいと思ってたからそれができるとその攻撃でやられちゃうな
自作のブラウザ作ってそれ出来るようにしちゃうとヤバいな
まあそんなブラウザ世の中に存在しないだろうからそういう攻撃もないかも知れんが
0602Name_Not_Found
垢版 |
2021/03/06(土) 11:03:37.12ID:???
ブラウザにブロックされるクロスオリジンはhttp proxy使ってレスポンスヘッダを変更すれば回避できる
スクレイピング時はよく使う
0603Name_Not_Found
垢版 |
2021/03/06(土) 11:37:30.89ID:???
>>601
ヘッドレスクロニウムでいくらでもできるんだが
0604Name_Not_Found
垢版 |
2021/03/06(土) 11:39:02.33ID:???
拡張機能にユーザーが権限与えて通信する分には問題ない
勿論怪しい拡張機能もあるがそこはユーザーの判断
0605Name_Not_Found
垢版 |
2021/03/06(土) 11:46:39.87ID:???
クロスオリジンがブロックされるのはブラウザのユーザーを守るため
ユーザーがリスクを理解してブロックされないようにするのは自由
0606Name_Not_Found
垢版 |
2021/03/06(土) 12:49:06.79ID:???
>>592
銀行のサイトから預金残高を取られて
病院のサイトから健康情報を取られてもいいなら
問題ないかもね
0607Name_Not_Found
垢版 |
2021/03/06(土) 14:32:39.59ID:???
全く関係ないw
クロスオリジン理解してないやつ多いんやな
0608Name_Not_Found
垢版 |
2021/03/06(土) 15:14:35.57ID:???
消えた理由は聞いたことないけど、一時期採用されてたユーザースクリプトも、悪用の可能性を消せなくて消えて行ったんだと思う
あれもクロスオリジンの壁を越える一つの手段だったから
0609Name_Not_Found
垢版 |
2021/03/06(土) 15:41:36.59ID:???
ユーザースクリプトは今でも普通に使える
クロスオリジンの制限はあるけど
0610Name_Not_Found
垢版 |
2021/03/06(土) 19:42:11.54ID:???
>>606
その程度なら
見やれてもそんなにダメージない気もするw
0611Name_Not_Found
垢版 |
2021/03/06(土) 22:06:32.77ID:???
「要素をクリックしたら」というイベントを設置しつつ、フラグを仕込んで処理が終わるまで
重複で発火しないようにしてあります。

ですが、androidのchrome、もしくはPCのchromeの検証ツールでスマホ表示にすると、
何故か何度もクリックできてしまうようです。
ただし、クリックするたびに画面がガクガクもたつくだけで、イベントの処理自体はフラグで中断されているようでした。
何が原因と思われますでしょうか。

イベント発火後に対象要素全てに対してpointer-events: none;を付けてみましたが、
それでもクリックできてしまっています。

var btn = document.getElementsByClassName('btn');
var flg = false;
var btnClick = function() {
if (flg) return;
flg = true;
処理
flg = false;
};
var fn = function() {
Object.keys(btn).forEach(function(v) {
btn[v].addEventListener('click', btnClick);
});
};
fn();
0612Name_Not_Found
垢版 |
2021/03/06(土) 22:09:36.46ID:???
>>611自己レスです
対象要素ではなく、どこをクリックしても画面がもたつく感じですので
タッチイベント周りかもしれません。
0613Name_Not_Found
垢版 |
2021/03/06(土) 22:29:09.83ID:???
JavaScript はシングルスレッドだからフラグで排他処理しようとしても意味がないんだと思ってたけど、
思い込みで間違ってる?
0614Name_Not_Found
垢版 |
2021/03/06(土) 23:00:15.59ID:???
処理中はボタンをdisabledしとけばいいのでは?
0615Name_Not_Found
垢版 |
2021/03/06(土) 23:07:49.02ID:???
メインスレッドだけなら1つの関数が同時並列に実行されることはない

がクリックイベントはJSのmessage queueにキューイングされるんで
ボタンがクリック可能なら何度でもクリックできる

だいたい防げればいいのであればとりあえずボタンをdisableにすればいい
OSのイベントキューもあるから100%複数クリックを防ぐのは無理
0617Name_Not_Found
垢版 |
2021/03/07(日) 08:48:17.50ID:???
>>614-615
btnという名前のa要素でして、disabledと同等だろうpointer-events: none;を
使っておりましが駄目でした。

>>616
クリックイベントが原因ではなく、タッチイベントが原因だったようです。
処理中にタッチイベントの停止と開始を組み込んだところ、画面を連打しても
ガクガクしなくなりました。

皆さまアドバイスありがとうございました。
0618Name_Not_Found
垢版 |
2021/03/07(日) 09:55:08.49ID:???
タッチイベントで何してるかは分からんが、passiveで良いものはpassiveにしないとダメだぞ
0619Name_Not_Found
垢版 |
2021/03/07(日) 10:24:51.40ID:???
>>613
間違ってる
JavaScriptはシングルスレッドだから
JavaScriptを呼び出す側をマルチスレッドにすることで
擬似的にJavaScriptがマルチスレッドっぽくなるように作られてる
0620Name_Not_Found
垢版 |
2021/03/07(日) 10:52:29.62ID:???
>>618
タッチイベント自体は何もしていないです。
スムーススクロール中に発生していたのですが、利用しているのはクリックイベントでした。

何が原因かさっぱりですが、他イベントでpassive: false;にすると影響出たりするのでしょうか?
0621Name_Not_Found
垢版 |
2021/03/07(日) 12:10:39.09ID:???
>>619
Web Worker なら変数のスコープは独立してるからフラグにはアクセスできないよね?
0622Name_Not_Found
垢版 |
2021/03/07(日) 19:29:57.00ID:???
>>613
ストレージ系は共有されているので排他処理が必要になる
そうでなくとも1つの動作が非同期処理含むものだと
その間に他の処理が割り込む余地が生まれるから
広い目で見て排他処理が必要な時はある
0623Name_Not_Found
垢版 |
2021/03/07(日) 19:41:38.39ID:???
>>621
そんな話はしてない。シングルスレッドでも排他処理は必要という話だ。
0624Name_Not_Found
垢版 |
2021/03/07(日) 19:51:32.45ID:???
>>623
ワケわからん
シングルスレッドならば処理途中に割り込みされない
擬似的にマルチスレッドすれば割り込まれる
しかし擬似マルチスレッドでは、排他以前に変数アクセスできない

排他したいが変数じゃ無理でしょ、と言ってるんだけど
0625Name_Not_Found
垢版 |
2021/03/07(日) 19:53:49.90ID:???
>>619の認識は間違ってるから掘り下げても無駄だぞ
0626Name_Not_Found
垢版 |
2021/03/07(日) 19:55:43.12ID:???
>>622
JavaScriptはシングルスレッドだから「フラグで」排他処理はできないんじゃない?
と言ってるんだが
排他処理の是非なんて話してないよ
0627Name_Not_Found
垢版 |
2021/03/07(日) 20:09:38.03ID:???
>>626
「是非」という言葉の意味を分かってる?
>>622のどこをどう読んだら是非について語ってると思えるのかが分からんが
そこに拘ってたら話が進まないのでリセットする

別にフラグでも排他処理はできるでしょ
たとえばコンテンツの表示内容を通信で取ってきて更新するupdate関数を考えたとき
通信開始して更新が完了するまでの間に関数が多重に呼ばれることのないようにしたいでしょ

そしたらフラグを使ってこのように書いてもいいじゃん

let flag
async functuon update() {
if (flag) return
flag = true
elm.textContent=await (await fetch('......')).text()
flag = false
}

他にもアニメーションの関数があれば
アニメーション中に再び呼ばれることがないようにしないと
アニメーション中にアニメーションが開始されたら
よくイメージできるようなガクガクブレブレの表示になるでしょ
それも同じようにフラグによって回避できる

ちなみにフラグを使うときの注意点は例外が起きたり、
うっかりフラグが立ったまま抜けてしまうこと
本当に複雑に非同期が絡み合うと、どうしても予想外なデッドロックが起こりがち
そういうときにはタイムアウトを入れたり
定期的にタイムラインを精査して「掃除」したりして
最悪ごまかしで対処しないといけなくなる
0628Name_Not_Found
垢版 |
2021/03/07(日) 20:12:35.67ID:???
複数回クリックさせたくないならどこかのレイヤーでスロットルしないと

キューイングされた処理を1つ1つ逐次処理してるんだから
>>611のように非同期でない1つ処理を変数で排他制御しようとしたところで意味はない
0631Name_Not_Found
垢版 |
2021/03/08(月) 03:26:27.72ID:???
>>624
排他処理がなにかわかってるのか?
共有のリソースを、片方が使ってる間に別のものが使うのを防ぐものであって
複数のスレッドとは限らないんだが
0632Name_Not_Found
垢版 |
2021/03/08(月) 10:02:06.42ID:XBQ7g0fZ
超初歩的な質問なんですけど
var array = [0,1,2,3,4,5,6,7,8,9];
っていう配列があったとして、9を消したかったら[0,1,2,3,4,5,6,7,8]となって1を消したかったら[0,null,2,3,4,5,6,7,8,9];になるメソッドってありますか?
nullじゃなくてemptyでも空ってわかるものなら何でもいいんですけど
0633Name_Not_Found
垢版 |
2021/03/08(月) 10:09:22.69ID:???
>>632
ないんじゃね?
Arrayを使うユースケースじゃなさそうだけど
0634Name_Not_Found
垢版 |
2021/03/08(月) 10:10:01.08ID:XBQ7g0fZ
>>633
マジっすか
じゃあforで頑張ります
0635Name_Not_Found
垢版 |
2021/03/08(月) 10:21:00.20ID:???
なんでfor?
末尾ならpopしてそれ以外ならnullかemptyで上書きするメソッドを書けばいいでしょ?

でも結局nullかemptyのハンドリングが必要だから末尾でも同じように処理して問題ある?
もしデータ量が多くてコンパクションが必要なケースならpopしただけじゃダメな気がするので
コンパクション目的の処理を別途切り出したほうがいいかも
0636Name_Not_Found
垢版 |
2021/03/08(月) 11:16:33.09ID:???
そこら編のアルゴリズムはlodashにたくさんあるだろう
0637Name_Not_Found
垢版 |
2021/03/08(月) 12:09:18.55ID:???
9を消したいってのがindexの9なのか中身の9なのか
0638Name_Not_Found
垢版 |
2021/03/08(月) 13:14:57.25ID:???
Array.spliceじゃいかんの?
0639Name_Not_Found
垢版 |
2021/03/08(月) 16:48:22.01ID:???
あの〜馬鹿馬鹿しい質問なのかも知れないのですが。。
let newArr などで宣言した変数がブラウザのコンソールから呼べません…
varならどこからでも参照できるのかなと思ってvarにしてもダメ。
全部外して、newArrだけにすると呼べます。これはナゼですか?
0640Name_Not_Found
垢版 |
2021/03/08(月) 17:06:29.32ID:???
ある要素にホバーすると、その要素の上端に高さ不定のホップアップが表示されるようになっています。
このホップアップが位置次第ではbodyの上端を超えてしまいます。
ホップアップはposition: absolute;で座標を指定しているので
bodyに高さは反映されません。

このような場合にホップアップの分だけ上にスクロールしたいのですが
何か良い方法はありませんでしょうか?

jsでホップアップの高さの分だけbodyに高さを付与しようと思っていますが
恐らく高さが増えた瞬間に表示位置がずれてしまうと考えています。
表示位置が変わらずに対処する方法はありますかね?
0641Name_Not_Found
垢版 |
2021/03/08(月) 17:06:57.38ID:???
それローカル変数なんだろw
0643Name_Not_Found
垢版 |
2021/03/08(月) 18:18:57.94ID:???
>>640
トライした結果のコードか
トライする前の状態のコードを
最小限のサンプルにしてjsfiddle辺りに上げて
0644Name_Not_Found
垢版 |
2021/03/08(月) 18:44:57.61ID:8R1fLvCf
配列同士を比較して値が含まれてたらそのインデックスを返させるには
どうすればいいの?
0646Name_Not_Found
垢版 |
2021/03/08(月) 18:56:00.74ID:???
あ、配列同士?
なら要件による
>>644 でははしょられ過ぎで分かんない
0647Name_Not_Found
垢版 |
2021/03/08(月) 19:10:17.11ID:???
>>646
ごめん、説明が足らんかった
['1', '2', '3']に対して['3','4','5']を比較して
= index[0]って取得したいの
0648647
垢版 |
2021/03/08(月) 20:43:46.87ID:???
あ、もしかしてそんなメソッドは存在しなくて
右の配列から1つづつ取り出して、何個目でヒット
みたいなのをIndexOfとかforEachなんかでやるしかないっぽいかも。。
0649Name_Not_Found
垢版 |
2021/03/08(月) 21:18:09.42ID:???
['1', '2', '1', 3’]に対して['3', '1', '4', '5', ‘3’]なら?

データ量と返したインデックスをどう使いたいかとかによっていろんなやり方あるね
0650Name_Not_Found
垢版 |
2021/03/08(月) 22:40:30.05ID:???
>>647
とりあえずこんな感じか?
細かいところは好きに調整して

var a = ['1','2','3','4'];
var b = ['3','4','5','6'];
var result = b.map((v,i) => {
return a.includes(v) ? i : null;
}).filter(v => v != null);
console.log(result);
console.log(result[0]);
0652Name_Not_Found
垢版 |
2021/03/09(火) 07:03:27.88ID:???
過去質問のコピペに回答するのが流行ってんのか
0653Name_Not_Found
垢版 |
2021/03/09(火) 08:21:07.40ID:???
質問者が自分にとって自明で、回答者にとって自明でない、本来質問に必須のコンテキストを削ぎ落としてしまいがちなバイアスのことなんて言うんだっけ?
0654Name_Not_Found
垢版 |
2021/03/09(火) 09:44:20.83ID:???
アンカー要素をクリックするとスムーススクロールをする場合に
スムーススクロールをするメソッドには手を加えずに、一部のアンカー要素では
スクロールさせないといったようなインターセプト的な技法はありますか。
0656Name_Not_Found
垢版 |
2021/03/09(火) 10:10:30.02ID:???
>>655
早速どうも
剥がすというのはremove.eventListenerのことでしょうか。
そうであれば剥がすためにスムーススクロール側のスクリプトに手を加える方法しか
私では思いつきませんので、やり方をお教えいただけませんか。
0657Name_Not_Found
垢版 |
2021/03/09(火) 10:55:55.78ID:???
>>656
スムーススクロールをどうやってるのか知らんが、
セレクタを変えるだけだろう?

$('A').smoothScroll() から
$('.target').smoothScroll() に変更するだけ
0658Name_Not_Found
垢版 |
2021/03/09(火) 19:33:32.90ID:???
クリックイベントを先に受け取って破棄すればいい
0659Name_Not_Found
垢版 |
2021/03/09(火) 22:00:30.46ID:???
>>657
スムーススクロールはhrefに#があれば自動でイベントの対象となる作りになっています。
また、セレクタを変更するのはスムーススクロール川のスクリプトに手を加えているので
希望の対処法ではありません。
すみません。

>>658
具体的にはどのような手順になりますか。
0660Name_Not_Found
垢版 |
2021/03/09(火) 22:26:07.57ID:???
capture:true
stopImmediatePropagation
0661Name_Not_Found
垢版 |
2021/03/09(火) 22:49:41.94ID:???
>>659
その実装は
うんことまでは言わんまでも
10年前のやり方なんでやめた方がいいんじゃない?

今みたいに困るから
0662Name_Not_Found
垢版 |
2021/03/09(火) 23:23:28.55ID:???
私の状況を助けていただけませんでしょうか。
職場にキオスク端末に今までブラウザのキオスクモードで
Flashコンテンツを表示させていたのを、
JSとHTMLで刷新することになりました。

端末は旧新混在しており大きく分けて感圧式と静電容量式があります・
Flashを使っていたときは気にすることはなかったのですが、
ボタンなどをDOMで構築するとかなり押し心地が異なります。
おそらく感度や制度、画面の厚みからくるものだと思います。
(Flashコンテンツではなぜかある程度調整が効いているようです)

そこで端末がどちらに含むのかを認識して調整をかけたいと思い奮闘したのですが
UAなどJSから簡単に取得できる情報は際がありません。
あとはmatchMediaくらいかなと思っているのですが、
このAPIの掘り下げ方が分からず行き詰まっております。

助けていただけませんでしょうか?
0663Name_Not_Found
垢版 |
2021/03/09(火) 23:25:16.87ID:???
すみません。徹夜続きで寝ぼけていたのもあり誤字があまりに多いです。
失礼しました。
0664Name_Not_Found
垢版 |
2021/03/09(火) 23:44:53.03ID:???
切羽詰まってる感は伝わった
ま、頑張りぃ
0665Name_Not_Found
垢版 |
2021/03/09(火) 23:54:01.29ID:???
ajaxを使い動的に生成した要素の親要素を基準として.childrenで動的要素を取得すると
漏れてしまう要素があります。
動的要素ってそういうもんですか?
0666Name_Not_Found
垢版 |
2021/03/10(水) 00:32:54.86ID:???
そういうもんではない
バグ
0667Name_Not_Found
垢版 |
2021/03/10(水) 01:11:35.98ID:???
もしかしてお望みの物はchildNodesですか?
0668Name_Not_Found
垢版 |
2021/03/10(水) 01:16:49.47ID:???
>>662
面白そうな仕事で裏山
質問に質問で返すようで悪いんだけど、そもそもHTMLで作る際に調整なんてあるの?
touch系のイベントを使ってなくて、clickしか設定してないとか、そういう基本的なことではなくて?
0669Name_Not_Found
垢版 |
2021/03/10(水) 15:03:54.95ID:???
>>659
> スムーススクロールはhrefに#があれば自動でイベントの対象となる作りになっています。
それを修正するだけで終わる話ですね
0670Name_Not_Found
垢版 |
2021/03/10(水) 15:04:31.09ID:???
APIでjsonデータを取るようになってから、クラウドDB使用時のfirefoxの
アドレスバーの左端に「以下のサイトが、あなたがこのサイトにいる間、
クロスサイト cookieとサイトデータにアクセスできます。」
って表示されてるんですがこれ危ないやつですの…?
0671Name_Not_Found
垢版 |
2021/03/10(水) 21:49:33.57ID:???
>>660
おぉ!!!
ありがとうございます。
まさにインターセプト的な割り込みです。

capture: true って親子関係にある要素の同イベントの例ばっかりで、
今のところ使いどころないなと思っていたのですがこんな使い方があるなんて。
0672Name_Not_Found
垢版 |
2021/03/11(木) 10:30:11.07ID:???
>>670
おれも気象庁のデータ引いたらそれなった。
平気なんじゃね?知らんけど。
0673Name_Not_Found
垢版 |
2021/03/11(木) 15:28:52.22ID:???
>>647
配列を集合と見立てて、配列同士の積・intersection とか、Lo-dash に無いの?

Ruby なら、
[1, 1, 2, 3] & [3, 1, 4] #=> [1, 3]
0674Name_Not_Found
垢版 |
2021/03/11(木) 19:15:35.73ID:???
Arrayにわんさかメソッドが入る案がES4時代から合ったが
少し入っただけで今は鳴りを潜めてる
近い未来で機能が増える予定はない

一方集合関係のメソッドがSetに追加されることはほぼ確実
その他に[1,2,3]==[1,2,3]の性質を持ったTuple型が入る予定なので
今後はArrayではなくそれらに期待すべき
0675Name_Not_Found
垢版 |
2021/03/11(木) 19:19:53.34ID:???
>>673
結局for文の中でfor文回して2つのカウンターで
取り出して比較しちゃった
4行で済んだし とりあえずは事足りたなり
0677Name_Not_Found
垢版 |
2021/03/11(木) 21:58:44.86ID:???
>>676
初級者だからO(N^2)?なにそれ?だったけど
調べてみたらソレだった…!
0678Name_Not_Found
垢版 |
2021/03/11(木) 22:00:48.56ID:???
と思ったらコレ計算量多くてアカンやつなのか。。。
0679Name_Not_Found
垢版 |
2021/03/11(木) 22:10:24.37ID:???
状況次第
データ量が少なければO(N^2)でも別に構わない
0680Name_Not_Found
垢版 |
2021/03/11(木) 23:01:55.70ID:???
7 * 12くらいの処理だし平気かな…
O記法とか知らなかったし学びになった 感謝
0681Name_Not_Found
垢版 |
2021/03/11(木) 23:06:36.41ID:???
ちょっと手を入れればN^2にはならんと思う

チェック先の3,4,... で「最初に」ヒットしたインデックスが必要なら、チェック元1,2,...の順序は関係ない
だからチェック元はソート
あとはチェック先の要素を回して二分探索
0682Name_Not_Found
垢版 |
2021/03/11(木) 23:16:21.76ID:???
配列が大きくなったらチェック元はSetに突っ込んじゃうのが楽だと思う
0683Name_Not_Found
垢版 |
2021/03/12(金) 06:37:51.36ID:???
計算量が多くてアカンと考えるのが間違ってる
計算量が多い計算をするためにコンピュータはあるんでしょ
0684Name_Not_Found
垢版 |
2021/03/12(金) 07:42:08.50ID:???
データ量が多ければ・・・
O(1) > O(log n) >> O(n) >> (超えられない壁) > O(n^2)
みたいになるんだから計算量を減らす事は考えなきゃダメでしょ

前の人らが言ってる少ない配列なら大差ないけれども
0685Name_Not_Found
垢版 |
2021/03/12(金) 08:20:55.63ID:???
>>683
計算量が少ない計算ってなんですか?
例えば+1するだけの計算でも1京回繰り返せば
あなたがコンピュータでやりたいと思っている計算量が多い計算になるんですが?
0686Name_Not_Found
垢版 |
2021/03/12(金) 09:59:47.07ID:RzfAPVX0
>>683
それはちょと違う
一回毎の時間と精度が違うだけなんだ

量については
人間の暗算でも、そろばんでも、コンピュータでも変わらん
0687Name_Not_Found
垢版 |
2021/03/12(金) 12:04:26.49ID:???
計算量はcomplexityの訳語

アルゴリズムの計算量(complexity)とは
そのアルゴリズムを実行するのにどのくらいのリソース(主に時間と空間)が必要になるかを示すもの

ビッグO記法はアルゴリズムの計算量の表現形式
0688Name_Not_Found
垢版 |
2021/03/12(金) 12:54:57.09ID:???
漏れらは、n^2 を見たら、

反射的に、n log n にならないか、考える
0689688
垢版 |
2021/03/12(金) 13:35:13.04ID:???
Google などのプログラミング・コンテストなどは、計算量の見積もりする

1秒間に数百万回ループできる。
Ruby などの動的言語では、1秒間に百万回ぐらいだけど

n log n の形とか、グラフ・動的計画法・メモ化とか
0690Name_Not_Found
垢版 |
2021/03/12(金) 14:27:27.75ID:???
推奨NGワード: 漏れ
推奨NGワード: Ruby
0691Name_Not_Found
垢版 |
2021/03/12(金) 22:16:39.98ID:???
>>684
データ量がもう常識はずれに明らかに多ければね
でも原則最適化は実際困ってからしっかり分析して考えるべきものでしょ
それ自体が良いことと信じ込んで目的化したり、感覚でやるものじゃない

それよりもコーディング速度重視で愚直に仕上げて
最後に問題になったらそこを潰すほうに時間をかける方が
1つ1つのことに考え出すよりよっぽど建設的で効率的

プログラムっていうのは全体で動いているのであって、
君が拘ったコードが実際は1回も働かないということだって十分ありうるのだから
人にアドバイスするにしてもどこに力に入れるべきかはよく考えたほうがいい
0692Name_Not_Found
垢版 |
2021/03/12(金) 22:41:56.85ID:???
最適化するかどうかは状況次第だがアルゴリズムのオーダーは把握しておいたほうがいい
かといって競プロみたいのばっかりやるのは逆に害のほうが大きいけど
0693Name_Not_Found
垢版 |
2021/03/12(金) 23:03:24.02ID:???
最適化はエンジンの仕事
俺らのしったこっちゃねえ
エンジンが状況を慎重に判断して
より高速で等価な演算に変えるべきだろ
人間は何をしたいか意思を示すことが仕事だ
0694Name_Not_Found
垢版 |
2021/03/12(金) 23:30:54.72ID:???
量子コンピューターの一般家庭普及をまちたまえ
0695Name_Not_Found
垢版 |
2021/03/13(土) 00:35:43.46ID:???
長文は顔真っ赤なんだよな…
0696Name_Not_Found
垢版 |
2021/03/13(土) 02:11:48.31ID:???
>>694
量子コンピュータってのは
今俺らが使ってるコンピュータのすげーやつってわけじゃないんだ

名前が似てるだけの別のもの
JavaとJavaScriptくらい違う
0697Name_Not_Found
垢版 |
2021/03/13(土) 07:50:55.39ID:???
JavaとJSって言われたら案外何とかなりそう
0698Name_Not_Found
垢版 |
2021/03/13(土) 08:23:46.39ID:???
メロンとメロンパンくらい違う
0700Name_Not_Found
垢版 |
2021/03/13(土) 09:52:42.82ID:???
ウグイスとウグイス嬢くらい違う
0702Name_Not_Found
垢版 |
2021/03/13(土) 13:56:59.30ID:???
>>696
今回の質問のような検索は量子コンピュータに向いてる
0703Name_Not_Found
垢版 |
2021/03/14(日) 11:53:08.21ID:???
HTMLスレとどちらに書こうか一瞬迷ったけど
最新版のChromeに更新したらcoverageバグってないか?
通してないifルートもパスしたことになっちゃう
ブレークポイント仕掛けてもブレークしないから実際に通ってない
Promiseのcatchというかrejectルートはパスしてない表示なんで、全部おかしいわけじゃない
0705Name_Not_Found
垢版 |
2021/03/14(日) 13:07:13.72ID:IeQ5RRZ6
>>704
https://jsfiddle.net/yrhnkmjf/
最小限だとこうかな?
if (false) {
console.log("pass");
}
の pass は通らないがパスした色で表示される。
0706Name_Not_Found
垢版 |
2021/03/14(日) 13:21:51.87ID:???
>>704
開発者ツールのSourcesでCoverage出して再読み込み
カバーされてない行は行番号横のラインが赤く表示される

関数内の通してないifブロックの行も今までは赤く出てた、と思う
昨日、Chromeの更新マークが出てたんで更新した
そして今日Coverageを実行したら赤く出なくなってた
0707Name_Not_Found
垢版 |
2021/03/14(日) 13:35:22.34ID:IeQ5RRZ6
>>704
今日も更新されてたみたい
バージョン: 89.0.4389.90(Official Build) (64 ビット)

でも現象は未だに再発する
0708Name_Not_Found
垢版 |
2021/03/14(日) 15:07:50.06ID:???
あのねぇ……
関数っていうのは定義時に例外判定で捜査される以外に、
呼び出しの瞬間に中の(ネストされた関数内を除く)構文が一度すべて評価されるの
じゃないと変数宣言とか処理できないでしょ?
だから関数が呼ばれた時点で中身はすべてカバーされたことになるのよ
わかる?

いくらif(false){}だろうが
もしif(false){var x}みたいな記述があったら当然関数全体に影響するでしょ?
実行系のバグを疑うのは最後の最後
最低でもbugs.chromium.orgくらいは見て考えてからにしたほうがいいよ

「。。。と思う」とか最悪だから
なんで君の妄言に俺らが付き合わないといけないの?
0709Name_Not_Found
垢版 |
2021/03/14(日) 15:48:35.61ID:???
付き合うも付き合わぬもあなた次第
気に入らなければ喧嘩売るよりスルーしましょう
0710Name_Not_Found
垢版 |
2021/03/14(日) 15:51:54.13ID:???
勝手に5ch見て勝手にレスしてこの言い草は草
0711Name_Not_Found
垢版 |
2021/03/14(日) 16:13:03.77ID:???
>>708
うーん、Chromeのカバレッジって元々C0にすら対応してなかったという話なのか?
対応してたと思ってたのが買い被りの勘違いだったんだな
0712Name_Not_Found
垢版 |
2021/03/14(日) 16:17:41.46ID:???
>>708
いや、カバレッジ設定を見直したら Per block 指定があるじゃないか!
アプリの更新で何故か外れてしまっていたための異常だと判明
0713Name_Not_Found
垢版 |
2021/03/14(日) 17:11:07.21ID:???
87と89で試したけど動きが変わってるのは確かだね
87だとなぜかPer functionでもif(false)を含めた3行が赤くなったが
89だとPer blockにしないとダメだった

修正項目にはあがってないけどなんか手入れたんじゃね?
0714Name_Not_Found
垢版 |
2021/03/14(日) 17:43:46.93ID:???
89でも関数の先頭行にブレークポイントを設定してF8とかで最後まで実行した時は
Per functionを選択しててもif(false)を含めた3行は赤くなるな

ブレークポイントの位置でも結果が変わるから
こういうやり方でカバレッジを見るのは想定してないのかもしれないが
0715Name_Not_Found
垢版 |
2021/03/14(日) 18:45:54.20ID:???
そうか逆なのかもしれませんね
今までも Per function だったけど何故か Per block として動いていたのがバグで
今回の更新で正しく Per function として動くようになった
0716Name_Not_Found
垢版 |
2021/03/16(火) 21:44:53.95ID:???
イベントリスナの登録順序って先に読み込まれた方が上に来ると考えてよいのでしょうか?
2つの.jsファイルがあって、それぞれload完了後に処理が走るようになっているのですが
ファイルを読み込む順番を変えてもイベントリスナの登録順序は変わらなかったです。

今はcapture tureを使って制御しているのですが、可能であれば登録順序側で
制御したいです。
0717Name_Not_Found
垢版 |
2021/03/16(火) 22:01:51.57ID:???
$('#flg_' + n).attr('checked', !0) みたいな記述で、
1 や true でなく !0 とするのはどんな意味があるのでしょうか?
0718Name_Not_Found
垢版 |
2021/03/16(火) 22:21:19.15ID:???
>>717
boolに変換するため && コードをコンパクトにするため
0719Name_Not_Found
垢版 |
2021/03/16(火) 22:26:38.80ID:???
その場合1だとchecked="1"になるが、!0はchecked="true"になる
tureより2文字短いというだけ
0720Name_Not_Found
垢版 |
2021/03/16(火) 22:33:44.42ID:???
年食うと細かい文字がキツイんでtrue/falseで通すがlinterが ! 使えば?とか言ってくるのがウザい
どの言語でもlinter導入すると、まず改行系と省略系を殺す設定を探すところから始まる
0721Name_Not_Found
垢版 |
2021/03/17(水) 01:05:19.24ID:???
>>717
javascriptにおいてはまったく無意味なコードなんで格好つけてるだけですよ
0722Name_Not_Found
垢版 |
2021/03/17(水) 02:32:23.54ID:???
>>720
linterが!を使えばって言うのは変数をboolに変換する時じゃないのかな?

>>721
!0や!1は人間が書くコードじゃなくminifyされたコードだぞ
0724Name_Not_Found
垢版 |
2021/03/17(水) 06:29:03.92ID:???
>>722
いや例えば boolean 返してくる感じの関数の戻り値の否定で if (false==contains(hoge)) {}とか書くと冗長ですとか言い出すlintってたまにあったりする
simple: false とか冗長警告を切る設定をまずは見つけないと
0725Name_Not_Found
垢版 |
2021/03/17(水) 08:08:14.22ID:???
minifyってなんだろうーと思って調べてみたら
web系はインデントなんかも読み込み遅くさせる要因なのか…
初学者にはお勉強になりました 完成したら改行程度は残して詰めちゃおっと
0726Name_Not_Found
垢版 |
2021/03/17(水) 10:44:58.94ID:???
おい待て人の手でやるつもりか
0727Name_Not_Found
垢版 |
2021/03/17(水) 11:17:33.45ID:???
>>724
うーーん・・・
ヨーダも気になるがboolean以外のfalsy/truthyを考えてなさそうだからすごく気持ち悪い
0728Name_Not_Found
垢版 |
2021/03/17(水) 12:31:51.65ID:???
>>725
世界的には数十Kbpsしか出ない環境もまだまだあるからminifyが流行ってるが
日本じゃインデントをどうにかしたくらいじゃ誤差程度にしか変わらん
やるとしたら今策定中のバイナリastを送るのはパースまで含めて大きな効果が期待できる。
あと5年まて
0729Name_Not_Found
垢版 |
2021/03/17(水) 13:26:54.74ID:???
>>728
そっ そうなんですね…
じゃあ読みやすさ重視でいいか…
0730Name_Not_Found
垢版 |
2021/03/17(水) 15:23:06.27ID:???
だから人間が書く時にやるんじゃねぇって

network traffic的にはgzipしてればminifyの有無では数%しか変わらないがそれに価値がある場合もある
network以外でもparse & loadはサイズが小さいほうが有利
0731Name_Not_Found
垢版 |
2021/03/17(水) 16:20:47.98ID:7etG1PEx
>>728
うそーん
そんなしょうもない理由?

送出の総量を抑えるため違うん?
0732Name_Not_Found
垢版 |
2021/03/17(水) 16:30:46.32ID:???
>>723
策定中ということは、ファイルの読み込み順序を変えることは意味がないってことなのですか?
0733Name_Not_Found
垢版 |
2021/03/17(水) 21:26:21.51ID:???
あと5年待てと言うが5年後には状況変わってると思う
来年には待望のIntel7nmCPU(PC向け)が出る
3年後には5nm、そしてチップ積層化、メニーコア化

5年以上前からIntelのPC向けCPUは大きく成長していないが、漸くここ数年で大きく成長できそうな目処が付いてる

パース周りは勿論、他にもworklet系もそのメニーコアを活かす形でまともに使えるようになってるでしょ
ミニファイとかアイコン画像を1枚にまとめていたような半ば黒歴史になるだけだと思うけどね
0735Name_Not_Found
垢版 |
2021/03/18(木) 00:39:50.22ID:???
!0よりtrueのほうが電力消費少ないんじゃね?
0737Name_Not_Found
垢版 |
2021/03/18(木) 06:52:13.51ID:???
電力半分ぐらいになるかもな
0738Name_Not_Found
垢版 |
2021/03/18(木) 13:52:10.16ID:Y2g//f/y
>>733
その辺の事情はあまり関係ないと思う

コードの圧縮や画像のスプライトは
1ページのユーザビリティを考えて出来たものではなく
大アクセスのあるサイト運営のコストとなる
伝送量やリクエスト数を減らそうというものだから

なのでその辺のテクニックが黒歴史化するのは
ハードウェアやブラウザなどの進化ではなく
サーバと回線を売るビジネスが変わったときになるはず
0739Name_Not_Found
垢版 |
2021/03/19(金) 23:53:18.10ID:???
それは理想的な話
この世界は理想通りでは動かない

実際ベストプラクティスみたいにされて
そんな伝送量気にしなくていいサイトまで使ってたしな

ただハードの事情が直接関係ないというのは合ってる
そういうのはただの流行り廃りでしかないからね
0740Name_Not_Found
垢版 |
2021/03/20(土) 00:06:46.79ID:???
クラウドで従量制の時代こそシビアになるもんかと思ってたけど
0741Name_Not_Found
垢版 |
2021/03/20(土) 06:11:02.46ID:???
>>740
そうそう

この手の技術が生まれた頃は
伝送量いくらまでおいくら万円という
携帯電話のプランのような段階的な契約を
データセンターやサイト自体が回線事業者としていた

それが現代ではAWSのようなクラウド鯖や
akamaiのようなCDNになって
もっと細かな従量課金になったので
小アクセスでもこの手の伝送量削減のテクニックは
むしろ活かされやすくなった
0742Name_Not_Found
垢版 |
2021/03/20(土) 14:13:12.82ID:???
アイコンをまとめても伝送量削減にはならんでしょ
使わないアイコンだって含まれているだろうし
もし100%使うとしてもそれを制御するJSやCSSの分伝送量が増えるんだから
それで伝送量を減らそうというのは継続的に相当難しいことだと思うよ
レスポンスの事考えてもHTTP2で数が多いファイルの伝送効率上がったしね

Googleくらいのアクセスがあって初めて効果があるようなこと
そのGoogleでも1回しか使われないアイコンはインラインSVGにするとか
1枚に組み合わせるのではなくて何枚かに分ける
(1つの目的は読み込み順と表示位置からくるレスポンス担保のため)
とか本当に様々な工夫と組み合わせて使ってるし
ただアイコンは1枚にバンドルすればいいというものではけしてない

素人は勿論、普通レベルのデベロッパーもやらない方がいい
0743Name_Not_Found
垢版 |
2021/03/20(土) 14:39:31.44ID:???
http2で思ったほど効率上げられなくてあっという間にhttp3策定されちゃったよね
0744Name_Not_Found
垢版 |
2021/03/20(土) 15:12:39.81ID:???
>>742
いつまで無知な言い訳を続けるのかww
もういいよ
0745Name_Not_Found
垢版 |
2021/03/20(土) 19:54:26.76ID:???
>>742
スプライトはリクエスト数が減るんだよ
0746Name_Not_Found
垢版 |
2021/03/20(土) 20:59:04.72ID:???
さすがにそれは無知夫くんでも知ってると思う
0747Name_Not_Found
垢版 |
2021/03/21(日) 01:33:47.56ID:???
他人と話す気がないのなら
鏡見て喋ってろ!!
0748Name_Not_Found
垢版 |
2021/03/21(日) 07:22:28.80ID:???
同一ページや共通ページで使う画像とかに対して普通やるもんだから
いらん画像なんて入れるのはただのアホやで
0749Name_Not_Found
垢版 |
2021/03/21(日) 07:27:04.29ID:???
gifアニメーション的な動きを多方位でやらせるために
html5ベースのゲームで多用されてる
0750Name_Not_Found
垢版 |
2021/03/21(日) 07:34:33.41ID:???
種々の最適化は手間と効果の兼合いだから採用しないってのも十分あり
minifyについてはそんなん考える前にビルド時に自動で走らせる場合が多い気がするけど
0751Name_Not_Found
垢版 |
2021/03/21(日) 10:33:31.70ID:???
KeyboardEvent で code, shiftKey,... とかの組み合わせ値から現在のキーボードレイアウトでの key を事前に求める、または逆に key から(ShiftLeftとか無理ですが)組み合わせを推定する手段は、標準では用意されてないでしょうか?
0752Name_Not_Found
垢版 |
2021/03/21(日) 11:50:35.10ID:???
>>751
>KeyboardEvent で code, shiftKey,... とかの組み合わせ値から現在のキーボードレイアウトでの key を事前に求める

keyを事前に求めるとは?
0753Name_Not_Found
垢版 |
2021/03/21(日) 12:29:31.83ID:???
>>752
KeyboardEvent にはキーを特定するために key を使う方法と code を使う方法があります
key は大文字小文字が別扱いです
code はキーボードレイアウトごとに同じ文字でも別扱いです (code==KeyZ でも key=='Y' だったりします)

例えば W というキートップであるキーを、上に移動という機能に割り当てたい、というケースに対して
一例として、key の値として 'w' と 'W' に対して一定値になる code を事前に求めておいて、イベント発生時には検索して目的の機能を呼び出すとか
そのために変換手段があればと考えましたが、見つけられませんでした

まあ w, W の両方を登録しておけば済む話ですが
0754Name_Not_Found
垢版 |
2021/03/21(日) 12:40:00.30ID:???
WASDを使うならユーザーにWASDを使いますと案内するわけで
キーボードの全体図を出してこの位置のキーを使いますと案内するわけじゃないでしょ
だったらcodeで認識するのは変で、keyで素直に認識すればいいだけ
ユーザビリティを考えるのであれば、キーコンフィグ機能を付ければいい
それで解決
0755Name_Not_Found
垢版 |
2021/03/21(日) 12:57:27.45ID:???
>>754
手段は標準では存在しない、でいいんですね?
0756Name_Not_Found
垢版 |
2021/03/21(日) 13:06:03.99ID:???
君がどういう目的で、どういう結果を求めているかイマイチわからない

そもそもキーボードっていうのはOSに複数接続可能だし、ソフトウェアキーボードもある
形も配置も、どんなキーがあるかも様々だ
それを踏まえてもまだ何かをしたいっていうのであればもっと詳しく書いてくれよ
0757Name_Not_Found
垢版 |
2021/03/21(日) 14:54:06.54ID:???
ぶっちゃけ keydown と keyup で key は違ったりすることもあるので key は使いにくい

keydown shift
keydown A
keyup shift
keyup a

どちらも code="KeyA"
かといって code はキートップ文字を表さない位置情報だからコンフィグで指定させるキートップ文字と対応できない


ブラウザは現在のキーボードレイアウトを参照していなければキーを返してくることは出来ないのが道理
ならば、code + shiftKey等を元に key
もしくは、key + shiftKey等を元に code
と片方からもう片方を求める手段は、標準としては用意されてないでしょうか?
と質問しています
0758Name_Not_Found
垢版 |
2021/03/21(日) 17:00:54.65ID:???
まだ良くわからんのだが
keyを元に、実際のキートップに印字されてる文字を取りたいってことなら、
KeyboardAPIのgetLayoutMapを使えばできるけどそういうこと?
0759Name_Not_Found
垢版 |
2021/03/21(日) 17:11:16.25ID:???
>>758
そうです!

と、調べてみると実験的で Firefox だと動かないのか……残念
0760Name_Not_Found
垢版 |
2021/03/21(日) 19:47:18.65ID:???
質問です
JSのプロパティとは、他の言語で言うところのフィールドと同じような意味と
捉えてよいでしょうか?
0761Name_Not_Found
垢版 |
2021/03/21(日) 19:55:47.67ID:???
いや、例えばC#のプロパティと同じでフィールドとは別に存在してるよ

this.xxxx = xx;
として作るフィールド
get xxxx() {return xx;}
として作るプロパティ(setter では get ではなく set)
どちらも instance.xxxx としてアクセスできる
0762Name_Not_Found
垢版 |
2021/03/21(日) 22:23:53.20ID:???
>>760
オブジェクトのプロパティはオブジェクトに定義されてるkey-value pairのこと
JavaやC#で言うフィールドとは少し違う

var foo = {
bar: "foo",
baz: "30",
qux: function() {
console.log(this.name, this.age);
}
}

上の例ならbar, baz, quxすべてオブジェクトのプロパティ
(それ以外に__proto__も定義されるけどそれはおいおい理解すればOK)
オブジェクト自体をkey-value pairを格納するものだと捉えておけばいいと思う

classの定義で使うconstructor()もプロパティの1つ
プロパティの値が関数になってるだけ

>>761に書いてるgetやsetで定義するのはアクセサプロパティというプロパティの一つの形態
0763760
垢版 |
2021/03/21(日) 22:53:01.26ID:???
>>761
>>762
回答ありがとうございます

オブジェクトの構成要素=プロパティ、と考えていいんですか?
0764Name_Not_Found
垢版 |
2021/03/21(日) 23:25:29.04ID:???
>>763
>オブジェクトの構成要素=プロパティ、と考えていいんですか?
いいです
0765760
垢版 |
2021/03/21(日) 23:33:04.95ID:???
>>764
分かりました
ありがとうございました
0766Name_Not_Found
垢版 |
2021/03/31(水) 12:52:57.76ID:???
usestrictモードでIE11で検証したところ、正しく変数宣言できていないとエラーが出ていましたが、
chromeでは何もエラーが出ませんでした。
基本chromeで検証しているので、こっちでもエラーが表示されるようにしたいのですが
何か方法はありますでしょうか?

エラーとしては下記のように連続して変数宣言をする際にカンマで繋げるべきところを
セミコロンを打っていたと言った感じです。
var sample1 = 'text';
sample2 = 'text;
0768Name_Not_Found
垢版 |
2021/03/31(水) 22:49:47.71ID:xTKH569N
npm inint npm install で ローカルに wscatをインストールしたんだけど
ターミナルから npm run wscat で 起動できません
なぜでしょう?
0769sage
垢版 |
2021/04/01(木) 07:16:27.99ID:n22atdh/
無名関数は同一ページに何個も定義できますか?
無名関数はそれぞれ中身は違うものとする
0770Name_Not_Found
垢版 |
2021/04/01(木) 07:28:27.58ID:???
>>769
経験的だけど上限に達したことはないです
Promiseのthenとか普通にみんな無名関数だし
よほど極端な使い方をしていなければ、気にしても仕方ないのではないかと
0771Name_Not_Found
垢版 |
2021/04/01(木) 11:32:12.98ID:???
>>767
外部ファイルの先頭に 'use strict'; と書いています。
その状態でIEでだけエラーを拾ってくれたので、他のブラウザでも
拾ってくれたらなと思っています。
0772Name_Not_Found
垢版 |
2021/04/01(木) 12:28:20.45ID:???
>>770
無名関数を複数定義したら
どうやってどの無名関数を使うか区別するんですか?
0773Name_Not_Found
垢版 |
2021/04/01(木) 12:42:50.15ID:???
区別なんてしないよ
その場で作ってその場で使うだけ
0774Name_Not_Found
垢版 |
2021/04/01(木) 12:43:58.13ID:???
>>772
Promiseとかイベントハンドラは名前じゃなく処理実体として関連付けてるわけだから、どれを使うも何もないよね?
関連つける先もない無名関数ってどう使おう、というかどう書こうと考えてるの?
0776Name_Not_Found
垢版 |
2021/04/02(金) 06:44:47.59ID:???
>>772
自然の殆どの生き物名前が付けられていないが
問題なくやりくりされてるでしょ?
それと同じ
0777Name_Not_Found
垢版 |
2021/04/02(金) 19:04:48.47ID:???
無名関数なんてその場限り1度しか使わんだろう普通
何回も呼び出すようなら普通に関数にすればいいだけだし
0778Name_Not_Found
垢版 |
2021/04/02(金) 20:03:26.35ID:???
イベントみたいに内部変数に格納したり、配列化したりはするけどね

774でも書いたけど、無名関数を作ったって格納しなきゃ保持はできない(と思う)んだから、そもそも意味がわからない
0779Name_Not_Found
垢版 |
2021/04/02(金) 21:19:23.26ID:gODIbJ/Y
【何をどうしたいか】
多数のオブジェクト(連想配列)を、1つずつMapオブジェクトに変換したい
【jQueryがNGかどうか】NG

N個のオブジェクト(連想配列)が配列Array1に入っている。
Mapコンストラクタの初期値に連想配列のキーと値を取りだして渡し、
できたMapオブジェクトを配列Array2にpushする。
これをN回ループする。

for (i=0; i < N; i++) {
Array2.push(new Map(Object.entries(Array[i])));
}
としたところ、参照渡しとなり
Array2の先頭から末尾まですべて同じもの、
即ち「N番目の連想配列からできたMapオブジェクト」が格納されてしまいました

参照渡しを値渡しにするテクニックには
Object.assign(コピー先オブジェクト,コピー元オブジェクト)が使えるようですが、
変換先(コピー先)がMapオブジェクトだからか、
これではうまくMapが作成できません

初心者なので説明が下手ですみません
どうか、うまい方法をご教示いただけますと幸いです。。。
0780Name_Not_Found
垢版 |
2021/04/02(金) 22:07:37.14ID:???
コピー(object.assign)してから変換(object.entries)すりゃ良いんじゃね
というかコピーしたいのか変換したいのか両方したいのか区別して書いてくれ
0781Name_Not_Found
垢版 |
2021/04/02(金) 22:47:25.94ID:???
大前提としてJSに参照渡し・値渡しという区別はない
他の多くの言語でも〜渡しというのは
アノテーションをつけるなど「渡し方」によって決まるもの
「渡し方」が同じなのに(型によって)「渡され方」が変わると考えるのは不自然だといい加減気づいたほうがいい
JSでは全てが名付けの連鎖、所謂共有私によって為されている
基本的に値は複製されることはないし、消えることもない
新しく作られた値に様々な形で様々な名前が付いていくだけ
0782Name_Not_Found
垢版 |
2021/04/03(土) 00:31:57.47ID:???
基本、動的言語では、コピーは作られない。
Ruby で、clone, dup しても、浅いコピー(shallow copy)となり、同じ参照を指す

再帰的な深いコピー(deep copy)は、
JSON・marshal とか、一旦文字列にしてから、
その文字列からオブジェクトを構築するとか、
再帰的な参照のリンクを断たないといけない

jQuery, Lodash などで、deep copy する関数を探した方が良いかも
0784782
垢版 |
2021/04/03(土) 00:36:32.93ID:???
Array.prototype.map() を使えば?

map() メソッドは、与えられた関数を、配列のすべての要素に対して呼び出し、
その結果からなる、新しい配列を生成します
0785Name_Not_Found
垢版 |
2021/04/03(土) 00:50:34.98ID:???
私も手元で試したけど、そんな事態にはならないな
根本的に入力の時点で間違えている気がする
0786779
垢版 |
2021/04/03(土) 09:23:08.68ID:???
沢山レスありがとうございます!
結論から言うと、再度デバッグしたら
正しくMapオブジェクトに変換できました…
https://paiza.io/projects/e/7X-qC5P4_-YkGbeIfU-AcQ
お手数おかけしました

>>780
MDNのObject.assignメソッドの記述(コピー)と
やろうとしている意図(変換)が
自分の中でごちゃごちゃになってしまいました。失礼しました

>>781
>「渡し方」が同じなのに(型によって)「渡され方」が変わると考えるのは不自然
これはずっと思っていました
>JSでは全てが名付けの連鎖、所謂共有渡しによって為されている
すごく勉強になります。覚えておきます!

>>782
コピーが作られないのは動的言語の仕様なんですね
今後の心構えができました
Array.prototype.map()も使用頻度高そうなメソッドなので勉強します
ありがとうございます!

>>783
>>785
以前事象が発生したときはループの設定をミスっていたのかもしれません…
失礼しました
0787Name_Not_Found
垢版 |
2021/04/03(土) 22:13:57.22ID:???
Primitive
https://developer.mozilla.org/ja/docs/Glossary/Primitive

JS には、数値・文字列など、6種類のPrimitive 型がある

これらは、immutable で変更不能だから、
常に新しい値が作られるので、参照とは無関係です

これらについては、参照のトラブルは起こらない
0788782
垢版 |
2021/04/03(土) 22:25:45.22ID:???
動的言語で、複合オブジェクトをdeep copy するのは、大変。
なかなか、再帰的な参照のリンクを断てない

オブジェクト内のオブジェクトを再帰的にたどって行って、
Primitive までたどり着いた所で、初めて値をコピーできる

こういう関数を作るのが面倒だから、
複合オブジェクトでは、一旦文字列にしてから、
その文字列から、新たにオブジェクトを作ったりする。
それが、JSON・marshal など

他には、jQuery, Lodash など、何かのモジュールに、deep copy する関数があるかも
0789782
垢版 |
2021/04/03(土) 22:30:37.07ID:???
C では変数は、値を入れる箱だけど、
動的言語では、変数は名付け・ラベル

箱に入れるようなイメージをしてると、参照のコピーで苦しむ
0790Name_Not_Found
垢版 |
2021/04/04(日) 01:58:59.39ID:???
話がややこしくなるからRubyガイジは出ていって。
0791Name_Not_Found
垢版 |
2021/04/04(日) 08:39:28.71ID:???
>>787
immutableが保証されているのはSymbol型だけだよ
その他のPrimitive型は現状標準で変更手段が提供されていないというだけで
拡張するのは自由だし、例えばセキュリティソフトが文字列のメモリを
書き換えるということが起きてもES仕様としては矛盾しないようになってる
エンジンとしては不整合が起きる可能性高いけど
一方immutableなObject型というのも存在する

immutableかどうかという点についてはSymbolかそうでないかの区分で差を語れても
PrimitiveかObjectかという区分では差を語ることはできないよ
Objectはimmutableでないからではなくて、Primitiveでないから、
つまり素でなくて集合だから要素とのことを考える必要がでてきて
その語れる差が生じるんだよ
0792Name_Not_Found
垢版 |
2021/04/04(日) 08:47:33.13ID:???
>>787
あと、
常に新しい値が作られるので、参照とは無関係です
っていうのも変じゃない?
例えば概念世界の共有渡しって実装世界では参照の値渡しに近いわけで
つまり
a = 'foo'
b = a
とあったときに、もしaに入っている文字列が変更されるようなことがあったら
ESを自然に解釈するとbはaと同じ実体を参照しているはずだから
b == 'foo' とならないといけないよね

大前提としてその対象の値がimmutableであれば、
参照の値渡しなのか、値渡しなのか、区別しなくても
どの手段使っても等価になるということでしょう?

ただし文字列型はimmutableではなくて、
現状immutableのように解釈しても等価になるという
2ステップ挟んで成り立っているものっていうのが厄介だよね
0793Name_Not_Found
垢版 |
2021/04/04(日) 09:34:58.45ID:???
>>792
string って java と同じに flyweight パターンが使われてるのか、"abc"==="abc" になるというimmutableを越えた面倒さも
0794Name_Not_Found
垢版 |
2021/04/04(日) 10:34:17.84ID:nJ56TCT5
undefined っていらなくね?
全部null でとういつすればいいのにな
0795Name_Not_Found
垢版 |
2021/04/04(日) 11:22:36.82ID:???
長文君よりルビキチ君のほうがいろいろとまともに見えるな
二人ともコテハンつけてくれると助かるんだが
0796Name_Not_Found
垢版 |
2021/04/04(日) 16:28:38.53ID:???
>>793
なにが等価になるかっていうのは値の構造や特性というより
演算子がどう定義されてるのかっていう話になってくるからそうだね
0797Name_Not_Found
垢版 |
2021/04/04(日) 16:38:41.17ID:???
>>794
確かに似たような概念では有るがundefinedはまだ値が割り当てられていない状態を指すのに対して
nullはNaNに雰囲気が似ているが、明示的に(適した)オブジェクトが無いことを表す値という違いが有る

最近のJSからはnullとundefinedをまとめた「nullish」という概念が入ってて2つを一緒に扱いやすくもなってるから
2つあることで不便なことよりも使い分けて便利なことのほうが大きいとは思う
0798Name_Not_Found
垢版 |
2021/04/04(日) 16:51:34.77ID:???
本気で困ってるんだが質問いいか?
$(document).bind('paste', function(e){ hoge; });
でペースト処理を掴んでペースト内容を正規化した後に、その値を直接val()で入れると、
Ctrl+Z とか右クリックからのアンドゥリドゥで値があべこべになるんだが解決方法知ってる人いたりするか?
0799Name_Not_Found
垢版 |
2021/04/04(日) 17:26:39.96ID:???
入れるときに整形しない
0800Name_Not_Found
垢版 |
2021/04/04(日) 21:26:54.38ID:???
SQL でも、null, undefined を区別する事を提唱した学者もいるけど、

クエリ文を書くのがあまりにも面倒で、undefinedは採用されなかった
0803Name_Not_Found
垢版 |
2021/04/04(日) 22:23:23.25ID:ac74UsrN
km
0804Name_Not_Found
垢版 |
2021/04/05(月) 20:39:48.48ID:???
>>799
やっぱり独自ペースト処理じゃどうしようもないのか…
0805Name_Not_Found
垢版 |
2021/04/06(火) 01:47:44.20ID:???
good parts
多くのブラウザではif文の中でfunction文を使うこともできるが
その際のそれぞれに異なっていまっている。
これはポータビリティの問題を引き起こす。

とあるのですが、
if文でfunction文を書くと、ブラウザで挙動違うってことですか?
ポータビリティの問題って何ですか?
0806Name_Not_Found
垢版 |
2021/04/06(火) 08:38:01.40ID:???
>>805
JavaScript: The Good Parts の話なら出版は2008年12月。12年前
IE8の登場が2009年だから、その本はIE7時代の話
Chromeの登場が2008年9月だから、Chromeもでてない
そんな古い本なんか参考になるわけがない
0807Name_Not_Found
垢版 |
2021/04/06(火) 12:12:53.05ID:???
>>805
>if文でfunction文を書くと、ブラウザで挙動違うってことですか?
そういう時代があったということ
ES2015でblock-levelのfunction declarationについても定義されたので
よほど古いブラウザ(主にIE)に対応する必要がなければ気にしなくて大丈夫

>ポータビリティの問題って何ですか?
ブラウザ間で挙動が違うと同じコードが異なる環境(=異なるブラウザ)で
意図したように動かなくなるという問題

The Good Partsは主にES3時代のノウハウ
JSに詳しいわけじゃなければES6対応してる本を読んだほうがいい
0808Name_Not_Found
垢版 |
2021/04/06(火) 12:32:25.81ID:???
>>807
横からですがあざす
あの辺の古い本安いから買ってみようかと思ってましたw
0809Name_Not_Found
垢版 |
2021/04/06(火) 13:46:59.72ID:???
JavaScript学びたいならjavascript.infoがオススメ
0810805
垢版 |
2021/04/06(火) 20:00:26.44ID:???
>>806-807
ありがとうございました。
もうかなりgood partsの中味が
古い現在のブラウザ挙動が違ってきているのですね。
0811Name_Not_Found
垢版 |
2021/04/06(火) 20:03:26.93ID:???
訂正します。
もうかなりgood partsの内容が古く
現在のブラウザでは挙動が違ってきているのですね。
0812Name_Not_Found
垢版 |
2021/04/06(火) 20:08:51.61ID:???
挙動だけじゃなくPromise sync awaitの記述の有無って重要じゃね?
単にwebのスクリプトとして使ってるからだけかもしれんが
0813Name_Not_Found
垢版 |
2021/04/06(火) 21:17:42.32ID:???
もうES6は当たり前って時代だからな
classもimport/exportもなかった時代の本は流石に…
0814Name_Not_Found
垢版 |
2021/04/06(火) 21:48:23.28ID:???
<tr id="aaa" style="display:none">
上のようなテーブルの行(tr部分)を表示・非表示で切り替えたいけど

document.getElementById("aaa").style.display = "table-row";とすると行が表示されるけど
document.getElementById("aaa").style.display = "none";としても非表示になりません
どうすれば非表示になりますか?
0815Name_Not_Found
垢版 |
2021/04/06(火) 21:50:39.63ID:???
趣味(仕事でために使用する勉強のためでもあり)で
javascript勉強しているのですが、
もう、javascriptでclass使うのが普通なのでしょうか?
仕事でjavascriptで使用している方の場合は?
私の会社ではjavascritpでclass使用はしていませんね。
0816Name_Not_Found
垢版 |
2021/04/06(火) 22:07:35.48ID:???
>>814
Chrome, FireFox, Safariはそれで非表示になるな
ちなみにJSでstyleを直接編集するよりもclassの追加・削除をしたほうが汎用性が高くていいぞ
0817Name_Not_Found
垢版 |
2021/04/07(水) 01:13:15.89ID:???
無理にクラスを使う必要はない
だけど、ある程度の複雑なデータを扱うならばクラスを使わなければスパゲッティなスクリプトになってしまうから使うようになる
0818Name_Not_Found
垢版 |
2021/04/07(水) 01:40:16.97ID:???
テーブルの行だけど、visibility: collapse というCSSがあったな
0819Name_Not_Found
垢版 |
2021/04/07(水) 10:19:43.86ID:???
react界隈ではもう誰もclass使ってません
0820Name_Not_Found
垢版 |
2021/04/07(水) 10:59:57.36ID:???
ん?Reactで使うのはコンポーネントなのでclassなんてもう使いませんキリリ!?
0821Name_Not_Found
垢版 |
2021/04/07(水) 16:17:00.43ID:???
いえ単なる関数です
単なる関数でコンポーネントを表現することをFCと言います

思えばreactのコンポーネント作成法はReact.createClass()呼び出しからReact.Component継承したclass、単なる関数(FC)へとどんどん単純になっていった。
hooksAPIの整備でclass形式で作らないといけない機会はゼロになった。
0822Name_Not_Found
垢版 |
2021/04/07(水) 20:03:41.87ID:???
関数だと値はどこに保持するの?
0823Name_Not_Found
垢版 |
2021/04/07(水) 20:44:26.25ID:???
ユーザーは作らないけどreactが内部で作ってるって話じゃないの
0824Name_Not_Found
垢版 |
2021/04/07(水) 21:36:32.57ID:???
データは基本的にツリーやリストといった構造を持つが、FCがどうやって構造を構築するのかさっぱりわからん?

ので、ちょっとググってきた
GUI構築の話であって、ロジックじゃないんだな
0825Name_Not_Found
垢版 |
2021/04/07(水) 23:03:04.93ID:???
ハローワールドでクラスシステムを無理に使う必要はないが
自然とクラスシステムを使うのならfunctionに頼るよりはclass構文に頼ったほうが良い
0826Name_Not_Found
垢版 |
2021/04/08(木) 00:59:11.22ID:???
classの実体はもともと関数やろ
0827Name_Not_Found
垢版 |
2021/04/08(木) 06:39:03.26ID:???
typeofはfunctionだけど[[Call]]すると例外になるし、日本語で【関数】か
と聞かれると100%そうとは言えないな
0828Name_Not_Found
垢版 |
2021/04/08(木) 09:18:37.28ID:???
new.targetをチェックして例外を投げる関数やぞ
0829Name_Not_Found
垢版 |
2021/04/08(木) 10:19:09.29ID:???
>>826
それは間違ってはいないが、どんな言語だって突き詰めれば機械語、と言ってるのとそう変わらないと思うが?
高級言語の存在意義を考えてよ
0830Name_Not_Found
垢版 |
2021/04/08(木) 14:50:34.84ID:???
>>829
全然違う
Reactがclassやめてfunctionに移行した理由を考えてよ
0831Name_Not_Found
垢版 |
2021/04/08(木) 15:17:13.88ID:???
ウェブコンポーネントの過剰なclass推しが緩和されたからそれに乗っかっただけでしょ
0832Name_Not_Found
垢版 |
2021/04/08(木) 15:33:15.61ID:???
もしclassが高級言語でfunctionが機械語なら
好んで機械語使う人がなぜ増えてるのかな?
0833Name_Not_Found
垢版 |
2021/04/08(木) 15:46:43.80ID:???
>>830
横レスだけど
状態管理を外部ライブラリに切り出すことで、SSRやSSG環境で最適化の余地が出来るからだって聞いたけど
他に何か理由があるの?
0834Name_Not_Found
垢版 |
2021/04/08(木) 19:54:45.32ID:???
関数コンポーネントはクロージャで値を保持ってるのかな
0835Name_Not_Found
垢版 |
2021/04/08(木) 21:24:29.66ID:???
>>832
普通に考えたらclass構文の使用率はまだ増えてる最中だと思うが
明らかに減ってるという統計でも持っているのか?
0836Name_Not_Found
垢版 |
2021/04/08(木) 22:01:32.99ID:???
表紙にサイの絵が描いてある、2冊のサイ本。
必ず、Google などの開発者の机に置いてあった本。
今は、ES2015

JavaScript 第6版、2012、David Flanagan
初めてのJavaScript 第3版 ――ES2015以降の最新ウェブ開発、2017

ES3 時代の本

Stoyan Stefanov 著
JavaScriptパターン ―優れたアプリケーションのための作法、2011
オブジェクト指向JavaScript、2012

JavaScriptデザインパターン、Addy Osmani, 2013
0837Name_Not_Found
垢版 |
2021/04/09(金) 12:28:43.58ID:???
classがコンストラクタ関数の糖衣構文だってことを知らんやつがおるんやな
時代を感じる
0838Name_Not_Found
垢版 |
2021/04/09(金) 12:32:00.73ID:???
prototype構文もまだ現役みたいなのに居るのかそんなん?
0839Name_Not_Found
垢版 |
2021/04/09(金) 12:53:45.67ID:???
classが糖衣構文と言ってる奴はアスペなのか?
goto文じゃなくてif文使おうというような話だということが本当に分からないのか
0840Name_Not_Found
垢版 |
2021/04/09(金) 14:38:57.72ID:tyivZ8iF
テスト
0841Name_Not_Found
垢版 |
2021/04/09(金) 14:46:29.10ID:tyivZ8iF
すみません質問です。
空のdivがあり、この中でJavaScriptを動かしたいです。
ただ、div内に直接スクリプトを書き込むではなく、
外部からのアクセスでスクリプトをdiv内で動かしたいのです。
どのようにするといいでしょうか?
0842Name_Not_Found
垢版 |
2021/04/09(金) 15:08:02.63ID:???
const hoge = function() {}
function hoge() {}
とかいろいろ書き方たくさんあってどれが何だか未だにわかりにくい
newしていいものとnewしない場合はどうのこうのとか{}()とかも
0843Name_Not_Found
垢版 |
2021/04/09(金) 15:21:15.22ID:???
>>837
単純な糖衣構文ではないけどまあ本質は一緒だよね
もう5年以上経つからclassしか知らない人がいても別におかしくない
特にフロントエンドは3年も経てばメインストリームがガラッと変わるから
0844Name_Not_Found
垢版 |
2021/04/09(金) 15:33:06.42ID:???
>>841
scriptタグは知ってる?

div内でスクリプトを動かすってのがよくわからないけどそうしたいと思う理由は?
0845Name_Not_Found
垢版 |
2021/04/09(金) 15:41:27.70ID:???
>>843
prototypeにメソッドを追加したりする技はもうバッドノウハウなのかな?
バッドだとは常々思っていたけど
0846Name_Not_Found
垢版 |
2021/04/09(金) 15:44:06.10ID:???
>>839
へぇー
if文はgoto文で置き換えられるのかー
0847Name_Not_Found
垢版 |
2021/04/09(金) 15:45:18.15ID:???
>>845
全然バッドノウハウじゃないと思うけど
0848Name_Not_Found
垢版 |
2021/04/09(金) 16:12:29.60ID:???
>>844
scriptタグは知っています。

理由は、JSを実装するかどうか確定していない+実装しても取り消す可能性がある。
そこでid付きの空のdivだけ作ってそこにJavaScriptの結果を反映させたいのです。
0849Name_Not_Found
垢版 |
2021/04/09(金) 17:01:31.01ID:???
>>848
divのDOM要素を特定して、あとは例えばinnerHTMLプロパティに値をセット
0850Name_Not_Found
垢版 |
2021/04/09(金) 17:11:17.81ID:???
element.outerHTML="ほえほえ";

とやるとelement変数がもはや新しく更新した内容を持つ場所を指さなくなっていますが
前のelement変数しか書き換えたい場所を指せる情報がないとして
outerHTMLで書き換えた後のノードを指す変数を取得する方法はないんでしょうか?
0851Name_Not_Found
垢版 |
2021/04/09(金) 17:18:20.70ID:???
>>850
idとかセットしとけ
というかouterを何故使う
0852Name_Not_Found
垢版 |
2021/04/09(金) 21:46:47.97ID:???
下記のnodo.jsコードで、すいまんせんが教えてください。
req.on("end",function(){});の中が実行されていないようです。
どうしたら直りますでしょうか?

var http = require("http");
var SRV = http.createServer();

SRV.listen(8080, "127.0.0.1");

SRV.on("request",function(req,res){
//リクエストを取得する変数DATの宣言
var DAT;
//リクエストの中のURLを取得してDATに代入
DAT = req.url;
console.log("WDAT="+DAT);

req.on("end",function(){
//この中が実行されていないようです。
console.log("sssbbb");
//HTTPヘッダの発行。第1引数の200はHTTPコードの200(OK)
//第2引数はContent-Type
res.writeHead(200, {"Content-Type": "text/plain"});

//ensでこれが最後のレスポンスだよと宣言しています
res.end("aaaaaa");

});

});
0853Name_Not_Found
垢版 |
2021/04/09(金) 23:05:55.49ID:???
req.on("data", 〜);を書いてないから
0854Name_Not_Found
垢版 |
2021/04/10(土) 01:01:20.15ID:???
>>853
ありがとうございます。
無事動きました。
0855Name_Not_Found
垢版 |
2021/04/10(土) 04:34:12.62ID:???
素人が、Node.js で、サーバー側を始めるのは無謀

サーバー側なら、Ruby から始めた方がよい
0859Name_Not_Found
垢版 |
2021/04/10(土) 08:32:59.06ID:???
phpでフレームワーク使ったことない程度のカスですが、laravelやってみるのとnode.jsっに手を出すのと、どちらが良いでしょうか?
0860Name_Not_Found
垢版 |
2021/04/10(土) 08:47:17.87ID:???
両方やったらええやん
聞く前に手を動かせよ
0861Name_Not_Found
垢版 |
2021/04/10(土) 11:25:46.06ID:???
>>849
ありがとうございます。
うまくいきました。
0862Name_Not_Found
垢版 |
2021/04/10(土) 13:35:50.53ID:???
var{nnn,mmm} = test();
alert(nnn);
alert(mmm);

function test(){
var aaa=100;
var bbb=200;
return{aaa,bbb}
}

これでundefinedなんだけどどうしてですか?
複数の戻り値は{}で囲むって書いたあったのに
0863Name_Not_Found
垢版 |
2021/04/10(土) 13:41:30.88ID:???
>>862
nnn,mmmってキーがないからだよ
{}はオブジェクトの定義で、例えばこう書く
return { nnn:aaa, mmm:bbb };
0864Name_Not_Found
垢版 |
2021/04/10(土) 13:48:08.28ID:???
>>862
ていうか、やりたいのはこっちな気がする
var [ nnn, mmm ] = test();
return [ aaa, bbb ];
[]は配列の定義で、この場合はキーは必要ない
0865Name_Not_Found
垢版 |
2021/04/10(土) 13:56:29.78ID:???
>>859
laravelはフレームワークでnode.jsはフレームワークじゃないのに比較する意味あるのか?
0866Name_Not_Found
垢版 |
2021/04/10(土) 16:52:42.03ID:???
フレームワークという言葉は意味が広く
プログラムでライブラリと対比して使われる以外の使われ方をする
例えばUnityはゲームフレームワークとか
だから間違いではない
0867Name_Not_Found
垢版 |
2021/04/10(土) 18:02:10.06ID:???
>>863>>864
どうもっす
やりたかったのは>>864の方です
{}ではなく[]にすればいいんですね
0868855
垢版 |
2021/04/10(土) 23:17:31.28ID:???
基本はRuby または、Ruby on Rails から始める

Node.js は、Ruby をコピーしたもので、
非同期の書き方をするから、Rubyよりも難しい
0870Name_Not_Found
垢版 |
2021/04/14(水) 18:14:20.94ID:???
image.onload = function aaa(){略}

image.onloadで画像を読み込んでからsetintervalを呼び出すにはどうしたらいいんですか?
0873Name_Not_Found
垢版 |
2021/04/14(水) 22:03:22.93ID:???
onloadでresolveするPromiseを返す関数を定義してawait

まあでも>>871のやり方で用は足せるよね
0874Name_Not_Found
垢版 |
2021/04/14(水) 23:30:38.71ID:???
>>873
言葉でなくコードで示して下さい
3分以内で
0875Name_Not_Found
垢版 |
2021/04/15(木) 00:30:02.30ID:???
コード書いたらCloudflareにはじかれたわ
3分以内に“onload promise”でググれカス
0877Name_Not_Found
垢版 |
2021/04/18(日) 11:40:13.32ID:???
下記のsortなのですが、firefoxでは効くのですが、
Edgeとchromeでは、効きません。
ブラウザで挙動違いましたか?どうすればいいでしょうか?
data_array.sort(function(a, b) {
return a.keyword > b.keyword;
});
0878Name_Not_Found
垢版 |
2021/04/18(日) 11:59:39.72ID:???
>>877
それだと比較関数の戻り値がbooleanだから
数値で返さないとだめよ
0879Name_Not_Found
垢版 |
2021/04/18(日) 15:08:13.00ID:???
>>878
ありがとうございます。下記のようにすると直りました。

if(a.keyword < b.keyword){
return -1;
}
if(a.keyword > b.keyword){
return 1;
}
return 0;
0880Name_Not_Found
垢版 |
2021/04/18(日) 21:50:48.47ID:???
>>877
let comp = new Intl.Collator;
data_array.sort(function(a, b) {
return comp.compare(a.keyword, b.keyword);
});
0882Name_Not_Found
垢版 |
2021/04/20(火) 21:19:49.68ID:???
eval("123_456")
-> 123456
parseInt('123_456')
-> 123
Number('123_456')
-> NaN

法則がわかりません
どうしてですか?
0883Name_Not_Found
垢版 |
2021/04/20(火) 22:47:19.40ID:???
>>882
eval("123_456”)は単に123_456と入力するのと同じ
separator付きのnumericリテラルとして解釈される
(numericリテラルでseparatorがサポートされたのはES2021)

parseIntやNumberはそういうルールで実装されてるからとしか言いようがない
どういうルールで実装されてるのかリファレンスを読んで
0884Name_Not_Found
垢版 |
2021/04/20(火) 23:09:25.84ID:???
>>883
書いていただいていることまでは分かるのです
問題はどう決められているかではなくどうしてそう決められているかなのです
神様が決めたわけではないですから理由はあるとおもったのです
リファレンスはどう決められているかは書いてあっても
どうしてなのかは書いていないのでここで聞きましたのです
0885Name_Not_Found
垢版 |
2021/04/21(水) 00:01:21.99ID:???
わかってないのにそれはわかってると言うやつ
なんなんだろな
0887Name_Not_Found
垢版 |
2021/04/21(水) 02:48:01.20ID:CQD8HzgX
insertAdjacentHTMLやinnerHTMLで表示する文字を変えることは出来るのですが、
HTMLのソースコード自体をJavaScriptで変更するにはどうすればよいでしょうか?
0889Name_Not_Found
垢版 |
2021/04/21(水) 06:32:18.62ID:???
>>886
ありがとうございます!
日本語が通じる方がいてうれしいです!
0890Name_Not_Found
垢版 |
2021/04/21(水) 07:02:19.03ID:???
高慢な奴だな。地獄に落ちればいいのに
0891Name_Not_Found
垢版 |
2021/04/21(水) 08:05:41.59ID:???
ローカル変数だけど関数の中にある関数も宣言の範囲になる方法はありますか?

例えば function test1(){
var a =1000;
   function test2(){
     alert(a);
   }
}

これだと test2のaは宣言されてないことになるけど
関数の中にある関数の変数にもスコープが届くようにしたい
グローバル変数は使いたくないので
0892891
垢版 |
2021/04/21(水) 08:27:33.98ID:???
test2(a)のように引数で渡せばいいと思うかもしれないけど変数の数が10個以上あると
引数のところが長くなって見にくくなるので
0893Name_Not_Found
垢版 |
2021/04/21(水) 08:42:26.17ID:???
test2の中は普通に変数aのスコープ内では?
つまり、
function test1(){
 var a =1000;
 function test2(){
  alert(a);
 }
 test2();
}
test1();
で、alert(a)のとこで1000ちゃんと表示されない?
0894Name_Not_Found
垢版 |
2021/04/21(水) 12:23:28.72ID:???
>>893
ちゃんと参照されてました。
でも
function test1(){
var a=1000;
test2();
}

function test2(){
alert(a);
}
test1();

とした場合スコープが届きませんでした。
これでスコープが届くようにするのは無理ですか?
0895Name_Not_Found
垢版 |
2021/04/21(水) 12:29:34.44ID:???
>>885
自分が分かってないことを自覚できてないから適切な問いが立てられないんだよ
それに加えて”自分は分かってるという思い込み”と”ささやかなプライド”から「それは分かってるんです(キリッ)」て返しちゃう
前者は思考力の問題で後者は性格の問題

「いや、お前わかってないじゃん」てなるけど5chはそういうのが集まるところだから諦めろ
0896Name_Not_Found
垢版 |
2021/04/21(水) 12:51:41.12ID:???
さんざん偉そうに語るが結局質問者が何が聞きたいか分からないというオチ
0897Name_Not_Found
垢版 |
2021/04/21(水) 13:15:52.55ID:???
>>894
そういう風にしたい場合は自分でも言ってるようにグローバルでなければ引数で渡すくらいかな。
渡す変数の数が多くなって嫌だというなら、
function test1(){
var o = {};
o.a = 1000;
o.b = 2000;
o.c = 3000;
test2(o);
}

function test2(obj){
alert(obj.a);
alert(obj.b);
alert(obj.c);
}
test1();
とでもしたら?配列でもいいけど
0898Name_Not_Found
垢版 |
2021/04/21(水) 14:15:32.32ID:???
>>882
Ruby でも関数によって異なる

String#to_i では、前から数値に変換できる部分までを変換する!
Rubyでは、数値リテラルの任意の位置に、_ を入れる事ができる

一方、Kernel.#Integer では、全部を評価して、数値に変換できなければ、nil

p "12ab".to_i #=> 12
p "12_34".to_i #=> 1234

p Integer( "12ab", 10, exception: false ) #=> nil
0900Name_Not_Found
垢版 |
2021/04/21(水) 20:19:35.27ID:???
変数や関数名の重複回避について

名前空間を使って
var APP={};
APP.hensuu ="aaa";
APP.func=function (){}
とするより

var APP = function(){
  var hensuu = "aaa";
  var func=function(){}
}
とした方がその都度変数名や関数名にAPPつけなくていいのでいいと思うけど
何か問題ありますか?
0901Name_Not_Found
垢版 |
2021/04/21(水) 20:26:15.40ID:???
>>908
> 何か問題ありますか?

それは10年前の手法です。
0902Name_Not_Found
垢版 |
2021/04/21(水) 20:50:15.56ID:???
>>900
オブジェクトも関数も名前の重複を回避する目的で定義するものじゃないけど
個人開発なら好きに使えばいいよ

それを名前空間って呼ぶのは初めて聞いたけど
0903Name_Not_Found
垢版 |
2021/04/21(水) 21:03:43.35ID:???
>>901
今はどうやるんですか?
>>902
解説サイトでそう呼んでいたので
0904Name_Not_Found
垢版 |
2021/04/21(水) 21:10:58.73ID:???
ただ単にスコープ区切ってるだけやん
「名前」の必要がないただの「空間」やん
ブロックとlet使えばええやん
0906Name_Not_Found
垢版 |
2021/04/21(水) 22:19:53.84ID:OHYz/vmK
var val = "most";

var array = []
array[0] = "almost"
array[1] = "curriculum"
array[2] = "attention"
array[3] = "portion"
array[4] = "most"

の場合、valの値が"most"なので、
array[0] = "most";に並び変える

valの値が"portion"の場合
array[0] = "portion";に並び替える

っというふうにしたいのですが、
配列の先頭をvalの値と同じにしたいのですが、簡単にできる方法ってありますか?
このとき配列の中の値の重複はないとします。
0908Name_Not_Found
垢版 |
2021/04/21(水) 22:35:22.54ID:OHYz/vmK
>>907
先頭以外の配列は、何もしません
0909Name_Not_Found
垢版 |
2021/04/21(水) 22:41:25.93ID:???
>>908
それじゃわかないのでvalがportionのとき
array[0]~array[4]をどうしたいのか書いてみて
0910Name_Not_Found
垢版 |
2021/04/21(水) 22:44:11.54ID:???
配列で呼び出す意味ある?
0911Name_Not_Found
垢版 |
2021/04/21(水) 22:44:11.79ID:???
>>906
これでいいの?
array = array.filter(item => item !== val);
array.unshift(val)
0912Name_Not_Found
垢版 |
2021/04/21(水) 22:45:11.20ID:OHYz/vmK
>>909

var val = "most";

var array = []
array[0] = "almost"
array[1] = "curriculum"
array[2] = "attention"
array[3] = "portion"
array[4] = "most"

このとき

array[0] = "most"
array[1] = "almost"
array[2] = "curriculum"
array[3] = "attention"
array[4] = "portion"

です。
0913Name_Not_Found
垢版 |
2021/04/21(水) 22:48:50.72ID:???
>>900

javascriptには名前空間ないですね。
1つのシステムで、オブジェクトを1つだけ定義して、
その中にプライベート関数を作ってみたいな流れで
ES3のjavascript good parts時代の2010年ごとからやっていました。
現在のやり方は、知りません。
class使えるようになったので、class使うオブジェクト指向の言語と同じようになったのかもしれません。

下記が2010年ごろからやっている私のやり方です。
//関数の呼び出し部分、htmlのscriptタグで呼び出す
test.app.fire()

//text.jsにtestオブジェクトを定義しておく
// testオブジェクトが定義されてた時用に、このようにする(10年前に書籍に書いてあった手法)
var test = test || {};
test.app = (function() {
//myspaceオブジェクトの外からアクセスはthatオブジェクトだけ
//myオブジェクトはmaspace内しかアクセスできないオブジェクトになる
//myオブジェクトに関数を格納すると、「なんちゃってプライベート関数」になる
var that = {},my = {};
//情報を表示する
my.show = function() {
};
that.fire = function(id) {
$('#' + id).on('click', function() {
return function() {
my.show()
}());
};
return that;
})();
0914Name_Not_Found
垢版 |
2021/04/21(水) 23:12:54.30ID:OHYz/vmK
>>911
ありがとうございます。
こんな感じの並び替えがやりたかったです。

>>910
配列である必要があります。
自作の英単語帳(自分用でアプリで外部公開なし)のwebアプリ作っているのですが、
検索する文字列と「keyword」という配列に格納した文字列を比較して検索結果を出しています。
このとき、検索結果を出すときにa-zのアルファベット順にした場合、
keywordで並び変えを行っているのですが、
keywordの配列の中身の並び替えをどうしようか?っと悩んでいたのです。
{"item":[
{"itemCode":"1 - 1","keyword":["〇〇"]},
{"itemCode":"2 - 1","keyword":["〇〇","〇〇","〇〇"]}
]}

http://demon-uploader.rosepink.us/uploads/2021042123012394865.png
0916Name_Not_Found
垢版 |
2021/04/21(水) 23:26:08.99ID:???
>>914
自分で使う道具を作ってて偉いな

並び替える必要性はよくわからないが
用途的に複数キーワードでのAND/OR検索くらいは
加味しておいたほうがいいんじゃないかとは思う
0917Name_Not_Found
垢版 |
2021/04/21(水) 23:43:25.15ID:OHYz/vmK
>>916
>用途的に複数キーワードでのAND/OR検索くらいは
>加味しておいたほうがいいんじゃないかとは思う
現在はAND/OR検索は未実装ですね。

今は、前方一致、後方一致、完全一致モードがあり
検索する母集団は「word」、「description」、「note」から選択でき、
「description」で「some people」で検索すると
例文がヒットする仕様になっていますね。

http://demon-uploader.rosepink.us/uploads/2021042123373267979.png
0919Name_Not_Found
垢版 |
2021/04/22(木) 07:10:34.88ID:???
構造がしっかり定義ができるのに配列の並び替えという操作がさっぱり分からんというのが理解できない
普通まず操作を想定した上でそれに合うように構造を定義するものでしょ
0920Name_Not_Found
垢版 |
2021/04/22(木) 07:36:25.65ID:???
自分のためのアプリ作ってるの素敵
ここにいるの奴隷ばっかだからなw
0921Name_Not_Found
垢版 |
2021/04/22(木) 21:31:41.93ID:???
流石何者でも無い奴の言うことは違うのう
0922Name_Not_Found
垢版 |
2021/04/23(金) 11:12:38.21ID:YDpw44rm
firefoxアドオンなんですが、タブをアクティブにしている時間というのはjavascriptで取得可能なんでしょうか?
タブを開いているだけではカウントしません。
アクティブにしたときにカウントします。
0924Name_Not_Found
垢版 |
2021/04/23(金) 12:46:56.82ID:YDpw44rm
生のjavascriptでやるわけでもないですかね
0926Name_Not_Found
垢版 |
2021/04/23(金) 13:54:46.95ID:YDpw44rm
>>925
api使わずに、生のjavascriptでカウント出来るものだと考えていました。
0927Name_Not_Found
垢版 |
2021/04/23(金) 14:10:02.61ID:???
罰ゲームかなにかかな?
DOM APIも使えないってことだろうからJavaScriptで何するんだろ?
0928Name_Not_Found
垢版 |
2021/04/23(金) 14:28:52.74ID:???
アドオンの場合はTab APIを使えばいい
Visibility APIだと各タブにJavaScriptを注入することになるので非効率
0929Name_Not_Found
垢版 |
2021/04/23(金) 14:35:04.40ID:???
API=ネイティブコードとでも思い込んでるのかしら?
0930Name_Not_Found
垢版 |
2021/04/23(金) 14:45:32.83ID:???
タブにJavaScriptを注入
という段階で理解できない言葉だ
0931Name_Not_Found
垢版 |
2021/04/23(金) 15:28:05.24ID:???
Webページのコンテキストで実行するJavaScriptと
アドオンのコンテキストで実行するJavaScriptの違い

前者はページ遷移が発生するたびにWebページのコンテキストでJSを実行して
その結果をアドオン側で受けとる必要がある
0932Name_Not_Found
垢版 |
2021/04/23(金) 15:53:59.76ID:???
うんAPIうんぬんは全く関係ないね。
0933Name_Not_Found
垢版 |
2021/04/23(金) 16:50:07.62ID:YDpw44rm
>>927
滞在時間をモニタリングするアドオンを作ろうかと
api=ネイティブと思っているわけではなくて、ネイティブのjavascriptのみでそういう仕組作れるのかなーと
0936Name_Not_Found
垢版 |
2021/04/23(金) 18:13:23.17ID:???
滞在時間を算出するには少なくとも現在時刻をAPIを通して環境に「ちょうだい!」する必要があると思うがJavaScriptに限らず言語のネイティブ機能だけで取得できる言語ってあるのだろうか?
0937Name_Not_Found
垢版 |
2021/04/23(金) 18:23:11.29ID:???
もうその辺にしとこうぜ
0938Name_Not_Found
垢版 |
2021/04/23(金) 18:38:33.95ID:zDdT63yv
javascript極めたら彼女できますか?
0939Name_Not_Found
垢版 |
2021/04/23(金) 19:24:48.75ID:???
分かりません。
生まれてからこれまでできたことはありませんが、その事実では今後できないことを保証することはできないからです。
0940Name_Not_Found
垢版 |
2021/04/23(金) 19:58:52.56ID:???
JavaScript始める前はいましたが、始めてからは全く気配もありません
0941Name_Not_Found
垢版 |
2021/04/23(金) 20:03:20.10ID:???
>>933
コンテンツ側ならこんな感じ
https://jsfiddle.net/vf2zru61/

バックグラウンドスクリプトならタブ別に状態記録するMapなりオブジェクト用意して
browser.tabs.onActivated/onCreated/onRemoved等のイベントでやればいい
0942Name_Not_Found
垢版 |
2021/04/23(金) 20:08:44.00ID:???
>>941
performance.nowなどのPerformance "API"
document.addEventListenerなどのDOM "API"
等々"API"を使ってるからダメですね。
ネイティブのjavascriptのみで作ってください。
0943Name_Not_Found
垢版 |
2021/04/23(金) 20:13:18.15ID:???
そんなことできる言語ある?
C言語ですらAPIでOSのシステムコール呼ばなきゃできないと思うけど…
0944Name_Not_Found
垢版 |
2021/04/23(金) 20:33:39.13ID:???
>>941
もしかしてアドオンが何か知らない?
0945Name_Not_Found
垢版 |
2021/04/23(金) 22:53:51.01ID:???
API使わずとか言ってるやつは頭おかしいの?
それとも質問者と同レベルのnoobが何人もいるの?
0946Name_Not_Found
垢版 |
2021/04/23(金) 23:00:51.58ID:???
ジョークが通じないnoobが数人いるだけだろ
0947Name_Not_Found
垢版 |
2021/04/23(金) 23:06:11.35ID:???
>API=ネイティブコードとでも思い込んでるのかしら?

↑この意味不明な指摘が状況を悪化させてるな
0948Name_Not_Found
垢版 |
2021/04/24(土) 01:06:54.66ID:???
質問者様がAPIん使うなとおっしゃられてるんだ。
従え。
0949Name_Not_Found
垢版 |
2021/04/24(土) 01:17:12.40ID:???
だからそんなことできる言語ある?
CかアセンブラでOS無しの組み込みプログラミングでハード直叩きしか無理だろうそんなの。
実際はハードからOS、ブラウザ、JS実行環境と何階層あると思ってんだ。
上位レイヤーから下位レイヤーの機能を呼び出すとき、その呼び出し方・作法すなわちAPIなんだからAPIなしでってのは意味不明だよ。
JSがどうのじゃなくてたとえCでもOS上で動かすならAPIとつくもの何も使うなと言われたら何もできんわいやOSによってはアドレス直叩き行けるか…
0950Name_Not_Found
垢版 |
2021/04/24(土) 01:23:19.86ID:???
ほな無理ちゃうか…
オカン他になんか言うとらへんかった?
0951Name_Not_Found
垢版 |
2021/04/24(土) 04:41:38.64ID:v8phWGeD
good partsには
string.deentityifyメソッドという実体参照を特殊文字に変換するメソッドが
出てきますが、deentityって英単語は存在しないみたいです。
deentityて検索しても特に何も引っ掛かりません。
&lt;→<って変換をdeentityifyと言うのでしょうか?
deentityってde+entityで実体化が否定って意味の造語なのでしょうか?
&lt;→<って変換って、正式な言い方ありますか?
0952Name_Not_Found
垢版 |
2021/04/24(土) 05:56:58.00ID:O4s84sQS
カウントできれば何でもいいですけどね
0953Name_Not_Found
垢版 |
2021/04/24(土) 07:18:25.45ID:???
>>943
モダンOSでは時刻はユーザーランドに再マッピングされてるから
シスコール使わなくてもメモリのアクセス制限取っ払っとけば取れる
0955Name_Not_Found
垢版 |
2021/04/24(土) 08:47:16.64ID:???
そろそろgood partsの取り扱いについて考えたほうがいいと思う
ここは自ら学ぶ者を手助けするスレではあるが
その学ぶというのは「歴史を学ぶ」ということではないはずだ
good partsはJS仙人になりたい者がJSの歴史を学ぶのにはいいが
今よく動くJSを書けるようになるために読むのは非効率だ
ましてやそんな古い本の文言の解説なんてこのスレが負う責務はない
0956Name_Not_Found
垢版 |
2021/04/24(土) 09:12:21.93ID:???
回答したいやつが回答しているだけの場で責務がどうとか
何いってんだこれ
0957Name_Not_Found
垢版 |
2021/04/24(土) 09:26:48.40ID:???
はよAPI使わない回答しろカス
0958Name_Not_Found
垢版 |
2021/04/24(土) 12:45:14.09ID:???
>>951
&lt;みたいなのをHTMLエンティティと呼ぶ
それに-ifyやde-をつけた造語

entity-ifyはエンティティ+化
de-entityifyは非+エンティティ化

decodeHtmlEntityやdecodeHtmlEntitiesみたいな命名のほうがわかりやすいけど
クロックフォードのおっさんはdecodeとは呼びたくないこだわりがあったんだろうな
0959Name_Not_Found
垢版 |
2021/04/24(土) 12:46:27.39ID:???
なるほど非処女みたいなもんか
0960Name_Not_Found
垢版 |
2021/04/24(土) 15:52:33.23ID:v8phWGeD
954-958
ありがとうございます。
0961Name_Not_Found
垢版 |
2021/04/24(土) 18:56:56.40ID:???
当時は、このサイの表紙のサイ本が、プロ用のバイブルだった。
Flanagan は「プログラミング Ruby」の著者。
JavaScript 第6版、2012、David Flanagan

他には、
Stoyan Stefanov 著
Stefanov は、React の本も書いてる。
JavaScriptパターン ―優れたアプリケーションのための作法、2011
オブジェクト指向JavaScript、2012

JavaScriptデザインパターン、Addy Osmani, 2013

今は、このサイ本から始める。
初めてのJavaScript 第3版 ――ES2015以降の最新ウェブ開発、2017

ただし、これらは既に数言語を知っていて、Google の開発者とか、プロ用の本。
プログラミングの初心者用の本では無い

good parts も、プロ用の本。
質問の内容から判断して、君には無理だと思う

事前に、Rubyとかで、プログラミング自体を学んでないと無理
0964Name_Not_Found
垢版 |
2021/04/25(日) 02:22:14.63ID:m+Dk3WCt
私は、10年のjavascriptの知識から脱却しようかと思っているのですが、
ES6の時代になって皆さんvarの代わりに、let使っていますか?
let x = 1;
let x = 2;
としたときにエラーになり

var x = 'global';
let y = 'global';
console.log(this.x); // "global"
console.log(this.y); // undefined

のように、varと違いwindowオブジェクトのプロパティにならないようですが、
ES3時代のvarすると、なんでもかんでもグローバルオブジェクトになっていたのが、
グローバルオブジェクトにならなくなったのですね。
0965Name_Not_Found
垢版 |
2021/04/25(日) 03:29:21.46ID:???
別にvarでIIFEで囲ってもええぞ。
10年前はそうしてたろ?
0966Name_Not_Found
垢版 |
2021/04/25(日) 03:39:05.97ID:???
>>964
基本はconst
再代入するときだけlet
varは基本的に使わない
0967Name_Not_Found
垢版 |
2021/04/25(日) 06:25:53.61ID:ETWFY6Zs
node jsを使ったプロジェクトを作る場合、node moduleがプロジェクト内に作られますよね。
バックアップなどとるときにファイル量が膨大になって嫌なんですが、どう作ればいいもんでしょうか?
0968Name_Not_Found
垢版 |
2021/04/25(日) 06:28:45.65ID:ETWFY6Zs
ちなみにyo codeで作ったプロジェクトです
0969Name_Not_Found
垢版 |
2021/04/25(日) 06:57:03.55ID:m+Dk3WCt
>>965
私は、htmlのscriptの領域にIIFEで囲って、その中で〜.jsの関数呼び出すやり方してます。
今のまま使えそうですね。IIFEは別に悪手ではないと思われますので。

>>966
2010年代では
var app = app || {};
と1つだけのグローバルオブジェクトを宣言して
色々と、この中に関数追加していましたが、
ES6のやり方だと
let app = {};
になるのですね。

あとは、関数内でvarで変数宣下してもグローバルには
なりませんが、ここがletとconstで置き換えで使いますね。
varで宣言するとグローバルオブジェクトなるため、特に使わなくいいみたいですね。

app.getJSONDATA = (function() {
varで宣言してもこの中はローカル変数になるが
letとconstを使用する
})();
0970Name_Not_Found
垢版 |
2021/04/25(日) 07:22:59.75ID:???
>>967
Git 使って .gitignore で制御したらいいと思うよ
0971Name_Not_Found
垢版 |
2021/04/25(日) 08:16:51.08ID:P8eg2ESv
やっぱりapi使わない生のjavascriptの方がやっていて楽しいな
0972Name_Not_Found
垢版 |
2021/04/25(日) 10:03:30.05ID:???
>>969
var app = app || {};

globalThis.app ??= {};
と書くのが今風

でも今風というだけで別にvarも使ってもいいよ
基本constで書こうというのは馬鹿げてるので無視していい
ESメンバーが公演で使うコードやGoogleのプロダクトなんか見てても
そんなことをしてる人は居ない
それならTypeScript使ったほうがスマート
0973Name_Not_Found
垢版 |
2021/04/25(日) 10:40:27.53ID:???
>>971
その考え方はおかしい
JSはスクリプト言語
プログラムっていうのは入力を加工して出力してなんぼ
でもJSはあえて標準のIOを持っていない

それは色んな環境にフレキシブルに入り込んで
環境が提供するAPIを利用して機能する言語だから
JSとAPIは切っても切り離せない

それにAPIというが、JSで実現できることは
内部的にも生のJSで実装されていたりもする
(その方がJS間でインライン展開してから最適化とかできる)

だから大きい機能に見えてもおおよそJSは低レベルなIOとかを
提供してもらってるだけということもある
だからそんなにAPIはJSから遠い存在ではないし毛嫌いしなくていい
0975Name_Not_Found
垢版 |
2021/04/25(日) 12:41:15.81ID:???
プロは、VSCode, Node.js を使う。
Ruby on Rails でも必須。
Webpack, Babel, Bootstrap, React とかも

var を使うことはない。
最初から、let, const。
それか、Type Script

Ruby の埋め込みERB を使う人は、
a.js.erb と、JS コード内に、<%= 〜 %>, <% 〜 %> で、Rubyの式を埋め込む

もちろん、b.html.erb にも使える。
あらゆるファイルに埋め込める
0976Name_Not_Found
垢版 |
2021/04/25(日) 13:22:04.45ID:???
推奨NGワード: Ruby
推奨NGワード: Rails
0977Name_Not_Found
垢版 |
2021/04/25(日) 15:28:06.68ID:m+Dk3WCt
>>972
var app = app || {};

globalThis.app ??= {};なのですね。

現在では、「globalThis」と「Null 合体代入 (??=)」があるのですね。
ありがとうございます。
0978Name_Not_Found
垢版 |
2021/04/25(日) 15:28:58.71ID:m+Dk3WCt
>>974
再代入しないですね。
0979Name_Not_Found
垢版 |
2021/04/25(日) 15:33:13.50ID:m+Dk3WCt
constってconstantで定数なので、アプリのなんらかの閾値などに
使うかと思います。なんでもconstに入れるのは違う気がします。
0980Name_Not_Found
垢版 |
2021/04/25(日) 15:52:01.21ID:???
constでいーじゃん、と言うプログラマーは数えた訳じゃないけど意外と多い気がする
再代入しない変数がはっきりするから、俺もそう思う
0981Name_Not_Found
垢版 |
2021/04/25(日) 15:53:40.45ID:???
>>979
constって命名が良くないのもあるんだけど
JavaScriptのconstは他言語でいうところの定数とは違って
再代入不可の変数だと考えたほうがいい

メジャーなstyle guideもみんなconst使えって言ってる
https://developer.mozilla.org/en-US/docs/MDN/Guidelines/Code_guidelines/JavaScript#declaring_variables
https://google.github.io/styleguide/jsguide.html#features-use-const-and-let
https://github.com/airbnb/javascript#references--prefer-const

個人開発なら好きにすればいいけど
チーム開発でいつまでもvarやlet使ってると新しい機能や環境に適応できない人だと思われるよ
0982Name_Not_Found
垢版 |
2021/04/25(日) 16:02:22.00ID:???
const con = {foo: 42};
con.foo = 69;
console.log(con.foo);
//=> 69
0984Name_Not_Found
垢版 |
2021/04/25(日) 20:12:20.55ID:???
GoogleもMozillaもChromeやFirefox内のJSでconstなんて殆ど使ってない
Mozillaは最近書いたテストで使い始めてるがそれくらい

一方V8内部だと昔は表層部分は普通にJSを使ってたが、
さらなるパフォーマンスを求めるため
ネイティブ-JS間で最適化が効くように大改造してネイティブで置き換えた
しかしきちんとパフォーマンスとセキュリティを担保して実装するが難しいということで
最近はTSを更に型方面に改良したような独自言語に切り替えた

オナニーでしかないconstばかり使ったコードを書いたりはしない
constを徹底するメリットは2文字増えることに劣る
そもそもconstを徹底するのならするで、それに加えてオブジェクトをfreezeしたり
全体的に管理しないと効果はない

でもJSでそんなことをやるのは極めて非効率的だと皆知ってるから
皆TSだったり、適切なaltJSを使ってる
いつまでも生のJSで半端なことにこだわってると新しい機能や環境に適応できない人だと思われるよ
生のJSでconstを使うのはその特性よりも読む人間に対してのアピールとして使う方が賢い
0986Name_Not_Found
垢版 |
2021/04/25(日) 20:19:43.98ID:???
レコード(#{foo: 42, bar: 64})
タプル(#[42, 64])
が出てきてからが本番だな。
現在ステージ2
0987Name_Not_Found
垢版 |
2021/04/25(日) 21:00:37.95ID:???
まあRecordはプリミティブしか扱えないから
DOMの参照とかも含められないし限定的ではある
0988Name_Not_Found
垢版 |
2021/04/25(日) 22:29:45.48ID:???
定義からしてdeeply immutableなデータ構造だそうだからDOMの参照なんか持てないだろうね。
ブドウジュースではワインのように酔えないと言ってるようなものでは?
0989Name_Not_Found
垢版 |
2021/04/25(日) 23:00:57.78ID:???
>>988
だからRecordが入っても結局使い分ける頭が居るわけで
使える人にとってはそりゃあ使える機能は多ければ多いほど良いだろうが
一般レベルのJSのコードがRecordが入ることで安定・安全の方向に向かうかと言うと
そうはならないだろうねということ
0990Name_Not_Found
垢版 |
2021/04/26(月) 00:51:43.57ID:???
JSに限った話ではないのでは?
各実用言語の新機能って今まで許可されてたことを急にできないようにする変更ってないし。
使ってもいいよ、うまく使うと便利だよというものばかり。
でもそれって実用言語である以上当たり前では?
0991Name_Not_Found
垢版 |
2021/04/26(月) 01:18:08.31ID:???
「JS」って最近は女子小学生のこと指す名称と一般に広がったよな
javascriptの拡張子はJSって悲劇だな
0992Name_Not_Found
垢版 |
2021/04/26(月) 02:01:33.54ID:???
居酒屋で「俺JS好きなんだーフヒヒ…」とか言ってるグループいて戦慄した。
よく聞いたらどうもWeb系だった。
0993Name_Not_Found
垢版 |
2021/04/26(月) 02:52:48.48ID:???
10〜15年くらい前までは
エロ動画のタイトルに「JS」、「JC」、「JK」って付いていただけなのにさ
2021年現在一般に広まりすぎた。
「JS」って気軽に言えない世の中になってしまった。
私は、居酒屋や人のいる場所では「javaScript」と「TypeScript」と「ECMAScript」という呼称しか
使わなくなってしまった。
0994Name_Not_Found
垢版 |
2021/04/26(月) 11:10:48.05ID:???
居酒屋や人のいる場所でJavaScriptの話してるやつとかヤバすぎだろ
そんなのは自宅か社内で完結させて外に持ち込むんじゃねえ
0995Name_Not_Found
垢版 |
2021/04/26(月) 12:39:45.86ID:BxuRqGx+
function aaa(n){
  n++;
  return(n);
}
setinterval(aaa,1000,20);
setintervalの第3引数に20を入れるとaaa(20);を呼び出すこと同じことらしいですが
この場合、戻り値はどうやって受けとればいいんですか?
0997Name_Not_Found
垢版 |
2021/04/26(月) 15:15:54.10ID:???
疑似プロトコルで"row"クラスまでスクロールしたいんだけどなにか違う?
javascript:getElementByClassName('row').scrollIntoView()
0998Name_Not_Found
垢版 |
2021/04/26(月) 15:44:59.23ID:???
>>995
callbackを使う

function callback(n) { do_something(n); }
function aaa(n, callback) { callback(n);}
const intervalId = setInterval(aaa, 1000, 20, callback);

指定回数実行したらclearIntervalしたい場合なら
setIntervalをwrapしたPromiseを返す関数を定義する

ちなみにそのn++は毎回20が++されて21になると思うんだけど意図通りなのかな?
0999Name_Not_Found
垢版 |
2021/04/26(月) 15:46:16.94ID:???
>>997
1. 初学者がよく陥る誤り、getElement s ByClassName()
2. s がついてることで理解できると思いたいが、こいつの戻り値は複数なので配列風のオブジェクトを返す
[0]とインデックスを付ければ多分動くが

老婆心では id にして getElementById 使った方がいいと思うよ
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 693日 19時間 24分 20秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

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

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