2023-02-25

ChatGPTにJavaScriptブックマークレットを作ってもらってるんだが

このChatGPTのJavaScript説明がどうしても分からない。解説あってる?

var idx は、現在開いているWebページURL文字列に ? が含まれている場合に、その位置を取得するために使用されます。これは、クエリ文字列の開始位置特定するために必要な処理です。

たとえば、以下のようなURL現在開いているWebページURLであった場合

https://example.com/search?q=keyword&page=1

var idx = url.indexOf('?'); というコードを実行することで、変数 idx には 8 という値が代入されます。これは、? の位置URL文字列の8文字目にあることを示しています

var idx はURL文字列の何番目に?があるかって意味だとは分かった。でも例文のURLだと?の位置はhから数えて27番目だよね。聞いてみた

おっしゃる通り、指定されたURL https://example.com/search?q=keyword&page=1 において ? の位置は h から数えて 27 番目の文字です。

しかし、ブックマークレットコード中では idx の初期値として url.indexOf('?') を設定しています。この indexOf() メソッドは、指定された文字列最初に現れる位置を返します。もし文字列が見つからなかった場合は -1 を返します。

したがって、ブックマークレットコード中で url.indexOf('?') を実行すると、? の位置が返されます指定されたURLにおいて ? は https:// の直後に出現するため、url.indexOf('?') の実行結果は 8 になります

まりブックマークレットコード中では ? の位置ではなく、? の次の文字(q)の位置が idx として設定されていることになります

なんか意味がわからない。その後もどっから数えた数字がidxになるのかいくつか聞いてみたが堂々巡りになってしまって明確な答えが分からない

  • 普通にChatGPTが間違ってるだけだから、実行したら違う数値が取れました。って言って 申し訳ございます。って言わせればいいだけでは。 こいつの間違いを問いただすんじゃなくて、コ...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん