X



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

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

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

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

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

■ 前スレ
https://ff5ch.syoboi.jp/?q=JavaScript%E3%80%80%E8%B3%AA%E5%95%8F%E7%94%A8
0952Name_Not_Found
垢版 |
2021/04/24(土) 05:56:58.00ID:O4s84sQS
カウントできれば何でもいいですけどね
0953Name_Not_Found
垢版 |
2021/04/24(土) 07:18:25.45ID:???
>>943
モダンOSでは時刻はユーザーランドに再マッピングされてるから
シスコール使わなくてもメモリのアクセス制限取っ払っとけば取れる
0955Name_Not_Found
垢版 |
2021/04/24(土) 08:47:16.64ID:???
そろそろgood partsの取り扱いについて考えたほうがいいと思う
ここは自ら学ぶ者を手助けするスレではあるが
その学ぶというのは「歴史を学ぶ」ということではないはずだ
good partsはJS仙人になりたい者がJSの歴史を学ぶのにはいいが
今よく動くJSを書けるようになるために読むのは非効率だ
ましてやそんな古い本の文言の解説なんてこのスレが負う責務はない
0956Name_Not_Found
垢版 |
2021/04/24(土) 09:12:21.93ID:???
回答したいやつが回答しているだけの場で責務がどうとか
何いってんだこれ
0957Name_Not_Found
垢版 |
2021/04/24(土) 09:26:48.40ID:???
はよAPI使わない回答しろカス
0958Name_Not_Found
垢版 |
2021/04/24(土) 12:45:14.09ID:???
>>951
<みたいなのをHTMLエンティティと呼ぶ
それに-ifyやde-をつけた造語

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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