+ JavaScript の質問用スレッド vol.141 +
レス数が1000を超えています。これ以上書き込みはできません。
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 >>943
モダンOSでは時刻はユーザーランドに再マッピングされてるから
シスコール使わなくてもメモリのアクセス制限取っ払っとけば取れる そろそろgood partsの取り扱いについて考えたほうがいいと思う
ここは自ら学ぶ者を手助けするスレではあるが
その学ぶというのは「歴史を学ぶ」ということではないはずだ
good partsはJS仙人になりたい者がJSの歴史を学ぶのにはいいが
今よく動くJSを書けるようになるために読むのは非効率だ
ましてやそんな古い本の文言の解説なんてこのスレが負う責務はない 回答したいやつが回答しているだけの場で責務がどうとか
何いってんだこれ >>951
<みたいなのをHTMLエンティティと呼ぶ
それに-ifyやde-をつけた造語
entity-ifyはエンティティ+化
de-entityifyは非+エンティティ化
decodeHtmlEntityやdecodeHtmlEntitiesみたいな命名のほうがわかりやすいけど
クロックフォードのおっさんはdecodeとは呼びたくないこだわりがあったんだろうな 当時は、このサイの表紙のサイ本が、プロ用のバイブルだった。
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とかで、プログラミング自体を学んでないと無理 私は、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すると、なんでもかんでもグローバルオブジェクトになっていたのが、
グローバルオブジェクトにならなくなったのですね。 別にvarでIIFEで囲ってもええぞ。
10年前はそうしてたろ? >>964
基本はconst
再代入するときだけlet
varは基本的に使わない node jsを使ったプロジェクトを作る場合、node moduleがプロジェクト内に作られますよね。
バックアップなどとるときにファイル量が膨大になって嫌なんですが、どう作ればいいもんでしょうか? >>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を使用する
})(); >>967
Git 使って .gitignore で制御したらいいと思うよ やっぱりapi使わない生のjavascriptの方がやっていて楽しいな >>969
var app = app || {};
は
globalThis.app ??= {};
と書くのが今風
でも今風というだけで別にvarも使ってもいいよ
基本constで書こうというのは馬鹿げてるので無視していい
ESメンバーが公演で使うコードやGoogleのプロダクトなんか見てても
そんなことをしてる人は居ない
それならTypeScript使ったほうがスマート >>971
その考え方はおかしい
JSはスクリプト言語
プログラムっていうのは入力を加工して出力してなんぼ
でもJSはあえて標準のIOを持っていない
それは色んな環境にフレキシブルに入り込んで
環境が提供するAPIを利用して機能する言語だから
JSとAPIは切っても切り離せない
それにAPIというが、JSで実現できることは
内部的にも生のJSで実装されていたりもする
(その方がJS間でインライン展開してから最適化とかできる)
だから大きい機能に見えてもおおよそJSは低レベルなIOとかを
提供してもらってるだけということもある
だからそんなにAPIはJSから遠い存在ではないし毛嫌いしなくていい >>969
>let app = {};
appに再代入しないでしょ プロは、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 にも使える。
あらゆるファイルに埋め込める 推奨NGワード: Ruby
推奨NGワード: Rails >>972
var app = app || {};
は
globalThis.app ??= {};なのですね。
現在では、「globalThis」と「Null 合体代入 (??=)」があるのですね。
ありがとうございます。 constってconstantで定数なので、アプリのなんらかの閾値などに
使うかと思います。なんでもconstに入れるのは違う気がします。 constでいーじゃん、と言うプログラマーは数えた訳じゃないけど意外と多い気がする
再代入しない変数がはっきりするから、俺もそう思う const con = {foo: 42};
con.foo = 69;
console.log(con.foo);
//=> 69 GoogleもMozillaもChromeやFirefox内のJSでconstなんて殆ど使ってない
Mozillaは最近書いたテストで使い始めてるがそれくらい
一方V8内部だと昔は表層部分は普通にJSを使ってたが、
さらなるパフォーマンスを求めるため
ネイティブ-JS間で最適化が効くように大改造してネイティブで置き換えた
しかしきちんとパフォーマンスとセキュリティを担保して実装するが難しいということで
最近はTSを更に型方面に改良したような独自言語に切り替えた
オナニーでしかないconstばかり使ったコードを書いたりはしない
constを徹底するメリットは2文字増えることに劣る
そもそもconstを徹底するのならするで、それに加えてオブジェクトをfreezeしたり
全体的に管理しないと効果はない
でもJSでそんなことをやるのは極めて非効率的だと皆知ってるから
皆TSだったり、適切なaltJSを使ってる
いつまでも生のJSで半端なことにこだわってると新しい機能や環境に適応できない人だと思われるよ
生のJSでconstを使うのはその特性よりも読む人間に対してのアピールとして使う方が賢い レコード(#{foo: 42, bar: 64})
タプル(#[42, 64])
が出てきてからが本番だな。
現在ステージ2 まあRecordはプリミティブしか扱えないから
DOMの参照とかも含められないし限定的ではある 定義からしてdeeply immutableなデータ構造だそうだからDOMの参照なんか持てないだろうね。
ブドウジュースではワインのように酔えないと言ってるようなものでは? >>988
だからRecordが入っても結局使い分ける頭が居るわけで
使える人にとってはそりゃあ使える機能は多ければ多いほど良いだろうが
一般レベルのJSのコードがRecordが入ることで安定・安全の方向に向かうかと言うと
そうはならないだろうねということ JSに限った話ではないのでは?
各実用言語の新機能って今まで許可されてたことを急にできないようにする変更ってないし。
使ってもいいよ、うまく使うと便利だよというものばかり。
でもそれって実用言語である以上当たり前では? 「JS」って最近は女子小学生のこと指す名称と一般に広がったよな
javascriptの拡張子はJSって悲劇だな 居酒屋で「俺JS好きなんだーフヒヒ…」とか言ってるグループいて戦慄した。
よく聞いたらどうもWeb系だった。 10〜15年くらい前までは
エロ動画のタイトルに「JS」、「JC」、「JK」って付いていただけなのにさ
2021年現在一般に広まりすぎた。
「JS」って気軽に言えない世の中になってしまった。
私は、居酒屋や人のいる場所では「javaScript」と「TypeScript」と「ECMAScript」という呼称しか
使わなくなってしまった。 居酒屋や人のいる場所でJavaScriptの話してるやつとかヤバすぎだろ
そんなのは自宅か社内で完結させて外に持ち込むんじゃねえ function aaa(n){
n++;
return(n);
}
setinterval(aaa,1000,20);
setintervalの第3引数に20を入れるとaaa(20);を呼び出すこと同じことらしいですが
この場合、戻り値はどうやって受けとればいいんですか? 疑似プロトコルで"row"クラスまでスクロールしたいんだけどなにか違う?
javascript:getElementByClassName('row').scrollIntoView() >>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になると思うんだけど意図通りなのかな? >>997
1. 初学者がよく陥る誤り、getElement s ByClassName()
2. s がついてることで理解できると思いたいが、こいつの戻り値は複数なので配列風のオブジェクトを返す
[0]とインデックスを付ければ多分動くが
老婆心では id にして getElementById 使った方がいいと思うよ このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 693日 19時間 24分 20秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。