JavaScript の質問用スレッド vol.125at TECH
JavaScript の質問用スレッド vol.125 - 暇つぶし2ch769:デフォルトの名無しさん
23/03/19 18:07:07.17 EAkcZvWPd.net
>>753のコードにぶち当たった時点でEdgeというかブラウザ単体で実現できないことには気がついて欲しいものだが
仮にも2年はJSを勉強していたと言うなら

770:デフォルトの名無しさん
23/03/19 18:51:42.92 M92RK9ru0.net
JSONでダミー値をコメントのつもりで使ってたらエスケープできてない\でパースエラーになるデータができたりして使うのが怖くなった
やっぱコメントぐらいは定義必要だったなこれ
人間が手書きするものじゃないとしてもよく普及したもんだ

771:デフォルトの名無しさん
23/03/19 18:56:28.01 M92RK9ru0.net
>>753
そういうのってEdgeのIEモードに移行して終わりでしょ
周囲も期間的にその程度しか期待してないと思うけど

772:デフォルトの名無しさん
23/03/19 19:09:54.29 M92RK9ru0.net
ど素人だとIEモードが何なのかで3月は潰れるかもしれんけど一応
基本的には社内のADサーバでGPO管理してる奴にEdgeのIEモードのサイトリストに追加してもらう
これは君の担当以外にもIEモードのサイトは糞の山程あって既知の対応だからおそらく追加を依頼するだけでいいはず
うまくすればそれだけで作業が終わる可能性もある

773:デフォルトの名無しさん
23/03/19 19:35:09.37 vtMigryt0.net
>>757
コメントの書式があったって書式から逸脱する文字列を入れてパースエラー出す未来しか見えんわ。

774:デフォルトの名無しさん
23/03/19 19:46:06.22 GXvqERSA0.net
たぶんIEを前提とした目の前にあるコードを読み解いて作り直すより設計書用意したほうが早い
あるいはAIと二人三脚

775:751
23/03/19 19:54:47.83 /GeuLHtL0.net
みなさまありがとうございます
IEモードは1,2度調べて、いつまでこのモードがあるか分からないからと止めたのですが、
やはり時間稼ぎも考えるとこれしかなさそうです。
その間に根本的な解決策を探したいと思います。
なぜか年明けから会社のDX担当にされました。
と言いましたが、実はそれは嘘です。
年末にかけて社員が半分以上辞めて、残った人の中で一番詳しそうだったのが僕だったのです。
実は、サーバーサイドをいじらないといけないのだということは、薄々気づいていました。
でも、今動き続けているサーバーを触れる人が誰もいないのです。
僕も、SQLというものがある、という程度の知識しかないので、触る気にもなりません。
とりあえず夏のボーナスまで引っ張って、無理そうだったら自分も転職します。
今動いているものをうっかり壊したら、止められなくなりそうなので慎重にがんばります。
ありがとうございました。

776:デフォルトの名無しさん
23/03/19 19:55:19.68 xryn/wmcd.net
>>757
怖いも何もパーサーがきっちり仕事してる証拠じゃないの?
コメントを書きたいって需要に対してはJSON5やJSONCって派生規格があるから
それらを検討するべき

777:デフォルトの名無しさん
23/03/19 20:23:01.76 M92RK9ru0.net
何が理由かは置いといて技術を含めた社員がごっそり半数も辞めてる状況だとその会社から賞与もまともには出ないだろう
Edgeへの移行時期としてもかなり遅れてるし有給消化しつつ転職活動に専念した方がいいね

778:デフォルトの名無しさん
23/03/19 20:33:33.23 M92RK9ru0.net
>>763
規格はあれど既存の環境に適用できるものではないのがな
JSON


779:として扱う前にJSONCとしてコメント抜く前処理でも通すか



780:デフォルトの名無しさん
23/03/19 22:37:02.99 SC8SOdGAd.net
>>765
パーサーにケチつけてるよりはその方が建設的でしょうよ

781:デフォルトの名無しさん
23/03/20 03:23:46.29 iV2jn8x9a.net
>>740
VSCode の拡張機能では、
open in browser では、ローカルファイルアクセスになる。
この場合、CORS など、ブラウザの色々な制限がある
file:///C:/Users/Owner/Documents/test/index.html
一方、Live Server では、
自分のPC 内にサーバーを立ててから、そこから配信されるので、テストしやすい
URLリンク(127.0.0.1:5500)
>>753
そういうのは、Excel, VBA, Access とかじゃないの?
ベンチャー企業やプロのバックエンドは、Ruby on Rails だけど

782:デフォルトの名無しさん
23/03/20 04:02:42.23 iV2jn8x9a.net
>>745
Promise.all/allSettled とか?

783:デフォルトの名無しさん
23/03/20 19:47:12.99 PTBUy+ct0.net
chromeの拡張機能で、「ngWord.json」内のデータを「background.js」経由で「content_script.js」に格納しようとしていたのですが、上手くいきません。コードでおかしな点等あれば、ご教授頂けないでしょうか。
【background.js】
fetch('ngWord.json')
.then(response => response.json())
.then(data => {
// content_script.jsにデータを送信
chrome.runtime.sendMessage({ngWords: data});
});
【content_script.js】
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.ngWords) {
const ngWords = message.ngWords;
console.log(ngWords); // 受信したデータを表示
}
});

784:デフォルトの名無しさん
23/03/20 19:56:51.89 hUotJVz90.net
>>769
バックグラウンドからタブに送信するならchrome.tabs.sendMessageじゃないかな?

785:デフォルトの名無しさん
23/03/20 20:37:35.10 PTBUy+ct0.net
>>770
「タブ」というのは、「content_script.js」のことでしょうか?
だとすると「chrome.tabs.sendMessage(tabId: content_script.js, ngWords: data)のように書く感じでしょうか。

786:デフォルトの名無しさん
23/03/20 20:53:08.72 mlA7fjwPM.net
雑な方法としてはアクティブなタブに送ればいいんちゃう?

787:デフォルトの名無しさん
23/03/20 21:36:27.87 hUotJVz90.net
>>771
そうです。background から content_script に送信する場合はchrome.tabs.sndMessage だったと思いますよ
chrome.tabs.query({active:true,(tabs)=>{
chrome.tabs.sndMessage(tabs[0].id,{
ngWordsg:data
})
}})
というような感じで

788:デフォルトの名無しさん
23/03/20 21:40:33.20 xjtq7KFo0.net
最初にコンテンツスクリプト側から何かメッセージ送れば
バックグラウンド側のchrome.runtime.onmessage.addListenerのsender.tab.idでタブID取れるっしょ

789:デフォルトの名無しさん
23/03/20 21:49:32.93 hUotJVz90.net
それならtab.id必要なくてsendResponseで返せるんじゃないかな?

790:デフォルトの名無しさん
23/03/20 21:53:15.40 PTBUy+ct0.net
【background.js】
fetch('ngWord.json')
.then(response => response.json())
.then(data => {
chrome.tabs.query({active:true,(tabs)=>{
chrome.tabs.sendMessage(tabs[0].id,{ngWords:data})
});
};
【content_script.js】
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.ngWords) {
const ngWords = message.ngWords;
console.log(ngWords);
}
});
このように修正しましたが、上手く取得できないようです。

791:デフォルトの名無しさん
23/03/20 22:00:26.17 hUotJVz90.net
そもそもngWord.jsonの中身とれてますか?ローカルファイルならweb_accessible_resources書いてchrome.extension.getURLで取るんじゃないでしょうか?

792:デフォルトの名無しさん
23/03/20 22:04:38.80 xjtq7KFo0.net
もしかしてスクリプト本当にそれだけなの?
だとしたらcontent_script.js実行される前にbackground.js終わってそう

793:デフォルトの名無しさん
23/03/20 22:24:56.04 PTBUy+ct0.net
申し訳ありません、私の知識不足で、よく分かりません。もう一度格闘して、改めて質問させて頂きます。ご教授下さり、ありがとうございます。

794:デフォルトの名無しさん
23/03/20 23:58:23.18 hUotJVz90.net
>>779
めっちゃ適当なこと言ってましたわ
web_accessible_resourcesとchrome.extention.getURLは関係ないっぽいです
まずcontent_scriptが実行されるタイミングでbackgroundからタブにデータを送れるはずなくて
かといってcontent _scriptからメッセージ送ってbackgroundでfetchしたデータを送ろうとしてもセキュリティー的になのか送れない
なのでbackgroundでfetchしたjsonをchrome.storage.local.setで保存してcontent _scriptからchrome.storage.local.getで読み込むが正解っぽいです
暇だったんで...

795:デフォルトの名無しさん
23/03/21 04:01:46.37 rEPYZ+tza.net
漏れはプロジェクトを作って、index.ts に、TypeScript で以下を書いて、
npm/yarn, webpack, babel でビルドすれば、
import で、JSON ファイルやLodash も読み込めるけど
import WordData from "./word_data_tmp.json";
console.log( WordData.length )
const ary = [ ...Array( 5 ).keys( ) ]
// => [0, 1, ....,4]
import shuffle from 'lodash.shuffle';
console.log( shuffle( ary ) );
// => シャッフルされる

796:デフォルトの名無しさん
23/03/25 14:02:02.15 MQIuadNDM.net
Next.jsでAPI Routesを使わないのは一般的でしょうか?

797:デフォルトの名無しさん
23/03/25 18:19:14.13 1/y/Yy4J0.net
「一般的」のような主観的なものてはなく、客観的な定義が必要なのでは

798:デフォルトの名無しさん (ワッチョイ eb5f-DdLV [14.8.104.32])
23/03/28 20:12:53.97 RtCr5Rz10.net
プロミスって何?

あとfetchってasync、await使うのと.then使うのでどっちがいいの?

799:デフォルトの名無しさん
23/03/29 11:27:02.70 NxiPtBQP0.net
>>784
普通に調べれば出てきますよ
調べても調べてもよくわからんって質問をどうぞ

800:デフォルトの名無しさん
23/03/29 12:55:23.79 y04hNuo/d.net
消費者金融機関だよ

801:デフォルトの名無しさん
23/03/29 13:11:20.35 6965UHWi0.net
>>786
絶対に許せないのでxhrにしますね

802:デフォルトの名無しさん
23/03/31 02:32:51.01 VdncSfH00.net
メイン画面でボタンをクリックすると
別ウィンドウが起動し、ニュースサイトを表示するプログラムを組んでいます。
別ウィンドウが起動した時に
そのウィンドウが閉じられたのか、開かれたままであるのかを
メイン画面で判定するにはどういうコードを書けばよいでしょうか?
別ウィンドウでサイトが開かれている間は
1、2、3・・・とカウントし、閉じられると0を
メイン画面にjQueryでレンダリングしようとしています。

803:デフォルトの名無しさん
23/03/31 03:09:38.31 29iJjOEC0.net
>>788
window.closed はどう?

804:デフォルトの名無しさん (ワッチョイ 1f8b-3uzD [211.5.157.105])
23/03/31 11:32:39.06 VdncSfH00.net
>>789
ありがとうございます。
ちょっと試してみます。

805:デフォルトの名無しさん
23/04/23 22:40:30.72 k6QZkjYI0.net
先日(1週間くらい前)まで動いていたジャバスクリプトが動かなくなった。
ブラウザの不具合を疑って firefox、edge、さらに ie11 まで持ち出したらどれも動かない。
ウインドウズのセキュリティの締め上げかなと思って
スマホ(アンドロイド)で確認したがこっちも動いていない。
押し入れから昔のアイポッドタッチ(iOS9)を持ち出したが、やっぱ動かない。
こんなことってある?
アイポッドタッチなんてスクリプトが動いていたころとなに一つ変わっていないのに
なんでこの前は動いたのに今日は動かないんだ?
1年前のバックアップと差分比較してファイルが壊れていないことは確認した。
ちなみに自分がジャバスクリプトを作成するにあたって参考にしたスクリプトは
いまも普通に動いている。

806:デフォルトの名無しさん (JP 0Hc5-/HYv [126.249.157.89])
23/04/24 07:00:31.38 z1nNn0o4H.net
エラーも出て�


807:ネいのか? まったく反応してないのならhtmlで読んでないんじゃね?



808:デフォルトの名無しさん (スプッッ Sd73-8Xzj [1.75.215.168])
23/04/24 08:37:00.30 Z0B9bFh/d.net
動いてた夢を見たんだ

809:デフォルトの名無しさん
23/04/24 09:21:53.70 U4o0cUkO0.net
>>791
ブラウザの不具合疑う前に
エラーログ出て無いか確認しろ
エラーログすら出てないならHTML側でちゃんと呼び出せてるか確認しろ

810:デフォルトの名無しさん (ワッチョイ 2bbd-L85M [49.129.243.228])
23/04/24 12:05:07.84 VtgoOt7B0.net
https の証明書が古い

811:デフォルトの名無しさん (ワッチョイ 6910-bhMa [180.59.92.6])
23/04/24 13:08:00.47 MpRTlb310.net
>>794
エラーログを見たらあっさり解決しました。
夜更けに一人で大騒ぎしてごめんなさい orz

いまブラウザの開発者ツールでジャバスクリプトのエラーが見られるんだね。
びっくりした。

原因はHTMLの削除した部分にスクリプトで動かす部分があって
動かすべきものがないから次の処理に行けずエラーになっていました。
スクリプトばかり見ていてHTMLは盲点でした・・・。

812:デフォルトの名無しさん
23/04/24 13:15:26.56 3ESYAe520.net
開発者ツール超便利だよね

813:デフォルトの名無しさん
23/04/24 13:22:29.25 sSUQNn8cr.net
まあそういうオチだろうなとは
アドバイスを求めるならhtmlを修正したことは伝えるようにしてほしいところ

814:デフォルトの名無しさん (JP 0Hc5-/HYv [126.249.157.89])
23/04/25 18:51:33.50 /Hd1NuvtH.net
解決したようでなによりなにより

815:デフォルトの名無しさん (ワッチョイ eb7d-RykB [1.33.235.4])
23/04/26 19:26:29.99 lfd6T/fN0.net
URLリンク(abehiroshi.la.coocan.jp)

この阿部さんのHPの左のフレームから「舞台出演」を取得したいんだけど、

const frame = await page.$('frame[name="left"]');
 const contentFrame = await frame.contentFrame();

こんな感じでcontentFrameを取得するところまでは上手く行くんだけど、

 const aElement = await contentFrame.$('body table.today tr:nth-child(8) td:nth-child(3) p a');

次の要素を取得する段階になるとnullになってしいます
どうすれば阿部さんの舞台出演を取得できますか?

816:デフォルトの名無しさん (ワッチョイ d961-99Et [220.107.169.163])
23/04/26 20:39:08.46 UfBGheQ30.net
>>800
.todayなんてclass付いてないぞい

817:デフォルトの名無しさん (JP 0Hc5-/HYv [126.249.157.89])
23/04/26 22:57:11.72 Q5IzIMlUH.net
それってJS?

818:デフォルトの名無しさん (JP 0Hc5-/HYv [126.249.157.89])
23/04/26 23:08:17.75 Q5IzIMlUH.net
そもそもnullを取得してるってことは所望のオブジェクトが取得できていないってことよん?

819:デフォルトの名無しさん (エムゾネ FF33-Nhf9 [49.106.174.76])
23/04/27 13:47:05.09 jYECG79eF.net
>>800
それ、ChromeのDevツールとかで、Elementの検索にセレクター入力してちゃんとヒットする?

820:デフォルトの名無しさん (ワッチョイ 03c2-+mtg [133.155.195.156])
23/04/29 00:34:06.33 FZLDUbkY0.net
['apple', 'パイナップル', 'pineapple (パイナップル)', 'りんご', 'pineapple']

['apple', 'パイナップル | pineapple', 'りんご']
に別名ふくめて重複削除して整形したいんですがスマートな方法ないですか

821:デフォルトの名無しさん (ワッチョイ 23bd-MgCS [125.197.237.23])
23/04/29 01:41:53.10 bskwYySl0.net
>>805
パイナップルの表記方法はどういう仕様なの?
スマートじゃない方法で実装できてるならそれを貼ってみたら?

822:デフォルトの名無しさん (ワッチョイ 03c2-+mtg [133.155.195.156])
23/04/29 01:58:50.79 FZLDUbkY0.net
>>806
別名がカッコで後ろに付く場合があったりなかったりをまとめたいんです
今は文字列に取り出して正規表現で割ってまた戻して~って頭悪くやってます

823:デフォルトの名無しさん (ワッチョイ 23bd-MgCS [125.197.237.23])
23/04/29 02:08:42.66 bskwYySl0.net
>>807
元の配列には、同じ値が複数、たとえば 'りんご' が何個も入ることがある?

ただ何にしても、現状がどの程度頭悪いのか分からんけどそこそこ泥臭くなるんじゃないかなぁ

824:デフォルトの名無しさん (ワッチョイ 03c2-+mtg [133.155.195.156])
23/04/29 02:20:05.97 FZLDUbkY0.net
>>808
あります

825:デフォルトの名無しさん
23/04/29 05:52:34.96 q0/EY4lO0.net
>>809
ちょっと面白そうだったので作ってみたけど、あんまりいい出来にはならなかった。
わざわざ見せるようなものじゃないんだけど、一応貼っとく。
アプローチとしては、単品アイテムまたは別名で括られた同一アイテム毎に配列実体を持たせて、重複排除しながらその実体に放り込んで最後に文字列化する。
複数の別名定義で 2つ以上の名前を括ったり、名前の登場順で連結するようにした。

URLリンク(i.imgur.com)

826:デフォルトの名無しさん (ワッチョイ 1bbd-MgCS [119.240.43.251])
23/04/29 06:04:20.63 ZqMIj65v0.net
あわわ、26-32行目は整理できた

const new-content = [];
alias_ref[item] = alias_content.length;

827:デフォルトの名無しさん (ワッチョイ e38b-fitb [211.5.157.105])
23/04/29 20:12:37.30 wJzxOo1h0.net
JavaScriptでタイマー処理をしています。
指定した秒数(ここでは10秒)経過したらタイマーを停止する様にしていますが
タイマーが止まりません。助けてください、、、

$(document).ready(function(){
$("#id_div_test").click(function () {
setInterval(TestFunction , 1000);
});
});

var i_current_second = -1;
function TestFunction()
{
i_current_second++;
if( i_current_second == 10)
{
clearInterval(TestFunction);
}
}

828:502 (ワッチョイ d501-nY3o [36.240.121.112])
23/04/29 20:34:34.21 ulzy/WI80.net
>>812
使い方間違っとるな
そういうときはまずリファレンスを読め
URLリンク(developer.mozilla.org)

829:デフォルトの名無しさん (ブーイモ MM49-3F9Y [202.214.125.164])
23/04/29 20:36:30.58 WiY5v75xM.net
clearIntervalの引数に入れるのはsetIntervalから帰ってくるnumber
型エラーでハマるのアホらしいしts使うか無理なら//@ts-checkをファイルの先頭に書いとけ

830:デフォルトの名無しさん (ワッチョイ e38b-fitb [211.5.157.105])
23/04/29 20:54:08.29 wJzxOo1h0.net
>>814
わかりません。。。どう書けば良いでしょうか?

831:デフォルトの名無しさん (ワッチョイ e38b-fitb [211.5.157.105])
23/04/30 00:03:19.23 x92s4/Ng0.net
>>814
できました!

832:デフォルトの名無しさん
23/05/07 14:48:48.64 NS1NVPz40.net
>>812
こういうのはそのまんまChatGPTに聞けばヒントなり、回答、修正案なんかも返してくれ
る。
----
この問題は、`clearInterval`に渡す引数が誤っているために発生しています。`setInterval`に渡したのは `TestFunction`関数ですが、`clearInterval`に渡すのは `setInterval`が返すタイマーIDです。このタイマーIDは `setInterval`を呼び出すと返されます。
以下は修正されたコード例です。
$(document).ready(function(){
$("#id_div_test").click(function () {
var timerId = setInterval(TestFunction , 1000);
// タイマーIDを保持するために変数に代入する
});
});
var i_current_second = -1;
function TestFunction()
{
i_current_second++;
if( i_current_second == 10)
{
clearInterval(timerId); // 正しいタイマーIDを渡す
}
}
ここでは、`timerId`変数を`setInterval`の戻り値として宣言し、`clearInterval`に渡すようにしました。これにより、タイマーが正常に停止するはずです。

833:デフォルトの名無しさん
23/05/08 05:12:47.92 AmPaXWnYM.net
>>817
ここいらんやんけ…

834:デフォルトの名無しさん (ワッチョイ 52bd-F1Es [133.209.119.64])
23/05/08 09:31:16.79 nWGvwrRY0.net
>>817
setIntetval してるスコープの timerId を clearInterval するスコープから参照できる?

835:デフォルトの名無しさん (ワッチョイ 5b7c-01SL [122.212.18.110])
23/05/08 19:39:25.41 0kSPeCjv0.net
エラーが出たらまた聞けば直してくれる
あとほ聞き方の問題だね

836:デフォルトの名無しさん (ワッチョイ 028b-KeI6 [211.5.157.105])
23/05/08 22:29:23.94 BI0XZhvO0.net
>>817
え?そんな事までChatGPTできるの???すごくね??
どんなシステムになってんだろ。

837:デフォルトの名無しさん (オイコラミネオ MMc7-3VlF [150.66.117.113])
23/05/08 23:30:02.71 ieW4qdsxM.net
条件によってスクリプトを途中で止めさせたいんだけど三項演算子じゃreturnするしないを分けるのは無理?
if exitFlag return false

838:デフォルトの名無しさん (ワッチョイ e2bd-F1Es [221.171.102.45])
23/05/08 23:46:59.68 PuDhFqQc0.net
>>822
多分無理だと思うけど、なんで if じゃいけないの?

839:デフォルトの名無しさん (オイコラミネオ MMc7-3VlF [150.66.117.113])
23/05/08 23:51:00.55 ieW4qdsxM.net
>>823
三項演算子の中で使ってるからなんか気持ち悪い

840:デフォルトの名無しさん
23/05/09 00:52:34.88 eLWpr74i0.net
f = (flag) => flag ? false : true;
console.log(f(true));
console.log(f(false));

841:デフォルトの名無しさん
23/05/09 00:52:45.73 RQydgiqHd.net
>>821
ChatGPTをプログラム用途で使ったこと無いなら一度つかってみると良いよ。
ググる手間がかなり少なくなる
もちろん、間違い返答の可能性もあるからそこら辺はうまく扱う必要があるけどね。
あとGitHub Copilotはもっとヤバいよ。プログラマーなら一度は使うべき

842:デフォルトの名無しさん (ワッチョイ e2bd-F1Es [221.171.102.45])
23/05/09 01:40:34.46 r9kkpYgp0.net
OSS のソース読むときにも ChatGPT は便利だよ。
内部関数名とか聞いても何するものか教えてくれる。
この間 OpenSSL のソース読んでて助けられた。
暗号のコードなんて読んでもよくわからないしw

843:デフォルトの名無しさん (ワッチョイ 028b-KeI6 [211.5.157.105])
23/05/09 07:51:33.95 y5YEea020.net
>>826
GitHub Copilot
そんなのもあるんですね。

844:デフォルトの名無しさん (ワッチョイ 028b-KeI6 [211.5.157.105])
23/05/09 10:14:34.85 y5YEea020.net
ChatGPTでsqlでハマった点を質問してみたんだけど
ヤバイな。一瞬で分かり易く解説してくれた。

どんなプログラムを組んでるんだ。凄すぎる。

845:デフォルトの名無しさん (ワッチョイ 028b-KeI6 [211.5.157.105])
23/05/09 14:59:12.62 y5YEea020.net
chatGPTえぐいんですけど。

846:デフォルトの名無しさん
23/05/18 17:50:03.04 An6NATd90.net
javascriptでctrl+Wでブラウザタブが落ちるのを無効にする方法はありますか?

847:デフォルトの名無しさん
23/05/23 06:51:40.61 tIBpGAYNH.net
それはJSの設定?Winの設定?

848:デフォルトの名無しさん
23/05/23 20:39:57.19 85f2/18wa.net
最近勉強してvarの何でもありな傍若無人さに気が付いた
例えば関数実行後に初期化してもホイスティングで勝手にundefiedが代入されるからエラーにならず混乱の素、
ブロックスコープ内で使うとその生成を無視するから混乱の素
なのでプロなのにES6以降の環境で未だにvar使ってる人って新人にも劣ると思った
ES6以降でEcmaから非推奨と言われてるのに未だにvar使わなければいけない理由ってある?
今後var使ってる人見たら問答無用で勉強しない人と判断しても良い?

849:デフォルトの名無しさん
23/05/23 20:57:14.94 PscArQu/0.net
キモ

850:デフォルトの名無しさん
23/05/23 22:34:28.22 y7+F4Fx6M.net
>>833
>例えば関数実行後に初期化してもホイスティングで勝手にundefiedが代入される
これいろいろ間違ってる
>未だにvar使わなければいけない理由ってある?
REPLで繰り返しコードブロックを実行したい場合なんかにvar使う
あとはブラウザ以外の環境でES3しか動かない環境とかね
>今後var使ってる人見たら問答無用で勉強しない人と判断しても良い?
良いと思うけど君もそっち側に片足突っ込んでるから気をつけて

851:デフォルトの名無しさん
23/05/24 10:07:05.19 qaFXRxUx0.net
スコープの基本だね
レキシカルなのかパラメーターなのか
DOMをいじるとみんな参照になるし変数大切ね

852:デフォルトの名無しさん
23/05/24 10:45:52.94 R9+x876F0.net
匿名イベントを削除する方法って無い?
ググりまくっても全く見当たらんから仕方ないのでElement.prototype.addEventListenerフックしてフィルタしてるんだけど非常に遠回りな事してる気がしてならない

853:デフォルトの名無しさん
23/05/24 11:04:01.62 CrZEaXEyM.net
>>837
イベントリスナーへの参照を保持してないと
removeEventListenerは使えない
あとはAbortSignalを使う方法がある
MDNのaddEventListener辺りに全部書いてる

854:デフォルトの名無しさん
23/05/25 06:53:07.70 djzVD0JU0.net
くそ素人で申し訳ない
ブックマークレットでCookieを編集する時に有効期限も同時に編集したいのだけれど
どうしたらいいのだろうか
元々は
javascript:document.cookie=%22ipb_member_id=〇〇%22;document.cookie=%22ipb_pass_hash=〇〇%22;
って感じなのだけれど1日くらいしたらすぐ消えてしまう

855:デフォルトの名無しさん (スップ Sd5a-9ehv [49.96.239.55])
23/05/25 11:10:49.64 vvIauVZOd.net
どっかのRFCに載ってるはず

856:デフォルトの名無しさん
23/05/27 14:04:26.57 MkhutBump.net
>>839
そいつは有効期限も一緒に設定しなきゃならんな。
javascript:(function(){
var date = new Date();
date.setDate(date.getDate() + 30); // 30日後に設定
document.cookie = "ipb_member_id=〇〇; expires=" + date.toUTCString() + "; path=/";
document.cookie = "ipb_pass_hash=〇〇; expires=" + date.toUTCString() + "; path=/";
})();
こんな感じでやってみ。
これでipb_member_idとipb_pass_hashが
30日間有効になるぜ。
ただし、ブラウザの設定やCookieの設定によってはJavaScriptから触れないこともあるから、
その辺は自己責任でな。

857:デフォルトの名無しさん
23/05/28 15:24:03.43 n14WZ+eY0.net
documentのinnerHTMLやtextContentの書き換えをしたとき、ブラウザのDOMの計算(?)や再描画(?)は変更があった部分のみか、ページ全体で行われるののどちらでしょうか?

858:デフォルトの名無しさん
23/05/28 23:28:10.35 8mVMxOyu0.net
>>841
ありがとうまじ助かった

859:デフォルトの名無しさん
23/05/29 06:35:55.98 eVNfBOW80.net
CookieってPHPみたいなサーバーサイドから設定するのとJSから設定するのどっちが良いんかね?
同僚から受け継いだシステムはPHPでやってたが

860:デフォルトの名無しさん
23/05/29 07:03:02.74 nuFuFtG60.net
HttpOnlyの存在考えるとサーバーサイド一択じゃね?

861:デフォルトの名無しさん
23/05/29 08:05:53.64 7kZHwtIo0.net
ステートレスな通信を補助するものだから、処理の起点側でつけると良い
ただ、一般的にはサーバサイドになると思うよ

862:デフォルトの名無しさん (ワッチョイ 5f4b-HhYS [110.2.215.28 [上級国民]])
23/06/19 13:57:37.11 iYcFBKEZ0.net
if ((a == b && c != d) || (e == f && g != h)){
alert ("正解");
}
こういうコードの書き方は出来ますか?
二重括弧の使い方は正しいでしょうか?

863:デフォルトの名無しさん (ワッチョイ 5f4b-HhYS [110.2.215.28 [上級国民]])
23/06/19 14:42:31.77 iYcFBKEZ0.net
ちょっと調べてたんですが、こうでしょうか?
if (((a == b) && (c != d)) || ((e == f) && (g != h))){
alert ("正解");
}
「a == bとc != dの条件が両方ともtrue」か「e == fとg != hの条件が両方ともtrue」なら"正解"と警告を表示したいのですが…
三重括弧なんてあります?

864:デフォルトの名無しさん (ワッチョイ ff7b-0fSR [153.185.178.93])
23/06/19 14:49:42.42 G503Uwj70.net
>>847で大丈夫やろ。
なんで試さんの?

865:デフォルトの名無しさん (ワッチョイ ff61-gPkm [153.171.212.140])
23/06/19 14:54:44.66 Glrukv1f0.net
演算子優先度の理解が追い付いて無いなら好きなだけ括弧使えばいい

866:デフォルトの名無しさん (オッペケ Sr33-vDmN [126.157.241.160])
23/06/19 14:58:41.52 3rS08iXar.net
何重カッコでもいけるけど演算子やカッコが増えると可読性が落ちて条件式を読み解くのが辛くなる
コードは長くなっても条件式をいくつかに分割して変数に入れた方が読みやすくなるよ
const x = (a == b) && (c != d)
const y = (e == f) && (g != h)
if(x || y){
alert ("正解");
}
とか

867:デフォルトの名無しさん (ワッチョイ 5f4b-HhYS [110.2.215.28 [上級国民]])
23/06/19 15:02:17.21 iYcFBKEZ0.net
皆さん、ありがとうございます
変数に入れるのがいいですね
やってみます

868:デフォルトの名無しさん (アウアウウー Sa23-QBJ2 [106.130.41.210])
23/06/19 23:22:27.82 xNSaH23va.net
イテレータ、Map、Setがややこしくて😩なんだけど実務で使う?
一応理解したけどカスタムイテレータ作ってそれをオブジェクトに追加してfor...ofなんて無理だな
プログラマーならバリバリ使うのかな?それとも知識として仕組み知っとくだけ?

869:デフォルトの名無しさん (オッペケ Sr33-vDmN [126.205.219.139])
23/06/20 13:18:59.52 es0ShzRur.net
Mapはキーと値の組み合わせのコレクション
Setは重複のない値のコレクション
どちらも実務で出番はある
イテレータは中身を1個ずつ取り出せるものの総称
カスタムイテレータに関してはmdnもおすすめのジェネレータ関数を覚えておけばいいかと
バリバリではないにしてもここぞというときに役に立つ

870:デフォルトの名無しさん (ワッチョイ ffda-ZcId [223.216.178.53])
23/06/21 18:20:14.61 He5qrAkL0.net
tableタグのtrをjqueryかjavascriptでアニメーションアコーディオンがうまくアニメーションしないんだけど
slideToggleで開発ツールではheightの数字は変化しているんだけど・・
もしかしてtrにheightという概念が無いから?
<tr class=name><td>名前1</td></tr>
<tr class=detail><td>中身1</td></tr>
<tr class=name><td>名前2</td></tr>
<tr class=detail><td>中身2</td></tr>
・・・

871:デフォルトの名無しさん (ワッチョイ 7d4b-Hjce [110.2.215.28 [上級国民]])
23/06/26 12:08:05.73 QXVTwCFE0.net
変数って定義する前はundefinedが入ってるんでしょうか?

872:デフォルトの名無しさん (ワッチョイ 1501-WolJ [60.109.218.97])
23/06/26 20:02:32.96 nZR6QJ/D0.net
>>856
変数定義前は変数がない
変数定義時に値を代入しなければundefinedで初期化される

873:デフォルトの名無しさん (ワッチョイ 7d4b-Hjce [110.2.215.28 [上級国民]])
23/06/26 21:13:06.03 QXVTwCFE0.net
>>857
ありがとうございます。

874:デフォルトの名無しさん (アウアウウー Sab9-cUyJ [106.130.49.224])
23/06/29 21:35:42.23 I06beN9ya.net
Promiseメソッドなんなの独自ルール多すぎでしょ。もはや別言語に感じる。これよく使用される?

875:デフォルトの名無しさん (ワッチョイ 1a00-KjOb [221.118.182.138 [上級国民]])
23/06/29 22:34:31.96 mZg1DRHQ0.net
Promise周りは最初は取っつきにくいけど、凄く使いやすく作られてるし、物凄くよく使うよ。

876:デフォルトの名無しさん (ワッチョイ 1d5f-momQ [14.8.104.32])
23/06/29 23:09:38.14 OBXN/r9b0.net
async awaitでしかfetchをかけない自分と、thenでしかfetchを書けない前任者のせめぎあい

xhrはなぜか知らんがもう時代じゃないらしいし

877:デフォルトの名無しさん (アウアウウー Sab9-Br7/ [106.128.36.203])
23/06/30 10:14:20.96 Lj29KtNna.net
的外れな質問だったら申し訳ありません…
クラスAが長くなってしまったこと(1500行くらい)、類似クラスBとある程度共通化できそうな部分があったので関数Cとして
別ファイルに切りだそうと思いました。
その際、関数CからAの複数のメンバ変数/メソッド(Bも同じ名前の変数/メソッドを持っている)を利用したいのですが、
一つ一つ引数で渡していくと記述が煩雑だし、仕様も変わる可能性があります。
そこで、Aのインスタンスから関数Cにthisを引数として渡すようにして、関数Cからは仮引数this.メンバ変数 などのようにして自由にAのメンバにアクセスできるようにしました。

以上のやり方で、動作はしているようですが、なんか良くないやり方の様な気もしています。
上記のやり方は一般的な方法でしょうか。何かデメリットはありますでしょうか。

878:デフォルトの名無しさん (ワッチョイ 7691-pVx5 [153.223.3.108])
23/06/30 10:55:58.80 qu6f9mWQ0.net
クラスAたBの同名の変数と関数をBaseクラスにしてAとBに継承すれば同名の変数関数を持ってることが保証できてうっかり名前変えてしまったとかのバグ防げるんじゃない?インターフェースみたいに
それから引数じゃなくてbind使えば関数C内でthisを自然な感じで使えるとか

879:デフォルトの名無しさん (アウアウウー Sab9-Br7/ [106.128.39.112])
23/06/30 13:05:23.88 2BLecjKja.net
有り難うございます。
デメリットとしては後でA~Cをいじった時にバグの温床になりやすいこと、くらいの認識で良いんですかね。
基底クラスを継承するかたちにすることも考えたいと思います。
確かにbind/callを使った方が、動作は同じでよりシンプルな気がしてきました。

880:デフォルトの名無しさん (アウアウウー Sa47-NFBa [106.146.70.58])
23/07/01 04:46:01.59 nMEzWNF9a.net
is_a, has_a

継承か包含か、古典的な質問

881:デフォルトの名無しさん (アウアウウー Sa47-ctHD [106.155.8.134])
23/07/01 19:38:17.78 hPyQUT1Ya.net
javascript:
if((result = prompt("input formula string","")) == "") alert("no formula string"); else alert(eval(result));

882:デフォルトの名無しさん (ワッチョイ 5a00-PRVu [221.118.182.138 [上級国民]])
23/07/01 22:48:30.73 WfKHfAvE0.net
なんつー邪悪なコード

883:デフォルトの名無しさん (ワッチョイ 5b4b-nuDV [110.2.215.28 [上級国民]])
23/07/05 21:30:37.79 74hfvDDi0.net
(function(){
 ~
})();
こういう書き方をしてるコードがあったんですけど、これは実行も含めた関数の書き方でしょうか?
最初の(と最後の)()の意味がわかりません

884:デフォルトの名無しさん (ワッチョイ e301-cWjJ [60.109.218.97])
23/07/06 00:31:51.01 IKcM4kIN0.net
>>868
即時関数
()は関数宣言ではなく、関数式として実行するため

885:デフォルトの名無しさん (ワッチョイ 5b4b-nuDV [110.2.215.28 [上級国民]])
23/07/06 01:40:00.57 vc4JCbkY0.net
>>869
ありがとうございます
よくわかりました

886:デフォルトの名無しさん (ワッチョイ 7679-p0MK [175.105.104.184])
23/07/07 13:17:53.80 tybFBPle0.net
なるべく自分で考えたキモイ名前は晒したくないからな?

887:デフォルトの名無しさん (ワッチョイ a15f-eaRz [14.13.136.34])
23/07/08 18:01:12.76 0tWDp4eO0.net
今ホームページを制作しているのですが教えて頂きたいです。
下記内容のコードの書き方がわかりません。
5枚の画像があるのですが、全部では無く一旦一枚目のみ表示させたいです。
次に各画像を説明する文字があります。その文字にマウスカーソルを合わせると、その文字にあった画像に2枚目3枚目と切り替わるようにしたいと思っています。
初心者すぎるので例としてコードを作って頂ければ見ながら調整したく思っています。
どなたかお教え頂けませんでしょうか。

888:デフォルトの名無しさん (スプッッ Sd73-mu37 [1.75.238.73])
23/07/08 20:53:43.61 S1M2Nutrd.net
>>872
それはもう質問ではない

889:デフォルトの名無しさん (ワッチョイ a15f-vDrU [14.8.104.32])
23/07/08 21:24:42.99 DhofVjWT0.net
ChatGPTに聴け

890:デフォルトの名無しさん (ワッチョイ d101-Ud/M [60.105.201.125])
23/07/08 23:32:58.73 EFUbRXYX0.net
>>872
質問にするなら>>1-3を読もう

891:デフォルトの名無しさん (アウアウウー Sa55-knyK [106.146.116.188])
23/07/09 01:18:13.12 YP8p84HTa.net
よくある、スライダーでしょ?
jQuery でもあるでしょ

Bootstrap のCarousel (カルーセル)
URLリンク(getbootstrap.jp)

892:デフォルトの名無しさん (ワッチョイ a15f-eaRz [14.13.136.34])
23/07/09 01:44:11.98 //wYUerL0.net
なんか色々ルールがあるんですね
諦めて勉強します
ありがとうございます

893:874 (アウアウウー Sa55-knyK [106.146.114.68])
23/07/09 19:52:50.68 gl6FDMI+a.net
jQuery slider
Bootstrap Carousel などで検索すれば、一杯ある

一杯あるけど、難しいから自作する人はいない。
皆、jQueryUI やBootstrap のCarousel などの既製品を使う

894:デフォルトの名無しさん (ワッチョイ 9300-Yt8B [221.118.182.138 [上級国民]])
23/07/09 21:16:30.84 VzLiONyC0.net
え、そんな難しい要素無いよ

895:デフォルトの名無しさん (スップ Sd9f-asTj [49.97.111.88])
23/07/17 23:23:58.12 XzfBWjood.net
フォームフィールドが定義されたPDFファイルがすでにあって、ブラウザ上のJavascriptでWebフォームに入力されたテキストをPDF側のフィールドに反映させてダウンロードすることができるpdfライブラリってあまりすか?
使い方のイメージとしては、たとえばPDF上に名前を入力する箇所がいくつかあるけど、ユーザーは単にweb上で普通のinputフォームを入力してsubmitすると名前が入力済みのPDFファイルをダウンロードできる、という感じです。
pdfmake等いくつかライブラリは見たのですが、白紙ベースでPDF作る例しか見あたらなくて(テンプレートは画像背景で切り替え等)、直接PDFフォームを扱えるものは無いかなと。

896:デフォルトの名無しさん (アウアウウー Sac5-HZc/ [106.130.137.152])
23/07/29 00:54:23.66 s0ko+FdFa.net
プログラミング全く知らない状態からやっとJavaScript一通り学びました
かなり難しかったです。でもJavaScriptは比較的簡単な言語なんですよね?
ES6以降のJavaScriptでもやっぱり簡単なんですか?
それとES6で大規模アップデート合った時は絶望しましたか?
勉強していて苦しんだのがスコープ、this、反復処理の背景(iteratorの動き、yieldは何をしてるか)、非同期処理(Promise、then、async)、その他様々なメソッド、静的メソッド、、、
これら全てES6から導入されましたよね?絶望しませんでしたか?
例えば私がもしES5までのJavaScriptに慣れ親しんでいてES6のアップデートに触れたら絶対絶望してました。概要見ても「?????」となってたはずです
プログラミングに向いてる人はこんな大規模アップデートがあるとワクワクする人なのでしょうか?
絶望せず、「何ができるようになったんだろう!凄い!こんな事やあんな事が出来る!」みたいな人も居ましたか?

897:デフォルトの名無しさん (ワッチョイ c200-pYoK [221.118.182.138 [上級国民]])
23/07/29 08:26:35.15 wB1gRUiQ0.net
ES5までは貧弱だったのでそりゃもう大歓喜よ。
それと現代のJavaScript(を使いこなすの)はもはや簡単な部類じゃないように思う。

898:デフォルトの名無しさん (オッペケ Sr91-xmUq [126.254.133.95])
23/07/29 09:45:27.72 ZQ+RMRi1r.net
苦しみとか絶望とか>>881は言語の習得を学校の勉強と同じようなものとしか捉えてないフシがある
日本史の勉強範囲が大政奉還までだと思ったら第二次大戦までだった!みたいな感覚
新しく覚えたことは実際のプログラミングで活かせるんだという意識が全く感じられない

899:デフォルトの名無しさん (アウアウウー Sac5-HZc/ [106.130.201.25])
23/07/29 14:21:53.16 LQ1ElLyya.net
>>882
>>883
とにかく理解するのに必死で苦しみました。jJavaScriptが簡単とは全く思いませんでした

900:デフォルトの名無しさん (アウアウウー Sac5-HZc/ [106.130.201.25])
23/07/29 14:27:58.50 LQ1ElLyya.net
try,catch,finally文の存在異議が分からなかったけど、今さっき急にasync/awaitのエラーハンドリングに向いてるのに気が付きました
つまりthen,catchのPromiseチェーンをより楽に書けるのに今さっき気が付きました。こんな感じで上手くいかないですね

901:デフォルトの名無しさん (ワッチョイ c200-pYoK [221.118.182.138 [上級国民]])
23/07/29 15:03:53.70 wB1gRUiQ0.net
.then().catch()の方が綺麗に書けて(副作用的な意味で)好きだなぁ

902:デフォルトの名無しさん (ワッチョイ c6bd-g4Mn [119.240.43.146])
23/07/30 02:24:04.00 oecUblNe0.net
>>881
言語として簡単かっていうとどうだろうね。
Webブラウザがあれば動かせる上にデバッグ環境まで付いてるから、誰でもすぐ始められるし、作ったものをどこででも動かしてもらえるという手軽さはあると思うけど。

903:デフォルトの名無しさん (ワッチョイ 095f-kJnY [14.8.104.32])
23/07/30 14:24:24.68 av5XIWe10.net
自分はプロトタイプ型オブジェクト指向から入ったから気にならないけどクラス型でプログラム書いてた人は違和感凄いんだろうな
あとクロスブラウザ対応しなきゃいけなかった人達もJSはしんどかったんだろうなと想像

904:デフォルトの名無しさん (ワッチョイ e94b-C8We [110.2.215.28 [上級国民]])
23/08/04 01:16:43.56 LzfYm8xL0.net
rd41 = "";
alert (rd41);
これで「rd41は未定義です」ってエラーは出ますか?
alert(rd41);
これだけだと「rd41は未定義です」ってエラーが出ますよね
実際のコードはalertでは無いのですが、rd41に無を代入して何も表示させたくないのです
rd41 = null;
だと、nullと表示されてしまいます

905:デフォルトの名無しさん (ワッチョイ e94b-C8We [110.2.215.28 [上級国民]])
23/08/04 01:36:14.69 LzfYm8xL0.net
chatGPTに質問したら答えが返ってきた
URLリンク(i.imgur.com)

906:デフォルトの名無しさん (ワッチョイ febd-FWk2 [49.129.241.111])
23/08/04 09:00:08.06 2wk44tWe0.net
>>889
delete を調べてみるとどうだろう。
やりたいことによってはブロックスコープで足りるかも。
個人的にはブロックスコープを活用して、変数を小まめに狭い範囲に閉じ込める書き方をおすすめしたい。

907:デフォルトの名無しさん (ワッチョイ a101-CknR [60.89.4.138])
23/08/04 09:14:51.09 TEvOuQNU0.net
>>889
ECMAScriptに「未定義」というエラーはない
Strict Modeで実行すれば、両コードともにReferenceErrorになるだろう
URLリンク(developer.mozilla.org)
URLリンク(developer.mozilla.org)

908:デフォルトの名無しさん (オッペケ Sr91-q/g9 [126.254.212.243])
23/08/04 09:37:58.66 EZ9l15Zsr.net
>>889
>rd41 = "";
>alert (rd41);
>これで「rd41は未定義です」ってエラーは出ますか?
なんで試してみないの?

909:デフォルトの名無しさん
23/08/11 14:55:53.43 +rPtXLG2m
JÅLだのAΝАた゛


910:のクソアヰ又ト゛ゥだの洒飲んて゛業務してるクサヰマ一クだのコ゛キブリフライヤ‐だのジェットクサ‐だのテ囗リストに天下り賄賂癒着して都心まて゛数珠つなぎて゛騒音に温室効果カ゛スにコ囗ナにとまき散らさせて,気候変動させて海水温上昇させて.土砂崩れに洪水、暴風,猛暑.大雪にと災害連發させて地球破壞して、静音が生命線の知的産業に威カ業務妨害して知的産業を根絶やしにして.個人情報漏洩に不正送金にシステム障害まみれのポンコツ後進国に陥れた自民公明た゛か゛,どうやら騒音は,知的産業のみならす゛,音楽や執筆などの創作活動にも甚大な影響を及ほ゛していることか゛明らかになってきたな技術全敗で海外に売れるものはア二メくらいとか言われていたのか゛、それすら死に体になって曰本終了にも程があるだろ日銀に金刷らせて賄賂癒着してる資本家階級と大企業を高額総ナマポ化して.コ゛ミ企業た゛らけをゴミ企業10О%に陥れたわけだが民主主義化しようと立ち上がった山上大先生と,それを國葬によって消し去り腐敗國家を存続させんとする自民公明の攻防キモ杉た゛ろ創価学会員は,何百万人も殺傷して損害を与えて私腹を肥やし続けて逮捕者まて゛出てる世界最悪の殺人腐敗組織公明党を池田センセ一が口をきけて容認するとか本氣で思ってるとしたら侮辱にもほどがあるぞ!httPs://i、imgur.соm/hnli1ga.jpeg



911:デフォルトの名無しさん (ワッチョイ f233-yhDR [101.141.60.18])
23/08/14 23:07:53.97 QNJSoVjn0.net
時報みたいなのを作成中でそのhtmlのページさえ開いておけば
9時、12時、18時(プリセットとかは無く固定)に特定のwavサウンドファイルがaudioElement.play() で再生される用にしています
(タブが非アクティブだとなんか動かない時があったのでwindow.openで表示させてます)
chromeのポリシーみたいなのでユーザーが明示的なアクションをしないと音声の自動再生はされないみたいで
それの良い回避策ってありますか?
実用性考えると携帯のアラームが百倍使いやすいけど
自分用にチープなのを作って遊んでるんだけど解決策が思いつかなくて・・・

912:デフォルトの名無しさん (ワッチョイ 1f4b-uBRt [110.2.215.28 [上級国民]])
23/08/15 01:53:58.77 Efj8IW440.net
>>895
そういう質問はchatGTP得意や
聞いてみれば

913:デフォルトの名無しさん (ワッチョイ 7e63-SF+K [153.218.139.115])
23/08/21 00:13:21.70 v7lFaH3H0.net
【環境】Windows 11, Chrome最新版
【何をしたのか】PHPで動的に出力されたテキストに replace (new RegExp)
【エラーメッセージ】コンソールには何も出ません
【期待する結果】ページ内に複数生成される動的クラス内テキストを置換したい
【サンプルコード】
<p class="tx-body">おはようございます*2023.08.15</p><span clas="tx-date">0000</span>
<p class="tx-body">ごきげんよう*2023.08.20</p><span clas="tx-date">0000</span>


tx-dateクラスの中身をtx-bodyの*以降の文字列に置き換えたく、以下を<body>の後半に書きましたが期待する置換変化が起きません、エラーも出ません、
根本的なところわかっていないのだと思うので恐縮ですがお手上げ状態です
window.addEventListener('load', function() {
const ItemList = document.getElementsByClassName("tx-body");
const ItemDate = document.getElementsByClassName("x-date");
for(i=0; i<ItemList.length; i++) {
var tBody = ItemList.item(i).textContent;
var tDate = ItemDate.item(i).textContent;
var replaceDate = tBody .split("*")[1];
tDate = tDate.replace(new RegExp(replaceDate,'g'),'');
}
})

以上ご指導よろしくおねがします

914:デフォルトの名無しさん (スッップ Sdca-jTH6 [49.98.168.137])
23/08/21 11:40:28.26 cB09UaOod.net
>>897
まずconsole.log()や開発者ツールを使って自分の書いたコードがどこまで想定通りに動いてるか確認してみよう

915:デフォルトの名無しさん (ワッチョイ 534b-ubuk [110.2.215.28 [上級国民]])
23/08/21 11:51:22.81 7Ts4WfMN0.net
>>897
コードを見る限り、置換を行うためのコードは一見正しく見えますが、複数の潜在的な問題が考えられます。まず、コード内のいくつかのポイントをチェックしてみましょう。

1. **クラス名のスペル**: `tx-date` クラスが正しく `x-date` クラスになっているか確認してください。

2. **期待する置換変化の確認**: 期待する置換変化がどのようなものか確認してみてください。コード内で `tDate` の内容を `console.log()` を使って出力し、実際の値が正しいか確認できます。

3. **変数 `replaceDate` の設定**: `tBody.split("*")[1]` の部分で、正しい位置に `*` が存在しているか確認してください。`split()` メソッドは対象の文字列を指定の文字で区切って配列にしますが、もし `*` が存在しない場合、期待通りの結果が得られない可能性があります。

4. **置換操作の適用**: `tDate` に対して行った置換操作が、実際のDOM要素に反映されていない可能性があります。`tDate` の内容を変更した後、対応するDOM要素の内容を更新するコードが不足しているようです。

これらのチェックポイントを確認した上で、コードを修正するか、デバッグすることをお勧めします。また、具体的なサンプルHTMLコードや置換の例を提供していただければ、より具体的なアドバイスを提供できるかもしれません。

916:デフォルトの名無しさん (スッップ Sdca-jTH6 [49.98.168.137])
23/08/21 12:25:10.86 cB09UaOod.net
このワッチョイ **4bは質問スレにchatGPTの回答貼るだけのボットみたいなもんだからスルー推奨
NG入れといてもいい

917:デフォルトの名無しさん (アウアウウー Sa7f-7wIC [106.133.165.90])
23/08/22 23:04:06.56 rPfWctd8a.net
2か所とも、clas="tx-date" になっている!
class でしょ

918:898 (アウアウウー Sa7f-7wIC [106.133.165.90])
23/08/22 23:12:31.83 rPfWctd8a.net
>const ItemDate = document.getElementsByClassName("x-date");
x-date は、tx-date じゃないの?

919:898 (アウアウウー Sa7f-7wIC [106.133.165.90])
23/08/23 00:10:28.94 B78POXf5a.net
一旦、要素 tDate_elem を取得しておいてから、
その textContent に値を設定する。
つまり更新

const tBody = ItemList.item(i).textContent;

const tDate_elem = ItemDate.item(i) // 要素
const tDate = tDate_elem.textContent;
console.log( tDate ); //=> 0000

const replaceDate = tBody.split("*")[1];
console.log( replaceDate ); //=> 2023.08.15

tDate_elem.textContent = replaceDate; // 設定

表示
おはようございます*2023.08.15
2023.08.15

ごきげんよう*2023.08.20
2023.08.20

920:デフォルトの名無しさん (スプッッ Sd6a-jTH6 [1.75.209.193])
23/08/23 10:39:07.30 oZ78uDd8d.net
>>903
それはもう質問に答えたというよりデバッグと修正を代行したのであってこのスレの主旨には合わない
おそらく他の人もそういう認識だからこの件に口を出さないんだと思うよ

921:898 (アウアウウー Sa7f-7wIC [106.146.101.215])
23/08/23 19:53:27.23 ktllvUDta.net
jQuery なら、もっと簡単
$( function ( ) {
$('.tx-body').each(function (index, elem) {
const tx_body = $(elem);
console.log(index + ': ' + tx_body.text());
const replaceDate = tx_body.text().split("*")[1];
console.log(replaceDate);
// tx_body 要素の次の兄弟で、tx-date クラスがある要素。絞り込み
const tx_date = tx_body.next('.tx-date');
console.log(index + ': ' + tx_date.text());
console.log('tx_date.length: ' + tx_date.length); // 0 or 1
// 該当する要素があれば設定する。つまり更新
if (tx_date.length === 1) {
tx_date.text(replaceDate);
}
});
} );

922:デフォルトの名無しさん (アウアウエー Sa22-NwC7 [111.239.174.98])
23/08/25 21:08:52.47 +90wXQAMa.net
chrome拡張どう作ったらいいのでしょう?
こんな感じではリダイレクトが連続してしまってだめでした
urlsのフィルターの仕方、もしくはリダイレクトをせずにそのURLにアクセスする方法が分かれば解決できるとは思うのですが・・・
//aaa.com/xxxx/ へのアクセスを aaa.com/abc/xxx/ へ変換したい (以下は動作しない)
chrome.webRequest.onBeforeRequest.addListener(
function(details)
{
if (details.url.match(/abc/))
{
return {}; //←ここを書き換える方法が分かればいける
}
else
{
details.url = details.url.replace(/aaa.com/g,"aaa.com/abc");
return {redirectUrl: details.url };
}
},
{
urls: [ "*://aaa.com/*/" ], //←ここを書き換える方法が分かればいける
},
["blocking"]
);

923:デフォルトの名無しさん (アウアウウー Sa47-rTQJ [106.146.72.134])
23/08/26 04:11:22.52 wsJDYSi/a.net
「chrome.webRequest.onBeforeRequest」で検索!
webRequest
URLリンク(developer.mozilla.org)

924:デフォルトの名無しさん (アウアウエー Sa5f-/No0 [111.239.174.98])
23/08/26 12:48:58.33 mvAl1l0Ba.net
そこ見てどうすればいいのか分からないからここに来た・・・

925:デフォルトの名無しさん (スッップ Sd9f-oH/7 [49.98.169.249])
23/08/26 17:41:19.65 /LQp1jGld.net
return detail.documentUrl
とか?

926:デフォルトの名無しさん (アウアウエー Sa5f-/No0 [111.239.174.98])
23/08/26 18:56:03.08 mvAl1l0Ba.net
return detail.documentUrl;
return {redirectUrl: detail.documentUrl};
どちらもダメ。リダイレクトのURLを返すことになるから、リダイレクトの無限ループに入っちゃう
それなら、リダイレクト止めればいいじゃんって思うんだけど
return {cancel: true};
のようにするとナビゲーション自体が止まってアクセスできなくなっちゃう

927:デフォルトの名無しさん (ワッチョイ cf8a-cMf3 [153.207.237.45])
23/08/26 19:46:44.48 HE/rWC1F0.net
空のオブジェクト返せばいいんじゃないの?
こんなの見て参考にしては?
URLリンク(gitlab.com)

928:デフォルトの名無しさん (ワッチョイ e361-NWkk [180.15.228.252])
23/08/26 21:15:33.19 AeqeuiS+0.net
無限ループしてるって事は条件分岐失敗してるんじゃないの?
console.logデバッグでもしてみたら?

929:デフォルトの名無しさん (オッペケ Sre7-bab6 [126.212.162.196])
23/08/27 12:33:38.16 QiCv/PxZr.net
>>906
リダイレクト後のurlに


930:?foo=barとかクエリ文字列付けてみるとかは? これでフィルタにかからなくなるみたい もちろんこれでサーバが誤動作起こさないのが前提だけど



931:デフォルトの名無しさん (ワッチョイ cf63-n242 [153.218.137.10])
23/09/03 21:37:03.60 0BSqvC2P0.net
サイト内にフォームが設置してあるページが複数あります
お問い合わせ、新規登録、ログイン、パスワードリマインド、などです
一時的に inputタグを入力不可にしたのですが
querySelectorAll("input,button").forEach( e => e.disabled = true );
複数あるページのうちお問合せだけは入力できるように、
現在は下記の効率の悪い記述になっています、、
document.querySelectorAll("#contact input, #contact button").forEach( e => e.disabled = false);
それぞれのページの<body>に idを付与していてそれで判別しているのですが
<body id="contact">
<body id="login">
<body id="remainder">
もっとスマートにお問い合わせページだけ入力できる
ヒントをお願いできませんでしょうか?

932:デフォルトの名無しさん (ワッチョイ 4327-g4sH [164.70.253.210])
23/09/03 21:48:21.38 qR1Ry2o90.net
【環境】windows10 chrome 最新版
【何をしたのか】開発ツールコンソール上でサンプルコードを実行すると
条件文が undefined にもかかわらず if 文内 console.log(1) が実行される
【エラーメッセージ】なし
【期待する結果】 なぜこうなるのか理由が知りたいです
【サンプルコード】
console.log(localStorage && (localStorage.getItem('deck')));
if(localStorage && (localStorage.getItem('deck'))) console.log(1)
if(undefined) console.log(2)

933:デフォルトの名無しさん (ワッチョイ 8361-yzHn [180.15.227.160])
23/09/03 23:01:09.12 zsKKxMoe0.net
>>915
console.log(localStorage && (localStorage.getItem('deck')));
の結果は本当にundefined?、undefinedの上の行に何か表示されてるよね?

934:デフォルトの名無しさん (ブーイモ MM7f-sgzH [133.159.150.82])
23/09/03 23:17:01.93 II4MkDPZM.net
>>914
下記セレクタでイケるはず(問い合わせページ以外でinput要素とbutton要素を抽出)
body:not(#contact) :is(input, button)

935:デフォルトの名無しさん (ブーイモ MM7f-sgzH [133.159.150.82])
23/09/03 23:33:36.04 II4MkDPZM.net
>>915
下記のログ出力はどうなる?
console.log(localStorage.getItem('deck') !== undefined ? 'バカめ!!よく確認しろ!!' : 'undefined です');

936:デフォルトの名無しさん (ワッチョイ 4327-g4sH [164.70.253.210])
23/09/04 13:53:40.48 R0PWdUab0.net
>>916
コンソール出力結果は
undefined
1
undefined
です
>>918
バカめ!!よく確認しろ!!
undefined
になります

937:デフォルトの名無しさん (ブーイモ MM7f-gLHL [133.159.151.54])
23/09/04 14:44:17.50 0gdMzEOZM.net
getItemは該当キーに対する値がなければundefinedではなくnullを返すのでlocalStorageが存在していれば
console.log(localStorage && (localStorage.getItem('deck')));は
null
undefined
と出力される
undefinedの上が空行になってるならdeckに対する値が入ってる
それが空文字ならfalsyなのでconsole.log(1)は実行されない
truthyな不可視文字(例えば改行コード)が入っていればconsole.log(1)も実行される
inspectやencodeURIで中身に何が入ってるか確かめればはっきりさる

938:デフォルトの名無しさん (ブーイモ MM7f-gLHL [133.159.151.232])
23/09/04 14:45:10.48 I1Zu7zQTM.net
はっきりさる!

939:デフォルトの名無しさん (ワッチョイ 4327-g4sH [164.70.253.210])
23/09/04 15:37:52.51 R0PWdUab0.net
あー わかりました
"undefined" っていう文字列がすでに入っちゃってたみたいです
丁寧に回答いただいてありがとうございました!

940:デフォルトの名無しさん (ワッチョイ cf63-0HOd [153.218.137.10])
23/09/04 15:59:10.40 KQbfSHx50.net
ウキキ🐒
input セレクタで解決しましたカッコイイ記述ありがとうございます

941:デフォルトの名無しさん (オッペケ Sr07-JKlf [126.255.138.111])
23/09/05 12:01:10.43 y2XoXHZcr.net
>【何をしたのか】開発ツールコンソール上でサンプルコードを実行すると
>条件文が undefined にもかかわらず if 文内 console.log(1) が実行される
不可解な挙動に遭遇したとき、自分が何か勘違いしてないかまずそこを疑ってみようという教訓
あとtruthyやfalsyな値の取り扱いは慎重に

942:デフォルトの名無しさん (ワッチョイ 2901-pIYl [60.114.101.121])
23/09/28 14:42:04.81 Pzc86hhG0.net
ほんまに、助かったで!

943:デフォルトの名無しさん
23/10/04 23:59:59.93 77DZdeZo0.net
if(rd41.value){
dofn()
}
これが正しく実行されないのですが(暴走するというか、意味不明な実行結果が現れます)、if文の中で関数の呼び出しは出来ないのでしょうか?
もしそうなら、このコードを正しく動作するように書き換えることは出来ますか?

944:923
23/10/05 02:54:19.96 pCa3KI6i0.net
普通に動作しました
すみません

945:デフォルトの名無しさん (ワッチョイ 9f05-cJ9m [116.94.11.103])
23/10/16 00:30:39.82 tJl0Ngd50.net
質問です
下記のURLは音楽サイトJangoの再生ページURLです

 URLリンク(www.jango.com)
 URLリンク(www.jango.com)
 URLリンク(www.jango.com)

これらのページをブラウザで開いた時に出てくる水色のメッセージ
パネルをJavaScriptで閉じる方法を教えてください

Jango plays unlimited music for free and with no commercials.

というメッセージの右隣にある[×]マークをクリックしたいのですが

document.getElementsByClassName("MuiAlert-action")[0].click()

では上手くクリックすることができませんでした

946:デフォルトの名無しさん (ワッチョイ 2e76-tQak [247.119.160.34])
23/10/16 00:54:14.00 SqBXoLFp0.net
document.querySelectorAll(“.MuiDialog-container,.MuiBackdrop-root”).forEach(e => e.remove())

947:デフォルトの名無しさん (ワッチョイ 9f05-cJ9m [116.94.11.103])
23/10/16 08:33:51.49 tJl0Ngd50.net
>>929
早速ありがとうございます
ただ、注意深くコピペして実行させたのですが
残念ながらメッセージパネルは閉じられませんでした

948:デフォルトの名無しさん (ワッチョイ e25c-CexO [211.121.28.151])
23/10/16 09:38:31.66 9MW6cr+O0.net
document.querySelector(".MuiSnackbar-anchorOriginTopCenter").remove()

949:デフォルトの名無しさん (ワッチョイ 9f05-cJ9m [116.94.11.103])
23/10/16 10:55:49.91 tJl0Ngd50.net
>>931
すいません、それもダメみたいです

950:デフォルトの名無しさん (ワッチョイ 9f05-cJ9m [116.94.11.103])
23/10/16 11:01:33.63 tJl0Ngd50.net
ブラウザ上の全然関係ない場所をクリックして自己解決しました

document.elementFromPoint(1, 1).click()

根本的な問題から逃げたようで悔しいですけどw

951:デフォルトの名無しさん
23/10/24 20:00:13.55 xAzUmtPF0.net
>>928
誰一人解決できなかったのか?
すまん、俺もわからんw

952:デフォルトの名無しさん (ワッチョイ 877c-JmE3 [122.212.18.110])
23/10/25 13:36:08.76 JRNrMb5/0.net
名前付き引数としてプロパティをもつオブジェクトを引数にする場合のJSDocの書き方ってどう書くのが正しいのでしょうか?
ネットで調べて以下の画像のように書くと、VSCodeで関数の説明で表示される時にプロパティ側の日本後説明部分が表示されません。
URLリンク(imgur.com)

構文のほうには型は反映されてるので読み込めてはいるようなのですが…

953:デフォルトの名無しさん (ワッチョイ 5fc2-vcKV [133.155.195.156])
23/10/26 10:06:04.96 QIG+kzYs0.net
source = ['いぬ=ドッグ', 'ぬこ=猫咪', 'キャット=にゃんこ', 'ねこ=キャット', 'わんこ=小狗', '老鼠=ねずみ', '小狗=ドッグ', 'マウス=ねずみ', '猫咪=キャット']
これを
result = [['いぬ', 'ドッグ', 'わんこ', '小狗'],
['ぬこ', '猫咪', 'キャット', 'にゃんこ', 'ねこ'],
['老鼠', 'ねずみ', 'マウス']]
これに集計するにはどうしたらいいですか

954:デフォルトの名無しさん
23/10/26 12:52:26.88 jSMDhhI40.net
>>936
URLリンク(developer.mozilla.org)

955:デフォルトの名無しさん
23/10/26 12:52:36.47 jSMDhhI40.net
>>936
URLリンク(developer.mozilla.org)

956:デフォルトの名無しさん
23/10/26 13:05:50.11 m2KCtDyt0.net
canvasでarc関数でx:100,y:100の位置に青で塗りつぶした半径3の円を描いたんですが
これと同じ位置に同じ半径で同じ色で塗りつぶした円を描くと四角形ぽくなってちょっと大きくなって表示されます。
背景を塗りつぶして1回目に描いた円を一度消去してから2回目の円を描いても同じでした。
文字の場合でも同じ位置に同じ文字を重ね書きすると太くなっちゃいました。
どうすればちゃんと同じ位置に同じ物を描いても太くならないようにできますか?

957:デフォルトの名無しさん (ワッチョイ c791-DWPP [242.12.24.181])
23/10/26 22:17:18.42 npbiXWKI0.net
>>936
それは質問ではなくて丸投げと言います

958:デフォルトの名無しさん (ワッチョイ fff0-f0DH [241.193.34.196])
23/10/27 08:04:19.82 93zv19AS0.net
>>936
競技プログラミングのスレで聞いて!

これは、UnionFind で、3つの木になる

UnionFind は、プログラミング・コンテスト・チャレンジブック(蟻本)に載っている

959:デフォルトの名無しさん (ワッチョイ 639d-XI6K [109.236.1.125])
23/11/13 18:52:10.34 qEXCkkFf0.net
alertのテキストをコピペする方法とかってご存知ありませんか?

どなたか知恵をお貸しください

960:デフォルトの名無しさん
23/11/13 22:10:22.42 FIfUHr+c0.net
質問したいなら詳しく書こうね

961:デフォルトの名無しさん
23/11/14 02:43:20.79 MYkZh+2q0.net
>>942
alertのテキストをコピーするには、通常はウェブページ上でalertが表示されている状態で、テキストを選択して右クリックし、"Copy"や"コピー"を選択する方法があります。ただし、ウェブサイトのalertはJavaScriptで生成されるもので、そのテキストを直接コピーする方法は制限されていることがあります。可能であれば、そのテキストを手入力でコピーすることができます。

962:デフォルトの名無しさん (ワッチョイ c5f9-EFnx [244.158.6.121])
23/11/14 19:07:48.92 WEqhXBJy0.net
検索すれば?
コピーを防ぐ方法は、幾つかある

ブラウザのF12 ボタンの開発者ツールで調べるとか

963:デフォルトの名無しさん
23/11/14 20:45:30.47 Mc/CoQSw0.net
>>942
マルチボスト先に答えがある
スレリンク(hp板:706番)-

964:デフォルトの名無しさん (JP 0H89-BcU5 [104.234.140.171])
23/11/15 11:30:55.95 FHoogchzH.net
>>939

亀だけど
fill()が複数回呼ばれると円が太るみたい
ctx.arc(100, 100, 3, 0, Math.PI * 2);
ctx.fill();
ctx.arc(100, 100, 3, 0, Math.PI * 2);
ctx.fill();
でなく、
ctx.arc(100, 100, 3, 0, Math.PI * 2);
ctx.arc(100, 100, 3, 0, Math.PI * 2);
ctx.fill();
でやると円が太らなかったよ

965:デフォルトの名無しさん (ワッチョイ e374-n7Dx [211.124.81.22])
23/11/15 12:39:52.38 D0hDoGTF0.net
亀が2chに書き込みにやってきた

966:デフォルトの名無しさん
23/11/17 20:41:48.61 oUDu0vRd0.net
console.log()のlogってどういう意味ですか?
printとかputじゃなくてlogで出力って珍しいですね

967:デフォルトの名無しさん
23/11/18 14:13:31.53 mHEv1Kbm0.net
consoleオブジェクトのログ情報を出力するためのlogメソッド…

968:デフォルトの名無しさん (アウアウウー Saa1-UHOz [106.180.4.201])
23/11/18 16:58:25.29 rXJKESWNa.net
blogのlog

969:デフォルトの名無しさん (ワッチョイ 0d5f-uy16 [14.8.71.128])
23/11/18 18:26:17.47 vb+682X10.net
彼岸島の名産品

970:946
23/11/18 23:53:58.59 rj8Lk8BJ0.net
…どこまで信じたらいいの?
>>950
ありがとうございます

971:デフォルトの名無しさん (ワッチョイ e300-5mk2 [2400:2200:7f1:bf91:*])
23/11/19 10:42:09.47 HAfvoabg0.net
いえいえ

972:デフォルトの名無しさん
23/11/20 16:19:56.96 q8v/AXQl0.net
const arr =Array(3).fill([]);
arr[1].push(0);
console.log(arr);
この場合arrは[[], [0],[]]になっていることを期待するのですが実際には[[0], [0], [0]]となっています
まったく納得いかないのですがなぜですか

973:デフォルトの名無しさん
23/11/20 16:41:25.42 LC62eXy40.net
>>955
URLリンク(developer.mozilla.org)
>配列を埋める値。もし value がオブジェクトであれば、配列のそれぞれの要素はそのオブジェクトを参照します。

974:デフォルトの名無しさん
23/11/20 16:49:32.78 q8v/AXQl0.net
>>956
fillがそういう仕様なんですね
納得です
ありがとうございました

975:デフォルトの名無しさん (ワッチョイ eb79-5mk2 [2400:2200:7f6:ca17:*])
23/11/21 08:31:09.87 reAksYQu0.net
いえいえ

976:デフォルトの名無しさん
23/11/21 23:06:08.47 Hk8WzggI0.net
変数宣言の際に、letよりconstを積極的に使うべき、とされているのはなぜでしょうか?
後で値を変えられるletの方が便利だと思うのですが

977:デフォルトの名無しさん
23/11/22 00:26:41.03 nlRha+4K0.net
JSにかかわらず変数は使ってる道中に値変換したり変数使いまわしてるとエラーの種になりやすいし、それを防止するのが大きいかな
配列やオブジェクトの値はconstでも変えられるし
昔はそういうごちゃごちゃ動く変数のトレースするのもプログラム組むやつの能力ってされてたなぁ

978:デフォルトの名無しさん
23/11/22 03:01:31.39 KDSVu4Ne0.net
コードを上から読んでいく時にconstだとこの値は後から変わることがないと決めつけて読むことができる
letだとどこかで書き換えられるのに注意しながら読まないといけない

979:デフォルトの名無しさん
23/11/22 10:49:23.49 5A+ZhXZi0.net
可読性の部分が大きいよね
varで変数定義しているクソコードなんかリファクタリングしたくないだろ?

980:デフォルトの名無しさん
23/11/22 11:06:59.29 5A+ZhXZi0.net
constで最初から定義した後にそれが動的な値だった場合タイプエラーを起こしてからletに書き換える事はあるけど最初からletで定義しちゃうと後々constに書き換えた場合もしそれが動的な値ならプログラムそのものが動かなくなって新たなるバグを生むでしょう?
最初は縛りを強くしておいて後から緩めるはあるけど逆はないですよ

981:デフォルトの名無しさん
23/11/22 15:03:20.05 hF+LjdVs0.net
条件によって const の値を変えられるようになるといいんだけどな。
簡単なのなら参考演算子でやれるけど。

982:デフォルトの名無しさん (ワッチョイ e302-8oJ/ [27.94.242.45])
23/11/22 20:15:59.75 5A+ZhXZi0.net
>>964
よくわからないけどそれってconst使う意味あるの?

983:デフォルトの名無しさん (ワッチョイ 2539-YW6P [2400:2200:6f2:ad2b:*])
23/11/22 20:54:04.80 FIiKhTS50.net
察するに初期代入時に場合によって違う値を入れたいということだろう
三項演算子を出してるし

984:956 (ワッチョイ 4d1d-f5/H [180.178.89.53])
23/11/22 21:26:20.43 VeafCB/q0.net
答えてくれた方々ありがとうございました
積極的にconstを使っていきたいと思います

985:デフォルトの名無しさん (ワッチョイ 25ca-SdNv [122.132.80.240])
23/11/22 21:54:03.90 7CtxEw9g0.net
>>965
うまい例になってるかわからないけど、何かのプロパティに値が入ってたらそれ、無ければデフォルト値を const に入れたいとか、この条件がもっと複雑になった感じとか。
あるいは、何かの基準座標を const に入れたいけどその値は一発では求まらないとか。
単にこれだけなら中間的な変数を使って値を求めて、最後に const に代入するって手もあるだろうけど、中間的な変数はスコープから追い出したいのにできないよね。

const x;
{
let a, b, c;
:
x = a + b * c;
}

みたいにできれば a b c はスコープから追い出せるけど、実際は

let a, b, c;
:
const x = a + b * c;

ってやらざるを得なくて、x が存在するスコープから a b c を追い出せない。
この計算を function に切り出せよと言うかもしれないけど、できればそうすりゃいいけどどこにでも適用できるというわけでもない。

986:デフォルトの名無しさん (ワッチョイ 250c-YW6P [2400:2200:6d0:af1d:*])
23/11/22 22:23:44.12 lZKHNjwl0.net
調べてみると苦肉の策で↓みたいな書き方が紹介されてたけど可読性考えるとどうだろうね
const x = (() => {
let a, b, c;
:
return a + b * c;
})();

987:デフォルトの名無しさん (ワッチョイ e3c2-fy5B [2001:240:2467:98ce:*])
23/11/22 22:52:37.25 8gAUwwkj0.net
関数に切り出さない意味がわからない

988:デフォルトの名無しさん (ワッチョイ 6bcf-ekUX [153.206.41.110])
23/11/23 00:25:34.14 9np+Rtrn0.net
欲しいのはただのブロックなのに関数として書かなければならないというのが余計なことをやらされている感はある。

989:デフォルトの名無しさん
23/11/23 01:53:09.12 pAGXWPD10.net
var使え

990:デフォルトの名無しさん (ワッチョイ 25ca-SdNv [122.132.80.240])
23/11/23 15:16:53.54 d47OCYFA0.net
>>969
処理の結果として複数の const、例えば x y を求めたい時は、その書き方でも難があるよね

991:デフォルトの名無しさん (ワッチョイ 2d12-YW6P [2400:2200:6f7:92d9:*])
23/11/23 15:39:42.20 98Thj8w70.net
>>973
その場合はタプルで受け取るようにすれば問題ないよ
const [x, y] = (() => {
let a, b, c;
:
return [a + b * c, a * b + c];
})();

992:デフォルトの名無しさん (ワッチョイ 25ca-SdNv [122.132.80.240])
23/11/23 15:58:06.00 d47OCYFA0.net
>>974
ああ、それが現状の最適解な気がするね。
後で汎用関数化したくなっても対応しやすいし。
まあ >>971 みたいな感覚はあるし、関数としてのコストも気になっちゃうけど。

993:デフォルトの名無しさん (ワッチョイ 551d-1fOb [180.178.89.53])
23/11/29 23:49:26.08 oO9dmq1+0.net
const num = 1;
とした時、numはCやJavaのint型と違って、1という値のオブジェクトを参照している
という理解でよろしいでしょうか?
(numという名前でラベリングされたメモリ領域には、1そのものではなく
数値オブジェクトへの参照値が入っている?)

994:デフォルトの名無しさん
23/11/30 04:02:01.17 uIFlL3tD0.net
>>976
1 はプリミティブ値。
Object型ではない。

995:973
23/11/30 22:41:28.93 l5hD/Y3Y0.net
>>977
レスありがとうございます
分かりました
文字列('Hello World'など)もプリミティブなんですよね
どうやって内部で実装されてるんですか?

996:デフォルトの名無しさん
23/11/30 22:57:08.84 mSFTiyup0.net
MDNをまず読みましょう
URLリンク(developer.mozilla.org)

997:デフォルトの名無しさん
23/11/30 23:13:04.35 5k4SwxyG0.net
>>976
実装的には全て参照扱いだよ
ただし数値の場合は参照(ポインタ)そのものに数値を埋め込むという方法
だから全て参照だけどメモリは消費しないというハック

998:デフォルトの名無しさん
23/12/01 01:54:56.09 Bo4sqMI/0.net
>>978
質問が大雑把過ぎる
もっと具体的に詳しく

999:975 (ワッチョイ 691d-zrcD [180.178.89.53])
23/12/02 04:48:25.07 3pMMmiCv0.net
返信くれた方々、ありがとうございます

>>979
TOEICのスコア400点台だったので厳しいです…

>>980
参照扱いでもプリミティブ型って言うんですか?
Javaではintやdoubleなど参照を用いずにデータを記憶する型をプリミティブ型と
呼んでいたので、少し混乱しています…

>>981
すみません、以後気を付けます

1000:デフォルトの名無しさん
23/12/02 10:49:58.14 qpNh64Np0.net
>>980は気にしなくていいよ
英語苦手でもプリミティブには7つの型がある、ぐらいは読めるだろう
あと日本語のページがないか調べるぐらいはしよう
URLリンク(developer.mozilla.org)

1001:デフォルトの名無しさん (ワッチョイ 91ca-j/4L [122.132.80.240])
23/12/02 11:43:24.98 /unkk9Eq0.net
>>982
そもそもそんなことを気にしてどうするの?
何がしたくての質問?

ぶっちゃけ表向き気にするべきなのは、その変数 a を別の変数 b に代入して、b を操作したら a まで同じように変わるのかどうかだけだと思うよ。

1002:979 (ワッチョイ 691d-zrcD [180.178.89.53])
23/12/03 12:45:58.94 FUDcVj1n0.net
>>983
分かりました
ありがとうございます

>>984
レスありがとうございます
うーん、まあこだわりとでも言いましょうか…
個人的にはそこまで知っておくことは無駄ではないと思います

1003:デフォルトの名無しさん (ワッチョイ c1b6-egvc [2400:2200:6d6:9e9c:*])
23/12/03 13:08:07.26 tV1DejKO0.net
>>978の質問なんかは明らかに自分のスキルや理解力に不相応なことを知ろうとしてない?
それを知ろうとするのはもっと力を付けてからがいいと思う

1004:デフォルトの名無しさん (ワッチョイ 1901-+tyV [60.118.124.10])
23/12/03 14:24:30.66 GsReymgf0.net
>>985
実装を知る以前に仕様は理解してる?
「仕様書のここをどうやって実装しているか、を知りたい」なら誰かしら答えるかもしれないが、そのようなレベルにも見えない
仕様を理解せずして、実装を理解するのは無理

1005:デフォルトの名無しさん
23/12/03 17:15:18.22 TpyXoIhbM.net
>>987
乗っかって補足すると、同じ仕様の実装なんて何通りもあるのよね。
そこであえて実装を知りたいというなら、その理由も書く方が間違いないよね。

1006:982
23/12/04 23:09:24.91 GWbm6wp00.net
レスありがとうございます
遅くなってすいません
>>986
そうですよね
まあ単純に、文字列である以上、変数用に確保したメモリ領域内に簡単には収まらない
だろうなと推測したんです
でも不変な値なら参照使わなくても収まるのかな
>>987
微妙です
入門書を読んで間もないレベルです
>>988
分かりました
まあ実装って言い回しが大仰でした
参照を使ってあるかどうかを特に知りたかったんです

1007:デフォルトの名無しさん
23/12/04 23:27:59.49 lRGkzbxI0.net
そのレベルを気にする人はもうフレームワーク作るレベルだろう

1008:デフォルトの名無しさん (アウアウウー Sa9d-/D3x [106.146.123.7])
23/12/05 20:06:09.74 gtr9NjJza.net
>>985
あ、ややこしい書き方してすまん
単にuint64_tが値の参照でオブジェクトの場合はポインタが入ってて
整数の場合はそのまま使ってると言うことを言いたかっただけ
typedef uint64_t JsValue;

JsValueが「値」を指す参照

JsValue obj = createObject(); // Object
JsValue smi = createSmi(); // Small Integer

こうすることでオブジェクトも数値も同じように扱える
V8もJSCも全部これ

1009:982,986
23/12/05 23:32:22.63 c1y4Tvg20.net
レスありがとうございます
>>990
そうなんですかね
>>991
内容がハイレベルですね

1010:デフォルトの名無しさん
23/12/06 00:21:20.37 HaZOzd170.net
>>989
入門書を読んで間もないレベルなら、口が避けても「仕様を理解した」とは言えない
実装を覚えるのは仕様書を読めるようになった後だろう
URLリンク(262.ecma-international.org)

1011:デフォルトの名無しさん
23/12/09 10:39:43.45 npLWblUF0.net
素人な質問で申し�


1012:Lりません。 下記のスクリプトで何故か関数丸々出力されてしまうのです。 テキストでは改行が多すぎる為、投稿出来ないため画像で申し訳有りません。 下のグレーのフォントが出力結果です。 出力指定していないので、何も出力されないはずなのですが…。 https://i.imgur.com/tJnx1oK.jpg



1013:デフォルトの名無しさん
23/12/09 11:31:37.42 In8GNdRi0.net
>>994
画像でコート見るのはしんどいので、>>2のサイト使って現象が再現するコードを掲示してほしい

1014:デフォルトの名無しさん
23/12/09 14:27:43.55 iYG1bkmj0.net
>>994
どうでもいいけど関数名の付け方にセンスないな
コメントもつける意味がないゴミ
変換ならconvertとかにすりゃいいのに…

1015:デフォルトの名無しさん
23/12/09 15:46:37.17 W9usxQKOr.net
/や:が入ってるのを明示してるのはコメントとして意味があるだろう

1016:デフォルトの名無しさん (ワッチョイ 1b56-m+YX [2400:4176:2846:5b00:*])
23/12/09 16:39:16.69 0uXDsiHr0.net
classのインスタンスで#プライベートメソッドにアクセスする方法ってないんでしょうか?

1017:986 (ワッチョイ b51d-g9yR [180.178.89.53])
23/12/09 17:13:36.47 YETt4fHv0.net
>>993
はい
リンクありがとうございます

1018:デフォルトの名無しさん (オッペケ Sre1-tek/ [126.254.232.20])
23/12/09 17:46:24.03 Mnb70srnr.net
なかったんで次スレ立てた
スレリンク(tech板)

1019:デフォルトの名無しさん
23/12/10 11:19:27.25 ngtmyS7f0.net
>>995
サイトの使い方がいまいち分からず試してましたが、サイトでは症状が再現できず想定通りの挙動でした。これは作ってるアプリ側に原因があるのでしょうかね。
mementoというdbアプリだったのですが。
>>996
自覚はあります。プログラムに興味を持ち練習はじめなので勘弁してやってください。思いつかないんですorz

1020:デフォルトの名無しさん (ワッチョイ 35cb-tek/ [2400:2200:6f2:ada4:*])
23/12/10 11:47:16.59 v6fUhk/70.net
>>1001
>>994を実行してる環境について書いてくれないと
コードで見えてる部分以外については知りようがないんだから

あと関数名を思いつかないならAIに候補を挙げさせるのはアリ

続きが必要なら次スレにどうぞ

1021:デフォルトの名無しさん
23/12/16 00:37:24.71 xiFcB2tC0.net
テスト

1022:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 495日 8時間 39分 45秒

1023:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


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