[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/25 03:31 / Filesize : 355 KB / Number-of Response : 1024
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

JavaScript の質問用スレッド vol.125



1 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 15:57:40.26 ID:TS5TGpUB0.net]
!extend:checked:vvvvvv:1000:512
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-5のテンプレを読んだ上で質問してください。次スレは>>950>>2の「次スレの立て方」を元に立ててください

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

■前スレ
JavaScript の質問用スレッド vol.124
https://mevius.5ch.net/test/read.cgi/tech/1636525464/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:: EXT was configured

511 名前:デフォルトの名無しさん [2023/01/04(水) 19:02:26.96 ID:jNmuxM610.net]
SetInterval()
に与える引数は、関数リテラルでなくてはならないそうです。

となると、以下は誤りで、
SetInterval(calcResult1,1000);

以下なら問題ない
SetInterval(calcResult2,1000);

という理解でよろしいでしょうか?

512 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 20:37:28.67 ID:UYb7FHhp0.net]
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/function

https://developer.mozilla.org/ja/docs/Glossary/Literal
リテラルに関数は含まれてないな

「関数リテラル=無名関数」が間違ってて、calcResult1 も calcResult2 は、関数リテラル。
とイコールで結んじゃうのは乱暴か
字義に従えば「無名関数」には生成時に名前をつけなかった、程度の意味しかないかと

ただ、関数式として生成された関数は変数に格納するか、でなければ他の関数の引数になるので、名前をつける意味はほぼない
結果的に関数式の関数は無名関数になることがほとんどで

513 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 20:40:11.89 ID:UYb7FHhp0.net]
ここでいう「関数リテラル」は関数式で記述された関数のことで、名前があろうとなかろうと「関数リテラル」でいいんだと思う

514 名前:502 mailto:sage [2023/01/04(水) 20:53:07.39 ID:UYb7FHhp0.net]
途中送信で変になってるからまとめ直し

>>502,503
その文脈での「関数リテラル」ってのは関数式で記述された関数のこと(>>504のリンク参照)で、名前の有無は関係ない
名前のあるcalcResult1 も 名前のないcalcResult2 も「関数リテラル」という理解でいいと思う
「無名関数」の「無名」には生成時に名前をつけなかった、程度の意味しかないかと

ただ、関数式として生成された関数は変数に格納するか、でなければ他の関数の引数になるので、名前をつける意味はほぼなくて結果的に無名関数になることがほとんどではある

515 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 20:57:54.46 ID:jNmuxM610.net]
>>504
すっごい分かりやすい。
モヤモヤしていたのがすっきりしました。
ありがとうございました。

516 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 21:00:20.48 ID:GLj+17iFr.net]
調べたら自分を再帰的に呼び出す場合に名前を付けるって例があってなるほどと思った

517 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 21:21:00.43 ID:GLj+17iFr.net]
ちなみに>>503のsetIntervalの引数は関数リテラルでないといけないってのはどこ情報?

518 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 21:23:57.48 ID:jNmuxM610.net]
あれ。関数リテラルには引数はないのか。。引数の不要な関数しか関数リテラルにならんのか。
もちょっと調べてみます。

519 名前:デフォルトの名無しさん [2023/01/04(水) 21:32:15.85 ID:jNmuxM610.net]
>>509
必要ならページ画像をどっかにアップします。。

技術評論社
JavaScript本格入門
https://gihyo.jp/book/2016/978-4-7741-8411-1
P362
setTimeout/SetIntervalメソッドの注意点
...引数funcは必ず関数リテラルで指定してください。



520 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 21:39:03.24 ID:jNmuxM610.net]
でも何かの引数に関数をわたすときは、
一般的に関数リテラルで渡すのがデフォと
ぼんやり思っている。

521 名前:デフォルトの名無しさん [2023/01/04(水) 21:47:22.56 ID:QxUfEWbZ0.net]
技術評論社はやめとけよ。

522 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 21:55:58.51 ID:GLj+17iFr.net]
>>511
文脈がわからんけど理由は書いてあるの?
動く動かないで言えばfunction文で定義した関数リテラルでない関数を渡しても動くようだけど
そもそもMDNにも関数としか書いてないし

523 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 22:20:18.03 ID:lFNs7lW+0.net]
単に著者が良く理解せずに書いてるだけな気がする

524 名前:デフォルトの名無しさん [2023/01/04(水) 22:21:10.60 ID:jNmuxM610.net]
>>514
setTimeout()の例でしかもjQueryで
申し訳ないのですが。
1秒後に#displayのhtmlの内容を空にするコードです。

以下のようなコードではsetTimeoutが動かず、

setTimeout($('#display').html(' '), 1000);

代わりに、以下で動きます。

function clearDisplay(){
$('#display').html('');
}
setTimeout(clearDisplay, 1000);

このことから書籍にあるように
関数リテラルでないと引数に渡せないと
思っていました。。

書籍の文脈ですが、実際にあとで画像アップします。

525 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 22:46:11.56 ID:GLj+17iFr.net]
>setTimeout($('#display').html(' '), 1000);
これそもそも渡してるの関数じゃないからリテラル云々の問題じゃなくない?
html()が戻り値としてjQueryを返すからそれが引数として渡ってるでしょ

>function clearDisplay(){
> $('#display').html('');
>}
これもfunction「文」で定義してるから>>506で言うところの関数リテラルには当てはまらない関数だよね

526 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 23:53:56.91 ID:PU4coe7B0.net]
アロー関数式を使うことで、関数リテラルによる関数定義を
より簡略化して記述することができます
ただし、this には注意してください

527 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 00:01:25.43 ID:EVXeoiyo0.net]
>>517
setTimeout($('#display').html(' '), 1000);
これそもそも渡してるの関数じゃないからリテラル云々の問題じゃなくない?

渡しているのは関数じゃない。。
んー。メソッドか。だから動かない。

ありがとう。

528 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 00:18:03.56 ID:7P17JKmwr.net]
>>519
いや、関数かメソッドかの話じゃなくて
$('#display').html(' ')をその場で実行してその戻り値であるjQueryオブジェクトを渡しちゃってるでしょって話
ちゃんと理解できてる?
https://js.studio-kingdom.com/jquery/manipulation/html#1

529 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 00:26:22.30 ID:EVXeoiyo0.net]
私の勘違いだったのですね。

たしかに関数ではない。。
一応書籍のページ画像をuploadしました。

「引数funcは必ず関数リテラルで指定してください。」
https://uploda1.ysklog.net/uploda/8298a4c0da.png

「関数リテラルは....ある関数の引数として渡したり....」
https://uploda1.ysklog.net/uploda/0bcdf35455.png



530 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 00:27:48.45 ID:EVXeoiyo0.net]
>>520
理解したありがとう!

531 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 02:04:13.18 ID:hRDnYJsk0.net]
>>521
「引数funcは必ず関数リテラルで指定してください。」
ちょっと問題のある文章だなあ

https://developer.mozilla.org/ja/docs/Web/API/setTimeout
第一引数は関数またはjavascriptコードとして実行される文字列

関数ってのは関数呼び出しじゃなくて関数名、または無名関数(関数リテラル)

>>516
文字列で渡したら動くはず
setTimeout("$('#display').html(' ')", 1000);

532 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 06:17:33.15 ID:O+NRT3S+0.net]
>>523
> 「引数funcは必ず関数リテラルで指定してください。」
> ちょっと問題のある文章だなあ
まあそこは直前に文字列でも指定できるけどって書いてるから教育的指導なんだろうとは思う
まあ「必ず」という言葉が強すぎるから「引数funcは関数リテラルで指定するようにしてください。」程度でいいと思う
むしろ問題は「関数リテラルは宣言した時点では、名前を持たないことから匿名関数、または無名関数と呼ばれることもあります。」の方だろうね

533 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 09:18:58.87 ID:EVXeoiyo0.net]
>>523
>文字列で渡したら動くはず
>setTimeout("$('#display').html(' ')", 1000);
ありがとう。関数とは、関数呼び出しではなく実行される文字列

次いでもう一点お願いします。

https://uploda1.ysklog.net/uploda/0bcdf35455.png
リスト4-04 function_literal.js

以下は、関数リテラルを使ってリスト4-01を書き換えたものです。

var getTraiangle = function(base,height){
return base * height/2;
}

console.log('三角形の面積:'+getTrianle(5,2));

↑の
getTrianle(5,2)
は、関数リテラルなのですね。
てっきり()がないものが関数リテラルと思っていたが、
どうも、それも間違いようで。

534 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 09:20:11.59 ID:EVXeoiyo0.net]
あくまで、関数を変数に代入するということが、重要なのでしょうか?

535 名前:デフォルトの名無しさん [2023/01/05(木) 09:23:08.82 ID:EVXeoiyo0.net]
「関数呼び出し」と
「引数付の関数リテラル」は
それだけみても違いわからないですね。
定義された場所を見て判断しないと。

536 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 10:06:29.26 ID:rM8SDmmnr.net]
>>525
>>setTimeout("$('#display').html(' ')", 1000);
>ありがとう。関数とは、関数呼び出しではなく実行される文字列
いやいや、それは関数じゃなくてただの文字列
setTimeoutの第一引数は文字列か関数って書いてあるでしょ

関数リテラルって言葉はもう忘れていいと思うよ
そもそもMDNに記述がないから便宜的なものだし、その本での説明も怪しい
定義の仕方で区分されてるだけで実質的にはただの関数で
挙動に差異があるわけでもないだろうし

537 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 10:52:19.71 ID:rM8SDmmnr.net]
>>524
>「引数funcは関数リテラルで指定するようにしてください。」程度でいいと思う
それだとfunction命令で定義した関数は指定してはいけないと誤解されるからリテラルを削ったほうがいいかと

538 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 10:52:37.45 ID:uFu ]
[ここ壊れてます]

539 名前:uDD5j0.net mailto: >>525
関数リテラルという呼び方はひとまず置いといて、無名関数という概念でとらえるとよい
function(~~){~~} は見ての通り、ひとつの無名関数である

var getTraiangle = function(base,height){ return base * height/2; }
によって、変数getTraiangle でこの無名関数を参照できるようになる

getTraiangle(5,2)
では変数名を使って先の無名関数を呼び出し、戻り値が取得される
これは一般に「関数の戻り値」と呼ばれる (関数リテラルではない)

console.log('三角形の面積:'+getTraiangle(5,2));
では、「+」によって、文字列 '三角形の面積:' と数値である戻り値が連結されて、ひとつの文字列が生成される
console.log()がそれを出力する

>>527
何かしら(無名)関数を使うにあたり、引数が要るなら付ける、要らないなら付けない、それだけの話
あなたの言う「引数付の関数リテラル」は勘違いで、「引数付きの関数呼び出し」に過ぎない

>>526
そういうこと
[]
[ここ壊れてます]



540 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 11:50:49.92 ID:hRDnYJsk0.net]
>>525
>setTimeout("$('#display').html(' ')", 1000);
ありがとう。関数とは、関数呼び出しではなく実行される文字列

違う。全く違う。めっちゃ大事なことだから勘違いしないで
それはsetTimeoutoの第一引数を文字列として指定した場合のこと

第一引数に関数を指定する方法は>>516で君は既にやっている
setTimeout(clearDisplay, 1000);
clearDisplay関数を定義してそれをsetTimeoutの第一引数に渡している
これでいい
>>529の言う通り

>>528の言う通り今は無名関数とか関数リテラルとかにこだわらない方がいい
>>525のうp画像に無名関数は重要な概念なので後ほど詳述ってあるからそこをみっちり勉強してね

541 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 12:50:07.72 ID:w+0CNSMQr.net]
関数リテラルの説明についてはここが一番しっくりくる
https://www.javadrive.jp/javascript/function/index5.html

「関数リテラルを使った関数定義」って言い回しを強調してるのが良い
だから関数リテラルを引数として渡すって言ったらこういうことだよなって
dispNum(10, 8, function(x, y){
return (x + y) / 2;
});

542 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 14:46:47.66 ID:EVXeoiyo0.net]
すいません。やっぱり関数リテラルという意味を理解したい。。でも↓この質問でわかるかも。
だれか答えていただけますでしょうか?
---
次のコードがあります。1から5のうち
どれが適切でしょうか?

let dispMessage = function(msg){
console.log(msg);
};

1.
function(msg){console.log(msg);}
は関数リテラルである。

2.
dispMessage
は関数リテラルである。

3.
let dispMessage = function(msg){
console.log(msg);
};
が全体として関数リテラルである。

4.
全て関数リテラルとはいえない。

5.
関数リテラルとは、用法のことであり、
コード部分を表すものではない。

543 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 14:53:38.67 ID:mmmJuCOb0.net]
>>533
ぐぐったら以下の様に出る。結構理解しやすいと思うが。
リテラルとは リテラルとは、プログラムのソースコードにおいて使用される、数値や文字列を直接に記述した定数のことである。 変数の対義語であり、変更されないことを前提とした値である。 プログラミング言語のコード中にリテラルが挿入される場合には、判別のために特定の書式を用いる必要がある。

544 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 15:02:17.50 ID:EVXeoiyo0.net]
うん。「リテラル」ということばによって惑わされてきた気がする。

545 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 15:06:19.08 ID:akcN5qw4a.net]
関数リテラルは関数として評価可能な右辺値と考えておけばまあいいんじゃないの
正確な定義は構文木の定義を見れば書いてある

546 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 15:10:13.35 ID:HxGsZjLmr.net]
>>533
1だろう
let s = "abc";
の"abc"を文字列リテラルと呼ぶけどそれを代入した変数sを
文字列リテラルとは呼ばないでしょ

547 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 15:28:42.13 ID:c7qQflpDr.net]
>>533
で、繰り返しになるけど本やサイトによっても説明がまちまちで
MDN探しても出てこないような用語だからあまり囚われない方がいい
理解しようとして時間をかけるだけ無駄

548 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 15:35:00.85 ID:m3Sm+5EJ0.net]
>>533
強いて言えば1かな
でも数値・文字列・正規表現リテラルみたいにプログラム中に単独で書くことは出来ないね
変数に代入するなり関数の引数に使うなりしないとエラーになる
英語でもfunction literalっていうみたいだけど関数リテラルってあんまりいい言葉だと思わないなあ

33;
"hello";
/^js$/;

function() {return true}; //SyntaxError

こんなことにこだわるよりもっと基本的なこと勉強した方方がいいんじゃないの?

549 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 15:38:00.87 ID:EVXeoiyo0.net]
あ。
誤解していたところがとけました。
当初は「2」かと妄信していたので、
だいぶ合点がとれました。
関数リテラルが無名関数と同義という説明も
いやそうではないという説明も
すっきりしました。

皆さん長々とお付き合いいただき
ありがとうございました。



550 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 19:28:05.49 ID:j61eMuZ00.net]
>>513
技術評論社のjQuery本格入門はものすごく読みづらかった。
もっと分かり易い言葉で解説して欲しかった。

551 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 20:02:55.70 ID:EVXeoiyo0.net]
>>536
>関数リテラルは関数として評価可能な右辺値と考えておけばまあいいんじゃない

この発想というか常識が無かったなあ。

552 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 20:55:47.77 ID:XhDooIHVH.net]
>>533
自分もあまりJS詳しくないんですけど
リテラルっていうのは、括るもの、という意味合いでは?
オブジェクトリテラルっていうのは波かっこで括るオブジェクト={}
文字列のリテラルは、""や’’
展開のリテラルは、``とか
関数のリテラルというのは、functionを指定した引数括弧つきのオブジェクトリテラルでfunction(){}

関数リテラルといえば、例えばfunction func(){...}
とした場合、{...}は変数funcに文字列として代入されます
そしてfuncは関数オブジェクトと指定されていて
関数の実行は()を読み込むことで実行されます
func 文字列
()   関数の実行

553 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 21:01:26.21 ID:XhDooIHVH.net]
>>533
解決済みだったようですみませんでした
参考までに追加

function func(){return 1}
とした場合
console.log(func)

console.log(func())
を見比べるとわかりますが、
func変数の中身は、function指定された文字列で
func()は関数を実行した結果の1が表示されます

554 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 21:40:35.47 ID:n/EqvkXYr.net]
>>543
JavaScriptのリテラルに関してはまず下記を読んでください


555 名前:チてあればリテラルというわけではないです
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Grammar_and_types#%E3%83%AA%E3%83%86%E3%83%A9%E3%83%AB
[]
[ここ壊れてます]

556 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 22:26:48.61 ID:XhDooIHVH.net]
>>545
括る、というのはそういう意味かと
リテラルはリテラルなので括る必要はなくて
プリミティブは、これは文字列です、
これは配列です、
これはオブジェクトです
とエンジンに理解させるための記述なのかと思いまして

557 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 22:39:53.19 ID:scsW7zY90.net]
リテラルはベた書きで良かろう

558 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 22:41:03.03 ID:n/EqvkXYr.net]
>>546
申し訳ないけど全体的に文意が取れません
1行目の「そういう意味」は何を指してますか?

559 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 22:57:51.54 ID:XhDooIHVH.net]
括ることで、エンジンに対して、これは配列オブジェクトだよとか
これは{}だよとか、これは文字列だよとか、そういうことを伝えているってことですけど



560 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 22:59:39.77 ID:O+NRT3S+0.net]
>>543 > リテラルっていうのは、括るもの、という意味合いでは?
>>546 > リテラルはリテラルなので括る必要はなくて
自分で何書いてるのか理解できてる?

561 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 23:00:08.63 ID:O+NRT3S+0.net]
>>549
数値リテラル

562 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 23:12:56.82 ID:XhDooIHVH.net]
<<538
諄いですね
正しい理論的な話あればご披露ください

JSの処理エンジンに、どういう記述があれば
どう処理するかというのがあるでしょ
{}とう記述を読めば、オブジェクトなのだな、と
””ならもじれるなのかなと、
function でて意義されたものがあれば関数なのかなと

リテラルは数値などの表現で
文字列は””、’’のクオーテーションで
関数は、function装飾委sで
それぞれが何を表現してるのかを確認し
スクリプト実行時にそれらをコンテキストに登録して
その後の作動を担保する、ってことなのかな

563 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 23:17:36.32 ID:/79BsoYR0.net]
一から教えるにはここじゃスペースが足りないからまず入門書一冊買って読め。

564 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 23:20:08.45 ID:XhDooIHVH.net]
先生、ありがとうござす
時間とれましたら勉強してみます、ありがとうです

565 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 23:20:49.68 ID:n/EqvkXYr.net]
中途半端に字句解析、構文解析の話になってるのか・・・
誰もそんなレベルの話はしてないのに

566 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 23:28:36.71 ID:V3WBk68sd.net]
誤変換の多さと言い意味の通ってなさと言い酔っ払ってるとしか思えんなw

567 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 23:34:22.58 ID:XhDooIHVH.net]
すみませんでした、もっと勉強します

568 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 12:07:23.77 ID:ipvOzmbWr.net]
勉強しますの前にまず筋の通った主張を相手に分かるようにお願いします
>>550の指摘もそういうことだし

569 名前:538 mailto:sage [2023/01/06(金) 17:52:02.25 ID:AgA2i3Ln0.net]
リテラルって文字列とか数値というイメージ
だから、

let dispMessage = function(msg){console.log(msg)}

っていう文があれば、関数リテラルならどうみても
左側の変数の文字列の事って思うじゃないですか。
右側はfunctionとか{}とか()とかあるので、
リテラルからかけ離れていると思ってました。

どうりで、話が噛み合わないなと思ってたが
今、全部なっとく。ありがとうございました!



570 名前:デフォルトの名無しさん [2023/01/06(金) 21:33:28.00 ID:Ynt2iWE0M.net]
リテラルはもともと「文字通りの」って意味
ソースに書いた内容が変数とかを介さずにそのまま1つの値として評価されるもの

括弧で括るとかの意味は全く無い

571 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 22:25:41.09 ID:Th1PE0Z2H.net]
リテラル

””や’’で表現されるのは文字列と評価する
[]は配列と評価する
{}はオブジェクトと評価する
JSエンジンがオブジェクトをどう評価して処理するかということだと思ったんですけど
何やら全く的外れなこと言ってたみたいですみませんでした
何度も謝ったのでもう許してください、鬼神様

572 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 23:10:59.17 ID:AlXqoCEJr.net]
>>561
的外れなことを繰り返し書かなくていいから黙って>>504を読んでおいて

573 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 08:36:35.89 ID:I26x6s3dH.net]
時間があるときに読んでおきます

574 名前:デフォルトの名無しさん [2023/01/07(土) 11:56:48.02 ID:n88Tb37q0.net]
>>563
いますぐ読みたまえ

575 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 12:11:11.83 ID:Oa/pj9jla.net]
読めたら読みます

576 名前:デフォルトの名無しさん [2023/01/07(土) 12:11:57.01 ID:n88Tb37q0.net]
>>565
読めなくても読むのだ

577 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 15:51:52.95 ID:zzWcN8NZd.net]
>>561
わざわざもう1回書いたのは自分の中ではこれが正しいという思いが捨てられなくて
賛同してくれる人が現れないかと期待してってところか

578 名前:デフォルトの名無しさん [2023/01/07(土) 18:24:30.76 ID:2xit7B8+0.net]
再帰関数についての質問

function test(){
処理1
test();
処理2
}
とした場合
処理2の前にtest()があるので、処理2はずっと実行されないということですか?

579 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 18:46:02.96 ID:Oa/pj9jla.net]
いいえそれは処理1次第です



580 名前:デフォルトの名無しさん [2023/01/07(土) 19:05:43.05 ID:2xit7B8+0.net]
>>569
ありがとうございます
処理1はreturnや他関数への再帰はしないものとします

581 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 19:11:57.35 ID:GmV1yQnL0.net]
最大の再帰の深さは JavaScript エンジンによって制限されていて
その範囲内で終了条件を満たすように作る必要があります
でなければエラー終了するので、無限再帰は有り得ません

582 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 21:33:23.91 ID:YilgzCe20.net]
そもそも永久に再帰は無理なのを理解していないのか?
それと何故再帰を使うのかという理由が全く分からん

583 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 01:51:54.62 ID:uPZeFpc/0.net]
まあ普通は無限ループだな
わざわざ再帰にしなければいけない
理由が何かだな

584 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 01:53:28.42 ID:FOdy7Dic0.net]
末尾再帰最適化が保証されている言語では特定条件を満たせばさもループの代替として使えるが
javascriptではそうはならなかった
以上

585 名前:デフォルトの名無しさん [2023/01/08(日) 01:53:30.69 ID:gpkzwVQsM.net]
末尾最適化されてれば無限ループ可能でしょ?
ES2015で末尾最適化の仕様化されたけど適合してない実装が多いというだけ

586 名前:デフォルトの名無しさん [2023/01/08(日) 01:54:05.49 ID:gpkzwVQsM.net]
ありゃ被ったか

587 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 02:24:13.14 ID:FOdy7Dic0.net]
規格があっても準拠するかどうかは実装次第というね
ちなみにjavascriptは関数がファーストクラスでレキシカルスコープを持つためいわゆるクロージャを無意識に生成できる
クロージャがあれば末尾再帰できないからと不自由に感じることはないと思われる

588 名前:デフォルトの名無しさん [2023/01/08(日) 17:51:20.88 ID:TObCTh0j0.net]
>>572
@supportsや@mediaのネストされたcssの全プロパティ値を取得するために
再帰使いたかった

589 名前:デフォルトの名無しさん mailto:sage [2023/01/09(月) 07:24:55.41 ID:Bl4X3MiM0.net]
>>578
無限にネストすることはないはずだが



590 名前:デフォルトの名無しさん mailto:sage [2023/01/09(月) 12:44:15.19 ID:mLvtK4oer.net]
>>578を実現するにしても>>568にはならんと思うけども

591 名前:デフォルトの名無しさん mailto:sage [2023/01/09(月) 13:34:27.76 ID:nBXeWSyT0.net]
ホントになw
// aはarray
function test(a)
{
a.forEach( b => {
if (b.isArray()) {
test(b)
}
})
}
みたいな感じなら分かるがw

592 名前:デフォルトの名無しさん mailto:sage [2023/01/09(月) 15:00:57.73 ID:2yNmR2Eh0.net]
ノードを全部舐めるみたいなトラバース系の処理はエンジンの制限とか気にするなら再帰のロジックを配列とループで作った方が安全だし
恐らく関数を呼び出すより速いから検討してみてね

593 名前:デフォルトの名無しさん [2023/01/14(土) 18:28:43.16 ID:WRdKOG7o0.net]
質問
scriptタグで指定されてるリンク先をjavascriptで変えたい
例えば. script type="text/javascript" src="A”
になってんのを
script type="text/javascript" src="B”に変えたい
replace等でやろうとしたものの上手くいかなかった

594 名前:デフォルトの名無しさん mailto:sage [2023/01/14(土) 20:27:52.90 ID:Ww/QFSM20.net]
ちょっとググったら出てくるやろw
https://www.softel.co.jp/blogs/tech/archives/6794

595 名前:デフォルトの名無しさん [2023/01/14(土) 23:08:43.95 ID:WRdKOG7o0.net]
>>584
ありがとうございます…
本当に助かりました…

596 名前:デフォルトの名無しさん (アウアウウー Sac7-wtyD [106.146.97.205]) mailto:sage [2023/01/15(日) 01:42:33.54 ID:k1TuDUU1a.net]
確かに以下のように、jQuery で、script タグのsrc 属性を、
a.js から、b.js へ変えても、scriptタグが再読み込みされない

$("script[src='a.js']:first").each(function (index, elem) {
$(elem).attr('src', 'b.js');
});

新たなscriptタグを追加してから、元のscriptタグを削除すれば、読み込まれるかも

597 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 02:01:27.46 ID:iV9MAA6y0.net]
読み込まれたスクリプト自体はscript要素消しても消えない事に注意

598 名前:デフォルトの名無しさん [2023/01/15(日) 13:53:25.79 ID:0IRxms8qM.net]
ルーターのブロードステーションに電源を入れると
エッジブラウザが起動して自動的にブロードステーションのルーターのページが表示されます。
ブロードステーション関連のソフトウェアは一切インストールしていないにもかかわらずです。
これって動きだけ見ますとルータが勝手にこっちのpcを操作してるように見えるのですがどういう仕組みなんでしょうか?
ブラウザ(JavaScript)はページ内しか操作出来ない筈なんですが。

599 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 15:02:28.33 ID:yvxMece60.net]
よろしくお願いします

【環境】Win11,Chrome
【何をしたのか】下記コードをHTMLファイルにしてchromeで読み込ませて、コンソールで見た
JSONのItemsを一個追加して、追加したageだけ書き換えたいが、両方書き換わる
【エラーメッセージ】エラーメッセージはない
【期待する結果】Itemsの2個めのageだけが40になるはず
【サンプルコード】現象を再現可能な最小限のコードを書いてください。

<script>
json =
{
"color_list": [ "red", "green", "blue" ],
"Items": [
{ "name": "Tanaka", "age": 26 },
]
}
data0=json["Items"][0]

json["Items"].push(data0)

console.log("before");
console.log(json["Items"][0]["age"]);
console.log(json["Items"][1]["age"]);

json["Items"][1]["age"]=40

console.log("after");
console.log(json["Items"][0]["age"]);
console.log(json["Items"][1]["age"]);
</script>



結果
before
26
26
after
40
40



600 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 15:12:37.19 ID:XTiaoq8f0.net]
>>589
そのコードで、参照がコピーされているので
data0={...json["Items"][0]}
とすればいい

601 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 15:18:59.77 ID:iV9MAA6y0.net]
>>589
https://developer.mozilla.org/ja/docs/Glossary/Deep_copy

602 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 15:22:38.08 ID:yvxMece60.net]
>>590,591
できましたありがとうございます。

603 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 15:31:02.14 ID:XTiaoq8f0.net]
この場合はこれで十分ですが
スプレッド構文はシャローコピーなので、
データがより複雑な構造の場合は、それなりの記述が必要です

604 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 15:40:55.97 ID:iV9MAA6y0.net]
>>588
キャプティブポータルの検出機能が誤爆してるんじゃないかな

605 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 20:06:20.61 ID:7dUg93Xk0.net]
mainfn()

function mainfn(){

pg1 = win1.pnl.add('group')
pg1.orientation = "row"
pg1.add("statictext", [0,0,70,23], "拡大・縮小")
rd11 = pg1.add("edittext", [0,0,40,23], 100)
pg1.add("statictext", [0,0,30,23], "%")

pg9 = win1.pnl.add('group')
pg9.orientation = "row"
CAN = pg9.add("button",[0,0,100,30],"cancel")
OK = pg9.add("button",[0,0,100,30],"OK")
CAN.onClick = function(){win1.close()}
OK.onClick = function(){
win1.close()
dofn()
}
win1.show()
}

function dofn(){
bai = parseFloat(rd11.text)
…… 以下略

これが正常に動作するのですが、rd11はローカル変数だとおもうのですが、なぜ違う関数内(dofn())から読めるのでしょうか?
こういう書き方が出来るのなら楽なのですが…

606 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 20:27:36.55 ID:Vv6s9YYpr.net]
関数内でvarを付けずに宣言された変数はグローバルスコープになる
var rd11 = pg1.add("edittext", [0,0,40,23], 100)
とすると関数スコープになって外部からアクセスできなくなるはず
関数内での変数宣言はvar文で行うべきで
これを「楽」と思ってしまうのは危険

607 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 20:53:03.10 ID:7dUg93Xk0.net]
>>596
ありがとうございます
非常に勉強になりました

608 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 21:30:36.07 ID:YqyTW3mJr.net]
>>597
'use strict'が効くならスクリプトの先頭行に書いとくといいよ

609 名前:502 mailto:sage [2023/01/15(日) 23:28:40.23 ID:bMctduL80.net]
>>595
それAdobe Illustratorかなにかで使うソースでしょ?
どういう環境で使うソースなのかは一言書いといた方がいいよ



610 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 23:45:44.09 ID:r5uLxMWea.net]
ES2015(ES6)以降は最低限、

変数宣言にはvar ではなく、let/const を付けよう

611 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 23:55:04.30 ID:cRCjJN100.net]
>>599
この指摘は何度も見てるが、いつになっても改善されない
質問者にとっては直す気がない、どうでもいい問題なんだろうな…

612 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 23:55:05.86 ID:5X3ij1Yxr.net]
>>600
このadobeのスクリプトはES3相当らしいのでvarを案内してるのよ

まあそもそもスレ違いだからID:7dUg93Xk0は今後adobeのフォーラムで質問するようにね
その方が我々も余計な労力を払わなくていいし君も的確な回答がもらえる
https://community.adobe.com/t5/forums/searchpage/tab/message?filter=location&q=%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%20script&noSynonym=false&location=category:jp&collapse_discussion=true

613 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 23:55:37.31 ID:cRCjJN100.net]
>>599
この指摘は何度も見てるが、いつになっても改善されない
質問者にとっては直す気がない、どうでもいい問題なんだろうな…

614 名前:デフォルトの名無しさん mailto:sage [2023/01/15(日) 23:57:40.43 ID:cRCjJN100.net]
申し訳ない
投稿エラーで再投稿したら、二重投稿になってた

615 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 01:46:54.32 ID:DS9XkUYq0.net]
>>599
すみません
次から書きます
あまりillustratorに特化したことは質問しません

616 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 01:51:10.12 ID:DS9XkUYq0.net]
>>598
そういうのがあるんですね
知らなかったです

617 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 02:24:41.48 ID:SauNqkHgr.net]
>>606
知った以上次からそちらにに行って質問してください
環境の説明も必要ないしillustratorに特化した質問もし放題だし良いことづくめですよ

618 名前:デフォルトの名無しさん mailto:sage [2023/01/16(月) 08:45:42.10 ID:Hbn6MJh3M.net]
イラレ特化だからではなくてJavaScriptのバージョンの問題なんだけど
なんも書いてなければ最新のモダンブラウザのつもりでみんな考える
今JavaScriptのバージョンってES12くらいかね、あんまりそういう言い方しないけど
イラレ搭載のはES3なの?それも知らんけど
クッソ古いから使える文法も関数もまるで違うから環境を書けと言っているのよ
そこらへん多分知らなかったんだろうけど、それは仕方ないけど、次からは環境きちんと書いて
というかできれば以降はAdobeのフォーラムでやって

619 名前:デフォルトの名無しさん mailto:sage [2023/01/17(火) 01:44:26.39 ID:BTJjkb3Ra.net]
>>589
C/C++ 以外の言語は、参照しかコピーしない・shallow copy。
実体は再作成されない

なので、deep copy するのに、参照のリンクが切れないので困る

だから、marshal とか、わざわざオブジェクトをJSON 文字列化して、
その文字列から、新しいオブジェクトを作ったりする



620 名前:デフォルトの名無しさん mailto:sage [2023/01/17(火) 16:25:41.45 ID:XA7n1WWP0.net]
>>609
え?

621 名前:デフォルトの名無しさん mailto:sage [2023/01/17(火) 19:01:55.76 ID:LBqNgpc6H.net]
ポインタのこと?

622 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 00:05:10.90 ID:csewAuIZ0.net]
検索アドレスに言語指定が必要になって下のスクリプトを書きました。

function Jump(){
var kekka =
"ht"+"tp://www.concertzender.nl/?s=" +
document.concertzender.kensaku.value +
"&lang=nl";
location.href = kekka;
return;
}

kensaku は検索フォームの文字列です。これで正常動作するのですが、
エラーチェックすると&が警告されて気になります。
&にしたらアドレスが&になって検索できないし、
なんとかならないものでしょうか・・・

623 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 00:09:24.42 ID:csewAuIZ0.net]

&amp; です
&#038; でも同じです

624 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 06:35:54.86 ID:guU+fOES0.net]
この気持ち悪いの何?
> "ht"+"tp

625 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 07:40:19.90 ID:Eqd2U92jH.net]
documentのpropertyにconcertzenderって標準でないっしょ?
スクリプトのどっかでなんか設定してるん?

626 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 07:41:25.64 ID:Eqd2U92jH.net]
それとエラーの内容も書き込まずにして質問っていうのもどうなの?

627 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 08:57:37.16 ID:cgb3Ru010.net]
>>614
5ch対策でしょ

628 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 10:05:55.23 ID:csewAuIZ0.net]
>>616
すいません。単純に特殊文字ダメよという内容だったんで・・・

"&lang=nl";

"&lang=nl"; もし、"&" で始まるエンティティを含めるつもりなら、";" で終了させるべきです。
このエラーメッセージのもう一つの理由は、このテキストの直前にある「&」文字をエスケープしなかったために、
誤ってエンティティを作成してしまったことです。(機械翻訳)

自分としては&amp;と書いて、リンクアドレスとして&を出力したいわけです・・・

629 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 10:16:20.21 ID:guU+fOES0.net]
>>617
あーそういうことか。コピペコードで悪さでもしようとしているのかと思ったけど違うみたいね

>>612
大体どの言語でもクエリ文字列を作る仕組みが用意されているのでそれを利用するのが適切です
JavaScriptならコレかな

URLSearchParams
https://developer.mozilla.org/ja/docs/Web/API/URLSearchParams



630 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 11:11:32.49 ID:CwkcAAQnr.net]
>>618
載せるならエラーメッセージ原文を
で、そのメッセージでググってみた?
あとエラーチェックするとって具体的にどういう操作をしたの?

631 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 12:42:13.54 ID:iQx/CEUf0.net]
>>612
htmlのscript要素の中身はCDATAなので文字参照にする必要なし
もちろんinnerHTML等htmlとしてパースされるものに突っ込む場合は必要だが
htmllintなんかでエラーになるのは無視していい

632 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 13:08:45.81 ID:csewAuIZ0.net]
>>620
エラーメッセージはその部分は&amp;だろと言っているのですが、じゃあ&amp;と書くと
tp://www.concertzender.nl/?s=kensaku&amp;lang=nl と出力されてエラーになり、困ったわけです・・・

>>621
無視していいんですね。ありがとうございます。
htmlでは&amp;と書くと&になるのに、スクリプトの部分ではそうならないのですね。

633 名前:デフォルトの名無しさん mailto:sage [2023/01/18(水) 13:26:39.01 ID:Okbz9NQsr.net]
>>622
何も質問に答えてないよね
答える気があるならもう一度>>620を読んでほしい

634 名前:デフォルトの名無しさん mailto:sage [2023/01/19(木) 22:07:44.38 ID:40XBuhhWH.net]
君は君の質問に反応しない人には
推し量って導こうという崇高な意識はないの?JS使いなのに?

635 名前:デフォルトの名無しさん mailto:sage [2023/01/20(金) 00:14:23.52 ID:VzeMnjK00.net]
>>624
誰からも回答してもらえない質問者は、他の人を導く存在に昇格ということか
質問に回答しないのが本人の為なのかもしれんな

636 名前:デフォルトの名無しさん mailto:sage [2023/01/20(金) 01:57:18.23 ID:ptsQI5JN0.net]
それよりJavaScriptをJSと略すと女子小学生しか思い浮かばないからそろそろやめたほうがいい

637 名前:デフォルトの名無しさん mailto:sage [2023/01/20(金) 07:46:55.99 ID:PpNyk8UWr.net]
>>624
>君は君の質問に反応しない人には
反応しない人?
質問に反応されたけど回答になってなかったからそこを指摘したんだけど

638 名前:デフォルトの名無しさん mailto:sage [2023/01/20(金) 17:53:26.94 ID:zXaveivW0.net]
>>626
J

639 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 00:31:01.01 ID:c9Kzf+f60.net]
【環境】Win11,Chromeで表示させたHTMLの中のjavascript
Windowsのフルパスのファイル名が入った変数を\でsplitしたいんだけど可能?

x_textにはJSONデータから取ってきた'D:\\00.png'が入っていて
console.log(x_text)だとD:\00.pngと表示
これをsplitすると
aaa1.html:154 Uncaught TypeError: Assignment to constant variable.
になる。
split('\\')をsplit('\\\\')にしても同じ

console.log(x_text)
arr_text = x_text.split('\\') ←ここでエラー
console.log(arr_text[0])



640 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 00:37:27.57 ID:q740ttN00.net]
>>629
arr_textがconst宣言されてるだけでは?

641 名前:デフォルトの名無しさん mailto:sage [2023/01/26(木) 01:06:05.60 ID:c9Kzf+f60.net]
>>630
できました。
サンクスです。

642 名前:デフォルトの名無しさん [2023/01/29(日) 10:31:07.49 ID:rZA8vUyra.net]
初学者質問ですいませんが、変数aが文字列あいう、かつ、変数bがundefinedでない時 というif文を書きたい時
if (a=='あいう' && (!(b === void 0))) {...
という書き方であってますか?
よりシンプルな書き方とか、より標準的な書き方ってありますでしょうか。

643 名前:502 mailto:sage [2023/01/29(日) 12:00:10.71 ID:9rN3KLzS0.net]
厳密不等価演算子 !==
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Strict_inequality

undefined が予約語になってないから void 0、ってのは……はて、今もやるものかね

644 名前:デフォルトの名無しさん mailto:sage [2023/01/29(日) 12:54:20.77 ID:eUvMCdrW0.net]
if(a == 'あいう' && !b)でもよさそうな気がしなくもない

645 名前:デフォルトの名無しさん mailto:sage [2023/01/29(日) 15:43:05.57 ID:d0tJgmu5r.net]
>>633
undefined は予約語ではないのでローカル変数による上書きが可能…という意味では、void 0 を使う価値はある

646 名前:デフォルトの名無しさん [2023/01/29(日) 15:59:30.70 ID:rpOrCqGha.net]
>633
ありがとうございます。リンク先確認しました。
if(a=='あいう' && b!== undefined またはvoid 0)
という感じでしょうか。
ここでb!= undefined とするとまずいのはbがnullの時だけ、という認識でいいでしょうか。

>634
ありがとうございます。bが0や空文字の時にも偽になりそうです。

647 名前:デフォルトの名無しさん mailto:sage [2023/01/29(日) 16:03:43.52 ID:R24XfIrD0.net]
第一にjavascriptみたいな後付け追加仕様が混在する言語は規格よりも実装の影響力が強いから
想定環境で検証済の方法を採用すべきだと思う
コードとしては変数をtypeofで"undefined"と比較するのが恐らく理解しやすいが、
メンテナがjavascriptに十分慣れていてvoid 0のイディオムの理解を期待できるならそっちでもいい

648 名前:デフォルトの名無しさん mailto:sage [2023/01/29(日) 16:28:19.00 ID:MX/guDl/d.net]
>>636
結局のところ
・undefinedが上書きされる可能性を考慮する必要があるのか
・bがundefined以外のfalsyな値を取りうるのか
・取る場合それぞれの値をundefinedとは区別したいのか同じとみなしたいのか
この辺次第で望ましい書き方は変わってくるわけで

649 名前:デフォルトの名無しさん mailto:sage [2023/01/29(日) 16:30:22.92 ID:d0tJgmu5r.net]
>>636
型チェックも働かせるなら

if (a. === 'あいう' && b !== void 0)

と書けば良い
'あいう' も==では型チェックしない

> ここでb!= undefined とするとまずいのはbがnullの時だけ

まずいのは、undefined! == void 0 の場合



650 名前:デフォルトの名無しさん (アウアウウー Sacd-3+Au [106.128.44.107]) [2023/02/12(日) 19:44:05.09 ID:zQHZ3m1Fa.net]
//☆☆県(API番号☆00000)の予報を取得
let url = "https://www.jma.go.jp/bosai/forecast/data/forecast/☆00000.json";

fetch(url)
.then(function(response) {
return response.json();
})
.then(function(weather) {
console.log(weather);
//☆☆県を選択し、変数に詰め直す
let area = weather[0].timeSeries[0].areas[0];
console.log(area);
//発表者と更新日時の情報を書き出す
document.getElementById("publishingOffice").lastElementChild.textContent = weather[0].publishingOffice;
document.getElementById("reportDatetime").lastElementChild.textContent = weather[0].reportDatetime;
//特定の地域の情報を画面に書き出す
document.getElementById("targetArea").lastElementChild.textContent = area.area.name;
document.getElementById("today").lastElementChild.textContent = area.weathers[0];
document.getElementById("tomorrow").lastElementChild.textContent = area.weathers[1];
document.getElementById("dayAfterTomorrow").lastElementChild.textContent = area.weathers[2];
});

上手く動かないのですがどこが間違えてますか?教えてください。

☆はわざとです

651 名前:デフォルトの名無しさん mailto:sage [2023/02/13(月) 16:33:17.79 ID:6gR8iJfAr.net]
バグってるので調査してください

それは質問ではなく作業依頼

652 名前:502 mailto:sage [2023/02/13(月) 22:37:53.05 ID:E1kxmkHl0.net]
>>640
やりたいことも伝えずに上手く動かないと言われてもなー

653 名前:デフォルトの名無しさん mailto:sage [2023/02/14(火) 07:31:57.89 ID:NKP9M84/H.net]
なぜ自身でデバッグせんのよ

654 名前:デフォルトの名無しさん mailto:sage [2023/02/14(火) 21:18:40.92 ID:snyjWmK+0.net]
そのメソッドチェーンやめれば分かるよ
エラーが起きない前提があってのメソッドチェーンだからよ

655 名前:デフォルトの名無しさん mailto:sage [2023/02/17(金) 12:17:26.22 ID:DJukcnvm0.net]
$.each()とsetIntervalをつかって、
インターバル時間ごとに順番に配列の中身を、コンソール出力する方法ありますでしょうか?

$.each()は、一度に処理するから、一つづつコンソール出力するのは難しいですかね。

656 名前:デフォルトの名無しさん mailto:sage [2023/02/17(金) 20:26:53.96 ID:iF4/ZjHx0.net]
>>645
$,each()を使う理由がわからない
setIntervalだけ使えば良い

657 名前:デフォルトの名無しさん mailto:sage [2023/02/17(金) 22:54:40.37 ID:iF4/ZjHx0.net]
>>645
clearintervalで1回だけタイマーを動かしてPromise化してawaitして$.each()を使えば、理屈ではできると思う
手段のモ目的化、かつ無駄に複雑だと思うが

658 名前:デフォルトの名無しさん mailto:sage [2023/02/18(土) 19:51:29.82 ID:gBmvvkX6a.net]
nodeでPythonのif name==main
みたい

659 名前:なことできませんか?
メソッドの動きをデバッカーでみたいんです
[]
[ここ壊れてます]



660 名前:デフォルトの名無しさん mailto:sage [2023/02/24(金) 01:21:32.26 ID:jGK2BMhd0.net]
//【環境】Win11,JScript
//【何をしたのか】case文のところ

661 名前:に条件式を書き、breakせずにすべての条件式で評価したい

//【サンプルコード】現象を再現可能な最小限のコードを書いてください。
a=1

switch (true) {
case (a==1):
a=a+16
WScript.echo("aの値を変更a=",a)
case (a>10):
WScript.echo("a>10","a=",a)
a=a-10
WScript.echo("aの値を変更a=",a)
case (a>30):
WScript.echo("a>30です","a=",a)
a=0
WScript.echo("aの値を変更a=",a)
}
WScript.echo("最終的な結果a=",a)

//【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
aの値を変更a= 17
a>10 a= 17
aの値を変更a= 7
a>30です a= 7
aの値を変更a= 0
最終的な結果a= 0

//【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
2番目のcaseでa=7だから3番目のcaseにはいかず、最終的にはa=7になるのでは?
[]
[ここ壊れてます]

662 名前:デフォルトの名無しさん mailto:sage [2023/02/24(金) 02:46:21.28 ID:thXJapXb0.net]
>>649
上から順に case が評価され、どこかで真になればそれ以降の case は評価されない。
break してないからそれ以降の処理がフォールスルーで実行されてるだけ。

全部の条件を評価したいなら普通に if で書けばいいと思うよ。

663 名前:デフォルトの名無しさん mailto:sage [2023/02/24(金) 05:29:40.16 ID:xQyCpHMf0.net]
そもそもswitch文って条件にtrue入れて使うようなもんじゃないぞ

664 名前:デフォルトの名無しさん mailto:sage [2023/02/24(金) 08:59:59.37 ID:thXJapXb0.net]
>>651
case に式を書けるようにしたことによって使えるようになった副作用みたいなものだよね。
switch の式と一致する case を探すのが switch文の動作だとするなら、switch の式 true と一致する値となる、すなわち true になる式を持つ case が選択される。
個人的には if で書けばいいものをわざわざ分かりづらい書き方にしてるバッドプラクティスだと思ってるが、フォールスルーと組み合わせると if よりもスマートに書ける可能性はあるかもね。
特に >>649 のように全部の case を評価してほしいなら、switch で書く利点が何一つ無い。
if より利点がある場合は、フォールスルーする場合に最初に true になる case までしか式が評価されないことくらいなのに。

665 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 02:30:10.34 ID:E1i3tKVi0.net]
>>652
良いサンプルが思いつかんけど、
ifで書こうとすると、重複する処理を書かなければいけなくなったり、フラグの変数を導入したりすることになるんだけど、
breakなしのswitch case文ならうまいこと書けるんじゃないかと思ってやってみたけど、動かなかった。

666 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 21:04:04.70 ID:5GrSMYMK0.net]
jQuery以外のライブラリ・フレームワークは廃止して欲しい。
覚えるのが大変。

667 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 22:01:05.33 ID:YxrjvuYta.net]
react だけでよくね
jqueryとかいい加減消滅しろよ

668 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 23:22:22.93 ID:5GrSMYMK0.net]
>>655
この2つは併用出来ないから辛い。

で、reactならではの利点は?

669 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 23:31:29.20 ID:fw0b+BcSM.net]
質問スレで焚き付けんな



670 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 23:38:37.47 ID:TypeZdxc0.net]
素の JS でいじゃん。

というのは言い過ぎかもしれんけど、何に使ってるんだか分からんようなことでいちいちおまじないのように jquery 読み込んでる呆れるようなところも少なくないんだよな。
通信回線速度も処理能力も上がってるから動いちゃいるが、とりあえず素の JS で書けるようになれと言いたい。
ブラウザ毎の非互換も少なくなってるし querySelector みたいな便利なメソッドもあるし、そんなに苦労しないでしょ。

671 名前:デフォルトの名無しさん mailto:sage [2023/02/25(土) 23:49:36.71 ID:YJ+BhbRla.net]
それなjqueryおじさんはJSだけで書けるようにしておけ
それでも足りないならReact使えな

672 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 19:53:41.69 ID:hdBOeOla0.net]
githubで他人のコード見てるとclassもprototypeも使われてないやつが多いんだけど何でなん?ベストプラクティスがruby以上にわからん何が正解なん?

673 名前:デフォルトの名無しさん mailto:sage [2023/03/01(水) 23:29:12.38 ID:8kmkGnGP0.net]
暗黙的なクロージャがあるからclassやprototypeを使わずとも割と困らないのが何でなん?の回答になる

674 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 02:00:11.27 ID:65NO3QYK0.net]
htmlコーダー志望の初心者です。
JSの入門書を読み終えたのでより実践的な学習に移行したいのですが、
既存の書籍やサイトは総論のような基本的な知識に焦点を当てたものが多い印象で、
実務において初心者コーダーにどのようなプログラムの作成が
求められてくるのかが判然としません。
そのような内容に焦点を当てた書籍やサイト等はありますか。

675 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 19:51:27.97 ID:eGjuMjwU0.net]
そもそもhtmlコーダーって何?ってぐぐってみたらデザイナやエンジニアが片手間でできる内容だし専門職としては成立せんのでは

676 名前:660 mailto:sage [2023/03/02(木) 23:05:32.75 ID:65NO3QYK0.net]
>>663
htmlコーダーという職種自体がオワコンですかね…
ご意見参考にさせていただきます。

677 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 08:25:40.95 ID:DJxhSXLyr.net]
99%のエンジニアは片手間でできないからな
エンジニアはhtmlとcssをバカにするけどほとんどのエンジニアはまともに使えていないんだよ
特にcss

使い方を知らない
勉強しようとしても理解できない
なのにバカにする

エンジニアは視覚からコードに落とし込む能力が絶望的に劣っている

デザイナーから上がっきたモックをhtmlとcssで再現できない

だけどその事実がバレたくないからコーダーといってバカにする

実際にはjsxとstyle componentなどで必須スキル

必須だけどできないからhtmlとcssはデザイナーの仕事だと言い放つ

じゃあjsxはデザイナーに書かせるのか?と聞くと無言

毎回このパターン

678 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 08:32:56.76 ID:an7QtCXRd.net]
まあでもそういう業界だからね
連携ダメだからと言って隙間に入り込める余地があるかどうか

679 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 09:44:56.39 ID:o6EY7x580.net]
>>665
組み込み系や汎用系のエンジニアにでも頼んでるのか?
ちゃんとWeb系やってるとこに頼みなよ



680 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 10:01:30.76 ID:DJxhSXLyr.net]
>>667
むしろ組み込みは汎用系のほうは知らん
Web系エンジニアはこんなんだぞ
ほんの少しだけ有能なフロントエンジニアがいる現状
なぜならフロント開発スキルとデザインスキルの両方を持ち合わせた人材がほぼいないから

681 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 10:24:24.87 ID:o6EY7x580.net]
webプログラマーに高度なデザインまで要求するのは無理でしょ
そのためにプロのデザイナーがいるんだし
でもほとんどのエンジニアがhtmlとcssをまともに使えないなんてありえない
今いる環境が悪すぎるんじゃないの?

682 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 11:25:14.28 ID:yQajwbSzM.net]
ぶっちゃけデザインするやつが CSS まで書くのが一番いいんじゃね?
位置やら大きさやらの細かい詰めまでこだわれるでしょうに。

683 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 11:27:48.97 ID:GvE2UXq10.net]
アニメーションとかJsonでデータいじくる時だけ呼んでください

ってことにしてる社内ニート

684 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 11:54:37.73 ID:DJxhSXLyr.net]
こういうこと

デザイナーの担当
・モック作成
・Atomicデザイン込みのコンポーネント設計
・コンポーネント作成
・App作成(コンポーネントの組み上げ)
・jsx、css
・state更新とrender関連
・レスポンシブ対応
・トランジションやアニメーションなど
・DOM生成後の表示・操作・調整(表示順やインタラクション)
・エラー表示、警告
・htmlバリデーションのcheckValidityやreportValidity処理

フロントエンジニアの担当
・APIでデータ送受信
・propsで流し込み

685 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 12:03:53.67 ID:aLTOWI5kM.net]
>>672
それ専業のデザイナー置いても暇を持て余すような職場だろ
普通デザイナーにjsxなんて書かせないよ

686 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 12:14:59.23 ID:o6EY7x580.net]
ほとんどのエンジニアがhtmlもcssもまともに使えない職場みたいだからなw

687 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 12:33:55.85 ID:DJxhSXLyr.net]
職場じゃなくてそもそもエンジニアたちがhtmlとcssが絶望的にゴミレベルしかいないんだよ
海外でも同じ傾向がある

なのに自分たちはできると勘違いしてるから話が通じないんだよな

688 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 13:31:04.49 ID:o6EY7x580.net]
jquery使えます!って嘘ついたデザイナーの尻拭いをさせられたことはあったな

689 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 13:32:46.28 ID:yQajwbSzM.net]
>>675
そういうお前は逆にサーバサイドは絶望的な腕前なんじゃないの?



690 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 15:00:35.71 ID:DJxhSXLyr.net]
>>677
わざわざ煽りご苦労
サーバーサイドが絶望的どころかサーバーサイドもやってるが?
むしろフロントよりも先にサーバーサイドからやってたわ

691 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 15:24:30.84 ID:yQajwbSzM.net]
>>678
という人がどれだけいるのって話でしょ。
おれもサーバサイドの人というか、むしろwebじゃないサーバの人だけど。

692 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 18:33:43.53 ID:omRbdhVsr.net]
やたらイキって言葉遣いが悪いのと同じ回線だと肩身が狭い・・・

693 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 21:01:23.22 ID:bsut6PhH0.net]
>>672
デザイナーはせいぜいコンポーネント作ってStoryBookに載せるまでが責務だろw

694 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 22:20:39.69 ID:Q9LzyMl00.net]
プログラマにバカにされてreact勉強中のデザイナー様が激おこです

695 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 22:30:19.52 ID:yxGxd3AO0.net]
webデザイナーってjqueryぐらいまでは覚えさせられたかもだけど
流石にreactやvueまでやれってのは酷ではw
そんなのフロントエンドエンジニアの仕事でしょw

696 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 23:30:24.99 ID:Q9LzyMl00.net]
だってフロントエンドエンジニアはhtmlもcssもわからないバカばっかりなんだもん

697 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 18:46:55.35 ID:erCI1bTUH.net]
javascriptコードでバグの伝搬を制限して拡張性を高める必要性のある堅牢なプログラムなんて不要だからでしょ

698 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 18:52:38.30 ID:erCI1bTUH.net]
みんななんで仲良くなれないかな

699 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 16:50:40.53 ID:RB9OOifa0.net]
仕事だし自分の領域に少なからず関わってくるんだから覚えろよ
わからないじゃねーんだよボケ^^
これでよし



700 名前:デフォルトの名無しさん mailto:sage [2023/03/11(土) 23:19:16.39 ID:qvilA0zq0.net]
sortメソッドは必ず、比較関数と一緒に使用する必要ありますか?
sortメソッドは数値を並びかえだと比較関数と一緒でないとうまくいかなくて、
でも、文字列のソートなら、ソート関数なくてもうまくいくみたい。
sortは文字列でも数値でもソート関数使った方がいいのでしょうか?

701 名前:502 mailto:sage [2023/03/12(日) 04:39:15.28 ID:PQcYNrkb0.net]
>>688
疑問に思うことがあれば、まずMDNで関数の仕様を確認してみるといい
sort 関数なら、解説に関数を指定しなかった場合についてもちゃんと書いてある

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

> compareFn が与えられなかった場合、undefined 以外のすべての配列要素は文字列に変換され、文字列が UTF-16 コード単位順でソートされます。例えば、"banana" は "cherry" の前に来ます。数値のソートでは、9 が 80 の前に来ますが、数値は文字列に変換されるため、Unicode 順で "80" が "9" の前に来ます。undefined の要素はすべて、配列の末尾に並べられます。

702 名前:デフォルトの名無しさん mailto:sage [2023/03/12(日) 09:33:44.40 ID:do9jOqKh0.net]
>>689
ありがとうございます。

703 名前:デフォルトの名無しさん [2023/03/12(日) 10:07:09.74 ID:mPShShEs0.net]
ティラノスクリプトでゲーム作ろうとしたら、結局JSまで触らないと無理そうで及び腰・・・
・例えば変数aに"gazou1"という文字列を入れる
・『【"変数a"+.jpg】を表示』みたいな記述?? ←ここが分からない
・結果、gazou1.jpgが表示される
こんな感じの、変数に入れた文字列を使用して画像表示ってできますか?
JS 変数 画像表示 とかで調べても情報が多すぎてさっぱり分からない

704 名前:デフォルトの名無しさん mailto:sage [2023/03/12(日) 11:40:49.62 ID:SvUIzONJr.net]
>>691
専用の掲示板へどうぞ
https://tyrano.jp/home/bbs

705 名前:デフォルトの名無しさん mailto:sage [2023/03/12(日) 12:27:02.18 ID:mPShShEs0.net]
>>692
誘導ありがとうございます
ティラノだけでは無理そう&ティラノ上ではJSの記述が使える、という事でこちらで質問しました
なのでJSで可能か不可能かだけでも教えて頂けると助かります
JSで不可能なら調べたところで出て来ないでしょうから延々調べ続けるはめに・・・

706 名前:デフォルトの名無しさん mailto:sage [2023/03/12(日) 12:49:02.36 ID:PwnTbWEur.net]
>>693
まずはティラノスクリプトに詳しい人に聞いてみるのが筋ではないですか?
同じ問題に遭遇した人もきっといるはずでノウハウも蓄積されてると思いますよ
wikiなんかもあるようですし、そちらも確認してみましたか?

707 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 10:07:27.43 ID:/ROF2oq40.net]
>>691
こういうこと?
===============================
<body>
<a href='#' onclick='fun'>link</a>
</body>

<script>
function fun(){a.href='https://....'}
</script>
===============================

===============================
<body>
<a href='#' id='href'>link</a>
</body>

<script>
href.onclick=function(){a.href='https;//...'}
---------------------
// または
let aLink=document.querySelector('[a]');
aLink.addEventListener('click',()=>{a.href='https://...'}):
</script>
================================

708 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 17:49:23.15 ID:dqLl9/D/M.net]
>>683
むしろjQueryの方が難しいと思うけど...

709 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 19:09:00.85 ID:LN5ju60U0.net]
>>695
表示する画像を変数を使って切り替えたいので、
if 変数a=='花' なら 花.jpg を表示 else 変数a=='山' なら 山.jpg を表示
みたいな感じで一応は表示できるのですが、表示したい箇所が複数あるので
if 変数b=='花' とか if変数c==’’花' とかで凄く長くなりそうなのです
でももし 変数の中身+.jpg みたいな記述がjsに存在するなら
aの場所には 変数aの中身+.jpgを表示 bの場所には変数bの中身+.jpg みたいに凄く簡略化できるかなって

教えて頂いたコードを調べてみます!ありがとうございます!



710 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 19:18:34.65 ID:z8Hv0b/wr.net]
>>697
他板にティラノスクリプトスレがあったんで
専用掲示板より5chがいいのであれば続きはそちらでどうぞ
https://mevius.5ch.net/test/read.cgi/gamedev/1428724538/

711 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 19:42:26.91 ID:LN5ju60U0.net]
>>698
そこは質問スレじゃないのでどうにも質問しづらくて
とうかJSの質問スレでJSの質問してるのに「ティラノ上で動かしてる」ってだけで、
そこまで「よそいけ、よそいけ」って言わなくても・・・

712 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 20:03:21.60 ID:z8Hv0b/wr.net]
>>699
>そこは質問スレじゃないのでどうにも質問しづらくて
そのスレを「質問」で検索してみると皆質問してるのが分かります
気後れする必要はないと思いますよ

>とうかJSの質問スレでJSの質問してるのに>「ティラノ上で動かしてる」ってだけで、
>そこまで「よそいけ、よそいけ」って言わなくても・・・
あなたが必要としてるのは「ティラノスクリプトで変数を使って画像表示したい場合にどうすればいいか」の解決策だからです
それについてはこのスレよりティラノスレや専用掲示板の方が的確なアドバイスが得られるはずです
違いますか?

713 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 20:12:22.98 ID:z8Hv0b/wr.net]
ついでに「ティラノ上で動かしてる」JSについてもそちらで聞いた方が良いでしょう
ティラノスレを見渡すとJSのコードもたくさん貼ってありますよ

714 名前:デフォルトの名無しさん [2023/03/13(月) 20:21:27.02 ID:LN5ju60U0.net]
>>700
>あなたが必要としてるのは「ティラノスクリプトで変数を使って画像表示したい場合にどうすればいいか」の解決策だからです
違います。自分の質問を要約すると「JSには、変数の中身の文字列に.jpgなどの拡張子を付け足して画像を表示する機能はありますか?」です
最初にティラノの名を出したことで誤解を招いたかも知れませんが、
>>691に >JS 変数 画像表示 とかで調べても
>>693に >なのでJSで可能か不可能かだけでも教えて頂けると助かります
と書いてあるように、ティラノではなく、あくまでJSについて尋ねています

715 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 20:45:42.74 ID:z8Hv0b/wr.net]
>>702
>自分の質問を要約すると「JSには、変数の中身の文字列に.jpgなどの拡張子を付け足して画像を表示する機能はありますか?」です
では聞きますが、それが何のために必要なのですか?

716 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 20:57:54.94 ID:ayGBKgIT0.net]
拡張子を付加する機能は無いよ
WBC始まってキャッチボールしたい気持ちはわからんでもないけども

717 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 20:58:10.41 ID:bqu+B+fY0.net]
>>702
> 「JSには、変数の中身の文字列に.jpgなどの拡張子を付け足して画像を表示する機能はありますか?」

はい。可能です
imgタグにデータURLを引き渡し表示することはごく普通に見ることができます
Base64エンコードされた文字列とmediatypeをセットするだけです

718 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 20:59:33.75 ID:1Iq9NysVM.net]
>>702
あなたの質問はjavascriptの質問ではありますがティラノスクリプトの仕様を知らないと答えられないものです
こちらはティラノスクリプトの仕様を知らないのであなたの代わりに調べることから始めなければなりません
ティラノスレであれば詳しい人がいると思うのでそちらへどうぞ

719 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 21:59:41.61 ID:LN5ju60U0.net]
>>703
上述の通りゲーム作成と作業の簡略化のためです
>>704
拡張子の付け足しは誤解を招く表現でした。変数の中にある文字列と同じ名前の画像を表示するってことです
>>705
ありがとうございます。調べてみます
>>706
あくまでJSの事として聞いているので「JSではこれこれこうやる。それがティラノ上で動くかは知らんけど」って感じの答えで十分です
ティラノスレでJSのこと聞くよりJSスレでJSのこと聞く方が早そう、って考えはそこまで変ですか?



720 名前:デフォルトの名無しさん mailto:sage [2023/03/13(月) 22:18:31.29 ID:z8Hv0b/wr.net]
>>707
>上述の通りゲーム作成と作業の簡略化のためです
それは「ティラノスクリプトで変数に応じた画像表示する」こととは違うのですか?

>「JSではこれこれこうやる。それがティラノ上で動くかは知らんけど」
このスレでそんな回答をもらうよりはティラノスレで質問して
「ティラノスクリプトではみんなこうやってるよ」って回答をもらう方が何倍も早くて確実だと思いますがいかがでしょう

721 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 01:06:18.93 ID:VmfXTFqwa.net]
例えば、jQuery で、

<img id="photo_1" src="a.png">
を、以下に変更するなら
<img id="photo_1" src="image_1.jpg">

// :first は、最初に見つかったもの
$( '#photo_1:first' ).each( function ( index, elem ) {

const image_1_basename = "image_1"
const image_1_filename = image_1_basename + ".jpg"

$(this).attr('src', image_1_filename) // 設定
} )

722 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 02:37:35.49 ID:JIhs77SCM.net]
JSスレでJSのこと聞きたいんならティラノの名前出すなよ

723 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 08:16:42.83 ID:gMQMDZBfd.net]
それはそう

724 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 13:16:01.19 ID:bBCbUtGh0.net]
jpegの名前を動的に指定できるよ

725 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 13:21:05.82 ID:crjDIavXr.net]
>>707
ティラノについて少し調べたのでスレ違いを承知の上で書きます
あなたが>>691>>697でやりたいことは
[bg storage="&f.bg + '.jpg'" time=1000]
というような書き方で実現できるかと思います

簡単に説明します
まず「&f.bg」の「&」はエンティティと呼ばれるもので変数の値をタグのパラメータとして渡すときに使用します
https://tyrano.jp/usage/tech/hensuu
の最後に説明があります

そして、storageパラメータに渡す際に「 + '.jpg'」で拡張子を連結しています。これは
https://tyrano.jp/sample2/code/kiso/19#demo
のkaisetsu/19_variable_1.ksの415行目~に変数に対して数値演算をした値を
パラメータに渡す例がありました。文字列の連結も同様に可能です

これによって、変数f.bgの値が「花」ならば「花.jpg」が、「山」ならば「山.jpg」が表示されます
例は背景ですがキャラやその他の画像でも可能だと思います

726 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 13:30:55.51 ID:crjDIavXr.net]
>>707
なお、簡単なサンプルで動作確認をしました
https://tyrano.jp/usage/tutorial/moji
上記チュートリアルに従って新規プロジェクトを作成し、
first.ksの内容を以下のように書き換えて実行してみてください

*start
[wait time=100]

背景を変更します。[r]
[link target=*select_room]<教室>[endlink][r]
[link target=*select_rouka]<廊下>[endlink][r]
[s]

*select_room
[eval exp="f.bg='room'"]
[jump target=end_select]

*select_rouka
[eval exp="f.bg='rouka'"]
[jump target=end_select]

*end_select
[cm]
[bg storage="&f.bg + '.jpg'" time=1000]
[jump target=start]

727 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 20:28:58.71 ID:2HNLo12V0.net]
>>713
ありがとうございます!!できました!!

728 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 20:53:16.27 ID:2HNLo12V0.net]
作業が一気に楽になりました!
>>713も他の方も本当にありがとうございました!
そして不可能と思いこんでたことが実は可能だったあたりはすみませんでした!

729 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 20:53:28.39 ID:GiZ8CeD1r.net]
>>715
解決したのならなによりです

が、今回無駄に遠回りをしてしまったのは自覚、反省しましょう
あなたはこの問題の解決はティラノ単体では無理だと決めつけてしまったためにこのスレで質問しましたが
その判断は正しくありませんでした

繰り返しになりますが、この先また何か躓いたときはまずティラノの掲示板なりスレなりで聞いてみるようにしましょう(たとえJSに関することであれ)
その方が解決が早く、的確なはずです



730 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 21:02:42.69 ID:GiZ8CeD1r.net]
>>716
ちょうどかぶってしまいましたが、ちゃんと自分の非を認められる人で安心しました

こちらも少し言葉がキツくなってしまった点はお詫びします

731 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 01:17:49.11 ID:sTLgg4Iop.net]
初めまして

Pixiv filter(GitHubで公開、リンクはスパム対策で貼れず)という拡張機能がありまして、それに似たものを自作したいと思い立ち、色々調べてみました

別スレにて、検索画面上での作品ごとのタグは、画面には表示されないもののデータとしては生成されている、という事を伺ったのですが、
どこに生成されているのか、どうやったら参照できるのかなどが分からず、苦戦しております。

ご教授頂ければ幸いです

732 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 02:28:06.62 ID:i4bxOxoza.net]
これか?

github.com/kazu-ux/PixivFilter

React, TypeScript

733 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 07:58:24.49 ID:q+AMrJS6H.net]
反省なんて必要ないわ、なんか強迫症的なやつがうざい
なんなんだ、執着が過ぎる

734 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 08:01:02.20 ID:q+AMrJS6H.net]
プログラムではすべてのタグを検出して配列等に格納しているが
そこから抽出して出力する処理をしてるってことじゃない?
見てないからわからんけど

735 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 09:37:50.61 ID:OLitJJv/d.net]
>>719
なんか見覚えあると思ったらこれか
https://mevius.5ch.net/test/read.cgi/hp/1439005423/342
343をレスしたの俺だけど回答の内容を理解できなかったってこと?
分からないところがあったのなら追加で質問すればよかったろうに
それをせずに全然違うスレで聞き直してるのはなんで?

736 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 20:45:42.17 ID:q+AMrJS6H.net]
Pixiv filterが何なのかわからないし確認もしてないけど、

例えば複数の作品毎にTagオブジェクトがあったとして、
Tagのプロパティに表示させるか表示させないかを判定するプロパティがあり
そのプロパティ名がshowAbleで、表示を許可するのは、showAble:true
許可しない場合には、showAble:false
とされていたとすれば

まず最初にすべての作品Tagオブジェクトが格納されている配列を取得し(もしくは配列に取得する関数を作り)
(let tagArr=[tag1,tag2,tag3,tag4....];)

その配列から、tag.showAble=trueであるオブジェクトを取得して別の配列(showAblerArray)に格納し
(let showAbleArray=[] ; for(let t of tagArr){ (if(t.showAble==true){showAbleArray.push(t)

showAbleArrayの全要素に対して、表示させる処理をする
(for(let s of showAbleArray){,,,,,,どこに表示させるか......})

っていう感じでどうですか?

737 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 22:44:21.64 ID:ohrI2qnX0.net]
jQueryはなぜ嫌われる?
簡単な構文で便利だと思うが…。
他のライブラリ・フレームワークとの互換性が高ければいいのに。

738 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 23:48:50.56 ID:T0OxazTtM.net]
技術的には好かれてるわけでも嫌われてるわけでもない
スレ的には脈絡なく蒸し返す厄介な奴がいるので敬遠される

739 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 07:03:01.34 ID:Hd88hZaKH.net]
嫌われてはないんだろうけどスレチなんでない?



740 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 07:15:13.56 ID:Hd88hZaKH.net]
javascriptで作られたプログラムの処理に関して
Jqyeryを使えば簡単だよって言われても
いやいやここはjSで書きたいんでってなるでしょ
そういう質問に対してjqのほうが簡単っていうのがよくわからん

フレームワークの質問スレは
ベース言語のすれとは別に立てたほうが

741 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 09:02:04.98 ID:c9lqR0yG0.net]
www

742 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 10:39:46.62 ID:fxj0X8UB0.net]
フレームワークスレは一応立ってるね
糞スレだからそこで質問して回答があるのか知らんけど

743 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 11:25:08.38 ID:QjQVIFFDr.net]
>>721
これもしかして私に対して何か言おうとしてる?
もしそうならもう少し具体的に問題点を指摘してもらえないかな

744 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 15:46:42.93 ID:FgyDZ6E70.net]
いえいえ、違います、気にしないでください

745 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 20:33:58.52 ID:ParHajkN0.net]
>>732
あなたは>>721とワッチョイもIPも違うようだが…

746 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 20:55:51.48 ID:Olf8APhOd.net]
>>724
どうですか?も何もそんな都合のいい妄想データを元に書いたコードなんぞ
役に立たないどころか混乱させるだけだからやめようよ

747 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 21:11:03.92 ID:Hd88hZaKH.net]
混乱させるだけとかwww
そもそも解答者がわざわざ対象コードを検索して読み込み
そして質問者が満足するようなコードを生成するとか、自分は絶対しないw

質問者は
・何やら検索するらしい
・検索はタグで行うらしい
・タグで検索しても表示するものとしないものがあるらしい

その3点でアドバイスするのなら
・検索ワードでヒットする画像を抽出する
・ヒット判定は画像のタグプロパティで判定
・判定でヒットした画像を1枚もしくは複数枚表示する

とした場合で、初心者初学者向けにアドバイスするのなら
上記の感じのアドバイス以外に何かできるアドバイスあるん?
質問の質以上のアドバイスなんてできない
まずはオブジェクトとプロパティあたりから始めるしかないっしょ


748 名前:て思ってのアドバイスなのねん []
[ここ壊れてます]

749 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 21:38:40.67 ID:Olf8APhOd.net]
質問者がわからないと言ってるものには具体的な対象があるわけよ
それを無視して一般的な考え方のアドバイスをするなら抽象的な話にとどめればよくて
わざわざデタラメコードを生成することはなかろ



750 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 22:01:47.84 ID:Hd88hZaKH.net]
それはそうですね
おっしゃる通り
でもデタラメとか言わんでください!

751 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 21:04:07.19 ID:irjN28+Dd.net]
他に適切な表現が見つからなかったからごめんな

752 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 21:08:34.06 ID:ZP9+v2PL0.net]
こっちがデタラメなコード書くと見かねていい感じのコード書いてくれるツンデレ

753 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 02:26:56.50 ID:dC3/JFCa0.net]
すみません、私の知識不足というか理解不足も大きそうですので、手が出るところからさせて頂こうと思います。

javascriptの「fetch」メソッドなのですが、これはjsonファイルを読み込む事はできないのでしょうか?ローカルで試しましたが、エラーになってしまうようです

754 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 05:10:03.75 ID:s5wH/EpL0.net]
>>740
fetchやXHRも >>469-475 と同様基本的にFileURIでのアクセス不可

755 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 15:36:03.94 ID:dC3/JFCa0.net]
ありがとうございます。「ローカルのサーバーを立てる」と良いらしいのですサーバーは専用のパソコンでないと、セキュリティ的にも危険と聞いた事もありますが、大丈夫なのでしょうか。また、実際やるとしたら、どのような方法があるでしょうか。

756 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 15:40:55.59 ID:T8cp6VGg0.net]
Xamppつかっておけばよろし

757 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 19:03:06.43 ID:xpgWDt8BH.net]
>>742
vscodeって使える?すごく簡単なエディタ
そのエディタでliveServerっていう拡張があるんだけど使えるか試してみたら?

758 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 21:30:20.18 ID:HGxbjpaKd.net]
Promise.race()で複数のPromiseを渡して、最初に終了したタスクのPromiseを受け取ったあと、同様に順次残りのタスクを完了したものから受け取るような書き方はできますか?
(最終的にすべての非同期タスクの終了まで繰り返す)

Pythonでいう、as_completedのように複数非同期タスクを、終了次第順次ループで受け取るような形です。

759 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 12:35:04.92 ID:DxTl2kdL0.net]
>>743 >>744
vscodeの方を使わせて頂きました。お二方ともアドバイス、ありがとうございました。

余談ですが、jsonファイルに単なる文字列(あああ、abc、123)などを単発で格納するとしても、「名前:値」のフォーマットは守らないといけないんでしょうか(名前をいちいち宣言しないとダメなのか)。



760 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 12:36:07.26 ID:DxTl2kdL0.net]
正確には「{"名前":値}」ですね。省略できれば楽だなと思ったのですが。

761 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 12:59:08.70 ID:4pa7IAk9d.net]
{"名前":値}はあくまでオブジェクトの形式であって文字列や数値のみを返したいなら不要
ただし文字列は"あああ"や"abc"とする必要はある
https://www.json.org/json-ja.html

762 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 13:08:00.26 ID:DxTl2kdL0.net]
ありがとうございます。おそらく

"abc", "あああ"

のようなカンマ区切りで大丈夫でしょうか。

763 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 13:20:25.80 ID:S0dCUzy1d.net]
単一の値でない場合は配列にすること
["abc", "あああ"]

有効なjson形式かどうかはJSON.parse()に食わせてみるといい
JSON.parse('"abc", "あああ"'); //NG
JSON.parse('["abc", "あああ"]'); //OK

764 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 14:04:53.34 ID:DxTl2kdL0.net]
>>750
参考になりました。ありがとうございます。

765 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 15:26:18.81 ID:FTc6ajskM.net]
>>745
各promise完了後に順次実行したい共通処理をmapしてthenでチェイン

Promise.all(promises.map(p=>p.then(log(“resolved”)))).then(log(“All finished”);

function log(message=“”) {
return (x) => {
console.log(`${message}: ${x}`);
return x;
}
}

766 名前:デフォルトの名無しさん [2023/03/19(日) 16:15:48.14 ID:/GeuLHtL0.net]
趣味でWebサイトを使うのにJSを勉強しだしてまだ3年目なのですが、
なぜか年明けから会社のDX担当にされました。
今社内システムがIE9向けにActiveXが使われているのですが、Edgeに移行するので動くように直してと言われています。
これまで自分なりにいろいろ調べてきて、とりあえずHTML/CSSなどの見た目の部分と、大したことをしていないJSの部分は移行できたのですが、
肝心のActiveXであれこれやっているところを直すことができません。
期限は3月末までで苦しんでいます。

例えばこのような箇所があります。
var connection = new ActiveXObject("ADODB.Connection")
var recordset = new ActiveXObject("ADODB.Recordset")
var connectionString = "Provider=sqloledb;Data Source=〜〜〜
var query = "〜〜〜
connection.Open(connectionString)
recordset.Open(query, connection)
while (!recordset.EOF) {
var encryptedData = recordset.Fields("data").value
var decryptedData = decryptData(encryptedData, decryptionKey)
〜〜〜
recordset.MoveNext()
}
これをEdgeで代替手段で実装しようと思ったら、どのようなコードになりますか?
ライブラリやフレームワークは使ってはいけないことになっていますが、バレなさそうなものなら中に組み込むつもりです。
どうかよろしくお願いします。

767 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 16:36:55.71 ID:HI67bUFb0.net]
代替手段なんてない
仕事振ったやつが何も分かってない

あれこれやってる内容をなにか別の技術で1から組み立てる必要あり
それかedgeのIEモードは検討出来ないの?

768 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 17:21:20.47 ID:HTlOdPesM.net]
今から実装してテストしてリリースしてその後の問い合わせ対応や運用に備えるのはスケジュール的に無理でしょ

3月末を死守する必要があるならIEモード1択
IEモードで時間稼ぎしてその間にサーバーサイドからDBアクセスする仕組みを作る

IEモードにするにしてもグループポリシーの変更・適用のテストや問い合わせ対応の準備を考えればそれでも時間が足りないくらい

769 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 18:07:07.17 ID:EAkcZvWPd.net]
>>753のコードにぶち当たった時点でEdgeというかブラウザ単体で実現できないことには気がついて欲しいものだが
仮にも2年はJSを勉強していたと言うなら



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

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

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

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

774 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 19:46:06.22 ID:GXvqERSA0.net]
たぶんIEを前提とした目の前にあるコードを読み解いて作り直すより設計書用意したほうが早い

あるいはAIと二人三脚

775 名前:751 [2023/03/19(日) 19:54:47.83 ID:/GeuLHtL0.net]
みなさまありがとうございます
IEモードは1,2度調べて、いつまでこのモードがあるか分からないからと止めたのですが、
やはり時間稼ぎも考えるとこれしかなさそうです。
その間に根本的な解決策を探したいと思います。

なぜか年明けから会社のDX担当にされました。
と言いましたが、実はそれは嘘です。
年末にかけて社員が半分以上辞めて、残った人の中で一番詳しそうだったのが僕だったのです。
実は、サーバーサイドをいじらないといけないのだということは、薄々気づいていました。
でも、今動き続けているサーバーを触れる人が誰もいないのです。
僕も、SQLというものがある、という程度の知識しかないので、触る気にもなりません。

とりあえず夏のボーナスまで引っ張って、無理そうだったら自分も転職します。
今動いているものをうっかり壊したら、止められなくなりそうなので慎重にがんばります。
ありがとうございました。

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

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

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

779 名前:として扱う前にJSONCとしてコメント抜く前処理でも通すか []
[ここ壊れてます]



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

781 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 03:23:46.29 ID:iV2jn8x9a.net]
>>740
VSCode の拡張機能では、

open in browser では、ローカルファイルアクセスになる。
この場合、CORS など、ブラウザの色々な制限がある

file:///C:/Users/Owner/Documents/test/index.html

一方、Live Server では、
自分のPC 内にサーバーを立ててから、そこから配信されるので、テストしやすい

127.0.0.1:5500/test/index.html

>>753
そういうのは、Excel, VBA, Access とかじゃないの?
ベンチャー企業やプロのバックエンドは、Ruby on Rails だけど

782 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 04:02:42.23 ID:iV2jn8x9a.net]
>>745
Promise.all/allSettled とか?

783 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 19:47:12.99 ID: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 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 19:56:51.89 ID:hUotJVz90.net]
>>769
バックグラウンドからタブに送信するならchrome.tabs.sendMessageじゃないかな?

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

786 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 20:53:08.72 ID:mlA7fjwPM.net]
雑な方法としてはアクティブなタブに送ればいいんちゃう?

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

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

789 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 21:49:32.93 ID:hUotJVz90.net]
それならtab.id必要なくてsendResponseで返せるんじゃないかな?



790 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 21:53:15.40 ID: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 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 22:00:26.17 ID:hUotJVz90.net]
そもそもngWord.jsonの中身とれてますか?ローカルファイルならweb_accessible_resources書いてchrome.extension.getURLで取るんじゃないでしょうか?

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

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

794 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 23:58:23.18 ID: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 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 04:01:46.37 ID: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 名前:デフォルトの名無しさん mailto:sage [2023/03/25(土) 14:02:02.15 ID:MQIuadNDM.net]
Next.jsでAPI Routesを使わないのは一般的でしょうか?

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

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

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

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



800 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 12:55:23.79 ID:y04hNuo/d.net]
消費者金融機関だよ

801 名前:デフォルトの名無しさん mailto:sage [2023/03/29(水) 13:11:20.35 ID:6965UHWi0.net]
>>786
絶対に許せないのでxhrにしますね

802 名前:デフォルトの名無しさん mailto:sage [2023/03/31(金) 02:32:51.01 ID:VdncSfH00.net]
メイン画面でボタンをクリックすると
別ウィンドウが起動し、ニュースサイトを表示するプログラムを組んでいます。

別ウィンドウが起動した時に
そのウィンドウが閉じられたのか、開かれたままであるのかを
メイン画面で判定するにはどういうコードを書けばよいでしょうか?

別ウィンドウでサイトが開かれている間は
1、2、3・・・とカウントし、閉じられると0を
メイン画面にjQueryでレンダリングしようとしています。

803 名前:デフォルトの名無しさん mailto:sage [2023/03/31(金) 03:09:38.31 ID:29iJjOEC0.net]
>>788
window.closed はどう?

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

805 名前:デフォルトの名無しさん mailto:sage [2023/04/23(日) 22:40:30.72 ID:k6QZkjYI0.net]
先日(1週間くらい前)まで動いていたジャバスクリプトが動かなくなった。
ブラウザの不具合を疑って firefox、edge、さらに ie11 まで持ち出したらどれも動かない。
ウインドウズのセキュリティの締め上げかなと思って
スマホ(アンドロイド)で確認したがこっちも動いていない。
押し入れから昔のアイポッドタッチ(iOS9)を持ち出したが、やっぱ動かない。

こんなことってある?
アイポッドタッチなんてスクリプトが動いていたころとなに一つ変わっていないのに
なんでこの前は動いたのに今日は動かないんだ?
1年前のバックアップと差分比較してファイルが壊れていないことは確認した。
ちなみに自分がジャバスクリプトを作成するにあたって参考にしたスクリプトは
いまも普通に動いている。

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

807 名前:ネいのか?
まったく反応してないのならhtmlで読んでないんじゃね?
[]
[ここ壊れてます]

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

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



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

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

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

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

812 名前:デフォルトの名無しさん mailto:sage [2023/04/24(月) 13:15:26.56 ID:3ESYAe520.net]
開発者ツール超便利だよね

813 名前:デフォルトの名無しさん mailto:sage [2023/04/24(月) 13:22:29.25 ID:sSUQNn8cr.net]
まあそういうオチだろうなとは

アドバイスを求めるならhtmlを修正したことは伝えるようにしてほしいところ

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

815 名前:デフォルトの名無しさん (ワッチョイ eb7d-RykB [1.33.235.4]) mailto:sage [2023/04/26(水) 19:26:29.99 ID:lfd6T/fN0.net]
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]) mailto:sage [2023/04/26(水) 20:39:08.46 ID:UfBGheQ30.net]
>>800
.todayなんてclass付いてないぞい

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

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

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



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

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

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

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

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

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

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

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


https://i.imgur.com/tY8Yg78.gif

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

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

827 名前:デフォルトの名無しさん (ワッチョイ e38b-fitb [211.5.157.105]) mailto:sage [2023/04/29(土) 20:12:37.30 ID: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]) mailto:sage [2023/04/29(土) 20:34:34.21 ID:ulzy/WI80.net]
>>812
使い方間違っとるな
そういうときはまずリファレンスを読め
https://developer.mozilla.org/ja/docs/Web/API/setInterval

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



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

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

832 名前:デフォルトの名無しさん mailto:sage [2023/05/07(日) 14:48:48.64 ID: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 名前:デフォルトの名無しさん mailto:sage [2023/05/08(月) 05:12:47.92 ID:AmPaXWnYM.net]
>>817
ここいらんやんけ…

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

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

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

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

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

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



840 名前:デフォルトの名無しさん mailto:sage [2023/05/09(火) 00:52:34.88 ID:eLWpr74i0.net]
f = (flag) => flag ? false : true;

console.log(f(true));
console.log(f(false));

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

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

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

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

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

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

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

847 名前:デフォルトの名無しさん mailto:sage [2023/05/23(火) 06:51:40.61 ID:tIBpGAYNH.net]
それはJSの設定?Winの設定?

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

849 名前:デフォルトの名無しさん mailto:sage [2023/05/23(火) 20:57:14.94 ID:PscArQu/0.net]
キモ



850 名前:デフォルトの名無しさん [2023/05/23(火) 22:34:28.22 ID:y7+F4Fx6M.net]
>>833
>例えば関数実行後に初期化してもホイスティングで勝手にundefiedが代入される
これいろいろ間違ってる

>未だにvar使わなければいけない理由ってある?
REPLで繰り返しコードブロックを実行したい場合なんかにvar使う
あとはブラウザ以外の環境でES3しか動かない環境とかね

>今後var使ってる人見たら問答無用で勉強しない人と判断しても良い?
良いと思うけど君もそっち側に片足突っ込んでるから気をつけて

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

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

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

854 名前:デフォルトの名無しさん mailto:sage [2023/05/25(木) 06:53:07.70 ID:djzVD0JU0.net]
くそ素人で申し訳ない
ブックマークレットでCookieを編集する時に有効期限も同時に編集したいのだけれど
どうしたらいいのだろうか

元々は
javascript:document.cookie=%22ipb_member_id=〇〇%22;document.cookie=%22ipb_pass_hash=〇〇%22;

って感じなのだけれど1日くらいしたらすぐ消えてしまう

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

856 名前:デフォルトの名無しさん mailto:sage [2023/05/27(土) 14:04:26.57 ID: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 名前:デフォルトの名無しさん [2023/05/28(日) 15:24:03.43 ID:n14WZ+eY0.net]
documentのinnerHTMLやtextContentの書き換えをしたとき、ブラウザのDOMの計算(?)や再描画(?)は変更があった部分のみか、ページ全体で行われるののどちらでしょうか?

858 名前:デフォルトの名無しさん mailto:sage [2023/05/28(日) 23:28:10.35 ID:8mVMxOyu0.net]
>>841
ありがとうまじ助かった

859 名前:デフォルトの名無しさん mailto:sage [2023/05/29(月) 06:35:55.98 ID:eVNfBOW80.net]
CookieってPHPみたいなサーバーサイドから設定するのとJSから設定するのどっちが良いんかね?

同僚から受け継いだシステムはPHPでやってたが



860 名前:デフォルトの名無しさん mailto:sage [2023/05/29(月) 07:03:02.74 ID:nuFuFtG60.net]
HttpOnlyの存在考えるとサーバーサイド一択じゃね?

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

862 名前:デフォルトの名無しさん (ワッチョイ 5f4b-HhYS [110.2.215.28 [上級国民]]) mailto:sage [2023/06/19(月) 13:57:37.11 ID:iYcFBKEZ0.net]
if ((a == b && c != d) || (e == f && g != h)){
alert ("正解");
}

こういうコードの書き方は出来ますか?
二重括弧の使い方は正しいでしょうか?

863 名前:デフォルトの名無しさん (ワッチョイ 5f4b-HhYS [110.2.215.28 [上級国民]]) mailto:sage [2023/06/19(月) 14:42:31.77 ID: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]) mailto:sage [2023/06/19(月) 14:49:42.42 ID:G503Uwj70.net]
>>847で大丈夫やろ。
なんで試さんの?

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

866 名前:デフォルトの名無しさん (オッペケ Sr33-vDmN [126.157.241.160]) mailto:sage [2023/06/19(月) 14:58:41.52 ID: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 [上級国民]]) mailto:sage [2023/06/19(月) 15:02:17.21 ID:iYcFBKEZ0.net]
皆さん、ありがとうございます
変数に入れるのがいいですね
やってみます

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

869 名前:デフォルトの名無しさん (オッペケ Sr33-vDmN [126.205.219.139]) mailto:sage [2023/06/20(火) 13:18:59.52 ID:es0ShzRur.net]
Mapはキーと値の組み合わせのコレクション
Setは重複のない値のコレクション
どちらも実務で出番はある
イテレータは中身を1個ずつ取り出せるものの総称

カスタムイテレータに関してはmdnもおすすめのジェネレータ関数を覚えておけばいいかと
バリバリではないにしてもここぞというときに役に立つ



870 名前:デフォルトの名無しさん (ワッチョイ ffda-ZcId [223.216.178.53]) mailto:sage [2023/06/21(水) 18:20:14.61 ID: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 [上級国民]]) mailto:sage [2023/06/26(月) 12:08:05.73 ID:QXVTwCFE0.net]
変数って定義する前はundefinedが入ってるんでしょうか?

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

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

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

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

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

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

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

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

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

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



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

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

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

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

883 名前:デフォルトの名無しさん (ワッチョイ 5b4b-nuDV [110.2.215.28 [上級国民]]) mailto:sage [2023/07/05(水) 21:30:37.79 ID:74hfvDDi0.net]
(function(){
 ~
})();

こういう書き方をしてるコードがあったんですけど、これは実行も含めた関数の書き方でしょうか?
最初の(と最後の)()の意味がわかりません

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

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

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

887 名前:デフォルトの名無しさん (ワッチョイ a15f-eaRz [14.13.136.34]) [2023/07/08(土) 18:01:12.76 ID:0tWDp4eO0.net]
今ホームページを制作しているのですが教えて頂きたいです。
下記内容のコードの書き方がわかりません。

5枚の画像があるのですが、全部では無く一旦一枚目のみ表示させたいです。
次に各画像を説明する文字があります。その文字にマウスカーソルを合わせると、その文字にあった画像に2枚目3枚目と切り替わるようにしたいと思っています。

初心者すぎるので例としてコードを作って頂ければ見ながら調整したく思っています。
どなたかお教え頂けませんでしょうか。

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

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



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

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

Bootstrap のCarousel (カルーセル)
https://getbootstrap.jp/docs/5.0/components/carousel/

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

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

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

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

895 名前:デフォルトの名無しさん (スップ Sd9f-asTj [49.97.111.88]) mailto:sage [2023/07/17(月) 23:23:58.12 ID:XzfBWjood.net]
フォームフィールドが定義されたPDFファイルがすでにあって、ブラウザ上のJavascriptでWebフォームに入力されたテキストをPDF側のフィールドに反映させてダウンロードすることができるpdfライブラリってあまりすか?

使い方のイメージとしては、たとえばPDF上に名前を入力する箇所がいくつかあるけど、ユーザーは単にweb上で普通のinputフォームを入力してsubmitすると名前が入力済みのPDFファイルをダウンロードできる、という感じです。

pdfmake等いくつかライブラリは見たのですが、白紙ベースでPDF作る例しか見あたらなくて(テンプレートは画像背景で切り替え等)、直接PDFフォームを扱えるものは無いかなと。

896 名前:デフォルトの名無しさん (アウアウウー Sac5-HZc/ [106.130.137.152]) mailto:sage [2023/07/29(土) 00:54:23.66 ID: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 [上級国民]]) mailto:sage [2023/07/29(土) 08:26:35.15 ID:wB1gRUiQ0.net]
ES5までは貧弱だったのでそりゃもう大歓喜よ。
それと現代のJavaScript(を使いこなすの)はもはや簡単な部類じゃないように思う。

898 名前:デフォルトの名無しさん (オッペケ Sr91-xmUq [126.254.133.95]) mailto:sage [2023/07/29(土) 09:45:27.72 ID:ZQ+RMRi1r.net]
苦しみとか絶望とか>>881は言語の習得を学校の勉強と同じようなものとしか捉えてないフシがある
日本史の勉強範囲が大政奉還までだと思ったら第二次大戦までだった!みたいな感覚

新しく覚えたことは実際のプログラミングで活かせるんだという意識が全く感じられない

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



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

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

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

903 名前:デフォルトの名無しさん (ワッチョイ 095f-kJnY [14.8.104.32]) mailto:sage [2023/07/30(日) 14:24:24.68 ID:av5XIWe10.net]
自分はプロトタイプ型オブジェクト指向から入ったから気にならないけどクラス型でプログラム書いてた人は違和感凄いんだろうな

あとクロスブラウザ対応しなきゃいけなかった人達もJSはしんどかったんだろうなと想像

904 名前:デフォルトの名無しさん (ワッチョイ e94b-C8We [110.2.215.28 [上級国民]]) mailto:sage [2023/08/04(金) 01:16:43.56 ID:LzfYm8xL0.net]
rd41 = "";
alert (rd41);
これで「rd41は未定義です」ってエラーは出ますか?

alert(rd41);
これだけだと「rd41は未定義です」ってエラーが出ますよね

実際のコードはalertでは無いのですが、rd41に無を代入して何も表示させたくないのです
rd41 = null;
だと、nullと表示されてしまいます

905 名前:デフォルトの名無しさん (ワッチョイ e94b-C8We [110.2.215.28 [上級国民]]) mailto:sage [2023/08/04(金) 01:36:14.69 ID:LzfYm8xL0.net]
chatGPTに質問したら答えが返ってきた
https://i.imgur.com/5NbJI6w.jpg

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

907 名前:デフォルトの名無しさん (ワッチョイ a101-CknR [60.89.4.138]) mailto:sage [2023/08/04(金) 09:14:51.09 ID:TEvOuQNU0.net]
>>889
ECMAScriptに「未定義」というエラーはない
Strict Modeで実行すれば、両コードともにReferenceErrorになるだろう
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Strict_mode
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError

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

909 名前:デフォルトの名無しさん [2023/08/11(金) 14:55:53.43 ID:+rPtXLG2m]
JÅLだのAΝАた゛



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

創価学会員は,何百万人も殺傷して損害を与えて私腹を肥やし続けて逮捕者まて゛出てる世界最悪の殺人腐敗組織公明党を
池田センセ一が口をきけて容認するとか本氣で思ってるとしたら侮辱にもほどがあるぞ!
httPs://i、imgur.соm/hnli1ga.jpeg
[]
[ここ壊れてます]

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

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

913 名前:デフォルトの名無しさん (ワッチョイ 7e63-SF+K [153.218.139.115]) [2023/08/21(月) 00:13:21.70 ID: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]) mailto:sage [2023/08/21(月) 11:40:28.26 ID:cB09UaOod.net]
>>897
まずconsole.log()や開発者ツールを使って自分の書いたコードがどこまで想定通りに動いてるか確認してみよう

915 名前:デフォルトの名無しさん (ワッチョイ 534b-ubuk [110.2.215.28 [上級国民]]) mailto:sage [2023/08/21(月) 11:51:22.81 ID: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]) mailto:sage [2023/08/21(月) 12:25:10.86 ID:cB09UaOod.net]
このワッチョイ **4bは質問スレにchatGPTの回答貼るだけのボットみたいなもんだからスルー推奨
NG入れといてもいい

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

class でしょ

918 名前:898 (アウアウウー Sa7f-7wIC [106.133.165.90]) mailto:sage [2023/08/22(火) 23:12:31.83 ID:rPfWctd8a.net]
>const ItemDate = document.getElementsByClassName("x-date");

x-date は、tx-date じゃないの?

919 名前:898 (アウアウウー Sa7f-7wIC [106.133.165.90]) mailto:sage [2023/08/23(水) 00:10:28.94 ID: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]) mailto:sage [2023/08/23(水) 10:39:07.30 ID:oZ78uDd8d.net]
>>903
それはもう質問に答えたというよりデバッグと修正を代行したのであってこのスレの主旨には合わない
おそらく他の人もそういう認識だからこの件に口を出さないんだと思うよ

921 名前:898 (アウアウウー Sa7f-7wIC [106.146.101.215]) mailto:sage [2023/08/23(水) 19:53:27.23 ID: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]) [2023/08/25(金) 21:08:52.47 ID:+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]) mailto:sage [2023/08/26(土) 04:11:22.52 ID:wsJDYSi/a.net]
「chrome.webRequest.onBeforeRequest」で検索!

webRequest
https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/webRequest

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

925 名前:デフォルトの名無しさん (スッップ Sd9f-oH/7 [49.98.169.249]) mailto:sage [2023/08/26(土) 17:41:19.65 ID:/LQp1jGld.net]
return detail.documentUrl

とか?

926 名前:デフォルトの名無しさん (アウアウエー Sa5f-/No0 [111.239.174.98]) mailto:sage [2023/08/26(土) 18:56:03.08 ID:mvAl1l0Ba.net]
return detail.documentUrl;
return {redirectUrl: detail.documentUrl};
どちらもダメ。リダイレクトのURLを返すことになるから、リダイレクトの無限ループに入っちゃう

それなら、リダイレクト止めればいいじゃんって思うんだけど
return {cancel: true};
のようにするとナビゲーション自体が止まってアクセスできなくなっちゃう

927 名前:デフォルトの名無しさん (ワッチョイ cf8a-cMf3 [153.207.237.45]) mailto:sage [2023/08/26(土) 19:46:44.48 ID:HE/rWC1F0.net]
空のオブジェクト返せばいいんじゃないの?

こんなの見て参考にしては?
https://gitlab.com/ClearURLs/ClearUrls/-/blob/master/clearurls.js?ref_type=heads

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

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



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

931 名前:デフォルトの名無しさん (ワッチョイ cf63-n242 [153.218.137.10]) [2023/09/03(日) 21:37:03.60 ID: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]) mailto:sage [2023/09/03(日) 21:48:21.38 ID: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]) mailto:sage [2023/09/03(日) 23:01:09.12 ID:zsKKxMoe0.net]
>>915
console.log(localStorage && (localStorage.getItem('deck')));
の結果は本当にundefined?、undefinedの上の行に何か表示されてるよね?

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

body:not(#contact) :is(input, button)

935 名前:デフォルトの名無しさん (ブーイモ MM7f-sgzH [133.159.150.82]) mailto:sage [2023/09/03(日) 23:33:36.04 ID:II4MkDPZM.net]
>>915
下記のログ出力はどうなる?

console.log(localStorage.getItem('deck') !== undefined ? 'バカめ!!よく確認しろ!!' : 'undefined です');

936 名前:デフォルトの名無しさん (ワッチョイ 4327-g4sH [164.70.253.210]) mailto:sage [2023/09/04(月) 13:53:40.48 ID:R0PWdUab0.net]
>>916
コンソール出力結果は

undefined
1
undefined

です

>>918
バカめ!!よく確認しろ!!
undefined

になります

937 名前:デフォルトの名無しさん (ブーイモ MM7f-gLHL [133.159.151.54]) mailto:sage [2023/09/04(月) 14:44:17.50 ID: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]) mailto:sage [2023/09/04(月) 14:45:10.48 ID:I1Zu7zQTM.net]
はっきりさる!

939 名前:デフォルトの名無しさん (ワッチョイ 4327-g4sH [164.70.253.210]) mailto:sage [2023/09/04(月) 15:37:52.51 ID:R0PWdUab0.net]
あー わかりました
"undefined" っていう文字列がすでに入っちゃってたみたいです

丁寧に回答いただいてありがとうございました!



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

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

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

943 名前:デフォルトの名無しさん mailto:sage [2023/10/04(水) 23:59:59.93 ID:77DZdeZo0.net]
if(rd41.value){
dofn()
}

これが正しく実行されないのですが(暴走するというか、意味不明な実行結果が現れます)、if文の中で関数の呼び出しは出来ないのでしょうか?
もしそうなら、このコードを正しく動作するように書き換えることは出来ますか?

944 名前:923 mailto:sage [2023/10/05(木) 02:54:19.96 ID:pCa3KI6i0.net]
普通に動作しました
すみません

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

 https://www.jango.com/stations/400536192/tunein
 https://www.jango.com/stations/397649609/tunein
 https://www.jango.com/stations/272072365/tunein

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

Jango plays unlimited music for free and with no commercials.

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

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

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

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

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

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

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



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

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

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

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

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

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

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

954 名前:デフォルトの名無しさん mailto:sage [2023/10/26(木) 12:52:26.88 ID:jSMDhhI40.net]
>>936
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce

955 名前:デフォルトの名無しさん mailto:sage [2023/10/26(木) 12:52:36.47 ID:jSMDhhI40.net]
>>936
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce

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

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

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

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

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

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

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



960 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 22:10:22.42 ID:FIfUHr+c0.net]
質問したいなら詳しく書こうね

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

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

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

963 名前:デフォルトの名無しさん mailto:sage [2023/11/14(火) 20:45:30.47 ID:Mc/CoQSw0.net]
>>942
マルチボスト先に答えがある
https://mevius.5ch.net/test/read.cgi/hp/1478002550/706-

964 名前:デフォルトの名無しさん (JP 0H89-BcU5 [104.234.140.171]) mailto:sage [2023/11/15(水) 11:30:55.95 ID: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]) [2023/11/15(水) 12:39:52.38 ID:D0hDoGTF0.net]
亀が2chに書き込みにやってきた

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

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

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

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



970 名前:946 mailto:sage [2023/11/18(土) 23:53:58.59 ID:rj8Lk8BJ0.net]
…どこまで信じたらいいの?

>>950
ありがとうございます

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

972 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 16:19:56.96 ID:q8v/AXQl0.net]
const arr =Array(3).fill([]);
arr[1].push(0);
console.log(arr);

この場合arrは[[], [0],[]]になっていることを期待するのですが実際には[[0], [0], [0]]となっています
まったく納得いかないのですがなぜですか

973 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 16:41:25.42 ID:LC62eXy40.net]
>>955
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/fill#value
>配列を埋める値。もし value がオブジェクトであれば、配列のそれぞれの要素はそのオブジェクトを参照します。

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

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

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

977 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 00:26:41.03 ID:nlRha+4K0.net]
JSにかかわらず変数は使ってる道中に値変換したり変数使いまわしてるとエラーの種になりやすいし、それを防止するのが大きいかな
配列やオブジェクトの値はconstでも変えられるし

昔はそういうごちゃごちゃ動く変数のトレースするのもプログラム組むやつの能力ってされてたなぁ

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

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



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

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

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

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

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

985 名前:デフォルトの名無しさん (ワッチョイ 25ca-SdNv [122.132.80.240]) mailto:sage [2023/11/22(水) 21:54:03.90 ID: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:*]) mailto:sage [2023/11/22(水) 22:23:44.12 ID:lZKHNjwl0.net]
調べてみると苦肉の策で↓みたいな書き方が紹介されてたけど可読性考えるとどうだろうね
const x = (() => {
let a, b, c;
:
return a + b * c;
})();

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

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

989 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 01:53:09.12 ID:pAGXWPD10.net]
var使え



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

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

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

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

994 名前:デフォルトの名無しさん mailto:sage [2023/11/30(木) 04:02:01.17 ID:uIFlL3tD0.net]
>>976
1 はプリミティブ値。
Object型ではない。

995 名前:973 mailto:sage [2023/11/30(木) 22:41:28.93 ID:l5hD/Y3Y0.net]
>>977
レスありがとうございます

分かりました
文字列('Hello World'など)もプリミティブなんですよね
どうやって内部で実装されてるんですか?

996 名前:デフォルトの名無しさん mailto:sage [2023/11/30(木) 22:57:08.84 ID:mSFTiyup0.net]
MDNをまず読みましょう
https://developer.mozilla.org/en-US/docs/Glossary/Primitive

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

998 名前:デフォルトの名無しさん mailto:sage [2023/12/01(金) 01:54:56.09 ID:Bo4sqMI/0.net]
>>978
質問が大雑把過ぎる
もっと具体的に詳しく

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

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

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

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



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

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

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

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

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

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

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

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

1006 名前:982 mailto:sage [2023/12/04(月) 23:09:24.91 ID:GWbm6wp00.net]
レスありがとうございます
遅くなってすいません

>>986
そうですよね
まあ単純に、文字列である以上、変数用に確保したメモリ領域内に簡単には収まらない
だろうなと推測したんです
でも不変な値なら参照使わなくても収まるのかな

>>987
微妙です
入門書を読んで間もないレベルです

>>988
分かりました
まあ実装って言い回しが大仰でした
参照を使ってあるかどうかを特に知りたかったんです

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

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

JsValueが「値」を指す参照

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

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

1009 名前:982,986 mailto:sage [2023/12/05(火) 23:32:22.63 ID:c1y4Tvg20.net]
レスありがとうございます

>>990
そうなんですかね

>>991
内容がハイレベルですね



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

1011 名前:デフォルトの名無しさん mailto:sage [2023/12/09(土) 10:39:43.45 ID:npLWblUF0.net]
素人な質問で申し

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

https://i.imgur.com/tJnx1oK.jpg
[]
[ここ壊れてます]

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

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

1015 名前:デフォルトの名無しさん mailto:sage [2023/12/09(土) 15:46:37.17 ID:W9usxQKOr.net]
/や:が入ってるのを明示してるのはコメントとして意味があるだろう

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

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

1018 名前:デフォルトの名無しさん (オッペケ Sre1-tek/ [126.254.232.20]) mailto:sage [2023/12/09(土) 17:46:24.03 ID:Mnb70srnr.net]
なかったんで次スレ立てた
https://mevius.5ch.net/test/read.cgi/tech/1702111239/

1019 名前:デフォルトの名無しさん mailto:sage [2023/12/10(日) 11:19:27.25 ID:ngtmyS7f0.net]
>>995
サイトの使い方がいまいち分からず試してましたが、サイトでは症状が再現できず想定通りの挙動でした。これは作ってるアプリ側に原因があるのでしょうかね。
mementoというdbアプリだったのですが。

>>996
自覚はあります。プログラムに興味を持ち練習はじめなので勘弁してやってください。思いつかないんですorz



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

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

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

1021 名前:デフォルトの名無しさん [2023/12/16(土) 00:37:24.71 ID:xiFcB2tC0.net]
テスト

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

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






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<355KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef