+ JavaScript の質問用スレッド vol.144 +
レス数が950を超えています。1000を超えると書き込みができなくなります。
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください
■規則/推奨ルール
質問者は !slip:vvvvv を名前欄に、その後は「レス番」+!slip:vvvvv
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」から解離した議論はよそでやること。
■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為
■質問テンプレート
【環境】ブラウザをバージョンと共に記入してください。
【条件】期待する回答の条件を書いてください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです
■前スレ
+ JavaScript の質問用スレッド vol.143 +
https://mevius.5ch.net/test/read.cgi/hp/1577357404/ セミコロンの有無で、意味が変わって、バグるので危険だから、
>>806
の、Airbnb のスタイルガイドでは、セミコロンを付けるように決まっている >>850
845 :Name_Not_Found :sage :2020/06/08(月) 20:48:45.73 ID:???
LuaとJSはそっくりでしょ
片方が十分書ける人はもう片方も書けると言っていい
自分でLuaLua推しまくってて今更何言ってるんだ 最近のセミコロンつけない人は
少なくともLuaやRubyなんてマイナー言語の影響でないのは間違いない
PythonやKotlinあたりだろうな
Kotlinはオプショナルだけどサンプルコードのほとんどでつけてないし
(特に初学の場合)学習に際してそういうサンプルコードの影響は大きいだろう >>852
>842 === >845
の証拠があるのだろうか? あんな絡みしといてかっこわるい言い分だな
チンポついてないのか Luaが対比対象として持ち出されてることが不思議そうだったから
確かに俺は自分の経験からLuaとJSは似てると言うことは言ったがそれだけでしょ
Luaは良い悪いとか使おうとか推すようなことは言っていないし
誰かを否定したり絡んだりしてはいないのだが >>841
> 結論としてセミコロンは、
> 明らかに付けたほうが良いという理由もないし、
> 明らかに付けないほうが良いという理由もない
>
> 大多数の人が慣習や気分で決めてるだけ
> そうでなければLuaでは付けない人が大多数で
> JSでは付ける人が大多数な説明がつかない
話の元はこれで、これを元に話をしているはずが指摘されたら俺は違うとか話は違うとか言い出す
ちんぽなし JavaScriptでもRubyでもセミコロンの有無で意味が変わるから
セミコロンをつけたほうがいいという明確な理由はある
そしてJavaScriptでは常にセミコロンを付けたほうが
意味が変わらないから良いという考え方に対して
Rubyはバグったらそこだけ直せばいいじゃん
という考え方 SpaceXでChromeとJavaScriptが宇宙船のUIに使われた件で盛り上がってるかと思ってきてみれば全然そんなことないのな 個々人様々なレベルで理由は持ってるだろうが、
どうしてそういう慣習になってるのかというと
そういう慣習のもと習ったからと言うのが大きいだろうな >>859
そこからLuaの話続いてるだろ
文盲かよ >>863
Luaの名前が出てることに文句を言ってたのか?
Luaの話が続いてるって言うが、実際はLua知らない人がそれらのレスを見てLuaの何が分かる?
Luaはあくまで対比として持ち出されてるだけで、Luaについて誰かが能動的にあれこれ紹介してまわってるわけではないだろ
ある固有名詞が話でずっと使われることってこのスレを見返してもたくさんあるでしょ
その中で別にLuaは過剰ではないと思うが >>861
5chだとdragon2が
・const使ってるか
・セミコロン使ってるか
・jQuery使ってるか
このあたりが分からんと盛り上がらないぞw なんだよこのしょーもない流れは
なら難しい質問してやっから答えてくれよ
"妥当なURL"かをチェックするのにnew URL()で対応しようと思いきや、
IEとかいうクソブラウザはURLがただのオブジェクトですやん
IEで手軽にURLチェックを行えるハック的な手法は何かないかね? soは素晴らしい
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*) func().then(() => { ふんにゃか }).catch(() => { ふんにゃか });
↑この行末セミコロンはふつう、でも1行長くて読み書きづらい
――――
func()
.then(() => { ふんにゃか })
.catch(() => { ふんにゃか });
↑メソッドチェーンの最後だけ行末セミコロンは
配列やオブジェクトの、最後だけカンマ付けないのと似た違和感
――――
func()
.then(() => { ふんにゃか })
.catch(() => { ふんにゃか })
;
↑統一感はあるが、やりすぎ感が否めない
なんかもう、セミコロンいらないんじゃないかな…って気がしてきた >>872
そういうのを統一的に書きたかったらこう
func(
moga
).then(
hoge
).catch(
fuga
);
むしろこういうときはセミコロンがあったほうがわかりやすい
どちらかというと1行ずつ書いていくようなときが不要 質問です
変数にfor文の結果を設定したいのですが、↓のやり方のようなarrayを事前に宣言せず、
let obj = {
a:"aaa",
b:"bbb"
}
let array = []
Object.keys(obj).forEach(function (key) {
array.push(key)
});
console.log(array)
出力[ 'a', 'b' ]
↓のように書きたいです(理想)
const array = Object.keys(obj).forEach(function (key) {
array.push(key)
});
console.log(array)
出力[ 'a', 'b' ]
何かしらの工夫をしてこんな感じに書けないでしょうか? foreachを関数化すればできるのですが、ほかに手段はないでしょうか? const array = Object.keys(obj); >>868
RFC3986でぐぐるか、polyfillを使え すみません。例を間違えました
let obj = {
a:"aaa",
b:"bbb"
}
let str = ""
Object.values(obj).forEach(function (key) {
str = str + key + "test"
});
console.log(array)
出力aaatestbbbtest
このようなもので、strの宣言をせずに、objectのvalue値に文字列を付与して出力したいです。
ベストな書き方を教えていただきたいです。 >>883
reduceでしょうか?
let obj = {
a:"aaa",
b:"bbb",
c:"ccc"
}
const result = Object.values(obj).reduce(function(totalString, currentString) {
return totalString + currentString;
})
console.log(result)
value値のみの出力ならできるのですが、value値とvalue値の間に文字列を追加したいです。 return totalString + “test” + currentString
ってすればいいじゃん >>885
aaatestbbbtestccc
と出力されました。
出力したいのは
aaatestbbbtestccctest
です >>886
そのくらい自分で試行錯誤しなよ
簡単なreduce使えないレベルなら無理せず
let str = “”のように外側で空の一時変数を宣言して
それにfor-inで追加していくスタイルでやったほうがいい let str = Object.values(obj).flatMap(value=>[value,"test"]).join(""); >>888
天才。ありがとうございます。
>>887
お前みたいな的を射ない返答するやつは消えておk >>889
自分で考えないやつはflatMap使っとけばいいよ
20倍遅いけどな electronは凝ったインターフェースが難しいのですか?
2dキャラを動かす物を作りたいのですが ツクールMVでも結構な事ができるから
まずそれでできないかを検討してみたほうがいいよ
つうかツクールMVで実現できないことを
初心者が一人でやるのはクソ大変だと思う
次に検討すべきはUnityかな
両方ともWebプレイヤーがあるし >>891
Electronだから特段難しい、みたいなことはないと思う
少なくとも自分は
ふつうにブラウザで作るときと同じようにやっているよ
Adobe Animateが吐き出した、ちょっときもいcanvasアニメも
まあふつうに動いてる Electronを使う意味は?
今時はPWAでよくね? ウディタのようなものを考えています
visual studioだと少し開発環境が重いので、electronを考えています よくわからん
2Dゲームの制作ツールを作りたいということ? 数年前、某コンパクトカメラが
スマホとの連携にPWAで挑戦して
最初は大変なことになっていたなあ PWAはまだ始まっていない
フルマラソンで言ったらまだ0m
準備運動してる段階
現時点ではまだ煩雑で一般ユーザーには管理が難解なプロンプトを控えて
強力な機能をどうやってWebサイトに許可していくかっていう問題が
アプリをインストールしてもらうっていう方向性で決まりつつある段階
だからだからローカルファイルアクセスだったりバックグラウンド同期だったり
「強力な機能はアプリで」ということが常識になる
だけどまだ方向性の段階なのでそれらのセキュリティモデルや強力なAPIは実装されていない
それとスマホだと正解が分かりやすしだいぶ達成されてきてるけど
アプリをほかのネイティブアプリと並んで管理したり、
連携したりする機能もまだ整備されきっていない
そもそもWebサイトがアプリがすでにインストールされているかどうか
検知することもつい最近までできなかった
PWAが本格的に始まるのは2025年から わかんだね? Webで大規模なツールを作ろうとすると色々困る
レンダリングとかDOM要素に何となく任せられるのがWebの強みなので
自前で色々やろうと思うと厳しい
フルCanvasでやろうにも、UIイベントを適切に扱って
ドラッグとか自前で準備するのは苦労するし
そこらへんフレームワークに任してしまうと
結局DOMでやるのと同じく痒いところに手が届かない
そのへん乗り越えてもとにかく色んなところで躓く
最近出てきたrequestVideoFrameCallbackとか、
まだまだこういうAPIが不足してる >>901
準備運動の段階でぎっくり腰になって出場辞退だろw
結局の所ネイティブアプリの機能にはかなわないので
本格的なアプリではPWAはありえない それは非常に正しい
ただし盲点なのはPWAでは実現困難な「本格的なアプリ」というものが少ないこと
それこそWebビューがメインのアプリもあるし
Webビューを使うことは今や常識になっている
じゃあ側はネイティブである必要があるのかと言うと
そうではないアプリのほうが大半
その「ネイティブアプリの機能」とやらに
頼る必要があるアプリがそもそも少ないというお話 ならブラウザでいいじゃん?
という意味がわからない
そもそも今のPWAは普通のWebサイトと明確な境界があるわけではないでしょ
将来的にそうなるだろうけど、今はSW使ったWebサイトのリンクを
ホームに置くのとどのくらい違うのかと言ったら少しの違いしか無いでしょ
逆にその少しの違いを出すためにどのくらいの追加の労力が
必要なのかと言えばそれも少しでしょ
自転車とバイクを比べてるのなら、こっちで良いとか言えるけど
120ccと125ccのバイクを比べてもそんなのどっちでも良いというか
悩んだりそこで決めるようなことでは通常無いでしょ
もちろんツールをふくむアプリ的なものとして公開したければ
ボーダレスの方が良いかもしれないけどさ
でも最近Windowsがアプリをタブでまとめるスタイルを試行錯誤してるように
そのアプリが独立するのってユーザーの使い方だったり、
そのアプリとWebサイトの連携しよう次第では必ずしも良いものとは限らないよね
例えばその作成ツールで作られた作品とのやり取りも考えたいかもしれないけど
作品を読み込むところはツールで完結できても
その紹介のWikiは、ホームページはとかなるしさ
まあこれ今自分がちょうどそういう物作ってるから言ってるんだけどね 正直あれだよね、
ネイティブアプリ中でWebビューで表示が出るのって
大抵体験としてそんなに悪くはないけど、良くもないよね
結局制作の都合というか妥協だよね
例えば最近の家庭用ゲーム機やPCゲームで
説明をWebビューでいきなりポインタが出るのって
ある意味納得してるから分かりやすいんだけど、
そのゲームをちゃんと作ってて体験を考えてると、
やっぱり良い体験とは思えないんだよね
フルで表示させていくらかWeb臭さをなくそうとするけど
どうしてもギャップ感は取れないんだよね
だからPWAで作ってても、どうやってWebっぽいコンテンツと
連携するかってすごい難しいんだよね
もちろん何も気にしなかったらそれまでなんだけどさ
まああえてタブを表示させて、関連Webサイトをそのウィンドウに集めるってのもありかな html.css.javascriptを極めるという選択肢はどう思う?
phpやrubyには手を出さずに。 >>908
phpだけ最低限のことができるようにしておけば、そのやり方で問題ない webやってる以上サーバサイドは必要だろう
ただjavascriptだけでいいよ
node.js使えばいいだけなんだし
ただphpに比べて導入に手間取るだろうな
そこで挫折するかどうかが鍵 node.jsが普通の言語ならな
非同期メインなので使いづらい
それはそれでメリットがあるんだが、そんなの必要ない場合が大半なわけで
つまり大部分のユースケースに当てはまらない >>908
何の目的に対する選択肢だよw
目的や目標を定義せずに選択肢の妥当性を考えても無意味 >>911
今どき全部非同期じゃね
極論サーバサイドなんてDB操作するだけだよ >>913
お前非同期の意味をわかってないな
DB操作するだけなのに非同期のコードを
書かないといけないのが駄目だって話 WEB上で同期なんかしてたらアクセスが多くなってきたらすぐに死にそう >>914
テンプレみたいなもんなのに
そんな大げさな話でもないだろ 昔は同期が基本のやつに比べて最初のハードルが高くて面倒くさかったのは確か
今はasync/await使えるようになったからPromise理解できるならそんなに差はない あんまサーバサイドの話すると
くっそうざいRubyなら〜のやつが沸くからそのへんにしとけな do {
num = prompt("数値を入れてください", 0);
} while (num);
alert('ok');
上のコードを実行し数字の0を入力すると、
whileの真偽条件がfalseとなってループを抜けるかともうのですが抜けません。
何故でしょうか? >>919
今はPromise対応のAPI用意されてるよ だから単項+演算子を使えって言ってるだろ
JSerならこう書かないとまずい
num = +prompt("数値を入れてください", 0); そもそもユーザーの入力を直接ループの終了条件にするのってどうなん?w なにか問題があるか?
ユーザーのPC上でユーザーのために動くプログラムなのだから
責任がユーザーにあっても問題ないだろう >>922
戻り値は文字列でしたか!
数値の入力だったので0の真偽値はfalseのはずなのに何でだ?となってました。
ありがとうございます!
型をもっと意識します, >>926
現代のJavaScriptチュートリアルってサイトのループについてのセクションの課題を質問するためにアレンジしたものなんで、あまり深い意味はないです。 javascript.infoはいいチュートリアル
でもModernを「現代の」と訳されるとなんかきつい >>931
あとJsprimerってとこもよく見ます。
この2つ見てると入門書籍買わなくていいかなと。 prototypeってMethodだけでpropertyは入れられないんですか? jsdocについての質問です
イベント名とコールバックを渡すような関数の場合どのようにjsdocを記述すれば良いのでしょうか
例えば
addEventListener('click', () => {...});
on('data', () => {...});
などの関数です
/**
*
*/
addEventListener();
/**
*
*/
on();
の様に書いてしまった場合
これらは既に他の定義がなされている関数のはずですが良いのでしょうか
正しい書き方等がありましたら教えて頂きたいです '1111'を与えたら10進数、'0111'を与えたら8進数として"自動的に解釈して欲しい"
こんな場合に何か上手いやり方はあるかい? >>928
お前大丈夫か?
フォームの入力だって間違えたら無限にやり直されるだろ
今のブラウザはプロンプトが出ててもタブ操作が効くのだからそれと同じだろ
変な固定観念は捨てて論理的に考えなよ >>937
だよな
sql直接叩くくらいやってもいいよな >>937
全くもって非論理的な主張で笑
論理的に考えなよwwww >>934
>イベント名とコールバックを渡すような関数の場合どのようにjsdocを記述すれば良いのでしょうか
@event, @callback
>これらは既に他の定義がなされている関数のはずですが良いのでしょうか
@external, @link >>940
俺的には論理的というより倫理的に許せん
まあサンプルコードが元ネタだからあまり言うのも何なんだが、
言語処理体系に依存する書き方について、固定観念がどうのこうの言っちゃうなら
コード書くのやめて欲しいレベル そんな
「たかしくんは15分後に時速6kmで追いかけました」
にイチャモンつけるようなのやめえやw >>942
考え方の前提が間違っている
そもそもプロンプトを出す時点で普通のサイトではないということを忘れてる
RPGのゲームで選択肢によって無限ループがあったとしても倫理的に許せなくないでしょ?
そういうコンテンツなのだから
普通のWebサイトとするとそもそもプロンプトを出すのが問題があるでしょ?
後はユーザーの入力を適切に扱う努力をするのも当たり前の話でしょ?
そういう前提で一般的にユーザーの入力次第で何度もプロンプトが表示されても、それ自体が一般的におかしいことではないでしょうと言ってるのよ >>944
論点が全く分かってない時点で論外
レスも読んでない低レベルを披露しなくていい >>944
お前の理屈では普通のサイトではないからSQLインジェクションも気にしなくていいってことになるね
趣味ならいいよって言われてる意味が全くわかってないww processingとglslってできることは同じですか? ・constは名前と値が常に一致してる
・上級者はコードが短い
・固定観念を捨てて論理的に考えればユーザー入力を直接ループの終了条件にしても何の問題ない (new!) >>946
やめえて
if節とコマンドプロンプトを学んでるレベルの子に
SQLインジェクションを持ち出して
誰が得するんだよ 結局、現代のJavaScriptチュートリアルのサンプルコードが悪いってことか? >>945-946
この話は
>>927-928
から始まってるものだからね
違う論点で話したいのならそれを明示してくれ レス数が950を超えています。1000を超えると書き込みができなくなります。