+ JavaScript の質問用スレッド vol.133 +
レス数が1000を超えています。これ以上書き込みはできません。
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください
■規則/推奨ルール
・メール欄を空欄にし、名前にレス番を入れることを強く推奨(なりすまし防止)
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」だけでなく「意見」を出しても良い。
■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為(批判の代わりに「AよりBが良い」のような代案を出す事)
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。
【条件】期待する回答の条件を書いてください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです ■FAQ
◆開発者ツール(Developer Tools)の基本的な使い方
▼諸注意
- 本説明では Google Chrome の開発者ツールの名称に従います。他ブラウザで使う場合は適宜読み替えて下さい。
- Edge- でコンソールを使うには予め開発者ツールを起動しておく必要があります(開発者ツールを起動しないと console.log() が機能しません)
- Safari はデフォルトで開発者ツールが無効な為、有効に設定する必要があります。
https://developer.apple.com/library/safari/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/GettingStarted/GettingStarted.html
▼要素を検証
1. ページ上で右クリックして [要素を検証]
2. [Elements] パネルが開き、対象のDOMノードが選択される(選択対象が目的の要素でなければ [Elements] パネル上で選択し直す)
3. 右側のサイドバーから知りたいステータス名のタブを選択する
- [Styles] タブ … CSSプロパティの指定値を表示 (※カスケードによって上書きされたプロパティは取り消し線で表示される)
- [Computed] タブ … CSSプロパティの算出値を表示("font-size: 1em" を指定していても算出後の "*px" で表示される)
- [Properties] タブ … 選択したDOMノードのプロパティを表示
▼コンソール
1. JavaScript コード上で console.log('Hello, World!'); と入力
2. [Ctrl] + [Shift] + [I] キー(IE は [F12])で開発者ツールを開き、[Console] パネルを開く
3. [Console] パネルに "Hello, World!" と表示される
(※window.alert() は String 型に変換されますが、console.log() は Object 型の中身をそのまま表示してくれます。) ■FAQ(続き)
◆JavaScriptの実行速度
JavaScriptの速度は「ブラウザ名」「ブラウザのバージョン」「PCスペック」に依存します(ブラウザのバージョン毎に最適化具合が異なります)。
速度の疑問解消の為に http://jsperf.com/ (githubのアカウントが必要です)にコードをUPしてブラウザ毎に速度計測する事を推奨します。
例外として、仕様における理論上の速度が明確になっている場合があります。
例えば、正規表現によるマッチング処理を考えた場合、「RegExp#test > RegExp#exec > String#match」は ES5 仕様で保証(要出典)されています。
ES5 仕様において RegExp#test が最も処理数が少なく、String#match が最も処理数が多いことが明確だからです。
ブラウザによっては RegExp#test の最適化が十分でなく、String#match の最適化が RegExp#test より十分であれば逆転する可能性はありますが、各メソッドの最適化が一律であればこの前提が崩れる事はありません。
■各種仕様
◆ Standard ECMA-262
http://bclary.com/2004/11/07/ (ECMAScript 3 HTML版)
http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/ (ECMAScript 3 和訳)
http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
http://tsofthome.appspot.com/ecmascript.html (ECMAScript 5.1 和訳)
http://www.ecma-international.org/ecma-262/6.0/ (ECMAScript 6 / ECMAScript 2015)
http://kangax.github.io/compat-table/es5/ (ECMAScript 5 compatibility table)
http://kangax.github.io/compat-table/es6/ (ECMAScript 6 compatibility table)
◆ HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/
http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20130528/Overview.html (HTML5.1 部分訳)
http://www.hcn.zaq.ne.jp/___/WEB/WebStorage-ja.html (Web Storage 和訳) PHPでやってみたが
intval('123'); # 123
intval('0123'); # 123
intval('abc'); # 0。0じゃないだろw
intval('abc123'); # 0。0じゃないだろクソが
intval(''); # 0。 shine
JavaScriptだと数値じゃないものはNaNとなるから
0と区別できるが、PHPだと区別できないじゃないか
NaNを0にしたければ parseInt('') || 0 とすればいいだけだし >>6
そんなめんどくさい書き方しないといけないjavascript 数字文字列か否か厳密な区別が欲しいならphpならctype_digit()を使えばいい
キャストしたいときシンプルで短い(int)$hogeで済む >>7
面倒くさい?
数値に変換できない文字が0になるんですけど、
どう対処すれば良いんですか?
こっちのほうがめんどくせーだろw 自分は面倒くさい時は1で割るけど邪道なん?
''123"/1 → 123
"0123"/1 → 123
"abc"/1 → NaN
"abc123"/1 → NaN >>8
ctype_digit()ってbool返してくるんですけど?w
ctype_digit($hoge) ? intval($hoge) : NULL
とか書くんですかね?w まーたペチプァが暴れてんのかw
ペチプの仕様と違うからクソってかww
おととい来やがれwwww よく使うものほど短く書けるべき、そのようになっていないならばクソである
・・・・という主張はまさにjquery厨 PHPやVBのがよっぽどクソ言語だと思うね
Javascriptはましな方だとぼくは思いますyo テキストエリアに変更があったら保存する
という処理はどう書くのがいいですか?
keydownなどのたびに比較していたら負荷が大きそうです keydownのたびに比較しても負荷に問題はありません最近の端末は優秀です スレチだったらごめんなさい
スライドを作るjavascriptのフレームワークとしてreveal.jsを見つけてやってみようと思ったんだけど、htmlとかマークダウンで書けるのは分かったけどjavascriptは自分で意識的に使う訳ではないのかな?
スライド遷移とか動作させるのにjavascriptを使ってるってイメージで良いのかな? タブをアクティブにする方法ってあります?
tampermonkey(ユーザスクリプト) で使います。 >>7
なんか勘違いしてるみたいだけど、NaNも立派なdouble型の数値だよ
doubleに変換するならNaNになるのが当たり前
それが嫌なら|0するなりしてintに変換すればいい オブジェクトが格納された配列をイテレートしていく
オブジェクトの指定した属性が指定した値だったら、イテレートを中止し、結果としてtrueを得る
条件に一致するオブジェクトが存在しなければ、結果としてfalseを得る
という処理を書く時に一番いいやり方はどういうものでしょうか? jQuery宣伝ニキ出てこいオラッw
webを壊したjQuerywww
920 Name_Not_Found sage 2018/04/20(金) 05:28:09.34 ID:???
code.jquery.comの証明書が死んで、そこらじゅうのサイトが余波で崩壊してるね
とりあえずセキュリティ例外にぶっこめば動くには動くが・・・セキュリティ面でもサイト利用者にそれを求めるのかって点でもマズイな >>32
良く分からないけどCDNを使ってる時だけでは?
はい論破 code.jquery.comの証明書なんかあったん?
今みてlets encrypt使ってることには驚いたが
確かlets encryptのとこの証明書は全体からみたらごく一部だけど使えない端末あるから jQueryのようなヘビー級ライブラリはCDN使用が前提。
各サイトに置かれたらキャッシュ効かないだろバカか。
これはjQuery公式が言ってたことだぞ。
それがこの体たらく。
たいした組織じゃなかったな。一気に信用なくなった。
都合悪くなったとたんスレ違いjQueryニキもだんまりだしww どうしても必要じゃない限りcdn使わないんだよなあ
jqueryもどうしても必要じゃない限り使わないんだが cloudflareのようなところに自分で配置すればいいのでは? cloudflareだろうがnetlifyだろうが多数のサイトが少数のurlからロードしてこそキャッシュが効くのだ。
お前がcloudflareに上げて公開したところがお前のクソサイトからしか利用されんから意味ない。 なんだ?意気揚々とあちこちに書き込んでるのかw
https://github.com/jquery/codeorigin.jquery.com/issues/34
解决したみたいね。アクセスしたけど問題なし。
https://code.jquery.com/
CDNプロバイダが何かやらかしたのかな?
続報あれば、このgithubのissueに書かれるかもね >>29
> なんか勘違いしてるみたいだけど、NaNも立派なdouble型の数値だよ
数値じゃないよ。数値じゃないからNaNはどうやっても計算できない
数として扱われないから >>32
> jQuery宣伝ニキ出てこいオラッw
> webを壊したjQuerywww
それだけ多く使われていたってことですかねぇw >>34
> 今みてlets encrypt使ってることには驚いたが
驚くことじゃない
Let's Encryptのルート証明書「IdentTrust」、SSL認証局第1位に
https://news.mynavi.jp/article/20180325-605154/
> Q-Successは3月22日(ドイツ時間)、「IdenTrust, which is used as root certificate
> for Let's Encrypt, has become the most popular SSL certificate authority」において、
> IdentTrustのシェアが17.5%に到達し、SSL認証局として最も高いシェアを確保したと伝えた。
> 3年前にはシェアがゼロだったIdentTrustがこの3年間で業界首位に上り詰めたことになる。 >>37
> jQueryのようなヘビー級ライブラリはCDN使用が前提。
jQueryがヘビーってw
gzip圧縮時でたった30KBだぞ jQueryのようなヘビー級ライブラリはCDN使用が前提。
各サイトに置かれたらキャッシュ効かないだろバカか。
これはjQuery公式が言ってたことだぞ。
それがこの体たらく。
たいした組織じゃなかったな。一気に信用なくなった。
都合悪くなったとたんスレ違いjQueryニキもだんまりだしww
こんなときばっかり、だんまりかよwwww こんなときばっかり、だんまりのjQueryニキwww
こっちは大ポカ発覚で
たのしーwwww jQueryがヘビー級ライブラリって何年前の知識だ?
いまやライト級ライブラリ扱いだぞ
知識が数年前で止まってる技術者ほど厄介なやつはいないよね どう考えてもヘビーだろw
同じことをDOM APIだけで実現すれば
ライブラリのサイズは0!
自分で書いたコードの量だけですむ それはライブラリではない
今はライブラリの中でヘビーかライトかの話 その自分で書いたコードの量が多いっていう落ちだろw
自分で書いたコードはCDN仕えっても効果ないし
という指摘されるところまでが予定のうちですw いったんjQuery入れてしまえば最後、何だかんだでプラグイン始めどこの馬の骨とも分からないクオリティバラバラなjQuery依存のライブラリを導入することになる。そしてさらにこれらに依存したコードを書くからjQueryコケると皆コケるwww
まるで将棋だなwwwww クオリティバラバラなのと全部俺様クオリティどちらを取りますか?
俺様クオリティは10年経ってもクオリティはかわりません! 10年たっても低いクオリティのまま
成長してないんじゃダメだろうw 最近だとasync関数使ってその中で
awaitやfor-awaitやwhile_awaitでイベント待ちたい場合もあると思うんだけど
コールバックベースであるjQuery使ってる人ってどうやって上手く調整してるんだろうか Not a Numberなのに数値という意味が分からない
Nullが文字列って言うようなものでは? >>29
ソースよろ
NaNはNumberオブジェクトに属し
typeof NaNでnumberを返すくらいの認識しかない
数値計算の結果生成されるからNumberオブジェクトに入れてるだけじゃないの? >>63
その前にやることが有るだろ。
お前の、ソースよろ だ typeof nullがオブジェクトwwwww
javascriptワロタwwwww Rubyなんか、null(nil)にnil?メソッドが有るんだぜw
もちろん nil.is_a? Object は true である >>64
は?なんのソース?
アタリマエのこと書いただけのつもりなんだが? もしdoubleな数値型の値だったら、比較や加減乗除できるはずなんじゃないの 比較も演算もできるやろ
まあ結果が直感には反するかもしれんが
仕様(IEEE 754)に沿ってるだけ
そもそもなんでそんな仕様なんだクソが、とは思わなくもない
既存の数値処理にあわせたとか、ゼロ除算や文字列からの変換をエラーにしたくなかったとか、なんか理由はあるんだろう jQuery は、gzip圧縮時で、30KB。
広告1つ分
CDN はサポートがしっかりしている、Google, MS を使うのが普通
jquery.com は、テスト用で使えるってだけ。
jQuery はソースコードを作っている団体。
CDN サービスなど、やっていない https://code.jquery.com/
<title>jQuery CDN</title> 広告の30KBと圧縮コードの30KBでは全然違う。
jQueryはロードしたねヨカッタヨカッタというようなライブラリではなく、導入しているからには様々なプラグイン、依存ライブラリ、依存コードの依存先となる。
つまり非同期読み込みできない。bodyの下のほうに置いてる場合でもない。head内でなるべく早く読み込まなければ依存コードが動かない。
なのでbodyの最後に置ける広告コードと違い、圧縮状態で30KBのコードが展開され、パースされ、ロードされるまでそのページはブロックされる。 jQueryはbodyの最後におけるよ
実際にやってる人いた
jQueryとCSSを最後に読み込ませてサイトの表示速度を上げる方法
https://hodalog.com/move-jquery-to-footer/
たしかにjQueryを最後の方で読み込ませることで
表示速度が改善されているね 最近はwebpackで一つないし少数のファイルに結合してしまうけど、
昔RequireJSを使っていた頃は、jQueryを含めて依存プラグイン全てを
非同期で読み込ませていたな
どういう仕組みかと言うとRequireJSが全てのJavaScriptファイルを
同時に読み込み、依存関係情報に従って、すべてが揃ってから発動する
だから、jQueryをjQueryを使うライブラリを非同期で両方同時に読込始めて、
先にjQueryを使うライブラリの読み込みが終わったとしても
jQueryの読み込みが終わってからライブラリの処理が発動するから問題なく動作する 操作前のDOMが描画された後にガチャガチャ動いて良いなら当然そうできる。
ただし依存コードもすべてその後ろに置くこと。
コードの規模にもよるが、大きくなるにしたがって姿は見えれどインタラクション不能状態が長くなる。 >>75
jQueryに限らずDOMを操作するものは全て同じことでは?
広告はページ本編から独立しているから、問題ないのであって
同じように独立していればjQueryでも同じことできるし。
えーと、なにが良いたいんだい?
最初の一回は読み込むのが遅いけど、二回目以降は
まったく問題ないよで解決するよね。 アホがjQury厨を召喚したせいでまたjQueryのすれになっとるわ
死ねよカス
別スレでやれやばーか 同じサイトで2回目以降問題ないのは当たり前だろ
無関係のサイトでも同じcdnから読んでればキャッシュ効くのがいいとこなのに angular使ってるサイトってどこがある?
教えて >>61,63
(nullはオブジェクトではないけど)
オブジェクトに対するnullみたいな存在だよ
他にもInfinityとか、0が+-の2種類あるとか、double型ならではの仕様があるけれど
結局それらもNaNも全部ひっくるめてJSの数値の内なんだよ
JSの仕様と言うかもうCPUに内蔵されてる仕様で、
1.0+1.0が2.0になるように、1.0/0.0などをするとNaNになる
それらは全てdouble=64bit型の数値であってビット配列が違うだけなんだよ ちょっと自分もどういう流れで話してたか忘れそうだから纏めるけど、
だから通常の数値=doubleが期待される関数でNaNが返ってくるのは極めて自然なんだよってこと
それとJSの数値がdoubleであることによる特徴と、int/uintの特徴と、int/uint化の手法
くらいはしっかり理解しておくのもいいよということ
(概念上は一時的だけど)intにキャストすればInfinityや-0、NaNなんかは出てこないからね 浮動小数点数の演算においてゼロ除算の結果の扱いと
文字列をintに変換しようとしたときの扱いと
全然関係なくね 文字列をInt型に変換しようと思ってparseIntを使ったという話ならそれは確かに
parseIntが悪いっていうか紛らわしいってことになるかもしれないね
ただ、(ES.nextの話は抜きで簡単に言うと)
JSの数値っていうのは全てdouble型だからね
Int型を返す関数っていうのは無いの
parseIntのIntは、元のJavaでは確かにint型のIntの意味合いもあるけど、
JSではせいぜいInteger=整数っていう程度のものと考えると良い
つまり文字列の中の整数(=integer)を抜き出して、double型で返す関数ということ
そしてdouble型を返す関数に於いて、不正な値を例えば0にするか、それともNaNを返すか
どちらが自然かと言えばやっぱり後者だろうよ javascriptで阪神を勝たせる方法ありますか var 試合結果出力 = () => {
var rand = Math.rand();
var 阪神勝利フラグ = true;
console.log(阪神勝ちフラグ ? '阪神勝利!' : rand > 0.5 ? '阪神勝利!' : '阪神敗北…');
};
試合結果出力(); 以上のように、数値リテラルには様々な表現方法がありますが、本質的にはこれらの違いは見かけ上のものに過ぎません。
JavaScriptにとっては「0b10010」(2進数)、「0o22」(8進数)、「0x12」(16進数)、「1.81e1」(指数は)はいずれも同じく10進数の18なのです。
どの表記を選ぶかは、その時々でのよみやすさに応じて決めるべきです。
JavaScript本格入門より 10進数と言うのは嘘だな。
ならどうして0.1 + 0.2が0.30000000000000004になるんだい?
2進数だろう? >>89
"10進数" リテラル を
内部的に2進数に変換して計算しているからだけど?
だから10進数であっている 合ってない。
> いずれも同じく10進数の18なのです。
8進数の22なのです。
16進数の12なのです。
"8進数" リテラル を
内部的に2進数に変換して計算しているからだけど?
だから8進数であっている
"16進数" リテラル を
内部的に2進数に変換して計算しているからだけど?
だから16進数であっている いやあってるじゃん?
なにを根拠に違うって言ってるのか? phpにおけるNAN(phpにおいてはNaNじゃなくてNAN)がphpにおいてはfloat/double型に属するというのはいい
しかしNANが数値だとすると以下が成り立ってしまうのではないか
前提1: NAN - 1 は NAN となる
前提2: NAN - 2 は NAN となる
∴1=2である ∞に1を足しても∞に2を足しても∞なのは変わらない
しかし1=2とはならない
それは∞が特定のある数値を指すものではなく、∞=無限大という概念を指すものだから
NaNも同じ JS は、内部的には整数は無い。
数値型は、Double のみ
整数かどうか判断できる、関数もない
一方、Ruby では整数型もある >>94
NaNはdouble型で非数値なんだよ
そう書いてあるでしょ?
http://php.net/manual/ja/function.is-nan.php
> NAN(phpにおいてはNaNじゃなくてNAN)
NANは誤植じゃないの
NaNと書いてある箇所もあるし、NANが正しいなら、"Not A Number" が正式名称になる
単数の "A" を大文字にするのはどう考えてもおかしい >>98
前段
>>29からずっとNaNがdoubleがって言ってるやつが、>>29でこう書いてる
>なんか勘違いしてるみたいだけど、NaNも立派なdouble型の数値だよ
「NaNも(中略)数値だよ」
後段
php -r "var_dump(NaN);" // Notice: Use of undefined constant NaN と共にstring(3) "NaN"を出力
php -r "var_dump(NAN);" // float(NAN)を出力 >>99
ああ、ごめん
型の話と勘違いしてた
>>59,93,98までが自分で他は知らない >>100
その>>59からして変なんだがどういう認識で>>59を書いたんだ?
・>>59がレスしている>>44は、doubleかどうかではなく数値かどうかを問題にするもので、
まさにNaNを数値と言う>>29に対するレス
・NaNの扱いやNaNの発生なんて言語ごとの定義次第だが、なぜかJSスレでphp.netのURLを持ってくる >>101
元の>>6がPHPだし、double型といってるからphp.netを持ってきた
JavaScriptの話をするなら、NaNはNumber型で非数値(数値型で非数値)
型名称と非数値の性質の名前の混乱が起きやすいのはどの言語でも同じでそういう話かと思ってた >>102
これ「文字列をintにキャストしようとしたときjsだと頭が非数値文字列ならNaNになる、phpだと0になる、どっちが直感的か」の話だろ
NaN周りの仕様持ち出すならjsのじゃないと意味ないし
どんな頭してんだ ああまあ、言いすぎた
ただの勘違いだったんならそれでいい、すまん 結局NaNがdoubleだってソース誰も出せてねぇじゃんw console.log( (typeof 1) );
console.log( (typeof 1.0) );
console.log( (typeof 1.1) );
console.log( (typeof NaN) );
結果は全部 number
jsではintやlongint、float/doubleみたいな型分けが無く、全部number型に押し込められてて実質全部double
なのでNaNも実質double
頭ではわかる気がする
けど、そうすると整数扱ってたつもりが浮動小数点数にありがちな誤差が生じて……みたいなことは、ないの? typeof ""
ストリングwwwww
typeof {}
typeof []
オブジェクトwwwww
typeof (()=>{})
ファンクションwwwwww 型といえば関数型プログラミングとオブジェクト指向型プログラミングってどっちがいいの? オブジェクト指向は全体の構造を司るもの
わかりやすく言えばクラス
関数型は処理を司るもの
わかりやすく言えばメソッド
だから両方組み合わせるのが良い >>108
https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type
>>The Number type ...... representing the double-precision 64-bit format IEEE 754-2008 values ......
https://tc39.github.io/ecma262/#sec-terms-and-definitions-number-type
>> set of all possible Number values including the special “Not-a-Number” (NaN) value ......
https://tc39.github.io/ecma262/#sec-terms-and-definitions-nan
>> number value that is an IEEE 754-2008 “Not-a-Number” value 倍精度浮動小数点数があるなら
3倍精度浮動小数点数とか
4倍精度浮動小数点数とかあるの? IEEE 754では、NaNの表現について、指数部は全て1とし(これは無限大と同じ)、無限大の場合は仮
数部の全てを0とするのに対し、NaNは全0以外の任意のビット列としている。他に、先頭の符号
ビットで正負の区別がある。また、NaNの種別としてquiet NaN (qNaN) とsignaling NaN(sN
aN)があり、例外を投げる場合について違いがある。 position:absolute;でブロック要素を自由に動かす
みたいな手法ってまだ生き生きしていますか?
例えば、div要素で小窓作ってD&Dで動かすみたいな作業です。
なぜこんな質問をしたかというと、3年くらいjs事情から離れていたので
もしかしたらブラウザから万能小窓を呼び出せるような機能が追加されたりしてないかな
と思ったからです
要は、alert窓の万能版(htmlタグも解釈できるし、呼び出したタブのみでjsで情報の授受ができる、など)みたいな
やはり、div要素で小窓作ってcssで操作というのが基本でしょうか? position:absolute;でやるけどdraggable属性とd&d APIが提供するevent使って実装ずいぶん楽になったんじゃないのかな。知らんけど。 使われなくなったイベントリスナを削除し忘れて
ずっと残っている時がありますが、使われなくなったイベントリスナを検知するにはどうすればいいですか? 使われなくなったことをどうやって検知するんですか?
イベントリスナが貼り付けられた要素が削除されればブラウザが勝手に開放してくれんじゃないか いやそういう意味ではなく、
ソースコードの中に、もはや使われなくなったイベントリスナ追加処理のコードが残るということです
呼ばれないイベントリスナは特に問題を起こさないので、見つけるタイミングが少ないです は?
ここまで書いて分からないということは、多分あなたには分からないのでしょうね コードの変更改修によって
もう使われなくなった「リスナに呼んでもらう関数」を
掃除したい
という意図にピザまん3個 意味が分からんな
オブジェクトにもう使われなくなったプロパティが残ってるからそれを削除したい
と同じようなニュアンスか? 用済みになったコードを削除したいんじゃない?
次のように
{
let func = function(event){
…何かやる…
func = null;
}
element.onclick = func
} 「イベントリスナ追加処理のコード」だからなあ
やっぱり意味不明 必要なのか、不要なのかは人間様が判断しないとダメです
JavaScriptに人工知能は実装されていません >>28お願いします
非アクティブになってるタブをアクティブにしたいです。
非アクテヒブになるとジャバスクリプトも停止するので無理なのでしょうか? なにがしたいのかよくわからない
ブラウザのタブをアクティブにしたいの?
だとしたらコンテンツからでは無理だよ 配列のreduceメソッドが何も減らないのになぜreduceなんて名前になってるかわからなくてイライラするので
理由を教えて下さい >>144
蓄積変数ある以外forEach とかわらんやん
使った配列の中身が減っていくならまだ分かるけど減らんし
forEachWithAccumlatorVersionSpecialArrayMethodって名前にすべき
reduceなんておかしいわ >>142
例えば指定した時間になるとタブをアクティブにするとかです map
射影。1対1
reduce
蓄積変数・accumulator に畳み込む。多対1
SQL のgroup by >>122-123
なるほど
HTML5APIに便利なのがどんどん追加されてるみたいですね
dialog要素とかUI系ライブラリが対応すればまさに、という感じでした
ありがとうございました null と undefinedの違いと使い分け方をおしえて lodashのdebounceを使う時は
const f = _.debounce(()=>{
console.log('debounce');
},1000);
function hoge(){
f();
}
hoge();
hoge();
のように呼び出す関数の外で定義しておかないと、
前回のキャンセルが出来ませんが
呼び出す関数の中でdebounceを定義する方法はありますか? 画面遷移のあるSPAはフレームワークを使った方がシンプルに作れると思いますが
一番シンプルなSPA用JavaScriptフレームワークは何ですか? SPAは意識高い系の営業がよく使いたがるな
それだけ アプリがSPAになるのはごく当然のことだと思いますが・・ 開発がものっそい面倒になるけどメリットが見合わない印象
画面内の一部の要素をajaxで動的に変更するだけで十分で、複数ページ分の機能を丸ごとjsで面倒見るメリットがない
みたいな状態でほんとにSPA必要なんか?ってのが多いというか 一番普及してるものが一番シンプルやろ
面倒くさいのは普及しない
つまりReact SPAって何のことかとおもってググったけど雑誌のことか。
すれち。 >>155
何をしたいのかさっぱり分からん。
どうせやりたいことはこれだけだろ?
const hoge = _.debounce(()=>console.log('debounce'), 1000);
hoge();
hoge(); >>159
SPAは、ウェブアプリ、例えばGmailやGoogle Mapのようなものには必要
ウェブサイトには必要ない。jQueryで十分 訂正
SPAは、ウェブアプリ、例えばGmailやGoogle Mapのようなものには必要かもしれない
ウェブサイトには必要ない。jQueryで十分 SPAはウェブアプリには必要かもしれないが
実際には殆ど使われていない 要するに金を搾り取るための道具・査定を低くするための道具としては優秀 自分が出来る・分かる→必要!重要!
自分が出来ない・分からない→不要![自分が知ってるもの]で十分!
なんて言うんだっけこういうの? 防衛機制の合理化だね。
酸っぱいブドウはその一例。
また英語圏では「Sour Grapes」は「負け惜しみ」を意味する熟語でもある。
手に入れたくてたまらないのに、人・物・地位・階級など、努力しても手が届かない対象がある場合、その対象を「価値がない・低級で自分にふさわしくない」ものとみてあきらめ、心の平安を得る。 loadashとかしらん超初心者だけど挑戦という体で
var func1 = () => {
console.log('debouce1')
}
var func2 = () => {
console.log('debouce2')
}
const f = (func) => {
return _.debounce( ()=>{
return func()
}, 1000)
var hoge = (fun) => {
f(fun);
}
hoge(func1);
hoge(func2); const hoge = (function() {
const f = _.debounce(()=>console.log('debounce'),1000);
return function() {
f();
}
)();
hoge();
hoge(); >>162
いや、例を合理化されても困るんですが。
知りたいのは呼び出す関数の中でdebounceを定義する方法はあるかどうかです
全部debounceでくるめるのなら最初からそうしてます 簡単なSPA なら、jQuery Mobile, Vue.js
Angular, React, Electron などは、複雑 >>173
よくわからんけど
addEventListenerに対するremoveEventListenerを考えたらいいんじゃないかな 結局、SPAとは1pのフロントで全部やる利点が欠点よりも明らかに大きいんですか?
「1pにできてファイル数少なくなるから管理が楽」
なんて抜かした阿呆は知ってるけど (フロントに)一極集中させたがったり
ファイル数を少なくしたがる層が一定数いるけど、なんでなのかね 自動化するんだから数ではなにも変わらないと思うが? 難しいからspaクソ言うてる勢が自動デプロイ環境なんて整えるわけないよね。
いまだにftpでポチポチやってるに1票ww ん? SPAって最終的に1ページになるだけで
ソースコードは普通に複数のファイルになるぞ
そしてビルド環境必須だから当然整えてるし、
それができる人ならデプロイ環境も整えられる index.htmlとbundle.jsの2ファイルになるわ SPAって別にビルド環境必須ではないぞ
別にサイトのうち多くのデータを1つのページで扱わないといけないこともないし
例えば2ページ間の遷移をajaxで行えばそのページはSPAと言える
もうちょっとSPAっぽくしたければ、
Nodeのようなアプリケーションサーバとpjax使えば非常に簡単に作れる 何度も検索するようなページではSPAにすれば通信が減る
とか書いてるサイトがクソほどあって失笑
お前検索をクライアントサイドに閉じ込められると思ってんのか
検索結果部分だけ動的に更新させりゃ済むだろが > 検索結果部分だけ動的に更新させりゃ済むだろが
それ検索結果の表示ページに遷移しないんだからアプリかどうかは知らんがシングルページじゃん
> お前検索をクライアントサイドに閉じ込められると思ってんのか
クライアントサイドに閉じ込められるかどうかはspaうんぬんと関係ないぞ。
クライアントサイドをどう作るかであって、サーバサイドと連携するしないやどうやるかは別の話で関係ない。 >>186
アホ丸出しか
通信が減るかどうかの問題だぞ
クライアントで完結するか?しないだろ、どうやってもxhrが挟まるだろ ajaxっていつからSPAって名前に変わったんですかねえ… ぶっちゃけ提唱されたけどほとんど馴染まないまま消え去っていってる最中だからな >>188
ajaxとSPAは別物ですよ
外部との通信を必要としないSPAもありますし let a = function hoge(){
console.log(hoge);
}
a();
このような形で関数内から自分自身を参照出来ますが
関数外部からhoge();
としたらエラーになります
この関数名は、関数内からしか参照できないのでしょうか?
だとしたら関数にstatic変数を持たせるのに都合がいいですが、
関数名を使ってstatic変数を持たせる方法はアリなのでしょうか? 何がしたいか知らんけどクロージャ
var f = (n) => {
var count =n
return ()=> {
return ++count;
}
}
var f1 = f(1);
var f100 = f(100);
f1() //2
f100() //101
f1() //3
f100() //101 あんか(行火)は炭火、電気ヒーター、化学発熱体等を内蔵した
一人用可搬型の採暖用保温具。 布団などに入れ直接手足に当てて
暖をとる暖房器具である。 地域や世代によっては
「こたつ」「足炬燵」と呼ばれることもある。 >>192
関数内からしかアクセスできない
有り無しは個人の判断、自分で判断しろ >>193
いえクロージャは知ってます
>>199
じゃあアリにします
ありがとうございました 他人がどういうコード書こうと批判する気は無いけど
>だとしたら関数にstatic変数を持たせるのに都合がいいですが
これはちょっとわからない >>203
hoge.foo = 1; とか、したいんじゃない?
a.foo = 1; でも出来るから意味不明だけど >>204
この場合の自関数名は読み取り専用
自前でhoge.foo = 1; できるから、ではなくて
「関数にstatic変数を持たせる」という目的に、この場合の自関数名が関係しない
なので意味がわからない >>205
正直に言うと、後段の部分は俺も理解してなくて、質問者本人が判断すれば良いから投げた
突っ込みどころを出せば、キリがない
- 関数名の参照はスコープからの参照だよな?Function#nameは外のスコープからも参照可能だが、関係ないよな?
- そもそも、static変数はクラスのためのものだが、どういう用途を想定してるんだ?
- つか、JavaScriptにstatic変数はないが、Java定義の認識でいいのか?
- sratic変数は外のスコープから参照可能だが、スコープ上で関数への参照が閉じ込められる性質とどう組み合わせるんだ? >sratic変数は外のスコープから参照可能だが
typoは無視するとして、>>192もそうだがprivateとごっちゃになっている気がする
staticはstatic ふぅ、こんなピリピリした話をしてるなら
いつものようにjQueryの話題で盛り上がっていたほうが良いな 俺はSPAの実際のところが気になる
できるかどうか、難易、フレームワーク云々、以前にSPA必須な案件にまったく遭遇しない 普通のサイトがSPA取り入れても
違和感が出るだけだしな。
クリックしたらページが変わるだろう所で変わらないから
違う、そうじゃないって思っちゃう そんなもんトランジションアニメーションさせればいいだけの話。
アドレスバーのurlも自由自在よ。 >>192
あたまよさそうだねきみ
後学のためにどういう風に使うのか具体的な事例とコードよろしく >>208
そんなわけないでしょう
privateの意味分かってますか? >>215
$(document).on('click', '#hoge', function f(e) {
if (!f.fadeout) {
f.fadeout = _.debounce(() => {
$('#moge').fadeOut();
}, 10000);
}
// いろいろな処理
f.fadeout();
});
こんな感じに、関数の中から同一オブジェクトにアクセスしたい場合に使います
fadeout開始するまでの待ち時間に再び呼び出された時には
前回のfadeout予約がキャンセルされるような関数を、lodashのdebounceで作っています
jqueryのdelayとstopで同じことをしようとしたのですが何故かうまくいかなかったので。
これが唯一の実装方法でないのは当然ですが、複雑さを関数の中だけに閉じ込めるのがシンプルで好みです
もっといい方法ありますか? イベントは、発行/購読パターンが基本
Mediator もある。
仲介者、まとめ役、橋渡し役、管制塔
イベントキャンセルできるイベントキューのライブラリは、
オライリーの著者などの、外人が作っている
自分で作ったら、複雑すぎて大変
Stoyan Stefanov 著
JavaScriptパターン ―優れたアプリケーションのための作法、2011
オブジェクト指向JavaScript、2012
JavaScriptデザインパターン、Addy Osmani, 2013 setTimeoutの戻り値を自関数の中で管理するだけで済むように見えるんだが、こういう挙動が欲しいのではないのか?
document.getElementById('mybutton').addEventListener( 'click', function f(){
var delay = 3000;
if( ( 'timeoutId' in f ) === false )
f.timeoutId = false;
if( f.timeoutId !== false )
clearTimeout(f.timeoutId);
f.timeoutId = setTimeout( function(){
f.timeoutId = false;
/* my oparation */
}, delay );
}, false );
目印は別にfalseでなくてもいいが >>221
関数「名」は、予約&予約キャンセルの仕組みには、一切関係ないではないか
ということだと思うが >>220
setTimeoutの返り値でキャンセルするっていうのは当たり前の話です
わざわざ複雑にした処理をドヤ顔で書ける神経が分かりません >>223
目的の挙動はこれで合っているのか間違っているのか、だけが欲しい >>222
いや、だから何????
そんな話誰してないだろ??? >>224
いやだから、何でわざわざ無駄に複雑にした処理を検討しなきゃいけないの???
甘えすぎじゃね??? >>225
>この関数名は、関数内からしか参照できないのでしょうか?
>だとしたら関数にstatic変数を持たせるのに都合がいいですが、
「関数名」を「参照できる範囲(private性)」について、「だとしたら」で繋いでいるから 質問スレにはままあることですが
回答者に回るレベルに至っていない連中がちょっと回答者に回りすぎでは?
もう少しわきまえて下さい
分かりましたね? $('#hoge').on('hoge',(e)=>{
console.log('hoge');
});
$(document).trigger('hoge');
このように上位要素でtriggerしても下位の要素で受け取ることは出来ません
上位で受け取ってコールバックするような機構が必要だと思いますが
どうやるのが定石なのでしょうか? >>221
は?
何を言ってるか分からんてアホ?
>>192で言ってることをどこで使ってるか説明してって言ってるだけなんだが?
使ってないってこと? >>229
バカが回答をりかいできなくて逆ギレしだすのも質問スレにはよくある > 関数外部からhoge();
> としたらエラーになります
こことかpublic/privateの話だよね >>235
192はアホすぎて使いようがいない印象をうける
だからこそどうやって使うのかにはかなり興味あるのだがそれは示せないだろう >>232
意味が分からん。
$(document).trigger('click')ってやったら、
HTMLに含まれる全てのボタンやリンクに対して
クリックされたというイベントを発動させたいのか? >>217
たしかにどこが複雑なのかも分からん
我流じゃなくて関数型の勉強したほう良いと思う 簡潔で非ライブラリ依存なコードをあっさり提示されてて草 わからんね。簡素じゃなくて冗長なクソコードなら
>>220にあるけどそれのことかな?w
なにがクソかというと無駄なことしてるから。
clearTimeoutが無効な値を渡しても例外でないのは保証されてるのだから
>>220はこれだけでいい。これがクソコードである根拠
やらなくて良いことをやるのは丁寧なのではなく単に無駄なだけ
document.getElementById('mybutton').addEventListener( 'click', function f(){
var delay = 3000;
clearTimeout(f.timeoutId);
f.timeoutId = setTimeout( function(){
/* my oparation */
}, delay );
}, false );
そしてもちろんこれはライブラリを使えば、もっと簡素に実現できる
$('#mybutton').click(_.debounce(function() {
/* my oparation */
}, 3000));
非ライブラリのコードも簡素に書けないやつが、
ライブラリよりも簡素に書けるとか言わないほうが良い
恥をかくだけだぞw >>217
単に_.debounceの使い方が良くない
_.debounce は オリジナルのイベントハンドラを
遅延実行機能付のイベントハンドラに変えるもの
と考えたほうが良い
そこに書いたコードは、これだけでいい
$(document).on('click', '#hoge', _.debounce(function() {
$('#moge').fadeOut();
// いろいろな処理
}, 3000));
jQueryのstopはよく分からんね。俺もアニメーションはあまり使わないので。
俺が言えることは今はCSSを使ったほうが良いということぐらいだろう
stopだけで単体で実行したらキャンセルされるが、stop().delay()みたいに
続けるとキャンセルできないアニメーションのキュー(?)の絡みの仕様なんだろうけど
ドキュメントにも、setTimeoutを置き換えるものじゃないと書いてあるので
https://api.jquery.com/delay/
setTimeoutをそのまま使うか、lodashでラップされた関数を使うほうが良いのだろう やっぱり俺がいないとスレのレベルが下がるなw
jQueryを使ったコードだけでなく、
ネイティブのコードもね >>244
旧泥でclearTimeoutにundefinedを渡すとエラー吐くことがあった気がするが
nullや、あと確かfalseだとエラーを吐かない
LS仕様ではdo nothingと決められていることや
ライブラリではその辺の扱いを別所で定義しているから行数が減ることは間違いない
見て読みやすいコードは無駄ではないことも間違いないとは思うが 今ちらっとlodashのgithubを見てきたがdebounce.jsのcancelで以下のように確認を入れてから
cancelTimerでclearTimeoutしているところから見ても、少なくとも無駄ではないと思う
というより、事前確認が無駄ならlodashのこの記述も無駄になるような
if (timerId !== undefined) {
cancelTimer(timerId)
} >>247
そういうことを考慮したとしてもこれだけですむ
冗長なことに変わりはないよ
document.getElementById('mybutton').addEventListener( 'click', function f(){
var delay = 3000;
if (f.timeoutId) clearTimeout(f.timeoutId);
f.timeoutId = setTimeout( function(){
f.timeoutId = undefined;
/* my oparation */
}, delay );
}, false ); >>249
clearTimeoutに渡す内容の確認はクソコードかつ無駄ではなく必要なものだったと
認めたということで良いかな
初期化は好み次第だと思うけどね
javascriptではプロパティは事前定義しなくてもいいというのは正直どうかと思うところがある いや? 無駄だよ。
意味があるというのならその証拠をどうぞ せやねw
最終的な答の簡潔さに比べれば
そんな問題考えるだけ無駄
$(document).on('click', '#hoge', _.debounce(function() {
$('#moge').fadeOut();
// いろいろな処理
}, 3000)); この流れで認めるとこはビシっと認めたらかっこよかった どこかの誰かと違って、ライブラリ最高って言ってるわけじゃないんだから
ライブラリにも無駄なところはあるよ。(はい、ビシッと認めましたよ?w)
だからこそライブラリはバージョンアップし続けてるんだろう。 解釈の原因は解釈者自身の固定観念。解釈の自由には責任が伴う
言葉風紀世相の乱れはそう感じる人の心の乱れの自己投影。人は鏡
憤怒は一時の狂気、無知無能の自己証明。中途半端な知識主ほど激昂
「真実は一つ」は錯誤。執着する者ほど矛盾を体験(争い煩悩)
他人に不自由(制約)を与えれば己も不自由(不快)を得る
問題解決力の乏しい者ほど自己防衛の為に礼儀作法マナーを要求
情報分析力の低い者ほどデマ宗教フェイク疑似科学に感化洗脳
自己肯定感の欠けた者ほど「己の知見こそ全で真」に自己陶酔
人生経験の少ない者ほど嫌いキモイ怖いウザイ憎い想定外を体験
キリスト教は世界最大のカルト。聖書は史上最も売れているト本
全ては必然。偶然 奇跡 理不尽 不条理は思考停止 視野狭窄の産物
人生存在現象に元々意味価値理由目的義務使命はない
宗教民族領土貧困は争いの「原因」ではなく「口実動機言訳」
虐め差別犯罪テロ紛争は根絶可能。必要なのは適切十分な高度教育
体罰は指導力問題解決力の乏しい教育素人の独善甘え怠慢責任転嫁
死刑は民度の低い排他的集団リンチ殺人。「死ねば償える」は偽善
核武装論は人間不信と劣等感に苛まれた臆病な外交素人の精神安定剤
投票率低下は社会成熟の徴候。奇人変人の当選は議員数過多の証左
感情自己責任論 〜学校では教えない合理主義哲学〜 m9`・ω・) レベル低い人ばっかりですね。
面倒くさいのでレベル低いだけで私のコード理解できないとかいう人はレスしないでもらえますか? >>259
何を言ってるんでしょうか?
自分でレベル低いってのは認識してるとおもうので
貴方みたいなレベル低い人はそもそも回答なんてしなければいいだけじゃないのでしょうか? >>260
自称高レベルの君が書いたコードはどれなの? >>261
バカなのですか?
あなた達が低レベルが理解できないとかいってるコードがそれですよ
聞かないとわからないほど低レベルなんですか?
私は誰でも名前をしってる会社で働いてるんです。
あなた達とはレベルガチがすぎる。
まさか5chがここまでレベル低いとは思わなかったのですが
もうこんなとこ来ません。 初めてのandroidアプリ開発でSPA使っちゃった(cordova)けどまずかった? 誰でもできる在宅ワーク儲かる方法
少しでも多くの方の役に立ちたいです
グーグルで検索するといいかも『金持ちになりたい 鎌野介メソッド』
IZRJV >>249
そんなこと気にしだしたらidがオーバーフローしてないかとか
万が一doubleの整数部分超える実装になってたらどうするのかとか
ほんとキリがないゾ
余計な懸念は捨てて少なくともここに提示するコードは最小限のものにしようヤ
パッチは実際テストで問題出てからでいいじゃん
今や6ヶ月毎にブラウザは更新されるんだから同じバグがいつまでもあるものではないシ
反対に新しいバグがその時に出てきてるかもしれないんだからサ >>266
全然というかSPAはあくまでもwebアプリに対する概念
普通cordovaでページ遷移は付けない そんなことはない
Google検索とかもSPAのうち https://lodash.com/docs/4.17.10
このlodashのドキュメントページが読み込み中になったまま固まるのですが自分だけでしょうか? class構文において
staticなメソッドはstaticキーワードをメソッド名に置くことで実現できますが
staticなプロパティはどうやって実現するのでしょうか? lodashのuniqueIdって、PHPのuniqidみたいな、
まずバッティングしないIDを生成するものかと思っていたのですが
ただ連番を返すだけのもののようです・・
PHPのuniqidみたいなIDが欲しい時にはどうやるのでしょうか? >>277
確かにそれで出来るのですが、どこで初期化するのかが問題です
初期化用staticメソッドを用意して外から呼ぶか、
コンストラクタからそれを最初の一回だけ実行するとかでしょうか? class Hoge {
}
Hoge.initialize();
みたいにクラス定義のすぐ下に書くことにしました
これもイケてないですが、イケてるやり方なんてなさそうなので・・ 殆どの場合 static get method ( ) { } で済むでしょ
それかES2019まで待つか get set追加したんならoperatorも追加してほしい。
以上、混沌を望むものより。 hoge.js
(function(){/* hogehoge */})();
fuga.js
(function(){/* fugafuga */})();
みたいに分けてグローバル汚染を回避しつつモジュールみたいにして管理したいんですけど
export/importみたいなのっていつ頃標準化?されるんでしょうか >>282
提案はずっと前から色々あるぞ
まずbigintが追加されたでしょ、その後はnumberの拡張が来る
n = 1px + 2em
みたいに書けるようになるってこと
だけどそれ以上はまだ目処がついてないかな
でもそのクラスのインスタンスがvalue proxy的なものになるんだと考えると
混沌ではなくむしろ比較的自然でシンプルだし、そういう流れで行くかもね >>284-285
ローカルだとセキュリティやら何やらでできないみたいですね
サーバーにアップしたらいけました
ありがとうございます export default class {
constructor(x,y){
this.x=x;
this.y=y;
}
sum(){
return this.x+this.y;
}
}
こういう宣言をしていて、classのブロックの中ではなく
別のところにsum関数を(ES6で)書き加えたい時ってどうすればよいのでしょうか 補足
>別のところ
export default class{
constructor(){}
}
sum(){}
みたいな感じです const Hoge = function(){}
Hoge.prototype.sum = function(){}
みたいに、単にこういう風に書けるのだろうか
と思っただけです >>290
書けなくても特に問題ないです classは単なる糖衣構文だし
default exportに名前をつけちゃいけない決まりはないから
export default class Hoge{
constructor(){}
}
Hoge.prototype.sum = function(){}
みたいのは可能なんじゃないの(ごめん試してないです) >>292
最初はdefaultもなしでexport class Hogeで、prototypeで追加してたのですが
なんとなくES6で書き加えたい(統一したい)なと思ったのです
あとは、import先で汚染した(や被り気味の命名など)と気づいたとき
export先と行ったり来たりするのがめんどうかなと思い
あえてdefaultのままにしました なぜprototypeに書き加える必要があるのか
というか書き加えたメソッドはHomeObjectが設定されないし
最初から存在するメソッドと等価にはならないからね >>295
>HomeObjectが設定されない
とは?
こういうことではなくて?↓
https://jsfiddle.net/pyLbpgrx/ >>295
HomeObjectとかよその用語当たり前みたいに使うなよな
jsスレでマジックメソッドがどうの言ってるきちがいもいた JSBinの読み方はジェイエスビンでいいのでしょうか? 指定の値を指定数並べた配列を作るには
ループでpushしたり
lengthを伸ばしてからfillしたりするしかないのでしょうか? javascriptで今流行りの機械学習勉強したいのですがだめですか?
本が全然みつからない。
もう年だしプログラマーでもないので他の言語やりたくない。 ガッツリやりたいならCPUでは限界があるから
どちらにせよWebGLを使うことになるからそれは他言語で書いてるようなもの
まあTensorFlow.jsくらいからやるといいんじゃない >>300
つくりたい数列による
遅延評価とか再帰をつかって数列を作る手法もある。 >>303
ありがとうございます
単純な整数値を入れた配列です 一定の規則に沿った数列をいくつか作りたいなら
ベースとなる配列作っといてそれをmap()で回すとか? >>304
たとえば3を45個並べた配列aを作るには、
var a = Array(45).fill(3)
だがこういうことではなくて? 初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発
https://www.amazon.co.jp/dp/toc/4873117836/ref=dp_toc?_encoding=UTF8&n=465392
徹底マスター JavaScriptの教科書 プログラミングの教養から、言語仕様、開発技法までが正しく身につく (Informatics&IDEA)
https://www.amazon.co.jp/dp/toc/4797388641/ref=dp_toc?_encoding=UTF8&n=465392
上の2つならどっちがおすすめ?
一通りの知識はあるけどもうちょっと知識深めたいってレベルです。 >>306
ありがとうございます
たしかに配列を作成するのはそれが一番シンプルですね
実際の問題はすでにある配列に同一の要素を任意数追加するというもので
fillやpushを使う以外にもっとシンプルな方法があるんじゃないかと思ったのですが、なさそうですね
ありがとうごさいました 配列のlengthを拡張してあってパターンを含ませてるならcopyWithinで1発 >>307
それくらいならMDN眺めたり実装追ってるブログ見りゃいいと思うよ >>308
すでにある配列をaとして、3を45個追加した配列bを作るには、
var b = [...a, ...Array(45).fill(3)]
だがこういうことではなくて? >>たしかに配列を作成するのはそれが一番シンプルですね
>>実際の問題はすでにある配列に同一の要素を任意数追加するというもので それならpushでいいじゃん。ループは要らないぞ。
何で嫌がるのかサッパリだらっしゃい…
すでにある配列をaに、3を45個追加するには、
a.push(...Array(45).fill(3))
だがこういうことではなくて? >>fillやpushを使う以外にもっとシンプルな方法があるんじゃないかと思ったのですが、なさそうですね use strict宣言してた場合、;セミコロンも書かないのが普通?
つまり、好みの問題じゃなく全部改行使って書いたほうがいい?(結局圧縮するだろうし) use strictはセミコロンの挙動を変えはしないぞ
つまるところ好みの問題だぞ
〜の方が良い?的な質問はしないほうが良いぞ >>315
もっとシンプルな方法…?
有りうるのか?どういうAPIになるんだろ? だからstaticな変数ってなんなの?
誰か教えてよ Int8Array.BYTES_PER_ELEMENT
的なクラスに直接生えてるプロパティのことだろ
ES2019くらいで
class {
static p = hoge
}
と書けるようになるとは思うが、
それまでは代わりに
class {
static get p() { return hoge }
}
とするのが定石だな
prototype下のプロパティでも同じだ >>317
あ、そういう意味ではなくて今後セミコロンが廃止になりますか?
みたいなニュアンスだったのです
調べてみるとuse strictに限らずセミコロンありなし混合はjavascriptのそういうスタイルだったみたいですね
ありがとうございました super()って便利なのにネーミングがダサくない? >>320
参照透過性のある書き換え不能の変数じゃないのか? >>322
そりゃ100年後は分からんが、現時点で非推奨になる理由がないだろう
ある面ではスペースみたいな存在なのだから
ほとんどの普通の言語およびコミュニティに於いてそれが無駄だとしても
言語仕様として過剰なスペースを禁止しようということにはならないだろう 例えばデジタル時計を表示するアプリをつくったときに
setIntervalで1秒毎に更新するようにして
スリープ状態になってスリープ解除すると
遅れた時間が表示されます。
@これはどうしてなのでしょうか?
スリープになると、タイマーが止まって処理が実行されずにキューが溜まっていって、
解除されるとタイマーが止まった時点から再開して
溜まったキューが最初の分からひとずつ実行されるのかなとおもってるのですが
この考えは完全に正解でしょうか?1つでもおかしなとこあったら教えて下さい
Aどう解消すればいいのでしょうか? @代わりにsetTimeoutで実装することを考えたら分かりやすいだろう
実行されたら次のキューを登録する
したがって実行が遅延するとキューが溜まっていくことはない
Aそもそも精度は保証されて無く、色々なことで遅れるので、
JSに限らずだがタイマーで時を進めて行ってはいけない
更新の度に現在時刻を取得すること
もしストップウォッチ的なものなら開始時刻を取っておいて、毎回比較して差分を出す
そしてオマケで更新はrequestAnimationFrameを使うと良い >>302
TensorFlow.jsって
TensorFlowの本に書いてるコード実行すればJSでも動くってことですか?
つまり記法は全く同じ? そのレベルならやめといた方がいい。
pythonでやりな。
あっちはあっちで大変だと思うが。 基本的に既にできてるモデルをWebで動かす用であって
学習もできなくはないけどAPIもぜんぜん違うよ >>324
それはないでしょ。
だってそれならクロージャで実現できる。
クロージャに値を閉じ込めればいいだけの話。
クロージャは知ってるって言ってたから
そいうことではないだろ。 普通static変数=静的な変数っていったら、呼び出すごとに初期化されず状態が保持される変数のことでいい
言語によって扱いは全然異なる
javascriptではクロージャに閉じ込めればもちろんできるし
そもそもjavascriptにあんまし馴染まない概念といえなくもない
こんなとこで合ってる?(質問) いや、そういう関数の機能としてのstatic変数が存在する言語は少ないので
普通staticな変数と言ったらクラスの何らかを想定するだろう、JSでも classでも基本同じでは
インスタンスごとに独立固有でなくインスタンス間で共有され、
インスタンス生成ごとに初期化されるのではなく、一度だけ初期化される、要するに状態が保持される
静的変数が関係する場合、常に同じ入力に対し同じ結果が返されるとは限らない
なので静的変数の性質として「参照透過性があること」を持ってくるのは間違い
書き換え不能かどうかも静的変数の概念には直接関係しない それを言うとJSの場合はstaticな変数なんて存在しないけどな
staticとして宣言されたものはクラスオブジェクトのプロパティになるだけだから Node.ELEMENT_NODE は静的変数なんじゃない? クラスベースオブジェクト思考に毒されたやつは話を聞かない
唯一絶対の真理と思ってやがる
jsにclass構文なんか導入したせいで拍車がかかった
ちなみに拍車とはカウボーイのブーツのかかとについてるトゲトゲの車輪な 「ある要素を、それ以外の要素がクリックされたら閉じる」
のような処理はどう実装するのがベストなのでしょうか?
モーダルウインドウでは半透明の黒幕を表示してそこでイベントを受けるというやり方を見ますが
他のコントロールへのイベントは生かしたままにしたいです
要素にtabindexを付けてフォーカスを持たせて、focusoutを検出したらいいのでは?
と思ってやってみたのですが、ブラウザ以外のアプリにタスク切り替えしても反応してしまいました
あとはdocumentに一時的なclickイベントリスナを付けるくらいしかなさそうですが
これだと他のイベントリスナでstopPropagationされたら反応しなくなると思います
つまり、考えついたどの方法にも何かしら問題があるのです・・
問題のない方法はないでしょうか? >>339の件ですが
stopPropagationされる可能性が少ないイベントリスナを使えばいいんじゃないかとひらめきました
クリックイベントはmousedownやclickで受けるのが普通なので、
これらはstopPropagationされる可能性がありますが
あまり使われることのないmouseupなら殺されることもないのではないかと。
試しにmousedownやclickをstopPropagationするコードを書いてみましたが
mouseupはちゃんとdocumentまで伝わってきました
これはいいのではないでしょうか?
もっと良い方法ありますか? >>340
組み込んだらうまく動きました
今まで、リスナでイベントを捕捉して処理をした時には
大抵の場合、とりあえずstopPropagationとpreventDefaultを両方実行していました
処理はもうしたんだから、他の要素はもうそれを知る必要がないだろう、
その方が負荷が下がっていいだろう、と。
が、イベントは一連の処理を開始するきっかけにもなれば、
一連の処理を終わらせるきっかけにもなるので、
「処理はもうしたから、他の要素はもう知る必要がないやろ」という態度は問題ですね
そうしなければならない理由がない限り、
処理を済ませたからといってイベントの伝播を止めるのは良くないのでしょう JSでstaticといったら
class C{
static m(){}
}
みたいなのを指すけど
そこに高度な思想や概念なんて特に無いよ 静的関数じゃなくて静的変数の話だぞ
cにだってあるやつ >>345
静的変数の話ではないよ
プロトタイプとprototypeが違うように
静的変数とstaticな変数では意味合いが全く違う じゃあ、その「静的」や「プロトタイプ」は英語では何というの? SPAでのログイン処理について詳しく書かれた本があれば教えて下さい 特に分からないのはセッションハイジャック対策です
今はsslが普通なので対策はいらないのでしょうか?
クライアントはidとパスワードを送る
サーバはセッションidを送る
以後、クライアントはセッションidを鍵として使う
これだけでいいのでしょうか? SSL環境でセッションハイジャックが出来るなら
それはもはやidとパスワードが盗める状態なので
そもそも終わってますよね
そう考えると対策はいらないってことでしょうか? そのレベルならば自分でセキュリティ考えてはいけません
専門家・専門会社を頼りましょう >>347
返答ないってことは誰も使ってなくて、
評判も聞かないってこと?
javascriptしかしらないプログラミング初心者の自分には
electronってすげー便利そうなんだけど。。。 >>357
5chだと板分類が微妙で居場所が無い
あと配布サイズがデカくなるので気軽には使いづらい面はある 2015年出版のほんに
「CoffeeScriptは必修科目」って節があって15ページくらいの解説があるんだが
コレ読んだほうがいいの?
ネットで調べるともう終わった言語って評判だけど。。。 >>361
いらないいらない。もうCoffeeScriptの噛ませ犬としての役目は尽きた
JavaScriptを進化させるための良いプロトタイプになったよ
この言語は最初から流行らず死滅する運命、少し考えればわかったことだね。
https://trends.google.co.jp/trends/explore?date=all&q=JavaScript,CoffeeScript 実は盛り上がってなどいなかったんだよ
カツラと同じでそう見せてただけさ >>357
普通に最高ですよ
ネイティブアプリでないと出来ないことはあるので、作れるものの幅が広がりました 以前は「出来ることならネイティブで作りたいけどウェブ系しかほとんど知らないからウェブアプリにしとこ」
みたいな感じでしたが
electronを知ってからはネイティブで作れるので最高です 仕事でJS使ってるんだが、これってどう頑張ってもできないやつとか才能ない奴っている?
頑張れば誰でもできる!ってめちゃくちゃ言われるけど全く頭に入ってこないしイライラするんだが 程度による。簡単なことしかやらないなら誰でも出来る。
それなりのことやろうとしたらプログラマ適正ないときついだろうね。
それはjsも他の言語と変わらない。 イライラするのは致命的ではないが全く頭に入ってこないのは致命的
それはイライラに負けてるから
イライラを超えたところにアハがあるのであって
そこから先が重要なところ
そこに達する前に辞めてしまうのを何度繰り返しても分かるようにはならない
毎回必ず100あるうちの1は理解しただろうなってとこまではやる
それ以上は必要はないが、その1歩進展は必ず必要
どんなに難しいことでも必ずちょっとは理解できたと自分で納得できるとこまで頑張る
そうすれば百回もそれに遭遇するころにはマスターできてることになる
百回なんてと思うかもしれないが基礎レベルではすぐ、for文なんか毎日使うだろう?
ならそれらを3日に1%でも、1年経てば基礎はほぼマスターできてるってことになる promiseだけは書けることは書けるんだけど毎回辛かった、今もダメ
promise使ったコード読むのすらダメ
promiseがなんていうか生理的に受け付けないというか、使い方が全然頭に定着しない
他のことはだいたい普通にできる async/await使おうがpromiseからは逃れられんぞ >>375
たぶん間違ったPromiseのコードしか見たことないんだと思うよw わかってるとは思うが才能的な話な
局所的とはいえ>>371と同じ感覚もってる人間もいるってことだ 別にプログラミングの才能なんてなくてもいいよ。だったら他のことやればいいだけの話。
俺に命令する立場の人はみんなプログラミング適正ない人ばかりだぞ。 まったく頭に入ってこないのはまずそう
ネットや本見てて「うんうん、そうか、なるほど」→「ちょっとやってみよう」→「…全然わからん」って人は多くて、プログラミングの素質ない人がこれにあたる
読んでて一つ一つはわかるけどいざ何かしようとしたらどうしたらいいかわからない
そういう人はロジックが組み立てられないから
でもそれは頑張って数こなせば克服できる
まったく頭に入ってこないのはそれ以前に読解力や理解力の問題だからプログラミングに限ったことではない
もちろんそういう人も多いけどプログラミングでは致命的かもしれない >>375,378
英数字を見るのが辛いとかPCの画面が見れないとかではないんだろう?
ならそれは才能ではなく単に慣れてないだけだよ
async/awaitとか一度本格的に使いだしたら、asyncな関数の方が多くなって
どちらかというとasyncを付けないことに不安を感じたり葛藤するようになるからね
そのうちPromiseがただの生値と同じ感覚で見えてくるよ
そこまで行かなくても、コールバックのラッパーと見たり落とし所は沢山あるよ
とにかく積極的に何でもかんでも使ってみることだよ 俺の経験上苦手なものに時間使うと
時間を浪費するだけで人生そんする
できるだけ得意なことに時間かけて他と差を付けたほうがいい。
苦手なことに時間かけても同じ時間のうちに他の奴らはずっと先にいってる。
イライラして全く頭に入ってこないのは致命的に向いてないと思う
やらんほうがいい。
どうしてもやらんといけない職場なら転職考えたほうがいい。 >>382
読んでて1つ1つ分かるのはむしろ天才だと思うよ
そしてやろうとして、そこで悩むっていうのも平均以上だと思う
多くの人はまずそこまでモチベーションが続かないから
要するにそれだけ興味関心を持ててるってことが一番大事な才能なんだよ
それは頭に入ってこないっていうのとはちょっと違う
頭に入ってこないのは興味関心を持って素直な心で新しいことを吸収しようという心構えが足りないから
そこさえあれば歳などで少々頭が固いのはイライラしながらでも乗り越えられる、20代までなら 球技なんて誰でも出来る、と同じ。
そう言うのはできるやつ。
できるやつはできないやつがなんでできないのかさっぱり分からないからそういう無責任なことが言えるわけ。
出来ないからと言って卑屈になる必要はない。
他に向いてることを探そう。 >>383
>PC
それはあるかも
俺も白バックの画面みてるとイライラしてくることある
ブルーライトカットするメガネするようになって随分なくなった。 プログラミングってのは仕事で初めてチャレンジするようなものではないと思う
勿論そこで知らなかった自分の能力に気づくってこともあると思うけど
逆に言えばそれがないほとんどのケースでは上手くいかないのがオチだと思う
やっぱり趣味として若いうちから学ぶこと自体を目的として
ひたすら自分が満足行くまで学んできたのとは違う 何事もそうだけど、
・イライラして全く頭に入ってこない
→あーもう無理 なら向いてる向いてないを語れるレベルでない
・イライラして全く頭に入ってこない
→でも悔しいから必死に分かるまで頑張ってみるぞ!!
ここまでやらないと
それでも駄目なら確かに自分には向いてないんだなと言っていい
特別な才能がないことは短期で分かるとしても、
そんな本当に向いてるかどうかがすぐ分かるわけないんだからさ
まあ天才でも凡才でも、分かるまで頑張らなければ分からないのは同じだからさ
結局は自分がどこまで頑張れるかだよ
幸いなことにこの業界は一度理解できれば、スランプとか言うのも基本ないしね
誰でも分かるとこまでいければ分かるんだよ >>371だけど
>>389
たしかに全くその通りだと思う
詳しくは言えんが、まぁよくある未経験歓迎のSE職に就いて研修中なのよ
1か月必死こいてやっとできるのがhtmlに毛の生えた程度、ログイン機能すら作れないほど重症。周りはみんなオシャレなアプリを作りつつある
そもそも超文系脳なのか、高校数学あたりから長文問題一問も解けたことないんだよね。
よく「プログラミングは文系でもできる!数学苦手でもok!英語できりゃ問題なし!」って言われてるのみるけど、英語は割と(相対的に見ればかなり)出来る方。でもJSは全く理解できない。
プログラミングも1から教える感じじゃなく、最低限の教材与えて「あとは自分でやってね」スタイルだから誰かに聞くこともできないし詰んでるわ… >>390
言っておくけどHTMLやCSSでいろいろ画面を作るっていうのはプログラミングの中でも特殊だからな
別にひたすら文字だけ売ってデコーダとか作るのもプログラミングだぞ
Node.jsのような存在だってある
ログイン機能とかというのも、まあ他のものだってそうだけど
言われて色々作る際に必要な知識やノウハウって山程あるけど
その難しさやとっつきにくさがプログラミングの本質に起因するものなのか、って言ったら全く違うよ
それはただ単に例えばWebサイトを作る、っていう仕事の問題とその会社はどうかっていう話であって
それを以てプログラミングの面白さや向いてるだの何だのは語れない >>391
そうか、俺が無知なだけでプログラミングつってもいろいろあるんだな…
プロゲラミングに合わないのではなく社風に合わないのかもしれん、上から降りてくる奴じゃなく自分なりのやり方でやってみる すら、ってログイン機構なんて(真面目に作るなら)高等もいいとこじゃねーか
教師が悪い可能性 そうだな
通訳の会社ですと言っても
実際は英語の歌詞をひたすら翻訳する仕事をさせられてるのかもしれんしな ログイン機構なんてタイミングアタックとかも考慮して完璧に作れるヤツなんて殆ど居ないし
フレームワークなどで実装するにしてもそれが本当に安全で正しく動くかを分かって使えるのは
それはそれでやっぱりスクラッチで作るのと同程度の能力がいるから殆ど居ない きっと冗談抜きに神クラスの教育能力を持つ教育担当がいるんだろう
でなきゃ<form><input><input></form>を書けるようにするだけってやつだ
後者だって仕組みを学ばせないと公害レベルの人間ができあがるが 非同期処理は、別のスレッドを、OS 管理の下、OS のタイミングで動作させるから、
元のスレッドから操作できないし、どちらが先に実行されているかもわからない、
と覚えておけばよい
だから、元のスレッドは、非同期処理の終了を待つ事しかできない
JS は、ES3, 5, 6 と加速度的に難しくなっていく。
やれば何とかなるのは、ES3 の話だろ
初めてのJavaScript 第3版 ――ES2015以降の最新ウェブ開発、オライリー、2017
これを読んでみ。
全員が逃げ出すはずw nodeとかはともかくUAで動いてるjavascriptって
非同期処理って概念がありはしても原則シングルスレッド稼動じゃないんけ? >>398
javascript weeklyとかでチラチラes2015に触れてたからかこれ買って読んだら9割方知ってることばっかで金損した。
こんなお触り程度の本は普段からjs触れてるなら買う価値なし。
サイ本の改訂を待つべし。 そうだな
Workerとかがそれに当たるわけだが
でもシングルスレッドでの非同期処理がマルチスレッドでのそれよりも単純かと言うとそんなことはない
マルチスレッドではマルチスレッドだからこそ共有するものは制限するし、待ち合わせとか気をつけるが
シングルスレッドだとテクニックとして原理的に保証される順序に頼ることも多いので
その分保証されない順序や共有範囲が大きいことによる衝突事故で嵌まることも多い >>400
サイ本読んだことがあるならJSのベースはあらかた理解してるということだから
次は仕様書を読むと良いと思うよ >>403
肝心要が抽象的なので、同じ考えを持っている人だけに「そうだよね」と共感を求める意見だからだね
説得力はない lodashのドキュメントページがくそ重いのですがいい方法はないでしょうか? lodashのtimesを使えば
_.times(10).forEach((i)=>{
})
のようにrubyっぽいループが出来ますが、ただループするだけのために配列を作っているので
いささか富豪的ではあります
このやり方はアリなのでしょうか? たかだかそんなことだけのためにライブラリ入れるのか
Array(10).fill().forEach((_, i)=>{
})
で足りるだろ。 >>406
> このやり方はアリなのでしょうか?
アリ。富豪的というのは人間の作業をコンピュータやらせるという
コンピュータが作られた目的そのものだから
あと、それ少し無駄があるよ。これでいい。
_.times(10, function(i) {
console.log(i);
})
もちろんこれもあり
_.times(10, i => console.log(i));
>>407
どうやらIEで動かないようだ
>>408
関数型的なのと、簡単にかけること >>405
> lodashのドキュメントページがくそ重いのですがいい方法はないでしょうか?
それは初めて聞いたな。スマホでみてるの?
それともなんか変なプラグインでも入れてるんじゃね?
ここで調べてみても、速度Fast、最適化Goodだし
https://developers.google.com/speed/pagespeed/insights/
?hl=ja&url=えいちてぃーてぃーぴーえす%3A%2F%2Flodash.com%2Fdocs%2F4.17.10&tab=desktop chromeアプリて開発中止みたいなこと聞いたけどもしかしてPWAがその上位互換? pwaなどという技術は無い。
マーケティング用語だとgoogleのエンジニアも言ってる。
新しいWeb技術こう組み合わせて使ったらいいんじゃね?というスローガンのようなもの。 web2.0でSNSとか非同期通信が普及したみたいに
将来に過去振り返ってみて「web3.0でPWA的なスタイルが普及したなぁ」みたいな? >>1
このサイトのTOPページにあるふわっと画像が入れ替わるのは
どこで画像を指定してるの?
「A Simple jQuery Slideshow」スクリプトを使ってると思うんだけど
ソース見ても分からなかった。
http://www.bellecasa.jp/ >>415
$('#bgstretcher li img');
li要素のスタイル属性
styledisplay: list-item;
z-index: 1;
overflow: hidden;
width: 1200px;
height: 512px;
opacity: 0.235277;
opacityの値変えてるだけ 初診種者なのですが
Javascript+Node.jsだけでサイト運営出来るんでしょうか? >>415-417
fadein アニメか。こういう感じかな?
$(this).css({opacity:'0'}).animate({opacity:'1'}, 2000)
プラグインを使わないスキルを身につけたい人のための
jQueryテクニカルノート、矢次 悟郎、2016
>>418-420
Node.js + Express Generator が、Ruby on Rails と同じ
先に、無料の「Rails チュートリアル」で勉強しな。
これをやっていないと、web アプリの作り方がわからないから ステマじゃないんだったら、ISBNかASINだけ書くようにしよう
検索に引っかかる効果無くなるし
ISBN・ASINがあれば書籍名も著者名も要らず即座に検索できる (1)アロー関数(さらに省略版)の即時実行できると思ったらできませんでした
var obj = ((x)=>{a:x})(10);
console.log(obj);//undefined
(2)オブジェクト返さなければいけました
var obj = ((x)=>x+10)(10);
console.log(obj);//20
(3)アロー使わずに即時の別の書き方ならいけました
var obj = ((x) => {return {a:x}})(10);
console.log(obj);
なぜ(1)は無理なのでしょうか
(4)文字型ならできました
var obj = ((x)=>'{a:'+x+'}')(10);
console.log(obj, typeof obj);
ので、(1)では{}が関数のブロックと認識されているということでしょうか?
しかしundefinedが返ってきてエラーもなしとは一体どういうことでしょうか? あとこれはいけました
var obj = (x=>({a:x}))(10);
({})の()をとれたらと思うのですが・・ >>424
推察の通りオブジェクトじゃなく関数のブロックとして認識されてる
その中だとa:は単なるラベル
要するに()=>{1;}と同じで何も返さない関数が出来る >>426
なるほどラベルというものがあったのですね だからソース中にURLも書ける
http:がラベルで//以降がコメントになるから >>410
こんなサービスがあったのですね
ありがとうございます なんか話ずれてないか?
> (1)アロー関数(さらに省略版)の即時実行できると思ったらできませんでした
> var obj = ((x)=>{a:x})(10);
> console.log(obj);//undefined
実行できてる。xをそのまま返すのではなく、alertをしてみれば
alertが表示されていることから、実行できてることがわかる
var obj = ((x)=>{a:alert(x)})(10);
即時実行かどうかは関係ない。以下は同じ意味
{}でくくると値を戻すのにreturnが必要なだけ
x => x + 1
x => (x + 1)
x => { return x + 1 }
アロー関数の右側は、単体の式(=一行)を使用するようにしたほうが良い。
{} を使うときは複数行で書きたい時。
だけどアロー関数は、関数を引数(値)のように見せて使うもので
複数行なんか書いてしまったら、関数のようにしか見えない アロー関数なんだから関数だろバカか
〜のように見せて使うもの、なんて仕様のどこにも書かれてない。思い込み乙 「関数」という分類の下に「アロー関数」とは別個の「普通の関数」という分類が暗黙的にあるんでしょ
(ES仕様に限らず)仕様にはそんな分類の定義は無くても、事実上想定されていることはよくある(「わざわざ定義するほどでもない」ので省略される) 「俺の妄想は正しいんだ!書くまでもないから省略されてるだけだ!」 >>431は合ってると思うが
関数の内容が一つのreturn文だけのときに"return "記述を省略できるのはアロー関数だけの仕様なんでしょ
この違いがあるんだから、「普通の関数」と「アロー関数」とが別々に存在しているといえる
んで、アロー関数は主に一return文の用法を想定して作られているとも言える 自演乙。
.forEach(v => {console.log(v);})などは想定されていないと。 主に を無視して0か100かの極論に持ってくの好きだね 「主に〜を想定しています」こんなのは仕様じゃありません。
白黒はっきりしてください。
作文かなにかと勘違いしてないか。
0か100、おおいにけっこう。40%の確立でこう、60%の確立でこう、とか書かれてもどっちにも決まらず価値ゼロなんだが。 >事実上想定されていることはよくある
ソースplz >>440
わざわざ定義するほどでもないので省略されるんだそうだ。
無敵の論法じゃんw
いい歳こいてこんな詭弁恥ずかしくないのかね。 Aである。
↓
Aであると言うのなら、Aである証拠を出せ!
↓
Aであることは当たり前なので、わざわざ書かれないのである。 >>443
命題の証明の際に誤った論理展開を紛れ込ませるのが詭弁
>>433は証明をしているわけではなく誤った「論理展開」を用いてもいない ソースはイルミナティによって隠蔽されているためありませんが、本当です。信じてください。 そんなことを言ったら例えばJSではセミコロンが省略できるので
セミコロン無しで使うことが主に想定されてると言えるからな
つうか逆に組み立てて言えば
基本的にセミコロン無しで使える言語を望んで生み出された言語が
セミコロン無しで使うことが主に想定されてると言えるわけで
ならアロー関数が
主に一行で書く関数の理想の姿として作られたかというとそうではないわな 素朴な疑問です
以下ネットから拾ったソースなんですが
const version = "ES6";
if (version === "ES5") {
console.log("ECMAScript 5");
} else if (version === "ES6") {
console.log("ECMAScript 2015");
} else if (version === "ES7") {
console.log("ECMAScript 2016");
}
最後にelseがないこういうケースの場合elseで繋げる必要性はありますか?
if(){}
if(){}
if(){}
こう書くのと違いがあるのかないのかを教えて欲しいです 速くなるとかあるんでしょうか?
どなたか宜しくお願いします versionに"ES7"が入ってるときは変わらない
versionに"ES5"や"ES6"が入ってるときは上のif elseの方が速い >>1-451
突っ込まれて反論できなくなったら他人の振りします >>451-452
あ、、、!なるほど、ありがとうございます >>436
> .forEach(v => {console.log(v);})などは想定されていないと。
.forEach(v => console.log(v))
こう書いたほうがスッキリするで? >>448
> 主に一行で書く関数の理想の姿として作られたかというとそうではないわな
ちょっと違うな。結果として一行にはなるが、
「関数値」のようなものだな。
関数は定義してから、呼び出す。
でもアロー関数の場合は、関数の値化して渡すって感じ >>455
それだとわざわざundefined返してから利用せずに潰してるが何か意図があるのか?
スッキリするとかしないとか感覚で決めるなよ >>456
っていう妄想ですか?
それなら妄想ですが、って頭に書いてくれません?
妄想じゃないならソースプリーズ ふと思ったんですがSPAだとIDのバッティングが容易に起きますよね
たとえばモーダルウインドウにフォーム要素を表示する場合、
そのフォーム要素一つ一つにIDをふると、同じIDが複数の要素に対してふられるような状況が容易に発生します
SPAではIDをふらずに属性セレクタを使って指定するようにしたりして
極力IDをふらないようにした方がいいのでしょうか? >>460
SPA作ったことありますか?
たとえばtitleというような一般的な名前は複数の文脈で使われるのでぶつかりやすいですし
エリアにふるIDと要素にふるIDもぶつかりやすいです
IDは言ってみればグローバル変数みたいなものなのですよ つーかサンプルを示してくれたほうが伝わりやすいと思う > 極力IDをふらないようにした方がいいのでしょうか?
はい 設計や実装がアホだと容易にバッティングするかもしれないな
そのようなアホを営業にでも配置転換すればよい >>459
formX-title みたいに要素の所属を表す名前でも接頭すればいい
特定の要素を参照する用途に属性セレクタは大げさかもしれない >>450
最適化というものがあるので速度は変わらないと考えるべき >>461
IDは極力使わない。
俺がIDを使う時は、”サイト全体で" 一意になる時
ページのIDとしてしか使わない
IDはページ内で一意であればいいんだが、ある時
ページを縮小したプレビューを複数、1つのページに表示する
ということをやった時にぶつかってしまったから
基本的にいらねぇよなぁを突き詰めていったら
ページのIDだけで十分となった アロー関数についてWebArchiveも使って関連資料や立案者のBEのコメントなどをできる限り探ってみたんだが
結局JSに取り入れられる際に新しく思案されたのはthisの取り扱いくらいで
アロー関数自体は新しいものではなく関数を短く書きたいというモチベーションが確かにあって
他にも案があった中、BEがCSやC#から輸入したものであるので、その言語でどうして実装されたかを調べよう
CSはアローをどこから輸入したのかハッキリとはわからなかったが、
GitHubの最初の方のコメントをざっと読んでいくとアロー関数関連の話中に
開発陣が度々Haskellのことを引き合い出してるのでそこからだろう
ソースは不明だがWikipediaの影響を受けた言語の中にも確かにある
C#の方の調査は手を抜くが公式では「ラムダ式」と呼ばれている
Haskellのものも含めてこれらは究極的にはラムダ計算に由来している
そこまで調べたところでどうでも良くなった CoffeeScriptでは
thisをバインドしないアロー関数(->)と
thisをバインドするファットアロー関数(=>)の
二種類があるんだよな。
JavaScriptで採用されたのは前者のみ(書き方は=>なんだがw)
単に短く書きたいのであれば、DOMイベントハンドラなんか
後者が有ったほうが便利と思うはずんだが採用されなかった
これもさ、アロー関数が、それは関数じゃなくて値っぽく考えるべし
と考えれば、thisが変わらないのも納得できるんだよな
アロー関数は短く書きたいと同時に、thisを気にしなくて良いものとして
必要だったんだと思うよ 猿と人間の中間がいないのもさ、神様みたいな行為存在が俺たち人間を作ったと考えれば納得できるんだよなwww > これもさ、アロー関数が、それは関数じゃなくて値っぽく考えるべし
> と考えれば、thisが変わらないのも納得できるんだよな
___ ━┓
/ ―\ ┏┛
/ノ (●)\ ・
. | (●) ⌒)\
. | (__ノ ̄ |
\ /
\ _ノ
/´ `\
| |
| | bindする方採用しなかったのはfunctionが既にあるからだろうが。
短くしたいのが理由ならfunctionと被ろうがbindする方のアローも入れてたはずだろう。
方々から集めた情報すべてに自分の妄想をサポートさせようとして矛盾しまくってるな。
おまえの妄想がセンスないからそうなっちゃうんだと思うよ。 だからそう言ってるじゃん。
単に短くしたいだけじゃなくて、
値のように使いたかったのは、thisバインドなしの方だって jQueryニキ、分かってないくんに続くマジモンだぞ。カッコいい名前募集! その子がさ、踏み切りでこっち見て笑ったんだよ。
それもさ、俺のこと好きだと考えたら納得いくんだよな!
天なおチャック開いてた模様 話は聞かせてもらった。
人類が滅亡すると考えると納得がいく。 てか根拠が俺はこう思うだけでしょ。
お前が思うんならそうかもなくらいしかかけてやれる言葉ないわ。同意求められても困る。
値っぽく考えるの意味もフワッっとし過ぎててよくわからんw
jsの関数はアロー関数以前から第一級オブジェクトとして自由にとりまわせたが。 アプリはやらずWebサイトのみを製作しているんですけど、レスポンシブサイトを作るのにReactって向いていますか? >>482
レスポンシブサイトを作るという理由でReactを選ぶ人はあまり聞いたことがないかも
(どちらかというとSPAを作りたいと理由が多いかなーと個人的には思う)
メディアクエリーを勉強した方が近道な気がするよ やっぱりそうなんですね
オブジェクト指向に則って制作するときに相性がよいと聞いたのですが、サイトや書籍を見ると対象がアプリ開発のものばかりだったので…
メディアクエリっていうのは、ブラウザの幅を取得して処理を出し分けるといったことを指しているのでしょうか アドバイスありがとうございました
IDにはプリフィックスを付けて
まず衝突しないようにすることにします BEのコメントを読んでるとbindしない方を採用しなかったのは
似たのを2ついれても煩雑になるから
つまりバランスの問題が大きかったんだと思うよ
2014~15年くらいのESDiscasでも何回か挙がってたと記憶してるが
そういう結論になってたと思う いいえ、関数を値のように見せて使うためです。
当たり前すぎて議論すらされていないので残っていないのです。 1回目.toDataURLでcanvasから画像データ取り出すことに成功しましたが
2回目以降
Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.
でエラーでてしまうのですがどうにかなりませんか
function hoge(){ /* .toDataURLを取得するまでの処理 */ }
hoge(); // 1回目のhoge()内ならループなどで何度.toDataURLしても取得できる
hoge(); // なぜか2回目からは最初の.toDataURLでエラーでる
みたいな感じです
(クロスドメインの画像です)
あと疑問なのは、クロスドメインが問題ならなぜ最初は取得できたのか・・?というところです 補足というか訂正です
>>488では.toDataURLの処理をするスクリプトを置いたサーバーとは全く関係のない
別サーバーの画像を取得できたのですが
試しに(>>488とはまた別の)別のクロスドメインサイトの画像を指定したらCROSエラーが出てきました
できるのとできないクロスドメインサイトあって混乱してきたので
>>488の質問は一時保留しときます 追記 >>488
2回目実行でエラーが出てくる問題は
img.src='画像url';
img.crossOrigin = "Anonymous";
としていたのを逆にしたら問題なくなりました canvasから画像データ取り出すと、
たいてい、安全ではないとか言われる 別ドメインの画像を貼り付けたりすると
以後そのCanvasは汚染されてるものとみなされてデータの取得が禁止される その理屈だと別ドメインのJavaScriptを読み込んだら
HTMLは汚染されてるってことになるのか? >>493
その理屈を満たすにはcanvasでjsファイルを読み込む必要があるわけだが、やりかたを是非教えてくれ 入力中の文字列の中に、前もって登録していたキーワードがあったら、
自動的にリンクになるような機能を実装しようと思います
どうやれはいいですか? onchangeでvalueに正規表現でmatchかける inputやtextareaの中で、リンク、させんのか? なにがしたいのかよくわからんな
入力中ってことはtextareaとかなんだろうが、リンクってことは違うよね
あと、リンクにした後で変更する時はどうしたいのか
そのtextarea内にaタグがあっていいのかどうか
>>496
「入力中」だから違うね
onchangeはフォーカスが外れた時に発火する リンクさせないといけないので、textareaじゃないです
google documentみたいな、まぁそこまではいきませんが、
リンクだけはリッチテキストでやるみたいな感じです 前提が明らかでなくて構造が入り組んでるなら自分で考えてくれしかないじゃん ロケットみたいに人が乗れて宇宙に行ける乗り物を作ろうと思います。
どうやれはいいですか? 入り組んでませんよ
ただリンクするだけです
ただかなり前に同じようなことをやった時には、
contenteditableな要素のHTMLを、単純に置換して置き換えるだけだと、
カーソルの位置がリセットされてしまった記憶があります
それで
A cross-browser JavaScript range and selection library.
https://github.com/timdown/rangy
これを使って実装したのです
ただ、どういう実装だったのかすっかり忘れてしまいましたし、
このライブラリも2015年で更新が止まっているので、
今なら今のやり方があるんじゃないかと思ったのです designModeは知ってたけどcontenteditableは知らなかったな
質問の実質はキャレット操作でしょ
キャレット位置は単純にかつ地道にカウントして記憶して戻すしかないでしょ contenteditableのキャレット操作と
inputやtextareaのキャレット操作と、なんか違いがあるの? キャレットの位置はこないだも質問が出て大ゲンカになってなかった? 便乗で質問します
キャレット無しの場合、本来TEXTAREAやINPUTにキーボード入力するような操作を
DIV要素でやるにはどのような構成になるのでしょうか(googleドキュメントみたいなやつです)
TEXTAREAにキーボード入力したものをval()で取得してDIVにコピー、みたいなのではありません
さらに全角半角や漢字など(TEXTAREAへ入力できるものすべて)も判別したいです
keydown取得してkeyCodeで半角全角を振り分け→漢字などはスペースキーの監視で。
全角時にはバックスペースキー、半角切り替えも監視
など考えましたがそんなめんどくさい処理をしないといけないのか・・?と眉唾でした
(そのためのTEXTAREAやINPUTだと思いましたが)
例えばGoogleドキュメントなどはそういうめんどくさいキー監視をしているのでしょうか? キー監視じゃIMEがどんな変換したかわからないから面倒如何の前に不可能でね 例えばhiddenしたTEXTAREAにフォーカスを当てて・・
みたいなことができればと、hiddenしたtextareaにfocusしてみましたが
TEXTAREA内の変更にまでは至りませんでした
>>508
たしかに・・ textareaは表示のまま、potitionでwindowから見切れるように
ならできました
ただ、キーボード入力のプルダウンメニューが邪魔になりますが たしかにキャレット位置を保存しておいて、HTMLを書き換えてから戻す
みたいな処理だった気がします
で、すごーーく面倒くさかった記憶があります
RangeオブジェクトとかSelectionオブジェクトとか、
普段全く使わないようなオブジェクトを使って・・
しかもそれらのオブジェクトが異様に難解だった記憶があります
今もそれですかね〜 >>495
jQueryのtext()では、タグがエスケープされるけど、
html()では、タグも有効になる
要素の内容が変更されたら、change イベントが発行される
正規表現を使う 一定の領域では泥臭い作業から逃げられん
論理的に必要なことはどうした考えても何度考えても必要 >>507
要素の内容が変更されたら、jQuery のchange イベントが発行される
他には、keypress イベントとか div要素の内容が変更されたら、しかしそもそもdiv要素にどうやってキーボードから書き込むの、っていう話じゃないの>>515
隠しtextarea法が定石なの? 定石なんて無い
それでバリアがある環境や、ガラケーみたいなテキスト編集環境に対応できるかは分からんし
一般論としてできる限り細かい調整はしないで諦めたほうが良い >>515
自己レス
jQuery のchange, keypress イベントでは、うまくいかなかった Electron アプリの、VS Code では、半角文字で入力補完が出る
Electron とか使わないと無理なのかも そういうのあるんですね
ありがとうございます
ただ要素中のHTMLを書き換えてキャレットを戻せばいいと思っていましたが
よく考えると文字を一文字書き加えるごとに全領域を書き換えるエディタなんてないわけで
テキストノードの中に潜って文字のレベルで操作する必要があると思います
そのためのオブジェクトがRangeオブジェクトだったと思います
面倒くさいですが、面倒くさい方法しかないなら、するしか仕方ないですね・・ 改行ごとにspanやpで区切るなどして部分的な指定をしやすくすれば、
HTMLの書き換えでもいいのかもしれません
ただ、何か問題があったから前回そうしなかったのではないか、という気もします SelectionオブジェクトとRangeオブジェクトには、
ひととおりの API が定義されていますが、あまり使われていません。
本書でも解説しません。
(…)
Webアプリケーション上でリッチテキスト編集機能が必要な場合は、
ブラウザ間での差異を吸収してくれる既存のソリューションを適用するとよいでしょう。
インターネット上を探せば、そのようなエディタ部品がたくさん転がっています。
名著と名高いサイ本も、リッチテキスト編集周辺はそっけない記述&放り投げです
「たくさん転がっています」って、
これはそういうエディタ部品を作りたい人が読む本じゃないのかと問い詰めたいです >>525
テキストエディタの作り方って本があると思ってんの? 配列について質問です
var arr = [1, 2, 3, …]; と続く配列をタグで囲み、IDを割りふるにはどうすればいいでしょうか?
<b id="1">1</b> <b id="2">2</b> <b id="3">3</b> … のようにしたいです
下を試しましたが、IDにすべての配列が入ってしまったため、arr[0] と arr[1] としたら、3番目以降が2のままでした
console.log('<b id="' + arr + '">' + arr.join('</b> <b id="' + arr + '">') + '</b>');
よろしくおねがいします。 >>527
var ary = [1, 2, 3, 4];
console.log(ary.reduce((acc, n) => acc + `<b id="${n}">${n}</b>`, '')); >>529
console.log(ary.reduce((acc, n) => acc + `<b id="${n}">${n}</b>`, ''));
console.log(ary.map(n => `<b id="${n}">${n}</b>`).join(''));
上の方を選んだ理由は? どっちでもいいけど新しい配列ちゃん生んですぐ殺すとかかわいそうやん そんな無理にmapだのコールバックだの使わなくとも
昔っからある
(''+ary).replace(/(\d+),?/g,'<b id="$1">$1</b>')
でいいじゃん >>533
お前が正規表現に慣れてるだけだろwwww
知らんやつにはそっちのほうが宇宙語だろw 中途半端に新作作るならいっそリメイクの方が売れると思う jsは昔っからコールバック使うが。
そういう言語だ。
pythonとかから来た人かな? あ?昔から? JavaScriptでmapやreduceが
使えるようになったのはIE9からなんだが?
昔はそんなコード書いてねーよ IE以外はネスケしかないって時代を知らんのだろうなw
それでよく昔からなんて言えたものだ >>538
おまえ頭湧いてんのかwww
コールバックって言ってんだろwwww
コールバック使うのはmapreduceの専売特許じゃねーんだよアホwwwww 昔から使うsetTimeoutもcallbackだな
callbackが昔から使われていることと、replace()が昔からあることは別だが
callbackで配列や文字列操作する関数って昔からあったっけ? 自演で誤魔化し乙w
「昔からある〜でいいじゃん」とか言ってるくせに人には君には成長がないキリッとか笑うww 何が言いたいんだこいつ
喧嘩したいだけのJS無関係レスは他所でやれ >>533
無理に正規表現を使わずとも、昔からあるfor文でいいじゃん
for (var i = 0, l = ary.length, s = ''; i < l; ++i) {
s += '<b id="' + ary[i] + '">' + ary[i] + '</b>';
} ループ外で使うsをループ初期化部で宣言するのは駄目じゃないか >>550
それは確かだが、昔からシリーズとしてはsを外に出すのが正解だな >>533は数字以外が来たときに壊れる一番ダメなやつじゃん 変数の異目的の再利用が、コードの見通し上よろしくないのは知ってるが
再代入も追記追加変更もNGというのは初めて聞いたな 前から気になってたけどconstの変数は再代入するとエラー出るけど
const obj={}みたいにオブジェクトにすると中は再代入しまくりなのが混乱するのですが
これはobjectとかarrayはconst宣言しない方がいいってことですか? 他のところでうっかりvarで再定義再代入されないだけと考えたほうがいいってこと >>556
const房というなんでもかんでもconstにすればいい、と考える極端な人がいるらしい
基本、気にしなくてOK const宣言された変数の中身がオブジェクトや配列だった時に中身の操作が可能なのは、なんで?
参照だから、って考えたら混乱しないし一応筋は通るけど、必然性はないよね const には「再代入不可」以外の意味はないからね
プロパティの更新も禁止したいなら
Object.defineProperty とか Object.freeze >>558-560
use strict宣言ではvarの代わりにconstを使う、みたいなのを見たのでてっきり変数宣言の主軸なのかと思っていました
>>561
なるほど(エラーは設定しないといけないみたいですが)そういう関数があるのですね constを基本にするのは別に悪いことじゃないよ
必須かと聞かれると自分はletばかりだけど TDZのクソ挙動が気に入らないのでvarです。
functionスコープで特に問題ない。
大規模開発するなら使うけど。
しないなら必要ない。不便なだけだぞ。 それ本当にTDZの挙動に不満持ってるのか?
再宣言禁止で
let a = hoge
と次の
a = fuga
が揃わないとかならまだ少し分かるが
定義場所前でのundefinedを期待する必要性なんてまず無いだろう fromってどういうとき使うの・・?
var arr=['kyoto','oosaka'];
console.log(Array.from(arr, n=>`${n}-fu`).join(", "));
console.log(arr.map(n=>`${n}-fu`).join(", "));
mapでいいじゃん・・みたいな >>569
配列風オブジェクトにスプレッド演算子が使えるとは限らないんだが
実際にEdgeでNodeListにスプレッド演算子は使えない。
古いChromeとかも使えないようだ。 fromはpolifilでできる
スプレッド演算子はbabelで使えるようになったとしても
NodeListでは使えない だったらアロー関数もletもconstもトレイリングカンマも使うなよ >>572
Symbol対応していればポリフィル可能だよ
NodeList.prototype[Symbol.iterator] ≒ Array.prototype.values
だから >>568
iterableでない配列likeオブジェクトに対応できない そういうツッコミは感心しないな
この靴は山を登るときに使う
いや、エベレストに対応できない
みたいな 熊の毛皮はあんまり寒いと役に立たないらしい。そういうときは犬の毛皮を使うそうだ。
なんだ、熊の毛皮つっかえねーな >>579
この場合は、Array.fromは不要というニュアンスへの反論だからおかしくはないと思うが >>581
熊には体脂肪という毛皮をサポートするものがあるから大丈夫 全くの初心者ですが、
便利なウェブサービスを作りたくてJavaScriptを勉強しはじめました。
質問ですが、
ブログによく貼ってある、
カエレバ、ヨメレバってJavaScriptでできているのですか? カエレバ.comそのものがどうやってできている、という意味なら
カエレバは、amazonや楽天などそれぞれのアフィリエイトパーツのルール(やテンプレート)に則った
アフィリエイトリンクを生成するサービス >>589
カエレバ利用者がブラウザからアフィID情報など打ち込んだとき
動的にアフィリンクを生成する処理部分で、少なくともJavaScriptが使われている
(ようはjavascriptを使った穴埋め問題)
あとは各サイトのテンプレートを一旦kaereba.comのサーバーサイドで処理のため
ここではphpが使われてるぽい
仮に、アフィIDによって商品IDそのものもが変わってしまうなら
各サイトへリクエストする必要がある
(ただほとんどのアフィリエイトパーツは穴埋め問題みたいなテンプレだろうが)
穴埋め問題だけなら、フロントエンドだけのjavascriptで実現できるし
極端に言えば個人使用なら文字通りテキストエディタで穴埋め問題すればいいだけ
もしリクエストする必要があるなら
・各サイトのレスポンスがクロスサイトに対応している、ならjavascriptだけで可能
・対応していなければ、phpやNode.jsみたいなサーバーサイドでの処理が必要
・対応しておらずサーバーサイドも嫌なら、ブラウザなどフロントエンドの設定を変える
など、この辺りがポイント 質問ですが、
ブログによく貼ってある、
ビックカメラ、ヨドバシってJavaScriptでできているのですか? Selectionオブジェクトでは
始点をanchor、終点をfocusと呼んでいます
anchor=碇なのは、選択開始部分を「そこに留める」ことからの発想だと思います
そう考えると、必ずしも始点が前、終点が後ろにあるとは限らないってことですよね?
文字選択というものは一般的にそうですし。
一方Rangeオブジェクトでは始点をstart、endと呼んでいます
この場合は始点が前、終点が後ろ(あるいは始点=終点)と保証されているということでしょうか? >保証されている
少なくとも仕様ではそう。
例えば start を end より後に設定しようとすると end も変更される そもそもLtoRとRtoLが交じってることもある文字列で頭と尾を一般に定義することは出来ない
一応の挙動は決まっていても人間の尺度で保証されていると考えると痛い目にあうぞ > そもそもLtoRとRtoLが交じってることもある文字列で頭と尾を一般に定義することは出来ない
どちらでも、頭は上で、尾は下だろ。 RtoLって言っても、要素の前後関係が変わるわけではないのでは?
たとえばrangeの先頭から末尾まで舐める処理は、LtoRだろうがRtoLだろうが同じように動作しますよね いずれにしても、見た目上は左が前で右が後だけど、ここでいわれる「前」と「後」は 前(previousSibling) と後(nextSibling)?
DOMノードレベルとブラウザに描画されるレベルでは、前後の定義が変わるのでは? RtoLで2要素跨いでる場合はどういう順番になるんだろう >>601
なに言ってるんだ? 先に現れたのが前だろ ファイルにしろDOMにしろ本質的にはシーケンシャルなのですよね チェーンの数を動的に変更したいのですがどうすればいいでしょうか。
func(){
hoge.a().a().a().a();
}
このa()をfunc(1)のときは1回で実行結果が
hoge.a();
func(2)のときは3回で実行結果が
hoge.a().a().a();
みたいにやりたいのです もちろん
func(n){
switch(n){}
}
的なのは考えましたが
例えばnが大きくなると大変になりそうなので 訂正>>607
>func(2)のときは
func(3)のときは
でした >>607
単純なループで良い
難しく考える必要はない
func(n){
var o = hoge;
for (var i = 0; i < n; i++) {
o = o.a();
}
return o;
} 難しく考える必要はない
せっかくJSを使ってるのだからこれでいい
eval( 'o'+'.a()'.repeat(n) ) 難しく考える必要はない
単純にreduceでいい
func(n) {
Array(n).fill().reduce(acc => acc.a(), o);
} いろいろ間違えた
function func(n) {
Array(n).fill().reduce(acc => acc.a(), hoge);
} でもreduceってIE9からしか使えないしな。
fillとか存在の意味が分からんし
そんなに一行で書きたいなら
func(n){
for (var i = 0, o = hoge; i < n; i++) o = o.a()
} func(n){
var o = hoge, while (n--) o = o.a();
} そんなこと言ってもIE9なんてもはや気にしてないし。
サポート切れて喜んでたじゃんお前ら。 fillが嫌ならこんなのでもいいぞ。
function func(n) {
[...'.'.repeat(n)].reduce(acc => acc.a(), hoge);
} またbabelをつかわないといけないようなコードを hoge.b = function(n){
for(var i = 0; i < n; i++){
this.a();
}
return this;
};
? >>614
単純とはいえない
reduce使いたいが為に配列をわざわざ生成して、生成した配列を捨ててる >>615
MSは既にIE10以下を切り捨ててるけど、あなたのサポート対象はどこまで? >>623
>>612は良いのか?ダブスタじゃん? >>625
>>612は生成した文字列を捨てずに活用してるから、なくはないんじゃないかな
Function() の方がいいとは思うけど
どこがダブルスタンダード? ハァ?じゃあ配列も活用してるだろうが…
ちょっと考えておかしいと思わんかな Rangeの端を指す用語は何でしょうか?
isPointInRangeのようなメソッド名があるのでポイントでいいでしょうか? >>627
配列は繰り返し処理だけの為に生成されていて、「値」が使われてない
n回繰り返すために配列を生成するのは無駄、単純ではない
>>612は文字列を引数にしなければならないのだから、これ以上は省略しようがない
それから、「言及してない=許容」という考え方もおかしい
一つ指摘したら、全レスをチェックして、スルーしたレスは許容するのが当然なのか?
逆にいえば、あなたは>>612以外は認めてると? 無駄がどうのと言ってるわりにevalはいいの?基準がよくわからんな reduceでn回繰り返すために配列を生成するのは無駄、単純ではない
forでn回繰り返すために一時変数を生成するのは無駄ではない、単純
主観じゃん。forに慣れてるだけ。
たしかに無駄になるコストはforのための一時変数の方が配列より低いと思うよ。
でもそのわりにevalは認めちゃってるし…
基準がさっぱり分からない。
メモリリソースなのか、
CPUリソースなのか、
はたまたコードの見た目(単純に見える)なのか?
一番目と二番目は数字で語れるだろうけど、三番目なら主観だよ。
あなたがforに慣れてるだけ。
関数型言語の人に聞いたら違う答えが帰ってくるんじゃないかな。 正直ここまで不格好でない例が無い
ひょっとしたらeval例が一番なくらい
でもやろうとしていることが不格好だから仕方ないとも思う
やっぱりメソッド中で必要な処理だけforで回したり再起にするのが良いと思う 不格好ってことは三番目の「コードの見た目」だったようだね。主観。 多分それは悪い意味で言ってるんだと思うが
主観的見た目こそ超絶大切なことだと考えてる勢には通じないと思うぞ
今回の例みたいなのは動くだけなら猿でも書けるんだから
でも自由な文化のJSではどの方法が適当なのかなんて自明ではない
でもだからこそ、ロジック以外の部分で拘って研究して論争する価値があるんだと思うよ
そうして可能性を捨てずに色々試して皆で議論して良くしていこうっていうのがWebだから 不恰好を定義できない、不恰好でない例も出せない無能はほっとけ
しいていえば見た目は読みやすさ・理解しやすさに繋がるか? >>631
>>625のダブスタも相当主観だと思ったが、どういう意味だったんだ? >>631
reduceは配列の要素から一つの値を作るものだと考えている
要素を使わず、代入処理だけのためにreduceを使うのであれば、始めから代入処理だけの機能を使うのが理にかなっている
後な、俺が主張してるのは単純か複雑か
reduceを使うためにArray()で配列を生成し、走査可能にする為にする為にfill()で値を初期化、という理屈を初心者が理解できるとは思えん
対するeval()は善し悪しはともかく、機能理解はreduceよりも容易だと思うね
個人的にはevalを全く使わんし、eval is evil、eval <<< Function
ローカル変数破壊は御法度だし、式呼び出ししなければ安全でないのは頂けないが、それは別の問題だ
evalがコードを実行できる関数ぐらいの理解は初心者にも出来る ついでだからいうが、>>623では言及していなかった>>612を引き合いに出して、ダブスタといわれても困る(>>625)
なぜか俺が「>612が良い」と主張しているように誤解されているが、そんなことは一言もいってない
たまたま、>612が俺のいう「単純とはいえない」に該当しなかったから弁明する形になっているが、本意ではない
同様に、俺が言及しなかった他のレスも「良い」と主張しているわけではない(言及しなかったものを勝手に決めつけられても困る) >>641
> reduceは配列の要素から一つの値を作るものだと考えている
それも使い方の一つだが、
オブジェクトを渡して、そのオブジェクトのメソッドを
複数回メソッドを呼び出すためにも使う つまるところ、
歯ブラシは、俺の尻に突っ込むためにも使う
ということである eval を使うと、納品できない
そこからシステムに侵入されるから、損害賠償請求される。
危険なことを知っていて、使っているから >>643
reduce使う必要ないのでは?
let i = 4;
while (i--) obj.a(); >>647
それをreduceでやるのがカッコイイんですよw
素人には読めない。プロだけがわかるコード それより>>647が提示したコードがいろいろヤバい 関数型っぽい書き方の方がイケてることに異論はありませんが
パフォーマンスではforやwhileの方が勝ります
ループ中で繰り返し呼び出されるような処理では、
やはりforやwhileで書きますよね? パフォーマンスならforで書く。
ボトルネックにならないならforEachで書く。
書きやすいし読みやすいから。 比較して見ると、複雑な箇所が分かりやすいかもね
let i = 4;
while (i--) obj.a();
for (let i = 0; i < 4; i++) obj.a();
for (let v of [4,3,2,1]) obj.a();
[4,3,2,1].reduce(()=> obj.a()); >>654は下にいく程、複雑化する
for-ofがforよりも良いという人はおそらくいない
reduceも機能の無駄遣い >>647
おいおい、
obj.a();obj.a();obj.a();obj.a();
と
obj.a().a().a().a();
は全然ちがうんだが。
reduceの動作理解した上での批判ならまだしも、それじゃお前が理解できないものを僻みで批判してるだけじゃん。 >>656
>>643に言及してるんだけど、流れが読めない人? >>654
おいおい、
obj.a();obj.a();obj.a();obj.a();
と
obj.a().a().a().a();
は全然ちがうんだが。
お前が書いたやつは全部
obj.a();obj.a();obj.a();obj.a();
になる。
お題は
obj.a().a().a().a();
お前のだとアキュムレータ使ってないからそれこそreduceの意味まったく無い。
初心者か?
はじめてのjavascriptからやり直したら? obj.a();obj.a();obj.a();obj.a();
の場合はreduceの意味まったく無い。
なぜならforEachで十分だから。
初心者がお題勘違いしたのを流れだとか言って誤魔化してるだけ。 いや、>>643を言葉通りに受け取れば、>>647も>>654も問題ないでしょ
>>625のダブスタといい、なぜ言外に定義していることがあると思いこむのかね しかも、>>607の要件だとしても、本質は変わらないと思う
let i = 4;
while (i--) obj = obj.a();
for (let i = 0; i < 4; i++) obj = obj.a();
for (let v of [4,3,2,1]) obj = obj.a();
[4,3,2,1].reduce(obj => obj.a(), obj); >>662
全然違うわボケ
それだとアキュムレータ使っているのでforEachではなくreduceを採用する意味がある。
>>654のクソコードはreduceの意味がまったく無い。アキュムレータ使っておらずforEachで十分。
eval擁護するわ
[4,3,2,1].reduce(()=> obj.a());
こんなクソコード書くわ
ほんと酷いなお前 どうでもいいが、どれも前提に
var o = hoge; ないし var obj = hoge; が入ってるんだよな? 変数の先頭が _hensu のようにアンダーバーの変数を時々見るけど
これ表記は一般的にどういう時に使われるの? >>663
>>662は>>614と同じに見えるが、なにいってんだ、おまえは?
全否定するなら、他の回答も全て否定しろよ 関数型の本読むと
forより関数型の再帰のほうが抽象性が高くてよみやすいからいいと書いてたりする。
自分も書き慣れたforでやっちゃうけど。 ・>>612にレスしない=容認と思い込んで、ダブスタ扱い
・>>643の要件定義が甘いのを無視して、要件が違うとキレる
・>>614と同じ書き方をして、クソコードとキレる
ボロボロだな >>668
お前こそなに言ってんだ?
>>>662は>>614と同じに見えるが
はぁ?>>663のどこに>>662と>>614が違うと書いてあるんだ? 有名になったら急に親戚が増えるのと似てるな。
そんなクソスレは知らん! なんだかなぁ
例えば配列の中身は使わないけど、ただ繰り返しのためにreduceを使うということも
任意の長さの有効な中身が入った配列を作るハックも
何らしかの理想形を目指す過程で1つだけ妥協してそういったテクニカルな物を入れるのはありだと思うけど
例えば何かの絵でも文章でもいいから特定の理想スタイルに拘って作ってたとして、
表現が困難な部分が1箇所くらいでてきてもあまり品質を損なわせること無くごまかせるけど、
あちらもこちらもということになると元々目指してた理想とは随分形が変わってくるし、
他人が見たときにそれが何を目指したものなのかすらわからなくなる
苦労してそんなものしか作れないのなら
最初からもっと楽してカッコつけなくて描く方法があるでしょってことになる 質問
reduceのアキュムレータで引き回して hoge.a().a().a().a() ... .a(); と実行させる方法
引き回し用の変数oにhogeを入れたうえでforで o=o.a(); を実行させる方法
見た目・行数以外で
これら2つの方法で厳密に言うと何と何と何がどう異なる?
要件としては>>607のとおり、function func(){}内で実行、returnしない、として 重めのファイルを大量にダウンロードするパートがあるwebアプリで同時ダウンロード数3とか4とかに絞りつつ、それぞれのレーンはシリアルにダウンロードタスクこなしてくという処理に、
ダウンロードのpromiseの配列をreduceの中でaccum.thenで繋いでく方法取ったな。forよりだいぶん簡単に書けたが、知らん人には何やってんのかさっぱりやろな。 C++とか他の言語からさらにやってJSのクラス(プロトタイプ)とかみるとよくわからないってよくきくけど
JSからはいってC++とかいくとどうなの? ちょっとアレだからノーコメントで…
でも俺は頼まれて作っただけだからな。 頼まれても作っちゃいけないモノってのがあるわけだが、そんなものを作ったと書き込むこともどうかと >>679
・盛大に混乱するがなんとか順応してやっていける
・C++に行こうとして挫折する
どっちか 実際はダウンロード数はブラウザが勝手に抑制して
同時に発行しても一定以上はpendingとなるから気にしなくても良い 決め打たなければならなかったんだよ。
ブラウザの制限にまかせとくと弾かれてしまうという…案件。 君たちUMLとか勉強した?
したほうがいいのこれ? このスレのタイトルが数式になってるんだと思って実行してみたら
Uncaught SyntaxError: Unexpected identifier
というエラーが出ました
どうすればいいですか?
そもそもJSかくひとならJSで実行できるスレ体にするべきじゃないですか?
アホですか? おい、無視すんな。面白いこと言ったんだから何か答えろ ""+ "JavaScript の質問用スレッド vol." + 133
じゃあ次からこれで toStringやparseIntはきっちりやるべきだと思う
無論parseIntの第二引数は忘れてはならない 123abcという文字列をパースして
123という数値に変換するのは
バグだと思う それすなわちバグということはないが、
CSSならTypedOM使ったり、input要素ならvalueAsNumber使ったり
もっと適切というか上品な手段があることは多いと思う 16px, 1em, 100% とか、
こういうのを数字にする事を想定しているのだろう >>690
そんな君にお勧めなのが Number() 〜気にくわない挙動があったとき〜
バカ「バグだ!」
天才俺「0.1+0.2はisoに基づいた仕様、typeof nullは仕様バグ」 let a = { let x = 0; (何か処理); x; };
みたいな感じで書けないのはおかしい
let a = (() => { let x = 0; (何か処理); return x; })();
と書くしかないのか? typeof null -> "object"はべつに仕様バグだとは思わんな
だって例えばtypeof null -> "null"になったところで、
対象がオブジェクトかどうか一発で判定できるわけではないし、
状況がハッキリ好転したりはしないもの
あとやっぱりJSに本当に必要なのは正確な判定ではなくて、
柔軟さを活用して問題を飲み込んで単純化することだと思う
つまり具体的にはtypeofのような存在による正確なオブジェクトの判定ではなく
今提案もされてるobj?.propのようなオプショナルなプロパティアクセスが重要 >>696
ECMA Stage 1. do expressions
https://github.com/tc39/proposal-do-expressions
Chromeで試すには「 --js-flags="--harmony_do_expressions"」 ちょwww俺おもしろすぎwww
ギャグのセンスはんぱないwww contenteditableな要素の中に作られるタグについてですが
chromeでは一行ずつdivで囲んでるんだな、と思っていました
実際ただキーボードから文字を入力していった時に作られるタグはそのようものです
しかし文字列をペーストすると、
<div><div>1行目</div><div>2行目</div></div>
みたいな、複数行を包含する無用で意味不明なdivが出来ることに気づきました
一体どんなアルゴリズムがこんなタグを生成するのでしょうか?
キャレットのある行を知る時には一番外側のdivを見つければいい、と思っていたのですが、
このくそアルゴリズムの生成するくそタグだと正しく検出できません
キャレットのある行を見つけるにはどうすればいいですか? 一番外側のdivでなく、一番内側のdivなら検出できそうです
chromeではselectionの境界は必ずテキストノードの中をポイントするようなので。
それはそれで合理的な挙動ですが、
他のブラウザだとそのあたりの挙動も違います
divとdivの間をポイントしたりします
・生成されるタグがくそ
・生成されるタグがブラウザによってまちまち
・selectionの境界の取り方もブラウザによってまちまち
何重にもひどい条件をかいくぐってまともに動くものを作るのはなかなかヘビーですね? >>699
それは知ってるが、作者がどう言ってるかが全てではないだろう
君は親から、お前のココが失敗だったと言われたらずっとそう思い続ける残念な人なのか?
実際その時はそこだけ取り上げると客観的に見て欠点だったとしても、
そいつが成人して、世の中の流れも多少変わってるし、別に取り上げて何か言うべきことで無くなってる可能性もあるだろう
俺は君が考えた君だけの考えがあるなら大いに聞いてみたいが、
そんな聖書にそう書いてあるから!みたいな淡白な意見は何の発展性もないし関心がない
人が言ったことを自分の意見にするなという意味ではないぞ、むしろそれは良いこと
つまりその作者がどうしてそう言ったのかを、色々な視点から捉えて、
その意図を自分の中で消化して、君自信の意見として君の言葉で解説して欲しいと思う >>705
要約すると、お前がそう言ってるだけでなので、
お前の言うことなんか無視すべきってことだな バカ:
箱を落として中のケーキがグチャグチャになったが、もう戻らないことを嘆いても仕方ない。
このグチャグチャのケーキのいいところを探そう!
俺はこのグチャグチャのケーキも結構イケてると思う!
天才俺:
このケーキがグチャグチャなのは、移送中に箱を落としたから。
移送者の証言があるからこれは間違いない。 >>707
俺は確かにいいところを探して良いように使うのはJSにおいてとても重要だと思うが、
今回はそういったことを言ってるんじゃないぞ
そもそも横向きに他の食べ物と一緒に入れられていて
箱を落として無かったとしても潰れて混ざってて綺麗に食えたもんじゃない
どっちみち細かく切ってそういう食べ物ですと言って誤魔化して出すくらいしかなく、
落として無かったら切り方がちょっと大雑把で済むくらいのもの
だから綺麗に食べられないことに関して箱を落としたことを悔やむのはバカなこと
だがそもそも本当にパーティの賑やかしとして必要なものはピザの方じゃないのか
ってことを言ってる ピザに話題を反らそうとも、ケーキがグチャグチャな事実は変わらない。
typeof nullが仕様バグであるという事実は、typeof nullの重要性の多寡によっては覆せないのだ! typeof null限定の話ではなく一般論の話をしよう
一般論ではどんな人でも言ってることが間違っていることがあるだろう?
だから、間違いなんだよ 一般人「typeof nullは仕様バグ(ボソッ)」
バカ「俺はtypeof nullが仕様バグとは思わない!」
天才「いや作者が仕様バグと認めてるんだけど…」
バカ「typeof nullが仕様バグかどうかはどうでもいい。他のことの方が重要!」
他のことの方が重要なのはそうかもしれないのだがこれじゃ思い違いをゴマかすために話題そらしたみたいにしか見えないww バグ、仕様バグって言葉の認識に差がありそう
本当に頭悪いバカはバグとか言わずに糞言語と100回連呼するのだと思う
そんで使用者を罵倒して煽る バグって10回言って
バグバグバグバグバグバグバグバグバグ
9回しか言ってないじゃん >>711
「だから、間違っていることがあるんだよ」が正しい(確定ではない) >>705
> それは知ってるが、作者がどう言ってるかが全てではないだろう
「仕様バグ」は作者でなければ、定義出来ないぞ
>>697がいっているのは「>>697の解釈」であって「仕様バグ」ではない 一般に普及しGoogleのような大企業じゃなくても誰でも普通に使えるようになったので、ajaxとかカッコつけて言わなくなっただけ。 ajaxの代替になるもので流行り始めてるものとかもないの? ajax と言えば、jQuery
これだけのために、jQueryを使う人もいる >>722
Axios や SuperAgent が有名だよ google書籍検索で引っかかってきた原書のサイ本に、日本語版に書いてないことが書いてあったので
調べてみると日本語版は、原書のリファレンス編が「JavaScriptリファレンス」という別の本になっている
ということに気づきました
紙の本だとおそろしく太くなってしまうからでしょう
電書を購入しました
知らないことが大量に詳しく書かれています
しかしそれが知りたくて買ったRangeオブジェクトとSelectionオブジェクトについては、何故か全く書かれていません
何故でしょうか?あほなのでしょうか? >>727
> 何故でしょうか?
全てを網羅すると途方もない文量(引いては値段)になるからでしょう。
> あほなのでしょうか?
あほです(あなたが) >>727
JavaScriptにはRangeもSelectionも存在しない。
ブラウザが提供しているAPIでライブラリと同等のもの
だからこのスレからライブラリの話はなくせと言ってる >>729
この本は「コアJavaScriptリファレンス」と「クライアントサイドJavaScriptリファレンス」に分けて説明しています
クライアントサイドJavaScriptの章では、CanvasやGeolocationやHistoryやStorageなど、
あなたが言うライブラリと同等のものが大量に紹介されています
しかしRangeとSelectionはないのです
あほとしか言い様がありません >>728
リファレンスの価値は、可能な限り全部を載せるということでしょう
あほとしか言い様がありません(あなたが) >>730
それよりもサーバーサイドJavaScriptが
まるまる抜け落ちてるのはどういうわけ? >>727
こんなとこで聞いて何がしたいのでしょう?
出版社に問い合わせればいいだけなのではないでしょうか?
あほなのでしょうか? >>733
何がしたい?もうしてますよ
あんたをイラつかせること
それがしたいことで、すでにやっていて結果もでてることですよ
出版社に問い合わせてもあなたをイラつかせることにはなりません
それもわからないあほなのでしょうか? そもそも翻訳の出来に左右される日本語版を買うのがあほ。
リファレンスは原著買うのが普通。 >>727
微妙なAPIだからね
マイナーだし、HTML5になる過程で一応仕様がデファクトに合わせて整備されなおされたけど
今後の発展性もないし取り上げて面白いAPIではないだろうからね >>734
この人は偽者ですよ
出版社に問い合わせたところで何も変わらないでしょう
それよりも、何故そうなったのかを公開の場で検討した方がはるかに生産的です >>732
Node.jsの本に任せているのでしょう
JavaScriptはそもそもの生まれがクライアントサイドスクリプトですし。
そういう意味でそこは妥当だと思います >>737
発展性というか、基本的な機能だと思いますが・・
特に昨今JavaScriptの役割がアプリと同一化しているので、
もっと光を当てるべき機能だと思います
エディタ的なものを作る時には必須のオブジェクトなのですから >>734
別にオレイライラしてないよ。
やった意味なかったね。 electronで作られているVSCodeのエディタ部分はどういう実装になっているのでしょうか? >>739
どう生産的なの?
著者と出版社に、自分はこう思うのでコレも書けって意見送ればいいだけでは? 原書は検索するとpdfでおっこちてること多いよなぁ。
公式なのか違法なのか知らんけど。 これ著者のツイッターアカウントだろ?
https://twitter.com/__davidflanagan
とりあえずツイッターで聞いてきなよ。 >>741
別に光を当てても選択範囲が取れますで終わりでしょ
エディタを作るのに必要でこれから考えないといけないのは
入力領域やIME制御のAPIだと思うけど >>746
知っている人がいたらざっくり説明してくださいという意味です
>>747
そういうのを使っていたのですね
ありがとうございます >>749
今から聞いても本が書き換わるわけじゃないですよね?
それに別に本人を責めたいわけではありません ちなみに自分の知る限り、SelectionやRangeについて一番詳しく書かれている本は
Professional JavaScript for Web Developersです
この本以上に詳しくかかれている本ありますか? ちょっと前から居てる、WYSIWIGエディタとかcontenteditableとかrangeあたりばっかりのキチは一体なんなん?
selection/range周りの解説本のステマかなんかか?
それとも新興のediterのステマか? >>752
じゃあ何がしたいの?
理由がききたいんでしょ?
これから先出版する本で考慮してくれるかもしれないよ?
で、ここでグダグダいう生産性って何なの? 毛根なら生産しましたよ
一年間で毛根の数が倍に増えました >>731
> リファレンスの価値は、可能な限り全部を載せるということでしょう
「全部」とは何の全部ですか。
JavaScriptという言語仕様が存在しないことをあなたは知っているのですか。
JavaScriptから扱えるAPI仕様が多岐にわたっていることをあなたは知っているのですか。
その全てを網羅して、値段が10倍になってもあなたは買うのですか。
他の人も買ってくれると思いますか。
膨大な厚みの紙の書籍を買ってくれると思いますか。書店に置けますか。ビジネスモデルとして成立しますか。
> あほとしか言い様がありません(あなたが)
それは、あなたがJavaScriptを熟知してからいえる言葉ではないですか。 >>755
質問スレにおける生産性は、議論の中から新しい知見が現れることです
分かりますね? ああ!「激しくだるま」で略して「はげるま」か
気づかなかった
なるほどうまいなw selection/range って、この2冊にも載ってないだろ
初めてのJavaScript 第3版 ――ES2015以降の最新ウェブ開発、オライリー、2017
JavaScript 第6版、2012、David Flanagan >>763
載ってませんよ
サイ本というのはJavaScript第六版のことです >>761
どんな知見生まれた?
何故載ってないかで新しい知見なんて生まれるわけないw
生産性低すぎなんだけどw >>756
ゴミが生まれても生産性があるとは言わんわなw Selectionの変更を検知するためのイベントハンドラないかな?
と思ったら、まさにそのための、document.selectionchangeというものが見つかりましたが
これはまだ草案状態で、firefoxにしか実装されていませんでした
contenteditableな要素でkeyupとfocusを使えば、
Selectionの変更を残らず捕捉できるでしょうか? >>767
つまり、お前のそのレスはゴミだということか >>770
ありがとうございます
確かにfocusやfocusinが発生した段階ではselectionの設定が済んでいないので適当ではないようでした
mouseupにしたらselectionの値も想定通りに取得できました let hoge = {
property: 100,
method: ()={
return this.property;
}
}
let a = hoge.method();
みたいな書き方って今でもアリなのでしょうか?
クラスを使わずにオブジェクトを作るやり方です ちなみに最近はもっぱらクラスと関数で書いていたのですが
昔のコードを見たら>>772みたいな書き方をしていて、
あれ?これ普通に便利じゃね?
ってなりました
newで生成する必要のない単体のオブジェクトならこれでいいのでしょうか? > newで生成する必要のない単体のオブジェクトならこれでいいのでしょうか?
その通り。たくさん作る場合は関数が都度生成されるのでコスト高。
単発ならそれで十分。 サーバーとかもってないんだけど
クロスオリジン系のエラーがでるコードは試しで実行できないってこと? >>772
何そのへんな書き方?
昔も今もエラーになるでしょ ありって言ってるやつはJavaScriptしらないのかな?
見ただけで構文エラーだとわからないやつは
仕事やめたほうがいいよ いや、もちろん文法エラーになるのは分かるよw
そういう低レベルの指摘は下々の者に任せることにしてるの。くだらない。
そこが本旨の質問じゃないからな。 >忘れてるだけでしょ
ただしそのままじゃthisが想定と違う気がするけど >>779
やっぱりわかってないなw
文法エラーであることに気づいてない=JavaScriptしらないから、
昔の書き方と今の書き方の違いもわからない
だからそれでOKとか言っちゃってるんだろ static変数君また暴れてんのかw
ここはお前の遊び場じゃないぞ >>782
お前こそ質問の意図がまるで分かっていない。
文法エラー直してくださいって質問じゃないぞ。
質問もう一度読みなおしてみ。
仕事ではコード以外にも日本語も読むだろw >>784
だから書き方だろ
はそこに書いてあるコードが
昔の書き方か、今の書き方かで答えは変わる。
昔の書き方だろうから、今はそう書かないが答えだろうが
そもそも間違ってるので、もしかしたらそのコードは
今の書き方かもしれない
だからそれを正さなければ、
「今の書き方はそうかかない」と言い切ることはできない
だからまず、そのコードは間違ってると指摘しなければいけない アローちゃんは、いつ大半のブラウザで動くようになるんですか >>786
IE11とAndroid 4.4、そしてiPhone 4sを
使っている人が消えたら使っていいよ >>785
質問者の意図を反映しつつ
動くコードに書き換えるとどうなるの? >>775
Ruby のSinatra が、標準のWEBrick よりも簡単。
JS の、Node.js の方が難しい
get '/' do
'hello'
end
これで、ブラウザからアクセスすれば、hello と表示される
実行環境がサーバーなら、クロスオリジンもOK だけど、
ブラウザでは出来ない
ただし直接、HTML ファイルに、URI を書けば、
JS じゃないから、クロスオリジンも出来たかも?
jQuery などで動的に、<script> 要素を生成して、
クロスオリジンのページを読み込ませるような、ハックがあったかも知れないけど、
ブラウザのセキュリティが厳しくなったから、今は出来るかどうかわからない ヨコからだけど
こゆこと?
var hoge = {
property: 100,
method: ()=>{
return hoge.property;
}
}
var a = hoge.method(); それともこう?
function hoge () {
var property = 100;
this.method = function() { return property;}
}
var h = new hoge()
h.method() こうゆうことだろ
var hoge = {
property: 100,
method(){
return this.property;
}
} >>794
昔はそのコードは動かないので、
>>773の昔のコード見てこのような書き方を
しているってのはおかしい
そして今そんな書き方はしない >>797が今の書き方
だが、昔はこんな書き方はできなかったので
昔のコード見てこうなっているのはありえない 本当に分からないようだから一度だけガチで教えてあげる
質問者が言いたいのはメソッドを持ったオブジェクトを生成するとき
クラスを定義してnewを使うか、それとも使わないかという話だ
もうこれで納得出来ないのなら頼むから発言を控えてくれ static変数君が、classのstaticメソッドがうんたらかんたらって
流れにしたくて言い出した、と思いながら俺はみている >>800
本当に分かってないようなので教えてやるが
今の質問者は>>791だぞ >>800
オブジェクトの生成じゃなくてインスタンスの生成じゃないの?
昔の仕様でnewなしでできるの? まーた来たよクラスベース脳が
大人しくJavaワールドにお帰り クラスとか関係ねぇ
インスタンスはインスタンス
なにをいってるんだか
オブジェクトだと範囲が広すぎて混乱するからインスタンスのほうがいい Object.create()ならnewしなくてもインスタンスつくれるやん。 インスタンスはクラスベースの用語だろ。
ほにゃららクラスのインスタンス。
jsのプロトタイプベースの文脈ではnew ほにゃららのほにゃららはコンストラクタと言う。
そしてその正体はちょっとお作法に乗って作っただけのただの関数。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Class-Based_vs._Prototype-Based_Languages
> Java や C++ といったクラスベースのオブジェクト指向言語はクラスとインスタンスという 2 つの異なる実体があるという概念に基づいています。
> クラスはあるオブジェクトの集合を特徴付けるすべてのプロパティを定義する。
クラスとはそれが表すオブジェクトの集合の特定のメンバではなく、抽象的なものである。
例えば、Employee クラスで従業員すべてを含む集合を表す。
> 一方、インスタンスはクラスを実例にしたものである。
つまり、そのメンバの 1 つということである。
例えば、Victoria は Employee クラスのインスタンスとなることができる。このクラスは特定の個人を従業者として表すものである。
インスタンスはその親クラスのプロパティを正確に保持する。
> JavaScript のようなプロトタイプベース言語はこの区別がありません。単にオブジェクトがあるだけです。
繰り返す。Javaワールドに帰りなwww 文法上正しいならそういう書き方もあり
メジャーな方法を使いたいというのであれば、まあ、、何がどうであればメジャーなのか知らんが
メジャーと思う方法を使えばいい >>815
つまりお前はJSにはインスタンスはないといいたいのか? 言われてみれば、昔風といいつつアロー関数式書いてましたね
しかも、アロー関数式もケアレスミスしてますしw
でも言わんとするところは分かりますよね? 関数
オブジェクトリテラル
クラス
を取り混ぜて書くのがJavaScriptなのでしょうね? 今も昔もjsにクラスはないよ。es2015で導入されたclassキーワードもクラスっぽく使えるオブジェクトを簡単に作れるシンタクティックシュガー。 var categoryHtml = document.getElementsByClassName("data-catg");
でHTMLCOLLECTIONを取得して
console.dir( categoryHtml)とすると結果は
ーーーーーー
HTMLCollection(5)
0:td.data-catg
1:td.data-catg
2:td.data-catg
3:td.data-catg
4:td.data-catg
length:5
__proto__:HTMLCollection
----------------
なのに
console.log("length"+ categoryHtml.length)
とすると
length1
となって何故かlengthが5のはずなのに1になってしまいます。
いみがわからないんですがなんでなんですか? HTMLCollectionはNodeListと違って「生きている」「動的である」ということ
つまり取得したときの状態ではなく、現状が反映される >>824
いやでも
console.dir( categoryHtml)
console.log("length"+ categoryHtml.length)
と並べて実行した結果なんですが。
動的と言っても変化する要素はないです。 >>822
class構文があるのにクラスが無いとか詭弁でしか無いと思うけどな
それは単にクラスベース言語のクラスを思い浮かべているだけだろう
オブジェクトのライフサイクルが予め存在するクラスシステムに縛られるのがクラスベースOOP言語だよ
一方インスタンスベースOOP言語は縛られないというだけでクラスがあることと矛盾しない
むしろ構造化プログラミングの観点から、『より素朴である』インスタンスベースOOP言語でも
自前でクラスシステムを組み上げるのは当然のことだし、
言語が予め標準的なクラスシステムを用意しておくのも自然なことなんだよ
改めて言うけど、クラスベース言語があって、そしてクラスがあるんじゃなくて、
クラスがあって、そしてそれをベースとする縛りを課した言語であるクラスベース言語があるんだからね
クラスっていうのはクラスベース言語に於ける存在ではなくもっと広い意味を持つもの
そしてクラスとインスタンスベース系言語は矛盾するどころか協力関係だし、
JSにも幾つかのクラスシステムが導入されてるし、
クラスとは、実はいろんなクラスシステムでのある形、塊のことをさす言葉なんだよ インスタンスベースOOP(笑)
しかもクラスベースOOPと並べて語っとるww Javaの泥舟が沈みそうだからってほうぼうで必死すぎるだろ最近。
天下のIT土方様ならプロトタイプベースくらい覚えてから突っかかって来ればいいのに思い込みでギャーギャー喚いてるだけだからな。
そんな腐った心構えじゃJavaの沈没とともに仕事なくなるよ?
ま、次のCOBOLとも言われてるし立ち回りようによっちゃ死ぬまで食えるのかも知れんが。 ただでさえ最近関数型勢なんかの指摘がうるさいのに
JavaおじさんがJS覚えて来たら大変なことになるかもしれないぞ >>815
>すべてのオブジェクトはインスタンスである。
ってかいとるやん。
何がいいたいんだ?
一対一の文脈に切り取って考えたとき生成されたほうがインスタンスだろ? JSのインスタンスはこういうものです
const Kichigai = {
[Symbol.hasInstance](){return true}
}
42 instanceof Kichigai // true × JSのインスタンスはこういうものです
○ JSのインスタンスの一例はこういうものです。他にもあります。 >>827
できました。
テストだからと思ってグローバルで実行してたから
ロードされる前に実行されてたのがだめだったのかもしれません。
でも、.lengthもどっちも同時に実行してるのになんで結果が違うのかよくわかりませんが。。。 インスタンスというのは言外に生成する側との関係性をふくんでいる。
オブジェクトはそういう意味合いはは含んでないってことな。 >>834
うざい。最低限再現できるコードを書くという
ルールすら守らないやつにレスはしない >>834
再現コードが無いままだが、よくわからないと言うんならwindow.loadで、
あるいはsetTimeoutでもpromiseでも何でも使ってテストしてみたら? それよりインスタンスベースOOPって何ぞwwwww
初めて聞いたんだがwwww どうせお前らがclass使ってもやることは「あなたは****人目の訪問者です」くらいだろ 安倍ちゃんが移民を本格的にはじめたらしいねぇ
言語の障壁ひくいIT分野の労働市場も大変になりそうだなw インスタンスベースOOPとも言うよ。
ただ実際使われてるの始めて見た。
javascriptでインスタンスと言わないのはクラスとの対比がないためオブジェクトと言えば済むからだな。
プロトタイプベースと言えば通じるところをわざわざインスタンスベースと言ってみたり、
オブジェクトで済むところをわざわざインスタンスと言ってみたりする必要はないってことだ。 wikipediaのプロトタイプベースの項にはインスタンスベースの記述はあるな >>822
newで生成する仕組みはclass構文以前からありますよね?
class構文は従来のコンストラクタ関数が変な感じになっていたのを整えただけだと思いますが >>846
一応いろいろ考えた結果その言葉を選んだ(選ばざるを得なかった)んだけど
クラス(システム)に縛られないこという話でクラスベースとの対比としてプロトタイプベースという言葉は使いにくかった
「クラス」のイメージが「代表的なクラスベース言語」で固まりすぎてるように
「プロトタイプベース」というとJSの代表的な(枯れた)コードイメージが頭に浮かんでしまうんじゃないかと思った
でも昔のJSはプロトタイプベースなのにプロトタイプがすっかり隠蔽されていて
1つの微妙なクラスシステムに半ば縛られていた形だったという事実があるだろう?
ES2015以降ようやっと、今回話した「特定のクラスシステムに縛られていないので、自分で自由にクラスシステムを構築できるし、
言語がデフォルトで提供しているものを使うこともできる」言語になったわけだけど
それでもJSでプロトタイプをよく使ってみた人は少ないんじゃないかと思った
JSって「非クラスベース」言語の中でも特殊だし、プロトタイプベース言語としても客観的に見て特殊だと思う
だから言葉としては適切でも、JSが代表であるプロトタイプベースという言葉を気軽に使うのは難しい
とはいえやっぱりもちろんJSも良くイメージさせる形で話したいし、大げさになりすぎるから「非クラスベース」という言葉は使いたくない
だからまあインスタンスが主で拡張が自由などという特色であれば、JSでも昔っからイメージがあるだろうから
そっちの面を出して語ったほうが良いと思ってあえてちょっと馴染み深くなくもあるインスタンスベースという言葉を使った >>850
他言語のクラスは無いかもしれないが別にJSでクラスと言う言葉を使ってはいけないわけではないし
存在してはいけないと縛りを課す必要もないだろう
オブジェクト指向に確かにクラスは必須ではない
つまり言えばクラスは必須では無いより一般的な形での概念という形で存在し得る
クラスベース言語に捕らわれてクラス、クラス言うのもだめだが、
クラス、クラス言うなと一般に言うのもまたクラスベース言語に捕らわれてるってことだぞ なんかさあ、結局javascriptのclassって「他の書き方でもできるけどclass構文でもできる」なんだろ
1つのことをするのにいろんな書き方ができる言語・・・ 「でもできる」っていうのがよくわからん
別にオブジェクト一切なくてもチューリング完全な言語は沢山ある
class構文を使うっていうのはオブジェクト指向のそのまた1つのやり方の話でしか無い
「forでもwhileでも再起でもできる」変なの……って思うか?
考えすぎだよ あきれた、何を他人事みたいに言ってるのかね、クラスクラスとしつこく言い出したのは自分だろうに。jsでクラスがあるとか言い出したらcでもある言えるわバカバカしい。 そもそもJavaScriptがクラスベースの言語だなんて誰も言ってないんですよ
プロトタイプベースだということは分かった上で、
クラスベースくらいかっちりした書き方も出来た方がいいよね?
ということころから始まってるのです
分かりますね? あきれた、Cにオブジェクト指向とclass構文が入ってからまた来てね JavaScriptにクラスなんてないガーとか言う人は
相手がJavaScriptをクラスベース言語と思い込んでいると思い込んでいますが
実際にはそんな間違いをしてる人はいないんですよ
分かりますね? クラスベースとは関係のないオブジェクト指向において一般的な意味のクラス
について話されてるのかと思ったら
クラスベースのようなクラスを話してる人も居るのか
class構文は将来の提案も含めると「かっちりした」っていう目的も強いんだろうけど >JavaScriptにクラスなんてないガー
こういうガーの使い方する人はじめてみた 自分のお勉強が済んだら方向修正か、情けない。
最初から勉強してきてからイキれや。 >>858
JavaScriptをクラスベース言語だと思っているやつが居るという話は誰もしていないが
クラスベースの感覚を持ちすぎたままJavaScriptでクラスという単語を使うな
もっと広い意味でも使えると言うことだろう ガーをどう使うかは個人の勝手
クラスをどう使うかは個人の勝手 >>854
いるんだよねこういう低レベルなのに無理して絡もうとするやつ つよいポケモン よわいポケモン
そんなの ひとの かって
ほんとうに つよい トレーナーなら
すきなポケモンで かてるように
がんばるべき >>864
確かにいるな、低レベルなのに無理して絡もうとするやつ メッセージパッシングはOOP用語だがJavaではふつうメソッド呼び出しと言って普段誰もメッセージパッシングガーとか話してないだろ これは難しくて特殊な話だから普段どうこう言っても仕方ないでしょ >>823
console.dir, console.log は、異なる関数だろ >>870
もともとはlogでやってたけどいろいろ試してる中でdirにしただけです。
結果は同じです。 >>823
DOM の構築よりも前に、JS コードが実行されてるのかも
JS コードを、<script>要素内に書いて、それらのDOM よりも下に書けば、
JS コードの方が後に実行される
それか、jQuery の、$(function(){...}); を使えば、
DOM 構築後に、JS コードが実行される >>871
いいから早くサンプル貼ったら?
それとも夢で見た話かな? >>823
そもそも、そのHTML を、ここでチェックしたら、エラーで動かない
https://validator.w3.org/
HTML が間違っている <tbody> 要素を、<table> 要素で囲むと、正常に動いた。
つまり、<table>要素が必要
<table>
<tbody id="tbdy"></tbody>
</table> 同じページで複数のjsファイルを読み込んでいるときってグローバルは
それぞれのグローバルが結合して、それぞれのファイルはは別のファイルの変数をグローバルスコープ上で共有すると考えていいんでしょうか? >>876
自分で読み直してみて、何がしたいのかその文章から読み取ってもらえると思う? >>876
よくわからんが、グローバルスコープは1つしかないぞ >>876
ファイルごとに名前空間が作られるわけではありません
複数のファイルを全て結合した1つのファイルを読み込むのと同じことです
さらに言えば、その全てのコードをHTMLファイルに記述した場合と同じことです >>880
イメージしやすくてとてもわかり易いです。
ありがとうございます。 googleなどで検索するとき
検索ボックスに単語をいれると、ボックスの下に候補のリストが出ますが
ああいうのはJSで実現できるんですか?
リストを下に表示させるのはどうやれば良いのでしょうか? サジェストね
jsだけでするタイプとajax使ってphpとかと連携するタイプがある
あらかじめ決まった内容から絞り込むならjsでリスト持っておく
DB検索とか使うならajaxでサーバーサイドで絞り込む
1文字入力ごとに絞り込んで候補をulとかにしてinputの下に表示する
選択されたらinputの中身を入れ換える Rails 5.1で作るVue.jsアプリケーション 〜Herokuデプロイからシステムテストまで〜
https://youtu.be/ycOeM2umXkY
伊藤淳一の動画
Rails 5.1 から、Vue.js を使う
「vue.js autocomplete」で検索! 予めJSで持っておくとか言ってるやつが居るが
datalist要素の存在忘れちゃったの? >>883
側というかインターフェースと言うか外観はどうしてるのでしょうか?
検索ボックスのしたにdivかなんかの要素をCSSでfloatしてJSで追加するのでしょうか?
めんどくさそうですね。 「c」ってめちゃくちゃ一般的な語、というか字だけど
その比較意味あんのかww どうせperlがダントツなんだろと思って確認してみた
まあわかってたさ 最も嫌いな言語はシェルスクリプトだろ普通
コマンドライン入力を使ってプログラミング言語を実現してるから無理矢理感ありすぎ
21世紀に書くものじゃないわ 公害言語perlがダントツ
delphi、vbaが二位争い
php、objactive-c、coffeescript、rubyといった技術負債言語が第三グループを形成
javascriptマジ高みの見物wwwww 嫌いな言語ってある程度触らんと嫌いにならないからな 単体で使うというよりもいろんなところで見かけたって感じ
パッと思いつくところだとdigitallocaとか、確かコード部分はまんまdelphiだったはず 二位グループ嫌われてる理由違うだろ。
delphiは一昔前pcアプリにかなり使われてたから保守でいじらされるの嫌なんだろう。今さら覚えても潰し利かないし。つまり第三グループが嫌われてる理由と似てる。
vbaは頼まれる機会が多くてクソ言語書かなきゃいけないから苦痛ということだろう。 他人が書いたphpも他人が書いたjsも同じくらいゲロいと思うんだが javascriptも順調に廃れてるなwwwwwwwww 嫌われクソ言語殿堂入りのるびぃ笑などと一緒にするなよwww るびぃちゃんと比較しないといけないほどやばい言語になったのか るびぃちゃんと同じ嫌われ第三グループはphp、objactive-c、coffeescript(笑)wwwww 嫌いな理由というのも色々あるということだ
perlはガチ言語仕様がガチ 3項演算子をつかって時間がひと桁の時0を頭につけるコードをどっかで見たので
自分でやったけどできない
var sec = (((new Date()).getSeconds < 10 )? "0" : "a") + (new Date()).getSeconds()
なにがだめ?
検証のために"a"いれてます 最初の new Date() と
二回目の new Date() で
同じ時刻になるとは限らない あ、getSecondsのあとに()がぬけてました。。。 パフォーマンスと言われても1回あたり
1msでも20ms対して変わらん moment.js 50000byte
day.js 2000byte
画像の50kBと違いjsはダウンロード時間よりもパース時間のほうが長い。
また画像と違ってasyncをつけられなければブロックする。 > また画像と違ってasyncをつけられなければブロックする。
</body>直前に読み込めばいいだけでは? body直前で問題ないならそれが一番いいよ。
moment.jsロードして使わないなんて何してるのか分からんが。 >>915
asyncだって読み込み終わらなければ使えないぞ?
同じことだろう てかjQueryなんかと同じで被依存ライブラリなんだから事実上asyncなんか付けられるわけないし/body直前もあり得ないだろ へ? 使う前に読み込んでいればいいんだから
asyncも</body>直前でもできるけど?
例えば、clickイベントの中で使うなら、
クリックする前に読み込んでいればいい だから当たり前のことを言っただけなんだが。
ありえない?当たり前の事を知っていれば、
ありえないが間違いだってわかるよね? >>913
出来ることも同じなんですか?
だとしたらなんでそんなにサイズが違うんですか? 素のjsのDateを使おう。サイズは驚異のゼロbyte。速度はmoment.jsの20倍速い。
moment.jsは便利だがAPIがイケてないということでdate-fnsに追い捲られてるはず。
このようにライブラリには流行り廃りがあるのだ。
素のjsのDateのAPIもイケてないが、moment.jsとは違う点がある。それは決して廃れないことだ。
じゃあもう覚えちゃえばいいんじゃん? > 素のjsのDateを使おう。
めんどくせぇ、俺の仕事はDateを使いこなすことじゃないんだよ 別に使いこなさなくても時刻0埋めはIntlAPIで簡単にできる
date = new Date('2018/06/01 01:02:03')
date.toLocaleTimeString( 'en', { hour12: false } )
// "01:02:03"
date.toLocaleTimeString( 'en', { minute: '2-digit', second: '2-digit', hour12: false } )
// "02:03" >>927
こんなんじゃ使い物にならないな
date = new Date('2018/06/01 01:02:03')
date.toLocaleTimeString( 'en', { hour12: false } )
// "?1?:?02?:?03"
date.toLocaleTimeString( 'en', { minute: '2-digit', second: '2-digit', hour12: false } )
// "?6?/?1?/?2018? ?1?:?02?:?03? ?AM" しかも文字化けwww
IntlAPIでできるとか、こいつ実際に使ってるのか?
どうせ使ってねーんだろうな JavaScript(?)のAPI設計してるやつって
センスないのか?
なぜ短く書く方法が他にもいくらでも見つかるのに
それを無視して冗長なやり方をするんだ? オプションオブジェクトのこと?
昔のAPIはフラットに引数足してったけどそのやりかたは拡張性・互換性に乏しいということで最近のAPIは基本引数の後ろでオプションオブジェクトとるようになったんだよ。
センスは良くなったの。冗長だけど。 素のJSがイケてないからライブラリが出来たのに
素のJSを使おうとは・・
そもそもSPAならパースは始めだけなので大して問題にならないですよね?
軽いに越したことはないですが・・ 「SPA」の「始め」ってメガトン級じゃん。そこにさらに50KB積むのか…
まぁせめてSSRはしとけよ? >>928
君の壊れたブラウザじゃ使いものにならないのだろうね Edgeが壊れたブラウザで、動かなくて平気っていう人は楽だねw
でも仕事じゃそうはいかないんだよ >>938
壊れたブラウザの為に変に小細工するからつけあげる
放置することが賢明
やる気がなければ何れ消滅する >>938
重要なことを忘れていた
余計な仕事が増えるだけ シンプルに'0'つけて1回変数に入れてからsubstringすりゃいい
と言ってはいけない雰囲気 >>940
重要な仕事をお前の気分で余計な仕事に変えるな
重要かどうかはお前が決めるのではない
世界が決めるのだ。 ライブラリは必要だから作られたものなのですから
それが必要でなくなるのは、ブラウザの標準化がめざましく進むなどの前提条件の変化があった場合か
それよりもいい代替が現れた場合だけです。
前提条件はたいして変わっていないのですから
ライブラリいらないガーという主張には頷けませんね githubではスター数ゼロの誰からも必要とされないライブラリが量産され続けています。
ライブラリは必要だから作られる、の反例として。 そのライブラリを作った人には少なくとも必要だったのでしょう
その必要性が広い潜在的需要に応えたものもあり、そうでもないものもあります
当たり前の話です
ここでは広く受け入れられたライブラリの話をしてるのですから、反例というかただのトンチンカンです >>938
Edgeでもきちんと動くけど
君のPCが壊れてるみたいだよ >>942
その前にどのブラウザを使かは自由
それは仕事ではなく奉仕というんだよ 古い初期バージョンのEdge使ってるから、だったりして どのブラウザを使っても自由
lynxでアクセスしたら逮捕された事件があったな 文字列の複数選択には、現状Firefoxだけが対応しているようです(Ctrlを押しながら選択)
JavaScriptで、SelectionオブジェクトにaddRangeするという形なら
ユーザ操作による複数選択に非対応のブラウザでも複数選択させることができるのでしょうか? もうatomかvscodeのコントリビュータに聞けや
いい加減うっとおしい は??
あなたのうっとうしさなんて鼻くそ以上の意味すらないのですが?
JavaScriptの質問スレでJavaScriptの質問をしているだけです
うっとうしいと思うのならあなたが去ればいいだけの話です
分かりますね? |∧_∧
|・ω・* <来てないよ
| っ 9
|―u’ 関数の引数のデフォルト値の設定についてなんですが。
デフォルト値は関数内部で定義した変数は使えないんですか?
例えば
var f = (n = x) => {
var x = "korehoshii";
return n
}
でkorehoshii
を返すようにするのはむりなんでしょうか? そうですか。
カリー化したらやりたいことできそうなのでそれでやります。 ターミナル上でnode起動してから
var f = (n=1) => {
return n
}
って打ってエンターおしても入力が終わらないのなんでなんでしょう?
クロムのコンソール上だとちゃんと出来るのに。 おう、ちょっと俺の話を聞いてくれよ
こないだほんとにあったことなんだ >>966
そりゃv5系じゃ対応していない(要フラグ)から当たり前だろ
デフォルトで対応はv6系からってのは公式をちょっと調べたら分かること
つうかもうv8系かv10系使おうや あ、そうなんですか。
最近node.jsはじめたっばかりだから
当然最新のものインストールしてると思ってたのですが、
古いの入れたようですね。
ありがとうございます。 contenteditableな要素に書式付きのいわゆるリッチテキストをペーストしたら、
書式も一緒にペーストされることに気づきました
以前contenteditableを使った時には、CTRL+Vの動作を上書きして
スクリプトで素のテキストとして追加していましたが、
これだとブラウザのundo機能の対象外になります
undoも可能な書式なしコピーを実現するにはどうすればいいでしょうか? 仕様化されておらずブラウザの実装依存なのでは?ブラウザベンダーにメールでもして聞けば? >>972
知らないなら答えなくていいですよ
何かコメントしなければいけないとでも思い込んでるんですか? そもそもブラウザの歴史は独自実装から標準化への過程そのもので
かつての方がずっとブラウザの独自性は激しく、不可解な動作だらけでしたが
その荒れ地を舗装する過程で「ブラウザベンダーに理由を聞いてみよう」なんていう技術者は一人もいませんでした
実際に一人もいなかったのか知りませんが、いなかったはずです、少なくともマトモな技術者には。
何故なら意味がないからです
分かりますね? 無名関数が分かりにくい。
即時関数や入れ子・引数に関数を渡すなど。
その辺の記述の仕方を、
かみくだいて分かりやすく説明してくれてるサイトか書籍はありますでしょうか? 色んな情報を見て試して分かるまで使ってみて慣れればいいだけ 「理由を聞く」じゃなくて「動作仕様を聞く」だろ
昔も今もそれなりに居たはずと思うが
自前で追いかけundoを実装すればいいじゃん これは関数宣言。function 文。式ではなく文!
function f(){ }
文では巻き上げできる。
上で関数を呼び出して、下で定義できる
f();
function f(){ }
下は関数式。文ではなく式!
下の無名関数をよく使う。
var f = function f(){ };
var f = function(){ };
式にすると、関数の引数・戻り値として渡せる。
第一級関数だから、関数もオブジェクトとして扱える
() を付けると、即時実行。
IIFE (Immediately Invoked Function Expression; 即時実行関数式)
下のように、()で囲むと式になるので、即時実行できる。
文は即時実行できない
var f = function(){ }();
(function(){ })(); (function(g){return g;})(f)();
function f(){console.log(`
>>584
> 式にすると、関数の引数・戻り値として渡せる。
文でも渡せるじゃん。
`);} 式は文だからね
「魚を食べます。」は文だが
「魚。」も文だ >>984
> これは関数宣言。function 文。式ではなく文!
「function 文」なるものは定義されてないぞ、と一応いっておく Google maps APIの、Markerのlabelの表示/非表示をズームレベルによって切り替えるにはどうしたらいいでしょうか? ズームが変更された時のリスナー関数でズームレベル見てそれによってマーカークリックのイベントを切り替える >>976
なれだよ。
あなたが知りたいことの解説本ではないが、
関数型プログラミングにはそういうのがオンパレードだから
そっち系の本読むと慣れてくるかも。
基本の型が自然と身につく。 >>984
アロー関数も巻き上げできるやろ。
できないと思ってたけどできてびっくり。
俺が勘違いしてなければだけど 文を文というには最小の構成要素が必要な。
愛。
は文とはいわん。
あとは検索しろ。 >>998
大体、合ってるけど、ECMAScript2017を持ち出している割には、微妙に説明が間違っているのが気になるねえ このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 52日 23時間 19分 39秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。