+ JavaScript の質問用スレッド vol.130 + [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-6のテンプレを読んだ上で質問してください。次スレは>>950が>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください
■規則/推奨ルール
・メール欄を空欄にし、名前にレス番を入れることを強く推奨(なりすまし防止)
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」だけでなく「意見」を出しても良い。
■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為(批判の代わりに「AよりBが良い」のような代案を出す事)
・回答者同士のレスは原則禁止(>>6を参照)
・ライブラリの話題の投稿(>>6を参照)
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/ ■FAQ
http://fiddle.jshell.net/vSqKr/44/show/light/
◆開発者ツール(Developer Tools)の基本的な使い方 (全部はhttp://fiddle.jshell.net/vSqKr/44/show/light/#Browser-Developer-Tools )
▼諸注意
- 本説明では Google Chrome の開発者ツールの名称に従います。他ブラウザで使う場合は適宜読み替えて下さい。
- IE9- でコンソールを使うには予め開発者ツールを起動しておく必要があります(開発者ツールを起動しないと 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/ にコードをUPしてブラウザ毎に速度計測する事を推奨します。
例外として、仕様における理論上の速度が明確になっている場合があります。
例えば、正規表現によるマッチング処理を考えた場合、「RegExp#test > RegExp#exec > String#match」は ES5 仕様で保証されています。
ES5 仕様において RegExp#test が最も処理数が少なく、String#match が最も処理数が多いことが明確だからです。
ブラウザによっては RegExp#test の最適化が十分でなく、String#match の最適化が RegExp#test より十分であれば逆転する可能性はありますが、各メソッドの最適化が一律であればこの前提が崩れる事はありません。
■各種仕様 ( http://fiddle.jshell.net/vSqKr/44/show/light/#Link も参照 )
◆ 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 和訳) クロスブラウザ問題も切り捨て時期に入りversion1の使う理由がなくる。
https://w3techs.com/technologies/history_overview/javascript_library/all
ここをみると今年に入ってからjQueryを使用している会社は0.4%増えているようだが
少数派の意見ではあるがうちの会社では年内でjQueryをきることが決まったぞ。
こういう会社もまれにあるってことを知ってほしい 例外的な会社の話をするならば、
そりゃjQueryを切るところもあるだろうけど、
ぶっちゃけ、少ない方の事例じゃね? そもそもAjaxのころのライブラリ黎明期からHTML5ムーブメントまでの成長期なら分かるが
現代に主要ライブラリのリンクとか必要なのだろうか?
つうか全体的にリンクがあまりに多すぎじゃね
例えば仕様のリンクは多くてもスナップショットの和訳1つで良いだろう
最新の英語のLS版が知りたいやつがここのリンク参考にするとは思えんし
もっと言えばMDNだけで十分な気がする
MDNの各ページには仕様への適切なリンクが張ってあるし、
興味がある人ならそこから知るだろう
質問テンプレートもテンプレートなんて殆ど使われないし、
こういう質問の仕方にしてという注意事項形式に改めたり、
改善と言うか0からテンプレ作り直す必要があると思う スレチかもだけど
iOSでHTML、CSS、JavaScriptの編集、デバッグ(ここ重要)出来るアプリでお勧めあったら教えて
長文でも見やすくて、欲を言えばライブラリの追加とか出来ると素敵です
JSAnyWhereは試したけど、使い物にならなかった
もっと適切なスレあったら、誘導願います ここまで過疎ってる上にスレ分裂してるのにさらにテンプレ議論を別スレでさそうとは恐れいった 好き勝手にやればいい
まともな質問がきて答えたければ答える
それ以外はゴミどもがくだらん喧嘩しててもスルーしときゃいい >>15
↓無能はこいつ
>>1-7
スレチは微妙でグレーところか 無能っていうか意図的にやってるんだよ
元のテンプレで注意されていた荒らし本人がずっとそうやってスレ立ててんの 問題だー問題だーって騒ぐ割に
誰も具体的に指摘せず不備を直そうともしない いやwちっとも改善する意識の無いやつがスレを立てるなよ
ただでさえ乱立してる中立てるってことは
相当の意味を込めてないとおかしい JavaScriptが最終的に覇権握るわ。こんな応用きいて自由な言語ねえ var t = obj.typo;
こういうバグを発見できないJSは糞言語 慣れればすぐ分かる
どうしても気になるなら存在しないときエラーを出すProxyで包んだりすればいいじゃないか 効率は悪いがメモ帳みたいな最低限の環境でもできなくはないし、
1発とはなかなか行かないが問題なく動くものも作れるけど、
存在しないあるいは未参照だったりするオブジェクト・変数・メソッドをチェックしてくれるぐらいの環境は用意したほうがいいんじゃね。
そこまで本格的でなくても、typo程度ならシンタックスチェック入れるだけでもだいぶ変わるはず。 typoは確かに良くするが大抵すぐ分かるけどな
コンパイルしてデバッグ実行のオーバーヘッド考えたらさほど大したことじゃないと思う
それよりも近年たまにハマるのがイテレータ周りだな
例えばPromise.all([a,b,c])としないといけないところをall(a,b,c)としてしまうと
undefined is not a functionエラーが出てしまう
これがall(a,b,c)ならまだ原因に気づきやすいんだろうが、
async関数の絡みでよくall(a(),b(),c())となってることも多いので惑わされる ブックマークレット作成してて、画面項目入力後にボタンクリックして次の画面に遷移。遷移先でも入力させたいんですが、描画完了直後に入力したい場合どうすればいいでしょうか? Proxyを無理やり使って実行時に判明する程度だからな・・
静的にobjのプロパティ参照typoを見つけられるチェッカーは無いし >静的にobjのプロパティ参照typoを見つけられるチェッカーは無い
ないの?知らんけど
探せば普通にありそうだけどな 変数とは勝手が違うから難しそう
多分Object.prototype.__proto__にProxyを挟むというのが良いかもね typoが気になるならTypeScriptおすすめ。
基本的は
let a:型 = ほげほげ
みたいに型を:の後に追加するって仕様だけで使える。
後、個人的に気に入ってるのはjsonにスキーマ設定できる
interface User {
name: string
age: number
}
user:User = {
name: 12 // error!
// ageが足りない!
}
って感じでエラーを出してくださる。
jsonにスキーマがつくとすごく便利よ〜。 https://www.typescriptlang.org/play/
上記とかtypscriptがどんな感じかわかるから触ってみて
シンプルな見た目のくせに補完が効くしね。
試しにdom操作してみると感動するで
document.createElement とか使ってみて欲しい
document.createElement("button”)を実行するとちゃんとHTMLButtonElement型が代入されてるしそもそもdocumentって入力しただけで
候補が出るからtypoしようもないよね。 確かに素晴らしいんだけど
大規模コード書くようなTSが有用なときって
あんまりそう言う重し付けたくないんだよね
何が嫌かって言ったらリリースデータに元とコンパイル後の2つ含めることになること
ポリフィルみたいに簡単に要らなくなったら外すとかできないし >>34
最悪tsを捨てちゃったっていいのよ。
生成されるファイルはtargetをes2015にして出せばそんなにはキチガイなコードにはならないからjsとの混在も可能だしね。
ちょっと前は型定義ファイル周りのエコシステムが乱立?して混乱を呼んだけど
今は平和だしいい感じよ。
俺はむしろtypescriptからjsに本格入門した。
vscodeで書いてるというのもあるけど、書いてる最中にバグを指摘してくれるから
気分的にはコンパイラとペアプログラミングしてる感じ。
いちいちドキュメントを見に行かなくてもvscodeが必須パラメータを教えてくれる。
感覚的には文字入力してる時に頭の悪いIMEから頭のいいIMEに代わって
凄く捗るぜーって感じかな。 >>30
無いぞ
>>31
判明が静的と実行時では雲泥の差 >let a:型 = ほげほげ
>みたいに型を:の後に追加するって仕様だけで使える。
インタプリタに慣れすぎて型指定するのめんどくさいお >>37
型推論使えるから基本関数とかメソッドのインターフェース定義のときしか要らないよ。 >>22
これ
能力無い奴が余計なことして後手後手になる典型的なパターンなんだよな 自己流で覚えたので、おかしなやり方をしてる気がしてるのですが、どうもstring.match(/hoge/)が使いにくいのです
正規表現マッチだとオブジェクトで帰ってくるので
var temp = string.match(/.*hoge/).replace("honya","hage") ← stringじゃないのでエラー
var temp = string.match(/.*hoge/)[0].replace("honya","hage") ← マッチしなかった場合0なんてプロパティはありませんとエラー
となり良く止まってしまいます
これを判別して
var temp = string.match(/.*hoge/)
if(temp != undefined){
var temp2 = temp[0]
} else {
temp2 = ""
}
temp = temp2.replace("honya","hage")
と書くと、ただストリングがひとつ欲しいだけなのにいちいち長くなってしまいます
そこで
var temp = (string.match(/.*hoge/) || ["","",""])[0].replace("honya","hage")
最終的にこんな書き方になりましたが、見づらいし、こんな泥臭いというか力業が一般的な書き方とは思えず悩んでいます
そこで皆さんがどうやってるか・一般的にはどうやるのか、どうかアドバイスください var temp = string.match(/.*hoge/), temp2 = temp && temp[0].replace("honya","hage");
var temp = string.match(/.*hoge/).map( m => m.replace("honya","hage") ) [0];
ある程度はどうしようもない 愚直にやるのが一番いいと思うけど。
ワンライナーにしなきゃいけない理由がわからない
三ヶ月後の自分が分かるコードで書くべき >>41
&&をこんな感じに使えるんですね、なるほど参考になります
ありがとうございます
>>43
長いと目が迷子になってしまうので、特にmatchはよく使うので
一般的な感覚じゃないかもですが、行数の割に得られるものが少ないと、このブロック何の為だ、と後々読んだ時に混乱してしまって
でもif文で数行に書くのが一般的なのですね、なるほどありがとうございます string.match(/(.*hoge)/)
temp = RegExp.$1.replace("honya","hage") >>46
これRegExp.$1に何も入ってなくてもエラー吐かないんですね
こんな裏技あったとは、RegExpって気になってたので意識して使ってみます、ありがとうございます 条件が複雑なら、コードも複雑になるのが、当たり前。
そのまま素直にコードにすればよい
条件が複雑なのに、コードが単純になっていれば、間違っている。
コードを単純に出来るなら、条件も単純に出来るはず
2段階のプロセス。
1. 論理的に正しい証明を先にしてから(仕様書)、
2. その通りにコードに写す(実装)
2を修正したら、常に1に帰ってから、正しさを証明して、2を修正する。
常に、考える時は、1の仕様書で考える
&& を使ったら、if-else よりも、分かりにくい。
頭の中で、if-else に置き換えて、
論理的に矛盾が無いか、証明しないといけないから、余計に難しい。
つまり、見落とし・勘違い・バグが起こる、可能性が高くなる
もし、&& の右の式に、副作用があって、何かの状態を変える場合、
パッと見て、右式が実行されたか、されていないか、分かりにくい。
頭の中で、間違いが無いか、確かめるのが大変
論理的に正しいと証明するのが、一番難しい。
コードを書くよりも難しい ECMAでRegExp.$1などを無くそうかという議論がされてるときに
堂々と提案できるやつはどういう神経してるんだろう なくそうか、じゃなくて仕様に拡張として追加しようか、という案と反対意見でしょ
現時点ではただのレガシーな独自実装なんだから、勧めるのは確かに良くないよ やっぱそうだったかw
無くすわけないしな
全てのブラウザで使えて昔から
よく使われているものなんだから
仕様に追加するべきだろうな。
昔から広く実装されているからって
レガシーってことにはならんよ よく使われている……?
キチガイじみててめまいがしてくるなw HTML5っていうのはそもそも過去のブラウザを含めて各ブラウザで
同じようにレンダリングできるように仕様が固められたもの
仕様があってそれに準拠するようにブラウザを開発するのとは逆。
だからJavaScriptでも同じように動くことを目標としてるので
使われている機能は消さないし、標準化されてないのであれば
標準化する方向にすすむ。 >>54
「JavaScript」の仕様があればそうだし、現にWHATWGにはRegExpの拡張を含む「JavaScript」仕様があった
での削除された、その理由を考えると良い ちょっとスレチかも知れないのですが
<video src="blob:https://google.com/example">
のsrcのblobって何を表しているのでしょうか?blob先のURLにアクセスしてみても404なのですが data:image/png;base64,〜のようにDataURIは知ってると思うがそれの親戚だ
よりでかいバイナリデータを扱う場合に適しているAPI >>56
あー、考えたw 考えたw
はい、この話題はおしまい >>58
そういうことを聞いてるんじゃないだろ
説明が的はずれだな どこが的はずれなんだ?何を表してるって聞かれてバイナリオブジェクトってまんま答えなわけだが >>58
有難う御座います
すみません詳しい説明の乗ってるサイトとかってありますか?
404のページのURLが何を表してるのか分からなくて Q. srcのblobって何を表しているのでしょうか?
A1. バイナリデータを扱う場合に適しているAPIだ!
A2. バイナリオブジェクトだ!
的外れは続くよw メモリ上にあるオブジェクトに発行した一時的なIDみたいなもんでそのページのみで有効
普通にいつでもどこでもアクセス可能なURLではない >>64
有難う御座います
URLぽくなってるものの、実際には変数みたいなもので
"blob:https://google.com/example" が "https://movie.google.com/example.mp4" みたいな実URLに置き換えられて動画にアクセスしてるって感じで合ってますか? blob は Binary Large Object の略称だから的外れでもない >>65
動画サイトなら手軽にアクセスできなくしてるのだろう
直リンで見れるようなら自分が持ってる動画プレイヤーや
第三者サイトの動画プレイヤーやとかで見れてしまうわけで
そうすると広告のある自サイトに誘導出来ないから困っちゃうとかね Blobと言うのは要するにプログラム中に存在するファイルデータみたいなもんだよ
そんでそのURLはそのデータを参照させるためのもの
つまりブラウザ内に存在しているデータへのリンクであって、
そのデータはどこかから取ってきたものかもしれないが、
blobURLが外部へのURLに置き換わるわけではない Firefoxスレで質問してみたのですが答えが返って来なかったのでご存知の方お願いします
Fullscreen APIでflashをsrcに指定したiframe要素をフルスクリーン化したあと
フルスクリーン化したiframe内を左クリックすると元に戻っていたのですが
先日リリースされたFirefox55になってからこの方法では戻らなくなり
ESCキーを押した時に戻るようになりました
Firefox55でも引き続きフルスクリーン化の脱出に左クリックを使いたいのですが
何か情報ありませんでしょうか? その話は知らんけどflashは2020年には廃止されるようだな フルスクリーンのUIはずっと固まってないじゃん
Chromeでもオプション提供してずっと実験してるし
今たまたま望み通りいってることがこの先も上手くいくとは限らないと考えるべきだよ まあdocument.exitFullscreenをうまく使う位しか望みは無いんじゃないの? >>70-72
レスありがとうございます
Firefoxの場合設定いじったり加えると戻ったりするのですが今回は見当もつきませんでした
JavaScriptで制御できればいいんですけどね
iframe側はflash直接埋め込んでるのでJavaScript使えないので
フルスクリーンにしてフォーカスがiframe内に移ってしまうとどうしたらいいかわからないです
iframeが動作が軽快なのでiframeをどうしても使いたいため
objectやembed使う以外でなんかうまい解決策とかありそうでしょうか? iframeが動作が快適だと考えるのも危ないと思うよ
今ちょうど各ブラウザがiframeの優先度やどういうプロセスで動かすか大改造中だもの
で、iframeが同オリジンなら操作できるかもね >>74
iframeを参照するhtmlもiframeのsrcのflashも同じオリジンです
localhostで使っているものなので
そうするとflash側のソースをいじらないといけないんですかね
一応オープンソースなのでソースはいじろうと思えばいじれるのですが
ActionScriptはさっぱりです >>68
"blob:https://google.com/example"というのは、いったんブラウザメモリへダウンロードしたファイルへアクセスさせる変数ということで合ってますか?
しかし動画ファイルだと数ギガあったりするので
「はい今数ギガの動画を一瞬でダウンロードしたのであとはローカルでアクセスしてください」ってことになっておかしい気がするのですが
どこか認識が違ってるでしょうか? そうだけどメモリとかよりはもっと抽象的に考えたほうが良いとは思うよ
それで動画はチャンクで細切れに送られてくるものだから
MediaSource APIを使って随時結合していってるんじゃないの? >>77
そんなAPIがあるんですね。つまり動画を見てる時、再生時間が変わる度に
再生時間に合わせた細切れ動画をダウンロード→blob:http://~~のリンクを今ダウンロードした場所へ変更→blob:http://~~の内容が変わったことをブラウザが感知して新しい動画が再生される
という感じですかね
どうも有難う御座いました 完全に取り残されて、最新の情報に追いつけないのですが、
10年前のコードから、順を追って現在のコードに変えていきたいのですが、
何か最適な学習法やサイトありませんか? 必ず覚えておきたいという物は少ない
便利機能や雑多なもの、細かい難しい点についてはざっと眺めとくだけでいい
まずばletやconstだけど、どんな説明見ても一回で分かるだろう
次にclassだけど、これも重要な点はすぐ理解できると思う
一番の問題はPromiseかもしれない。
まあググって上の方のページ見とけば良いんだけど、
機能や使い方だけではなく、概念を理解しないといけないから
頭の柔軟度などに依存して難しいかもしれない
あとは本当に自分で自分のために使っていって慣れるしか無い
Promiseはこれから普及するasync関数で真価を発揮する
だからまだ取り残されては居ない
2020年くらいまでは猶予がある ESの変更については上記の通りだが、
Web APIについては、進化点を探すのが難しいかもしれない
取り敢えず自分が情報追うのに使っているのは、このChromeの実装計画
https://www.chromestatus.com/features
ここを左の下のVersion 1から順に選んで見ていったら良いかもしれない
追加だけでなく廃止された重要な点も書いてある 無理だとは思いますが、
Windowsのスタンバイ時、スタンバイ復帰時に、
開いていたブラウザでイベントを起こすことってできますか? 似たようなことはできるよ。
調べるの面倒なんで
例のWeb APIマニアさん頑張ってw 出来ると知っているのに「調べるのが面倒」とはどういう意味だ? 知ったかして、詳しい人が解説してくれるのを待つテクニックか 自分も気になって横から知ったか書き込みしたんだろうけど
スレの雰囲気も悪くなるしただ迷惑 横着な方法だけど、1秒毎に時間測って一定以上感覚開いていないか調べれば良いんじゃないの? Promise は過渡期に出来てしまったから、.method() な連結記法が鳥肌ものにダサい。 Promiseってなんじゃ?xhrじゃだめなんけ? Promiseは昔っから概念がある物だしESでも1年以上十分に練られただろうよ。 Promiseはasync-awaitと組み合わせてこそ最強 awaitぐらいasync無しに単体で使わせろよと思う >>92
時間掛かる処理の場合、続けてなにかやりたいときは
コールバックで渡すからやりたいことがいくつもあると
どんどんネストしていくことになるじゃん?
promiseはそうではなく、メソッドチェーンで繋いでも
ちゃんとひとつひとつの処理が終わるまで待ってくれるやーつ 今electronやっててjqueryで要素の編集とかで練習してんだけど
electronとjqueryの相性悪いのとjquery単体で画面パーツとか無いから新しいライブラリ探してるんだけどいいのないですかね??
色んな画面パーツとそこからのイベントが簡単に用意出来ればいいんだが >>97
reactとかvue.jsとかかね。vue.jsが無難 サーバサイドのデータをクライアント側で編集するタイプのアプリを作っていますが
サーバサイドの状態とクライアント側が前提としている状態が
ズレた時の問題について考えています
データ変更のたびに変わっていくバージョン情報を設定し
クライアントが読み書きする時にはサーバに自分が所有しているバージョン情報を渡し、
それがズレていたらサーバは差分情報をクライアントに返し、
クライアントは差分を自分に適応する、
というような方法がいいのではないかと思ったのですが
もっといい方法ありますか?
あとこういうアプリのサンプルが載ってる本とかあれば教えてください >>97
これ立ち読みしてみ。
https://www.amazon.co.jp/dp/4774188190
どんなクオリティであれ自分が勉強してる分野の紙の本が出てるってすばらしい!
検索しなきゃいけない量がめっちゃ減るからね。 >>99
Firebaseはどう?
PouchDBは? >>99
> サーバは差分情報をクライアントに返し、
> クライアントは差分を自分に適応する、
という部分の実装がどれだけ面倒かによるかな。クライアント側の1レコードの編集に掛かる手間がどれだけか、というのも考慮したい。
サーバのデータ(レコード)に最終更新日時を持たせて、それをバージョン情報として利用できる。
DBの更新条件に最終更新日時を付けてUPDATEして、更新されたレコード数を確認。もし0件だったら、最終更新日時が変更されていたことになる。
> あとこういうアプリのサンプルが載ってる本とかあれば教えてください
本とかは知らない。 >>98
おおおりがとう
>>100
これ実はフライングで買ってしまったんだけど解説に次々に知らんjsライブラリぶっこんで来るからソースコードの理解進まないから止めたわ、、 >>102-103
firebaseっていうの知らなかったんですが、
面倒な部分をgoogleに全部丸投げできるのめちゃくちゃ魅力的ですね
調べてみます
ありがとうございました 数秒ごとに細かく同期して、ずれたら単純に破棄するのが一番見易いよ setIntervalとかsetTimeoutって結構誤差出ませんか?
プチフリするようなしょぼい環境だったり
秒数カウントする(何回も呼ぶ)ものとかだと特にそんな感じがします
1/1000秒単位で正確なタイマーが欲しい場合って
別のタイマー使ってで数秒起きにズレ修正したりするのでしょうか? なんか高精度のタイマーあったろ?
Web APIマニアさんに後は任せた >>109
ありがとうございます
4msから指定可能であって(1ms指定しても4msになる)
1秒に設定したら1004msになるというわけではないですよね?
描画処理入れたら描画が終わってからタイマーが再びセットされる感じで
描画処理の分ずれていってるのかもしれないですね
ちょっとコード見なおして検証してみます >>107
> setIntervalとかsetTimeoutって結構誤差出ませんか?
誤差以前に、その2つは等価じゃないのになぜ同列として扱う?
・setInterval はコールバック関数の処理時間を待機せずにインターバルをおく
・setTimeoutの再帰呼び出しではコールバック関数の処理完了後にインターバルをおく >>108
「なんか高精度のタイマー」とは具体的に何ですか? Node.js にも、何種類か、タイマーがあったかも
高性能タイマーとは、ベンチマークで速いもの >>113
> Node.js にも、何種類か、タイマーがあったかも
>107の要件を満たせそうなタイマーは何?
> 高性能タイマーとは、ベンチマークで速いもの
タイマー処理で何がどう速くなるの? >>111
違いはそこじゃねーよw
setIntervalは登録したコールバックを定期的に何度も呼び出す
setTimeoutは登録したコールバックを一回だけ呼び出す >>115
いや、それは誰でも知ってるだろ
同列に扱っているから、定期的に関数を呼び出す処理を前提に質問していると思ったんだよ
それぐらい読み取ってくれ >>116
同列に扱ってなんかいないだろ
setIntervalが誤差でずれていく
setTimeoutが誤差でタイムアウトする時間がずれている
違う話だろ >>117
質問者の下記一文は読んだか?
> 秒数カウントする(何回も呼ぶ)ものとかだと特にそんな感じがします
これを実装する為には setTimeout を再帰呼び出して setInterval と似た振舞いにしなければならない
ここで、setTimeout と setInterval ではインターバルの取り方が違うだろ
要件次第でどちらを選択するかが決まる
目的に合う実装は一つしかないはずなのに、setTimeout と setInterval を一緒くたに問題視するのは違うだろ だな、setTimeout と setInterval の特性ぐらい勉強してね 特性の違いは理解してるように読めるけどな
読解力の問題か 情報が正しいのなら、自演云々はどうでもいい
煽りは害悪 >>119
では、>>115の回答が全てなのか?違うだろ?
回答で全てを語っているなんて誰も言ってない
>>120
知ってる もう不毛な議論な気がする
回答にイチャモンをつけるのが正義みたいな風潮は何とかならんのかな
否定するなら、さらに良い回答で塗りつぶすぐらいの気概がある方が健全だと思う
彼は言葉は悪いけど、回答しているだけ非難だけしている人より数段マシだよ 【環境】Win7-Pro,Chrome60.0
【何をしたいのか】NumLockキー状態の監視
リロードや何かの操作(イベント)の際のNumLockキーの状態を監視したいです。
例えば、リロードしたとき console.log("NumLockキーはOFF"); とかの出力をしたいです。
何か案はありますか? console.log("NumLockキーは"+event.getModifierState("NumLock")?"ON":"OFF"); eventはkeydownとかのKeyboardEventじゃないとgetModifierState()生えてないからリロードの時とかは無理だな あ、MouseEventにも生えてんのか。
じゃvar fresh = true;とかしといてbodyのmousemoveとかmouseoverとかのハンドラのなかにif(fresh){さっきのconsole文;fresh=false;}すればどうか。
スマホだから確認できんけど >>127-129
レスありがとうございます。 event.getModifierState("NumLock") で色々細工してみます すみません
javascriptの曖昧な型定義や柔軟性による複雑さは
jsDocコメントを書く事で回避できますでしょうか? 複雑な理由はお前のコードの問題だから
JsDocどころか例え型定義があったり柔軟性がなくても
何も回避できないよ。 >>131
jsdocて単なるJavadocのポーティングでしょ?ちゃんと書いたらそれにしたがったドキュメントを自動生成してくれるにすぎない。
flow(flowtype)やtypescriptなら型検査してくれるよ。
お手軽に始めるならflowがいいんじゃない?typescriptはちょっと(週末潰すくらい)気合い要る。 ありがとうございます。
>>132
そうですね。
その場凌ぎのプロパティ追加やコールバックの嵐等、気を付けます。
>>133
そうですね。flowやtypescriptを使って安心するの良いかもです。
しかしjavascriptはアセンブラ言語みたいな扱いをされているのが
何とも面白いですね。 それはES2015が出る前の考え方だよ
今はWASMもあるし今更そういうこと言うやつは居ない <p id="hahaha"></p>
↑このpタグのみになにか処理したい場合のセレクタの書き方おしえて。
pタグ かつ id="hahaha"ってどう記述すればいい? idってのはhtml中に1個しか出てきちゃいけないもんだぞ
pタグであるかどうかなんて関係なく#hahahaだけでいい
まぁ別にp #hahahaとかでもいいけど document.getelementbyidで取得とかは? 普通に
document.querySelector('#hahaha');
でいいんじゃね
速度が問題になるほどかどうかだけど idひとつしかつけちゃいけないって言っても、つけたから何かエラーが起きるわけでもないし普通に2つ以上についてることもある
querySelectorでp#hahahaでいいんじゃない 関数の有無をチェックし、その関数を実行するということをやりたいのですが、
fCheckだけなら以下で済みますが
if ( typeof fCheck == "function") {
fCheck();
}
fCheckの部分を変数に入れるなどして使いまわしたい場合は、どのように書けば良いでしょうか? >>141
そのコードの場合、fCheckに関数以外が入っている(つまりバグ)の場合に
スルーされてしまうので良くない。
if (fCheck) {
fCheck();
}
の方が良い
さらにいうなら
fCheck && fCheck();
でもよい
また予め fCheck = fCheck || function() {} などとしておけば、
fCheck(); とするだけでよくなる >>140
それはhtmlをまず直せって話だな
javascriptってあたりよそのhtmlいじるわけじゃないんでしょうし >142
なんと・・・
勉強してきます、ありがとうございました >>140
idは一意の値であるべき。
重複してたらバグと考え、エラーにならないなら重複しても良いのではという浅い考えは捨て去るべし。
idとclassの存在意義を理解しろ。 >>145>>143
いやもうすでに重複して使ってるサイトは山ほどあるんだから
そんなこと言ったってどうしようもないじゃないか id重複は DOM 的には最初の id 以外は無視され、 CSS 的には詳細度の高い class みたいなもの
自動的に validator を通すようにしとけば id重複は自然となくなる フォームはnameで区別するのだから
idは基本的に使う必要はない。 >>136,146
他サイトで重複idがあることは、自サイトで重複idを使うことの理由にはならない
「重複して使ってるサイトは山ほどある」(採用例が多い)も観測範囲によって変わってくる主観的なものだし、仮に信頼できる統計で採用例が多かったとしても、「使ってよい」かの判断は別
文法違反なんだから
https://momdo.github.io/html/dom.html#global-attributes
自分の管轄外のサイトにJavaScriptを適用するのであればどうしようもないが、そういう前提条件があるのなら質問の冒頭に付け加えるべきだし、<p id="hahaha">, <div id="hahaha"> のどちらが先に存在するのかによって変わってくる
<p id="hahaha"> が初めに来ることが保証されているのなら、getElementById
id="hahaha" が出現する順番がランダム or <p id="hahaha"> が2番目以降に出現し、<p id="hahaha"> を特定したいのならば、document.querySelectorAll('p[id="hahaha"]').forEach() 一応、付け加えておくと、ここはWeb制作板だから、何の前提もなければ、回答者は自サイトのコードを書くものと判断する
従って、「id は一意の値であるべき」の回答は正しい >>136はスレ間違えたのか?
礼も返事もないし、HTMLスレにでも行ったんじゃないか? ローカルルールでIDの乱用はいかんよ
振り込め詐欺かよw うちの社内のコーディング規約ではcssのためのidは使用禁止にしてる
idはjsのために空けとくこと
cssでidって使わなくてもclassで問題ないしね
レンダリング時の速度も変わらないし
jsではid指定とclass指定では速度が全然違うからid使うようにしてる
だから同一idが複数使われることがないな
もし使うやつがいたらこの仕事やめろってぐらい異常 まあ確かに、わざわざ重複させる必要性は分からないけど
おそらくjqueryが一般化されて第二のクラスみたいに使う人が増えたんだろうな 重複して使ってるサイトなんて本当にあるのか?
繰り返しで同じパーツ吐き出す場合に
ひな形にid入れてたりするとそうなるのかもしれないけど
それはテンプレート作ったやつがアフォーだっただけやで 他人のサイトなんてグリモンスクリプトとか作ってんきゃあんまり関係ない話だけど
youtubeとかアホみたいに重複してるよ >>155
なんでそこでjQueryがでてくるのかわからんのだけど?
jQueryのセレクタは条件が揃えばquerySelectorAllを使うわけで
重複したIDの挙動はDOM APIと同じだよ >>157
何しれーっと嘘ついてるの?
idの数が多いから嘘がバレないと思った? googleがvalidなhtml書いた試しなんてないじゃん
プログラム上の利便性優先でルールなんてお構いなしでなんでも使う
検索エンジン握ってるだけあってどんな糞みたいなHTMLでも最上位に来るし
SEOなんて考慮する必要がないからやりたい放題 >>154
俺の場合、JavaScriptからでも極力IDは使用しないようにしている。
なぜならコンポーネントという考えでDOMを扱ってるから。
通常コンポーネントは複数存在する。だからIDではなくクラスを使用しなければいけない。
大抵の処理はこのコンポーネントの中で閉じてしまうのでIDの出番がない。
コンポーネント化した要素同士をつなぐときにはIDでいいっちゃいいんだけど、
IDでやっちゃうとコンポーネント間が密結合になってしまう。
だからイベント等を使って関節的に通信するようにする。
そうするとIDを使ってつなぐ必要は殆ど無くなる。
速度に関して言えば、classが遅くても今のブラウザは高速で
実用上問題が発生したこともないので考えるだけ無駄だと思ってる
もしclassを使って遅くなるとしたら1ページ内のタグが多すぎ
IDを使ったほうが良いと思える場所は、ページの区別だな。
bodyにidを振る。だからページ内でユニークになるのではなくサイト内でユニークになる。
何のためかというと、特定のページだけに特殊なcssやjavascriptを割り当てたい時。
通常はコンポーネント化するから必要なのだが、まあ極稀に想定外の自体で
特定のページだけ緊急に修正しなければいけないとかで便利なのよ id 2文字
name 4文字
class 5文字
これ結構重要 >>162
今見たけど52個ぐらい使われてるIDあった
YouTubeの内容はブラウザとかによって変わるかも >>165
ねーよw
idを使ったせいで保守が100倍大変になる事はよくある
絶対にclassがいい
IDを使うのはページ内アンカー用のみ >>164
リンクアンカーにはどうしても必要にならないか? >>168
> リンクアンカーにはどうしても必要にならないか?
なるけど、それJavaScriptのためのIDじゃないよね? そうだなあ
そもそもJS使うのにIDを多用するようになったのって
クエリセレクタが使えるようになる以前に
人にJSを説明するようなコードが無駄に煩雑にならんように
getElementByIdを多用してたからみたいな側面あるし >idを使ったせいで保守が100倍大変になる事はよくある
>絶対にclassがいい
idを使うようなケースをclassに置き換えたところで
それは一意なclass名を持つclassになるだけであって
むしろ5文字になる分保守は面倒になるだけだろ >>172
逆じゃね?
idで済むものをclassに置き換えるのは楽だけど
classで出来る重複はidでは不可能なので大変、つー話では? >idで済むものをclassに置き換えるのは楽だけど
より制約が強いのはidのほうであって
idで済むという表現はおかしい
idじゃないと出来ないからidにしてると考えるべき >>174
それはそうだろうけど
そういう話じゃないんじゃない? ま、htmlの話だし、出来ればなんでもいいってことで、
そろそろ次の話題頼むわ。 初心者なんですが、皆様に質問です。
スマホサイトでonclikで表示させたサイトを一番後ろで表示させたいのですが、どのように記述
すればよいですか?
今使用しているのは
<script>
function openWin2() {
window.open('http', 'bbb', 'left=50,top=0,width=520,height=650');
window.open('http', 'aaa', 'left=50,top=0,width=520,height=650');
subWindow.blur();
return ture;
}
</script>
foucusを使うといいよ!との助言を前に他のサイトで頂いたのですが、何度やってもうまくいかず。。。 >>180
メインとなるウインドウを開かせると同時にバッグラウンドで広告ウインドウを開かせようという腹か
迷惑スクリプトの類だな ついにmodule importがchromeに実装されたな
主要ブラウザ全ての実装されたら切り替えていっても良いのかね dynamic importは?
こっちのほうもあくしてくれ あれdefault exportされたやつ扱うのがクソ面倒なのどうにかなった? イベントの処理を考えると
JavaScriptも内部に複数のプロセスみたいなものを持っていると思うんですが
JavaScript内部のプロセスみたいなもののことを何と言いますか? いや、そういうことじゃないんです
OSでいうスレッドやプロセスに相当する
複数の「処理の流れ」をJavaScriptは内部で持ってますよね?
知りたいのはそれの名前です イベントループでググってみましたが、ちょっと違う感じがします
イベントが発生すると、
それまでの処理は中断されて
適宜イベントリスナが呼び出されたりしますが
知りたいのはそのおのおのの処理の流れの名称です
イベントループというのはイベントを実現するための全体のメカニズムのことですよね >>194
イベントリスナかな?
Javascriptならイベントハンドラのほうがしっくり来るか。 JS 言語としてのスレッド的なものは
「promise の実装は実装依存とする」
みたいに定義されていないんじゃないか? >>189,191
そもそも、イベントはマルチスレッドではないのだが
JavaScript実装は様々な仕様の集合体であり、用語は各々の仕様書の中で完結する
つまり、全仕様に通用する用語はない > 複数のプロセス それまでの処理は中断されて
前提の部分から間違ってるので、思ってるものが見つからないのは当然 >>194
イベントはアプリケーションに依存するタスク通信の確立
それに対してイベントハンドラでサブルーチンを処理する javascriptが有効の場合のみ表示するには
1行ずつdocument.write('');で囲ってやる以外に方法はないんですか?
無効の場合は<noscript></noscript>でまとめて囲えるので簡単だけど >>201
appendChild, insertAdjacentHTML document.write() を使うと、<HTML> 部分が、一択すべて削除されてから、
JavaScript でページが作られるから、
普通、document.write() を使わない このhonya1だけをいじりたいのですが、何か方法ありませんか?
jqueryセレクターで色々やったんですが出来ませんでした
<div>
honya1
<p>honya2</p>
</div> こんな感じだったりもします
<div>
honya1
<p>honya2</p>
honya3
<p>honya4</p>
</div> >javascriptが有効の場合のみ表示する
で、なんでdocument.writeだけと思ったのかは謎だが
出力処理それしか知らんかったってことか?
innerHTMLでも使っときゃいいんじゃね >>203>>206
ほとんどの参考書は出力はdocument.writeで教えているけど >>203
タイミングによるだろ
使わないのは確かだが >>201
> javascriptが有効の場合のみ表示するには
> 1行ずつdocument.write('');で囲ってやる以外に方法はないんですか?
そういう時によく使われているのが
https://modernizr.com/
表示・非表示というのは見た目の問題なのでCSSでやるのが鉄則
どういう仕組かは俺が説明するよりも
modernizrを調べてもらったほうが早い
JavaScriptが有効な場合だけじゃなくて
いろんなものが有効な場合か?が判定できる。 >>209
でも例えばセレクトフォームで1を選択した場合に入力フォームを表示
それ以外は非表示っていうような条件付きの表示にしたい場合
cssだと対処できないんだよな >>210
できるよ?
「セレクトフォーム+入力フォーム」というコンポーネントが有るんでしょ?
セレクトフォームで1を選択した時に、そのコンポーネントの状態を
変えればいいだけだよ。
JavaScriptでやるのは状態(classやdata-*)の設定だけ
見た目はCSSで制御する promiseに関する疑問です
thenメソッドに、promiseオブジェクトを返す関数を渡すと、
thenを更に後ろに書いてメソッドチェーンに出来ますが
その関数が実行されるのは前の処理が終わったタイミングのはずですよね?
thenメソッドがメソッドチェーンで実行されるのは
promiseオブジェクトが生成されるより前のはずなのに、
何でメソッドチェーンに出来るのでしょうか? 実際に即実行されるのはthenで、thenがpromiseを返しているからだよ
thenに渡した関数はpromiseが解決するまで保持される >>212
then()が実行されるのは、「コールバック関数を呼び出した時」だから 正確ではなかったな
「then()に渡された関数が実行されるのは、Promise内のコールバック関数が呼び出した時だから」 >>213
thenに渡した関数がpromiseを生成して返さなければいけないと思っていたのですが
そうじゃないんですね
でもthenメソッドがpromiseを生成するにしても
promiseはコンストラクタ内で非同期処理をすぐに実行するので
生成された時点で非同期処理が走ってしまうような気がします
内部動作が謎です・・
>>215
いや、それは分かってるつもりです・・ >>204-205
要素配下のテキストを取得/設定するには?(text/html)
http://www.buildinsider.net/web/jqueryref/004
>>216
>非同期処理をすぐに実行するので
すぐには実行しないだろ。
キューに入れるだけだろ Promiseコンストラクタやthenメソッドの振る舞いが、プロミスの本質を示してると考えるからそうなる
それらの関数はたまたまそういう振る舞いになっているだけであって、
もっと言えば便利で都合のいいように置かれているだけであって、
それらはプロミスの概念を為すための必然な設計ではないし、
Promiseコンストラクタがこういう挙動をするから、thenがどうこうだとか、プロミスってこういうものと言えるものではない
PromiseコンストラクタはPromiseコンストラクタの挙動をして便利にプロミスを作り、
プロミスからはthenメソッドがthenメソッドの挙動をして便利にプロミスを作るというだけのこと
そこを難しく考える必要は全くない >>216
それが分かっているなら、「then()が呼び出された時」と「コールバック関数が呼び出された時」が同じではないことも分かると思うのだが >>217
見たのですが、それはただの$(ele).text()と$(ele).html()の紹介なので
教えてもらって恐縮ですが求めているものとは違うようです
改めて>>204-205分かる方いたらお願いします >>220
$("<div>honya1<p>honya2</p></div>").contents().get(0).textContent = "honya3"; あ、jQueryならcontents()でもいいか >>220
$('div').contents()[0].replaceWith('ここを変更'); idなりclassなりつけとけよ
htmlが不変ならいいけど
CMSとかでget0)とかで取るのはバグの原因 >>221>>224
contents() まさにこれです!
ドンピシャです、contents() 凄い便利
長年悩んで来たことだったんで目から鱗です
ありがとうございました 同じプリミティブ型の値が与えられたら同じオブジェクトを返すようなことは可能?
typeof(MyObject(5)) === "object" と MyObject(5) === MyObject(5) のどちらもtrueになって欲しい
オブジェクトを一時的に保存しておくのは無しで 保存しちゃダメならインスタンスが同一にならないから無理じゃね? >>229
そういうことをしたいがためにFlyweightパターンがある訳だが実装を制限するなら知らん ユーザー名とデータを紐付けた上でWeakMapでキャッシュさせたかったのですが自前で実装することにします
ありがとうございました >>233
>>229で言ってるオブジェクトをWeakMapのキーにしたいのか?
だったらやめとけ
保存しない(変数に入れて持つこともしない)なら無理だ
それにWeakMap自体サポートしてるブラウザ少ないし、仕様固まってないからサポートしてても変更されるかもしれん
そんなもの使ったらトラブルのもとだぞ >>229
これってImmutable.jsでできんじゃないかな。 いや、Immutableは内部で保持してる
>>229は「一時的に保存しておくのは無し」ってことなので保持しちゃダメ
なので不可能 >>229
無理なんだが、その要件でなぜObject型が欲しいのかが謎
プリミティブ型とリファレンス型の違いを覚えた後に、設計から考え直した方がいい https://jser.info/post/77696682011/es6-promises/
>then の返り値(*1)に対してもthen (next-then)で処理を追加することができる。
>next-then に設定されたコールバックは
>*1の値がsettles (succeeds/fails)になった時に呼ばれる
と言うことなので、
thenが生成するpromiseのコンストラクタには
thenに渡したonFulfilledとonRejectedをラップした関数が渡される
その関数は、親promiseのsettledな状態変化をコールバックで受け取ってから、
親promiseの変化に状態に即した処理を開始する
という感じでしょうか?
thenが生成するpromiseを、
単純にthenの引数でnewしただけのpromiseと思っていたので、
「???」となっていましたが、もう少し複雑なものなのでしょうね なんかPromiseで悩んでいるようだな?
話の流れを読まずに語るぞ
まず一番Promiseっぽくない使い方だな
function foo() {
Promise.resolve(0)
.then(function(zero) { return 1; })
.then(function(one) { return 2; })
.then(function(two) { return 3; })
.then(function(three) { return 'end'; })
.catch(function(e) { console.log(e) });
console.log('start')
}
最初に実行されるのは start の部分だ。
なぜならPromise.resolveっていうのは内部で
setTimeoutを使っている・・・からだと思えばいい。
そして、Promise.resolve(0)をスタートに、
関数が上から順番に実行されていくわけだ。
戻り値は次の関数の引数になるぞ
ここで言いたいのは、上から順番にthenの中身が実行されていくということだけだ 次にPromiseを使うが意味がない使い方の例を示すぞ
function foo() {
Promise.resolve(0)
.then(function(zero) { return Promise.resolve(1); })
.then(function(one) { return Promise.resolve(2); })
.then(function(two) { return Promise.resolve(3); })
.then(function(three) { return Promise.resolve('end'); })
.catch(function(e) { console.log(e) });
console.log('start')
}
動きとしては一緒だ。だけど戻り値が単なる値ではなく
Promiseオブジェクトになったということだ。
これは>>239と全く同じ動きをする。
というよりthenが引数の関数を呼び出すだろ?
その戻り値がPromiseオブジェクト以外なら、
内部でPromise.resolveを実行して
Promiseオブジェクトに変換しているわけだ。 次にもうちょっとマシな例を示すぞ
function foo() {
Promise.resolve(0)
.then(function(zero) { return new Promise(function(resolve, reject) { resolve(1) }; })
.then(function(one) { return new Promise(function(resolve, reject) { resolve(2) }; })
.then(function(two) { return new Promise(function(resolve, reject) { resolve(3) }; })
.then(function(three) { return new Promise(function(resolve, reject) { resolve('end') }; })
.catch(function(e) { console.log(e) });
console.log('start')
}
>>240では関数が呼ばれたら、すぐにPromise.resolve()を
呼び出してPromiseオブジェクトを返していたが、
今回はnewでPromiseオブジェクトを返す例だ。
new されたPromiseオブジェクトは引数の関数を実行する。
引数の関数はすぐにresolveする。
これも全く同じ動きをする。 では最後にクイズだ
function foo() {
Promise.resolve(0)
.then(function(zero) { return new Promise(function(resolve, reject) { }; })
.then(function(one) { return new Promise(function(resolve, reject) { }; })
.then(function(two) { return new Promise(function(resolve, reject) { }; })
.then(function(three) { return new Promise(function(resolve, reject) { }; })
.catch(function(e) { console.log(e) });
console.log('start')
}
このようにしたらどうなるだろうか?
答は、エラーはでないが次に進むことはない処理になる。
.thenの引数の関数は、たしかにPromiseオブジェクトを返している。この関数自体は問題ない。
だが、そのPromiseオブジェクトはresolveもrejectも実行しないから
次に進むことはない。そこで止まってしまう。
逆にすぐにresolve()するのではなくsetTimeoutでも何でもいいが
何かの処理の後にresolve()するようにすれば・・・?
そう、非同期で実行される処理が終わってから
次に進むわけだよ。 せっかく無料で公開してくれてんだからazuのpromiseの本でも読みなよ firebaseについて勉強中です
サーバーのアクセスに必要なパラメータがソースで丸見えになりますが
これを使って他人にデータをいじられる可能性はないのでしょうか? それはそうなんですが認証させる部分も丸見えなのが気になります
ソースをコピーして他のサイトを立ち上げたら、
そこからも普通にデータベースを操作出来てしまうような? >>246
やればいい
本当に知りたければセキュリティを本気で学ぶ必要がある
一応言っておくと、その観点は結構いい線いってる
しかし当然のようにその観点からの攻撃はちゃんと守られている
(下手なアップデートで攻撃され放題になることもある)
偉そうに言ってるけど、俺はその辺無理と思ってフレームワークに逃げた口だ >>246
認証してアクセス権が無ければ読み書き不可に出来るし
書き込みは可能だが変更は不可能にする事は出来るし
キーを知らなければアクセス出来ないようにも出来るし
あるキーをデータに含んでないと書き込めないようにも出来る
面倒ではあるがやりようによっては大体のことが出来るぞ >>247-248
対策の方法はあるんですね
ではこのまま勉強していきます
ありがとうございました function wait(ms){
return new Promise((resolve)=>{
setTimeout(()=>{
resolve();
},ms);
});
}
wait(1000).then(()=>{
console.log('done');
});
こんな感じの指定した時間待つだけのPromiseを提供しているユーティリティーライブラリで
いいのがあれば教えて下さい >>250
bluebirdのPromise.delay
http://bluebirdjs.com/docs/api/promise.delay.html
残念なことに標準のPromiseは基本的な機能しか
提供しないとされてしまったので、より実用的なものが
ほしければライブラリに依存しなくてはいけない >>250じゃないですが、setTimeoutではなく
setIntervalを使って定期的にPromiseが
発動するようなものはないですか? >>253
promise は根本から一度限りのイベント用にあるもの
setInterval じゃだめなのは何故? そういう用途ならEventEmitterでも使った方がいいんじゃない kanto.htmlの中で saitama.jsとchiba.jsとtokyo.jsとyamanashi.js を読み込んでるのだけど、
yamanashi.jsを外したいのだが、kanto.htmlのどの部分でyamanashi.jsを使ってるのか分からなくなってしまった。
どこの部分でyamanashi.jsを使ってるのか特定する方法はありますか?
Chromeなどのデバッグツールとか何でもよいので、何か方法があれば教えてください。 >>251
ライブラリにあるものはライブラリを使った方が保守性が上がりますし
ライブラリの他の機能も視野に入ってくるのがいいです
>>252
ありがとうございます
見てみます >>256
デバッグして、yamanashi.js の中の、すべての関数に、break point を張って、
どこから呼ばれたか確かめる >>255
EventEmitterは2とか3とかあるようですが
どれを使うのが良いのでしょうか? >>257
ライブラリに機能を求めるというよりは
効率を求める意味で使用した方がいいよ >>260
機能の2と速度の3みたいな
あとはライブラリスレとかで聞いてね >>258
その頃はまだ実装されたばかりだし、Promiseのなんちゃってポリフィルと違って、
状態を外に見せないかつメモリリークを起こさないかつ継承可能にするため
内部的にWeakMapと同等のものを用いてるのと、継承可能やPromise Likeの受け入れとPromiseとの区別の処理なんかでどうしても簡素ななんちゃってPromiseよりは遅くなる可能性がある arrow関数式で
a => a+1
と式を書いた時にa+1が返ってくるのは分かりますが
a => a=a+1
と代入文を書いても、a+1が返ってくるのは何故でしょうか? 最後に評価したものをreturnとするから
この場合はaに代入した値がa+1だから クライアントサイドで、JavaScriptのみでSMTP使ってメール送信できますかね?
情報が古いのですが、ActiveXかなんか使ってIEなら出来るようですが、
ChromeとかFirefoxとかでも可能な、普通のJavaScriptのAPIがあればそれでやりたいです。
SMTPサーバを指定して、ログインIDやパスワード入れて使うのを想定してます。
どう考えてもセキュリティ上厳しいような気はしますが。
サーバサイドでやると、どうしてもリクエストが多くなるため、
スパマー扱いされて、サーバのIPがSMTPサーバに拒否されるおそれがあるので、
各クライアントで送信するようしたいです。 >>266-267
ありがとうございます
言われてみればそうですね
値を返すので、JavaScriptの代入は文ではなく式ということになるのでしょう
=を代入演算子と呼んでますし Storybookを使ってreact componentを作ってるんですが
ダミーデータとして文字列とか適当に毎回入力するのが面倒なんですが
ダミーデータ自動生成ライブラリってないですかね? >>272
自己レスです faker.jsってありましたね。 >>268
この辺とか
ttp://artemyankov.com/tcp-client-for-browsers/ firebaseはオフラインになっていても後から同期してくれるのがメリットですが
この機能に任せられるのって、
編集がバッティングする可能性がない場合だけですよね?
チャットアプリなんかは、ただ追加しあうだけなので問題になりませんが
同じアイテムを同時に編集できる場合や
階層構造を変更できる場合、
時間差同期によってデータが不整合をおこして恒久的に破壊されかねないと思います
そういうことはトランザクションを使えば避けられるのではないかと思いますが
そうなると使えるのはオンラインの時だけになりますか? >>275
なるほど
宣言代入はそういう挙動をするんですね
考えたことなかったです
ありがとうございます ttp://qiita.com/Layzie/items/465e715dae14e2f601de
これありますけどnew Stringで作られたのは文字列じゃないんだから
typeofで型チェックしても問題ないと思いますけど違いますか?
const a = 'a';
const b = new String('a');
console.log(a == b); // true
console.log(a === b); // false
console.log(a); // a
console.log(b); // [String: 'a']
console.log(typeof a); // string
console.log(typeof b); // object >>278
それは、他の言語だとそれは当然のようにstringのはずので、その感覚とずれるというお話なのだ
ちなみにjsはいろんなところで型が他の言語とずれていて、型チェックが妙に難しくなっている
もしjs以外使ったこと無いなら
>これありますけどnew Stringで作られたのは文字列じゃないんだから
>typeofで型チェックしても問題ないと思いますけど違いますか?
これ以外に言いようはないと思うし、それはそれで良いことだと思う
ただjsの型は他言語とは大きく違うということは覚えておいたほうが良い > ちなみにjsはいろんなところで型が他の言語とずれていて、型チェックが妙に難しくなっている
他の言語とはなに?
どのように難しいの? >>281
一般的に使用者の多いvba、webで親和性が高くあってほしいはずのphpで比較してみる。cも昔使ってたけど型の詳細忘れた、スマン
javaは詳しくないので知らん
配列。普通arrayだけど、jsはobject。何の配列でもobjectになる。objectの配列もobject。これが大体一番厄介なパターン。
まぁそれはlengthで分かるけど、とにかくnullがやばい。jsではundefindで名前が違うだけかと思えば、そうでもない。nullも存在する
未定義はundefind //了解
domで該当なしがnull //はい
var undefind=1; //!?!?!?!!?
console.log(undefind); //!?!?!?!!?
http://tokidoki-web.com/2014/12/javascript%E3%81%AEnull%E3%81%A8undefined%E3%81%AE%E5%8C%BA%E5%88%A5%E3%81%A8%E4%BD%BF%E3%81%84%E5%88%86%E3%81%91%E3%82%92%E3%81%BE%E3%81%A8%E3%82%81%E3%81%A6%E3%82%84%E3%82%93%E3%82%88/
http://d.hatena.ne.jp/mindcat/20100512/1273683917
http://qiita.com/jkr_2255/items/cfce9b4419d5de32ba2b
色々といったけど、objectとundifendだけだったね。まぁこの2つはマジでやばいってことだけ覚えておいてほしい vbaとphpが特殊なだけでは?
Cだったらどうなる? >>283
特殊といえば言語は全部特殊。言語にはそれぞれ特徴がある。もし特徴がなければ別言語で良くね、になる
使用者の多いvba、phpはデファクトスタンダードとはいえなくとも、感覚的な基準にはなっている
ただ知る限り、未定義であるundefindに代入できる言語は存在しない 代入できなくなったから、普通の言語になったってことだね >>287
さぁ?
chrome+google.co.jpで試したけど
undefined=1
1
だとさ console.log(undefined=1) //1
console.log(undefined) //undefined
こういう話じゃないの? >>290
あぁごめん、そういうことだった
代入はできるけど取得はできないのか
な、なんだこれ… 'cloneNode' in document // true
document.hasOwnProperty('cloneNode') // false
どうしてですか? cloneNodeはdocumentではなくNodeの持つプロパティであって
hasOwnPropertyは継承元まで遡らないからだよ 横だけど、以下もfalseになる。なんでだー(モヤモヤァッ
Object.hasOwnProperty(Node,'cloneNode')
false なるほどそういうことでしたか
ありがとうございました もう一つ質問させてください
"SVGAnimatedAngle" in window // true
window.hasOwnProperty("SVGAnimatedAngle") // true
なのに
for (let i in window)console.log(i)
や
Object.keys(window)に
SVGAnimatedAngleが含まれない出力されないのは何ででしょうか? "use strict"; undefined = 1; // error!
はい >>291
違う
代入はできていないけど、
式の返り値は当然右辺の物を返す
例えばobj.setというセッターが合ったとして、
a = obj.set = 1 というのがあったら
obj.setの状態と関係なくaは1になるのが自然でしょ、
つまりx = yの式は例外が起きない限り必ずyを返す >>294
使い方が間違っている
Node.prototype.hasOwnProperty('cloneNode') >>296
列挙不可に設定されているから
Object.getOwnPropertyDescriptor(window,'SVGAnimatedAngle').enumerable //false >>300
なるほどそうことでしたか
列挙可と列挙不可の両方取得する方法ってないですかね? Object.getOwnPropertyNames(target)
↓
Object.getOwnPropertyNames(target.__proto__)
↓
Object.getOwnPropertyNames(target.__proto__.__proto__) >>278
>new String('a');
まぎらわしいから、なるべく、文字列リテラルを使う jqueryで
複数の対象に同じイベントリスナーを付けるにはどうすればいいですか? $関数の引き数に、複数の対象にマッチするセレクタを書けばいいだけ
jQueryはそもそも複数の対象に同じイベントリスナーをつけるもの。
対象が1個しかないとか、まったくない(0個)の場合もあるけれど、
それはたまたまそうなっただけで、コード的には複数の対象に
マッチしたと仮定して書くのが良い。 ありがとうございます
クラスを設定してonしました フレームワークとか使うとwindowオブジェクトが汚されてしまうんですが
汚された後から汚されてないwindowオブジェクトを取得する方法を教えてください 何のためにかによって方法は変わってくるが
iframeのcontentWindowを取ればいい virtual domっていうのは
const a = [
1,
2,
];
const e = [
document.createElement('div'),
document.createElement('div'),
];
e.textContent = a[0];
e.textContent = a[1];
document.body.appendChild(e);
というコードを用意して
何らかの形でa[1]を更新したらe[1]のtextContentを書き換えるって理解でいいですか?
reactが重いのはデータ毎にDOMをメモリに記録してるからですかね? 同じディレクトリにあるjsonファイルを
JavaScriptから読み込むにはどうすればいいのでしょうか? >>310
そんな単純ではない
多くの場合DOMと1:1で対応する様な独自ツリーを持っていて
その変更がある程度たまった時点で
必要最低限の変更をDOMに反映させることで
抽象化と同時にパフォーマンスを確保している
それが重いというのは使い方が間違っているか、
使い所が間違っているだけ (() => {
'use strict';
let i = 1;
const f = () => {
let i = 2; // Error - 'i' is already declared in the upper scope. (no-shadow)
i = 22;
console.log(i);
};
i = 11;
f();
console.log(i);
})();
eslintでチェックすると6行目でError - 'i' is already declared in the upper scope. (no-shadow)
が出るんですがこれはダメな書き方なんでしょうか? jQuery みたいに、一々、DOM にアクセスしないから速い。
一々、DOM から、CSS クラスの状態を取得して、コーディングしなくてもよい
ただし、速いと言うことは、メモリを大量に使う。
ブラウザの状態を、自分のメモリ内に持つため
常に、速さ・メモリ使用量は、反比例する >>315
それは、そういうルールなんだろ
eslint のルール一覧表でも見れば?
自分で、好きなルールも設定できるだろうし
君や会社・使うツール、次第 メモリ1GBの環境でreact使われているサイト開くと重い
特にqiitaのトップページ >>315
文法的に問題はないが、例えばlet i = 2; を記述し忘れたとしても動いてしまって二回22が出力されてしまうだろ?
そういった事を防ぐために同じ変数を使わないようにしようって事
オプションで文法的に間違いではないならエラー出ないようにも出来るし全部許可してしまうことも出来る 指定した要素の文字列を選択状態にするにはどうしたらいいですか?
フォーム部品はjqueryでselect()すればいいですが
普通のdivの中の文字列を選択したいです >>320
createRange()でレンジを作って
selectNodeContents()にdivを放り込んでレンジの範囲を決めて
getSelection()でセレクションオブジェクト作って
addRange()でさっき作ったレンジをどーん! >>316
DOM操作をしないから速いと言ったほうが正確だろ
DOM操作をするのはjQueryだけではない
通常のブラウザのDOM APIを使ってもDOM操作になる。
>>310
一般的にブラウザのDOM APIというのは遅い。(jQuery関係なく)
もちろんReactでも最終的にはブラウザのDOM APIを呼び出すのだが、
ブラウザのDOM APIは遅いので必要最小限の呼び出し回数になるようになっている。
というのは内部の仕組み
ブラウザのDOM APIは知っての通り機能貧弱でデータバインディングなどの機能がない。
また仕様が決まってるから、拡張することもできない。
Virtual DOMを使うことで、ブラウザのDOMの制限に縛られない
独自機能のDOMを作ることができる。イベントハンドラの拡張や
データバインディングなどの機能も組み混むことができる。
データ的にはJavaScriptのデータだからブラウザ無くてもVirtual DOMを使うことができるし
ブラウザいらないのでテストも容易になる。
だけどVirtual DOMの段階ではただのデータなのでそれをブラウザのDOMに反映する必要がある。
その時、ブラウザの表示内容を全部クリアして遅いDOM APIを使ってレンダリングするのは遅くなるから
差分だけを反映させましょう。というのが内部の仕組み
だけどDOM APIは遅いが、そんなにDOM APIの呼び出し回数が多くないようなサイトの場合は
速いというより遅くならない仕組みと言っても言いすぎじゃないと思う(ただしメモリは食うから重くなる)
Virtual DOMを使うということはブラウザのDOM APIを使わないということだから学習コストは高い。
これからは、そもそもDOM APIを呼び出す必要がないサイトはjQuery
学習コストを払ってもReact(や他フレームワーク)を使う理由があればフレームワークの
二極化になると思う。どちらにしろDOM APIを直接呼びだす時代は終わったかな。 Virtual DOMでもDOM API使っているのでは?
Virtual DOMというのはライブラリであってそういう仕様があるわけじゃないでしょ > Virtual DOMを使うということはブラウザのDOM APIを使わないということだから学習コストは高い。
この部分はプログラマがという意味
プログラマがReactなどを使ってVirtual DOMを使うということは
ブラウザのDOM APIを使ったプログラミングをしないということである。
要はReactなどを使えば document.getElementById とか
使わなくなるってことよ。 select要素の選択アイテムをjqueryで変更し、
設定しておいたonchangeイベントを発火させるにはどうすればいいのでしょうか? Reactの内部の仕様はともかく自作のタグが作れる感覚は楽しい。
どっちかというとreduxの理解のほうが学習コスト高め。 自作のタグなんてstylesheet書くだけでいいんやで google保守大変そうだな
元ソースも相当汚いだろあれ Workletも揃い始めてきたし、メニーコアの時代はまだ遠いけど
ゆくゆくは要素毎にレイアウトとペイントを数十のコアで分担するようになるだろうな
だから今の仮想DOMフレームワークにしても、そこのところ混み合っていないものを選んで慣れておいたほうが良い vueとかreactってShadow DOMを使ってるわけじゃないんですね Shadow DOMは例えば配布するようなコンポーネントを作る際
使われる環境のCSSなど変に影響されることを防ごうという趣旨のものだからね
HTMLを部品として扱う際のカプセル化の方法だから >>334
> ゆくゆくは要素毎にレイアウトとペイントを数十のコアで分担するようになるだろうな
要素毎に何の処理をしてるっていうんだい?
要素なんて殆どは動きが何もないただの絵だろう? let a = 100;
let a = 200;
だとエラーになるのに
let a = 100;
if (1){
let a = 200;
}
だとエラーにならないのは何故ですか? letはブロックスコープになるものだったのですね
ありがとうございました mdnみるとfirefoxはshadow domに対応してないって書いてあるけど
何で対応してないの? >>341
何でといわれてもね
それを知って、あなたがFirefoxの開発に関わって実装してくれるとか、前向きな方向に発展するの?
https://caniuse.com/#search=Shadow%20DOM >>342
理由次第では、発展するかもしれないですね。
だから理由を聞いてるのよ? >>343
あなたが発展にどう貢献するのか、見えてこないんだけどな
「FirefoxがShadow DOMを実装することは当分なさそうなので覚えるのは止めます」とかでないことを祈るよ
理由は中の人以外に知りようがないので、下記URLで問い合わせるか、フォーラムの情報を探してみるといいと思うよ
https://www.mozilla.org/en-US/contact/ 単にそこまで手が回らないから
やろうとはしてる
https://bugzilla.mozilla.org/show_bug.cgi?id=1205323
今のMozillaをかつてのWebの発展させてきた存在と同一視しちゃだめ
Firefox OS始めたり、ブラウザのバージョニング間隔を変更したりしてた頃は絶好調だったし、asm.jsの頃まではまだ良かった。
その頃はまだ新機能試そうと思えば、ChとFx両方使う必要があって、しかも少しFxの方が比率が高かった
でも今のMozillaやFxは新標準についていくのが精一杯で完全に後手後手に回ってる状態
Web APIじゃなくてESだけでみてもそうなんだから、落ちぶれようが分かる Web Components v1は一応主要ブラウザーベンダーの合意が取れてるので、実装速度に違いはあるけど全部対応されるはず。待つしかない >>344
「知りません。中の人に聞いてください」って
言うだけなのに、なんでそんなにお前えらそうなんだ? 対してスキルがないやつほど中身が薄っぺらで偉そうの法則 Codecademyの読み方はコーデカデミーで合っていますか? javascriptで動的に追加したliを「クリックしたら削除」したく検索したら下のコードが引用できそうだと思ったのですが
これをネイティブjavascriptでどう書いたらいいかわからないので教えてほしいです
$('body').on('click', '#list li', function(e){
処理;
}); >>353
document.querySelectorAll('#list li').addEventListener('click', function { 処理 }, false); attachEventのことも思い出してあげて下さい >>354
メモしておきます!ありがとうございます addEventListenerやxhrの第三引数指定する人ってどう言う考えしてるんだろう?
特にaddのは関数定義の後に記述する事にもなりがちだし不格好なだけと思うけど。 useCapture Optional
捕捉フェーズを使用する場合は、 useCapture に true を指定します。
捕捉フェーズの開始後、指定されたタイプのイベントの全てが、まず、登録された listener に発送され、
その後、DOM ツリーにおいてその下に位置する任意の EventTarget に発送 されます。
ツリーをたどって上方へ浮上するイベントは、捕捉フェーズを用いるように指定されたリスナーを誘発することはありません。
詳細については、DOM Level 3 Events を参照してください。
この引数は、全てのブラウザで省略可能ではないことに注意してください。省略した場合、 useCapture は false となります。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >特にaddのは関数定義の後に記述する事にもなりがちだし不格好なだけと思うけど。
そもそもコールバック自体が不恰好であってこの感性は理解できない fancybox3のパーツを実走することなく本家のリンクのみで動かしてる場合に、
全画面中の透明なし、背景色の指定、はできないでしょうか?どなた教えてください。
<script type="text/javascript">
$("[data-fancybox]").fancybox({
オプション
}); {a:1, b: 2} のようなリテラルで
prototype のない object( Object.create(null) )を作る方法はないですか? 空を作った後にコピーすれば良いじゃん
var object = o => Object.assign(Object.create(null), o);
object({a:1, b: 2}); >>364
>Object.assign
知らなかった! ありがとう リテラルなら__proto__:null,を含めれば良いだけだけどな __proto__も知らない奴がassignも知らない奴に教えるスレ
もはや世紀末 ボタン1を押すとボタン2が出てきてボタン2を押すとボタン3が出てくる
という処理をinnerHTMLとaddEventListnerでやろうとしているのですが
ボタン2を押してもボタン3が出てきてくれなくて困っています
innerHTMLで出力したものがイベントターゲットになっていないからだと思うのですが、どうすれば解決できるでしょうか?
プログラムを書くのが初めてなので初歩的な質問だと思いますが、よろしくお願いします innerHTMLしたあとにaddEventListenerすればいいかと
むしろまだ存在していない(innerHTML前)要素にどうやってaddEventListenerしようとしたのか >>369
ボタンの一つ上の要素にaddEventListenerしevent.targetでクリックされた要素を取得し判別する clickイベントはwindowに対して1つだけでいい
あとはevent.targetで振り分け
というかボタン2とボタン3は元々ある状態にしておいて
スタイルのdisplay:noneをdisplay:blockなりに変更するだけでいいのでは >>369
要素が存在しない時にイベントを与えているからだろうなw
その辺りをチェック >>369
プログラムだけではないが、
HTML + CSS + JavaScriptの世界では
見た目はCSSで制御する
最初にボタンを3つ書く
<input class="btn" type="button" value="button1" >
<input class="btn" type="button" value="button2">
<input class="btn" type="button" value="button3">
見た目をCSSで制御(最初のボタン以外は非表示)にする
.btn + .btn {
display: none;
}
.btn.clicked + .btn {
display: inline;
}
ボタンが押されたら押されたいう情報(クラス)を自分自身に設定する
(JavaScriptはjQueryを使えば簡単に書ける)
$(document).on('click', '.btn', function() {
$(this).addClass('clicked');
});
実行サンプル https://jsfiddle.net/qz5fLy9y/
ちなみに押したら押されたという状態になって、その後変わらないものは
ラジオボタンを単独で用いれば表現できる。あとは見た目をCSSでボタン風にするだけ
つまりJavaScriptなしでもできるぞ
https://jsfiddle.net/qz5fLy9y/1/ addEventListenerではなくaddEventListnerしてるというオチに期待
エラーも見てないな 皆さんありがとうございます!
cssで隠しておくのと親要素から取得するの2つともで希望の動きができました
皆さんめっちゃ心強いです(*´ω`*) サンプルまで作ってもらって本当に感謝です
HTMLとCSSだけでもここまで動かせるなんて知りませんでした(;´Д`)
ちゅーかjsfiddleってサイト便利ですね
私が作ってる程度のものならatomよりこっちのが使い勝手いいかも(??????)?? jsdo.it で、HTML, CSS だけで、
ワニワニパニックを作った人を知らんのか?w HTML5ムーブメントを語る上で避けては通れない
CSSプログラミングを知らないとか教養がないと言われてもしようがないな
昔っからこのスレは知ったかが多かったが
今では知ったかもできないほんまもんの無知ばかりやな んなもん知っとるわ
あのお粗末なワニワニパニックを話に出したレベルの低さに対しての反応だろ
もっと教養を身につけた方がいいぞ 何が「知らんのか?w」だよ。
聞いてもねーのに糞しょうもない知識を自慢したいだけの馬鹿は黙ってろよ。 こいつ通勤中の赤信号にもいちいちキレてそうな奴だな windows版のchrome(バージョンは最新)で
SpeechSynthesisUtteranceの
rateを上げたら、再生出来ないばかりか、
ブラウザを再起動しないとその後再生できなくなる現象が出ています
自分だけでしょうか?
仕様によるとrateの最大値は10なので値は仕様の範囲内のはずなのですが
3にするとおかしくなります
(再生可能)
https://jsbin.com/wuteqewavo/edit?js,console
(rate=3、その後再生不可能)
https://jsbin.com/viriritali/edit?js,console >>387
自分もちょこちょこ試してるけど1年前からそんな感じだよ
そのAPIはセンシティブで上手くいくかはタイミングなんかにも影響する
OSやデバイスのシステムを借りててブラウザだけで完結してる範囲が少ないから
仕方がないのかもしれない
それでも最近は随分マシになった方
最初の頃はまともに動く確率のほうが低かった [ [1, 'c'], [2, 'a'], [3, 'b'], [4, 'a'], [5, 'c'] ]から重複を除いた abc だけを取り出すにはどうすればいいでしょうか? 1,2,3,4,5の数字のほうはどうでもいいのか? lodash便利だよ
https://jsfiddle.net/2etnxe05/
a = _.uniq(_.map(list, i => i[1]))
もしくは
https://jsfiddle.net/2etnxe05/1/
a = _.uniq(list.map(i => i[1]))
jQuery使ってるならこっちでも良いね
https://jsfiddle.net/2etnxe05/2/
$.unique(list.map(i => i[1])) nativeでも良いじゃん
list.map(a => a[1]).filter((v, i, arr) => arr.indexOf(v)==i)
Array.from(new Set(list.map(a => a[1]))) ぶっちゃけこれだけのためにlodash丸ごと使うことは絶対にありえない
その内部実装の関数1つだけ借りてくることはあっても そういう時に使いたいのが、これ、custom build
お客さんの要望に応じて必要な分だけをチョイスできる
オトクなパッケージ
https://lodash.com/custom-builds >>392
それ遅い。
https://jsfiddle.net/2etnxe05/4/
> list.map(a => a[1]).filter((v, i, arr) => arr.indexOf(v)==i)
lodashの3倍
> Array.from(new Set(list.map(a => a[1])))
lodashの6倍 配列の中のオブジェクトの中のプロパティ値の最大値をMath.max.applyで呼び出す書き方をご教授くださいm(_ _)m
配列はこんな感じです
var scoring=[
{'male':[1,0,0,0],'female':[10,5,3,0]},
{'male':[2,5,3,0],'female':[10,5,3,0]},
{'male':[0,0,0,0],'female':[10,5,3,0]}
]; >>396
> Math.max.applyで呼び出す
ってのが意味わからん。
スコアの配列を最大値に置き換えれば良いんか?
つまりこういうことか?
https://jsfiddle.net/a1p11fLt/
var scoring=[
{'male':[1,0,0,0],'female':[10,5,3,0]},
{'male':[2,5,3,0],'female':[10,5,3,0]},
{'male':[0,0,0,0],'female':[10,5,3,0]}
];
var s = _.map(scoring, row => _.mapValues(row, (v,k) => _.max(v)))
console.table(s) あー、すまん Math.max.apply を使うんだったな。
https://jsfiddle.net/a1p11fLt/1/
var s = _.map(scoring, row => _.mapValues(row, (v,k) => Math.max.apply(null, v))) 余計なコード(変数)があったわ。訂正
https://jsfiddle.net/a1p11fLt/2/
var s = _.map(scoring, row => _.mapValues(row, v => _.max(v))) >>398
大変申し訳無いです、質問の内容に不足がありました(;´Д`)
上記の配列から変数を使って特定の値を呼び出し、それが所属する配列の中の最大値かどうかの判定をしたいのです。
変数を使って値を呼び出すところまではできています。
例えば2列目maleの3を呼び出した時、それは[2,5,3,0]の中で最大かどうか?を判定するために、最大値である5を取得したいです。
よろしくおねがいします。
それから初心者すぎて_.mapとかその他もろもろの表現が初見で頭が沸騰してしまってます。
せっかく書いていただいたのに申し訳ないですm(_ _)m >>400
ary = scoring[num][sex] と置けば
num = 1, sex = 'male' のとき
ary が [2,5,3,0] になる
その内最大を得るには
max = Math.max.apply(Math,ary) もしくは
max = Math.max(...ary) >>401
できました!
ありがとうございます(*´ω`*) >>394
そういう問題じゃ無いんだよね
3種類10箇所とかなら分かるけど、ただ一つ_を使うのは変だし
それだけのためにライブラリ管理コストかけるのもね
キリも無くなるし
既に利用してる可能性が結構あるjQueryは分かるけど、
_は単発の質問にはそぐわないね >>395
コードが短いのはいいことだけども速さ求めるなら
おとなしくforと連想配列でやったらはやいんちゃう >>388
まだ不安定なんですね
ありがとうございました JSONのデータ構造を変えてから
$.getJSONで取ったデータがおかしくなるという問題に悩まされていましたが
原因はキャッシュでした
GETは通常、パラメータが同じ場合に同じものが返ってくるものですが
データ構造を変えるなどの仕様的な変更が反映されないと困ります
解決方法として、パラメータにタイムスタンプを付加するという方法がありますが
これで毎回別のGETにすることで、
キャッシュが異様に増殖してしまうのではないか、という危惧があります
どうなのでしょうか? >>406
ブラウザのキャッシュ管理のことまで気にしなくていいとは思うが
やるなら.htaccess等でヘッダーいじれば色々出来る
キャッシュさせないよう設定するとか逆にキャッシュさせた上で毎回確認だけはして更新時のみデータ受信する等 クリックすると広告ページが新しいウィンドウで開くのを開かないようにjavascriptで制御したいんですが、
何かいい方法ないですかね?
window.openが実行された時に、すぐページを閉じるようなやつでもいいんですが、リファラは空だしどうしようかなと。
Google extensionで作ってます。 >>408
uBlock origin 使えばだいたい防げるだろ?
それで足りなければTampermonkeyを使えば良い >>409
こんなのあったんですね
ありがとうございます。
>>410
ありがとうございます
調べてみます。 Underscore は、ライブラリ全体をロードする必要があるけど、
Lodash は、使う関数だけを、include できる
ただ最近は、ES5/6 に実装している、関数も多い
ライブラリにある関数を自作するのは、
ホワイトボックステストも必要だし、品質も悪い >>407
そこまでコントロールできたのですか
ありがとうございます promiseは非同期処理を同期的に書く方法ですが
非同期処理を実際に同期的にするにはどういう方法がありますか? >>414
取り敢えず全ての非同期関数がpromiseを返すように設計しとけばasync awaitで同期的に書ける
あと問題があるのがobservableやasync iteratorに当たるものだが
これはトランスパイラを使うか、while(await)テクニックで乗り切る
ちょっと悩ましい所 >>415
ありがとうございます
順次調べていきます ぶっちゃけpromise理解できないから騙し騙しやってるわ ローカル変数って
内部的には関数のプロパティとして実現されているのでしょうか? >>416
概観しましたが、すごくすっきり書けていいですね
generatorで同期的に処理する方法も調べたのですが、
これは本来そのために作られた訳ではない機能をハック的に使ってる感じで
美しくないと感じましたが
それに比べるとasync/awaitはキレイだと思いました プロパティは、プロトタイプチェーンをさかのぼって探索されるけど、
ローカル変数は、さかのぼらない >>418
関数実行時やブロック文に入る度にそのコンテキストに紐付いたオブジェクトのようなもの
globalやwith文中では本当のオブジェクトが使われる 分割代入と変数宣言を同時に行うことは出来ませんか? let [ a, b ] = ary
みたいにできるよ firefoxがshadowdomに対応してないんで似たようなことがしたいんですが
いいアイディアありませんか?
勉強のためにやるのでフレームーワークなどは使いません それって死んでもFxで動かないと駄目なの?
Fxも1年以内に実装されるだろうから、そのときには動きますで良いじゃん ES2015ではundefinedの上書きが出来なくなったようですが
属性の有無を調べるメソッドなり関数なりが追加されないのは何故ですか? Object.getOwnPropertyDescriptor( window, 'undefined' )
// { value: undefined, writable: false, enumerable: false, configurable: false } >>427
undefinedの上書きができなくなったことがどう関係するんだ?
undefinedの上書きができれば、属性の有無を調べるメソッドが
無くてもいいってことだろ? in演算子なんてあったんですね
ありがとうございます 画面構成が一貫したSingle Page Applicationを作っていました
ベースとなるHTMLは最初から記述されていて、
適宜要素を動的に操作していたのですが
異なる構成の画面が必要になりました
部分的な書き換えではおさまりません
そうなると最初の画面から完全に動的に書かなくてはいけないのか?
それとも今の画面をどこかに保存しておいて、処理が終わったらまた戻す?
とか色々考えていますが
こういうことが問題になったらそろそろフレームワークの導入を考えた方がいいのでしょうか? >>431
hasOwnProperty と使い分けよう >>432
スケールしないことを実感したら切り替え時だろう >>432
もう1個 別のSPA 作って
ShareWorker で状態を共有させる方法もあるんじゃないかな chromeとIEで確認しています
下記のような形でクリックイベントリスナーを設定しましたが反応はありませんでした
どこに問題がありますでしょうか?よろしくお願いします
Hoge.prototype.foo = function(){
var button = document.createElement( "input" );
button.type = "button";
button.value = "テスト";
button.addEventListener( "click", this.bar, false );
this.div.appendChild( button );
}
Hoge.prototype.bar = function(){
alert( "click" );
}; >>437
要素が生成されていないのにイベントを与えているから >>437
途中で送信しちゃったw
this.bar
って第二引数に与えると、実際にクリックイベントが発火したとき
thisになるのはevent.targetであってHogeインスタンスじゃない >>440
試しに下記の様にしましたが変わりませんでした
this.div.appendChild( button );
var func = this.bar;
button.addEventListener( "click", func, false ); >>441
変わってないよ
var A = this;
button.addEventListener('click' , function(){ A.bar(); } , false);
とか
これがベストとは言わんけど >>441
そのやり方でもthisになるのはevent.targetであってHogeインスタンスじゃない Function.prototype.bind() を使う Hoge.prototype.foo = function(){
this.div.appendChild(button);
button.addEventListener( "click", function(){
console.log( "test" );
alert( "test" );
},false );
}
そもそも発火しませんでした・・・ >>445
そんな中途半端に書かれてもわからんよ
this.divってなんぞや?とかとか
全部書いておくれ
https://jsfiddle.net/ 詳しいサンプルをありがとうございます
一旦最小構成でテストしてみたら最初のままで通用してしまいました
var Hoge = function( elementId ){
this.div = document.getElementById( elementId );
};
Hoge.prototype.foo = function(){
var button = document.createElement( "input" );
button.type = "button";
button.value = "ボタン";
this.div.appendChild( button );
button.addEventListener( "click", this.bar( this ), false );
};
Hoge.prototype.bar = function( arg ){
console.log( "arg is..." ); //
console.log( arg ); // object
};
var hoge = new Hoge( "test" ); // <div id="test"></div>
hoge.foo(); >>448
>button.addEventListener( "click", this.bar( this ), false );
これは間違ってるよ
第二引数に渡すのは関数
this.bar ← これは関数
this.bar(this) ← これは関数barを実行した返り値 訂正!訂正します
先の書き方だと第2引数が意図せずに実行されてるだけで本当は下記の通りですね
button.addEventListener( "click", function(){ this.bar( this ); }, false );
// this.bar is not a function at HTMLInputElement. >>450
>button.addEventListener( "click", function(){ this.bar( this ); }, false );
おちつけw
そのthis.barのthisは第二引数に渡した無名関数のスコープで
無名関数の外、つまりHogeのものじゃない
んでお手軽に解決するなら、Hogeのthisをいっぺん保存してこう
var A = this;
button.addEventListener( "click", function(){ A.bar( this ); }, false );
もっと根本的に解決するなら
Function.prototype.bind()
Function.prototype.call()
Function.prototype.apply()
あたりをググると良いよ >>451
その後色んなパターンを実践していましたが
最終的には、まさに一度thisを保存する方法に落ち着きました
(関数先でクラスのプロパティを参照する必要があるので)
スコープとbind()について落ち着いて調べてみたいと思います
みなさんありがとうございました JavaScript の、this は、コロコロ変わるから難しい。
bind を使わないと、拘束できない
jQuery を使えば、悩むこともない >>453
jQueryを使ってもそこは一緒
だけどjQueryだとクロージャーを使っても循環参照になりづらいのと
DOM要素のリストとして扱うという設計思想によって扱いやすいってだけ
でさ、お前ら何やってんの?
>>437の話だろ? なんでthisを保存とかいう話になってんの?
addEventListenerの第二引数にクロージャーなんか渡すから
話ややこしくなってるじゃん。 >>437のコードでだいたいあってるだろ
https://jsfiddle.net/rdeuvep2/
function Hoge(elementId) {
this.div = document.getElementById(elementId)
}
Hoge.prototype.foo = function() {
var button = document.createElement( "input" );
button.type = "button";
button.value = "テスト";
button.addEventListener( "click", this.bar, false );
this.div.appendChild( button );
}
Hoge.prototype.bar = function() {
alert( "click" );
};
var hoge = new Hoge("buttons");
hoge.foo(); んで、恒例のjQuery化w
なるべく元の形を保ったバージョン
https://jsfiddle.net/rdeuvep2/1/
function Hoge(elementId) {
this.elementId = elementId
}
Hoge.prototype.foo = function(){
$("<input>", {type: "button", value: "テスト"}).click(this.bar).appendTo(this.elementId)
}
Hoge.prototype.bar = function(){
alert( "click" );
};
var hoge = new Hoge("#buttons");
hoge.foo()
俺はHogeクラスなんか作らずこんなんでいいと思ってる
https://jsfiddle.net/rdeuvep2/2/
var attrs = [{value: "テスト1"}, {value: "テスト2"}];
var buttons = attrs.map(attr => $("<input>", attr).attr({type: 'button'}));
$("#buttons").append(buttons).on('click', 'input[type="button"]', function() {
alert( "click " + this.value);
});
>>455
アロー関数使ってやったぜ?w classを使って書いたバージョン
https://jsfiddle.net/rdeuvep2/3/
>>455
アロー関数つかってやったが、
>>454で書いたとおり、今回はアロー関数もクロージャーもいらない 補足
「今回は」アロー関数もクロージャーもいらない
今回の要件にthisがどうなるかってのが書かれていないから
this.barは今回は動くがthisは違っていると念の為に言っておく
いろんなサンプル追加
https://jsfiddle.net/rdeuvep2/6/ qiitaで記事うpしても叩かれない知識を身に着けたいんですが
JavaScriptという言語を学ぶための良書を教えてください その考え方は大間違い
人に意見を発信する以上は文句を付けられて当たり前
そしてそれは良いこと
お互い内外から叩き合ってきれいな球に近づくのだから
それを防ごうと言うのはトゲトゲボールか、スライムになってしまうのがオチ >>459
とりあえずサイ本
現段階のおまえさんのレベルも
おまえさんが書いた記事にツッコミを入れる奴のレベルもわからんから
それを数冊の本でなんとかするのは難しかろう JavaScript 第6版、2012、David Flanagan
Google などのプロの机に、必ず置いてある本 プロのJSerやWEBエンジニアならオンライン仕様書以外は必要ない
そういうのはJSの常識を知らない非JSネイティブプログラマ向けに用意されてる
それもES2015以降の今の時代に於いては、JSを歴史から学んでJS仙人を目指したい人以外には過去の有名な本という飾りでしかない 初心者はまずはMDN 「MDN ○○」でググる
そしてより詳しく知りたければMDNの各記事の下に仕様へのリンクが張ってある
徐々にそっちに移行していく let lastTimeSignal;
setInterval(fuction(){
let now = moment();
let nowMinutes = now.format('YYYYMMDDHHmm');
if (now.minutes()==0 && lastTimeSignal !== nowMinutes){
lastTimeSignal = nowMinutes;
/*処理*/
}
},1000);
みたいなコードがあります
moment()はmoment.jsです
現在時刻の分数が0の時に一度だけ実行する、ようは時報です
ですが、ごくまれに連続して複数回時報が実行されてしまうことがあります
lastTimeSignalが設定されるので排他的に処理されるはずなのに
何故複数回実行されてしまうのか分かりません
現象はchromeで確認しています
lastTimeSignal とnowMinutesをログに出力するようにしましたが
連続実行された時の値は全く同一でした
lastTimeSignalが設定されないまま
複数のインターバルが呼び出されている、としか思えません
処理は、何かと不安定なSpeechSynthesisUtteranceを使っているので
それが原因なのかとも思いますが
処理の前にlastTimeSignal = nowMinutesとすぐに代入しているので、
たとえSpeechSynthesisUtteranceに問題があっても排他処理まで失敗するのは奇妙です
関数の外の変数(lastTimeSignal)への変更が
すぐに反映しない、なんてことあり得ますか? >>468
あらためてログを確認すると
10/13 05:00:00.97
10/13 05:00:00.98
と、0.01秒差で連続実行されていました
1秒ごとに実行されるはずのインターバル処理が、
ほぼ同時に2回呼び出されていることになります
一体何故・・?
いま、ふと思い付いたのですが
不安定なSpeechSynthesisUtteranceの実行に更にsetTimeoutを挟めば
変数の変更まで不安定になることは防げるかもしれません とにかく問題が再現できる最小限のコードを貼りなさい
できればライブラリも除いた状態で
まずそうやって削ぎ落としていくのがデバッグの基本でもある ここに質問するくらいならteratail使えや。コード見づらい。 明確な根拠もなく実行系を疑うのはプログラマ憲法でタブーとされていること 恥ずかしいことに、インターバルタイマーを複数回設定していたのが原因でした
ライブラリの中の、
起動時にしか実行されないと思っていたハンドラの中で設定していたのですが
そのハンドラはその後の操作によっては複数回呼び出されるものだったのです
プログラマー憲法を心に銘じます
ありがとうございました まあでも非同期が絡むとデバッグが一段と難しくなるのは事実
ただコールバックで闇雲に投げて闇雲に呼ばれるのではなく
Promise,async-await,async generator辺りを適切に使って
シーケンシャルに管理すれば軽減できはする jsだと無名関数にしてしまう分、普通に何回も呼び出してしまうよな
アクセス解析の値がぶっとんでた時はあせったわ 無名関数だからって理由でそんなことすることはないな。
だって名前つけても同じ話だもの 無名関数ならそこでしか使わないんだから
逆に予定外に何度も呼び出すことなんて少ないと思うが ES2015でforEachがオブジェクトに追加されなかったのは何故ですか?
最近のJSはイケてると思っていましたが
いまだにオブジェクトをforEachできないのは違和感があります
もうかなり以前からunderscoreやlodashがforEachの有用性を証明してますよね >>480
だからlodashを使えばいいだけだろう? mapは新しい配列を作るためのものなので用途が違います
ライブラリは言語にあるべき未来を見せるのが役割の一つなので
それを何年も前に見せられてなおかつ放置してるのは怠慢と言わざるを得ません いや、ライブラリは言語仕様をシンプルにするのが目的だよ。
どんな言語でも言語自体に色んな機能を含めず
多くの機能はライブラリで提供されてるはずだ。 >>483
Mapと書くべきだったか
まあ意図は違うんだろうけど Mapじゃなくて地図と書くべき。
でないと、SMAPと勘違いされる可能性がある。 あの文脈ならMapで通じると思うけど
つーかもうオブジェクトからイテレーター作れるじゃん mapメソッドとは別にMapオブジェクトというのがあったのですね
イテラブルではない普通のオブジェクトを回すのはあまり行儀が良くない、
という判断が根底にあるのでしょうか?
でも
(new Map([['taro','name'],[15,'age']])).forEach((key,value)=>{
});
こんな書き方がイケてるとはあまり思えないのですが・・
newを書かずにMapオブジェクトを生成する
シンタックスシュガーを用意して欲しいところです >>488
シンタックスシュガーはいらないですね。
関数を用意すればいいだけですよ。 >>488
Object.entries(obj).forEach(([key,value])=>{}) >>490
これはなかなかいいですね
オブジェクトのインスタンスメソッドで出来て欲しいですが、
keyとvalueだけでなくindexも取れるところもイケてると思います >>491
そのやり方は列挙順を保証出来ないから、順序がランダムで良いときしか使えない
もともと、オブジェクトのキーは列挙する事を想定したものでもないし、連祖配列的なものを望むなら、足りない機能が多くて苦労すると思うよ たしかにオブジェクトのメンバに順序は期待出来ないですが
ループの中でループカウンタが欲しくなることはわりとあるので、
そういう意味です 未だにES5脳な奴がいるんだな
列挙の順序が保証されてないのはfor-in文とES5のObject.keys()
ES2015以降のObject.{keys,values.entries}()は保証されている
こんなんJSerなら誰でも知ってる常識だろう >>495
矛盾してるぞ
> こんなんJSerなら誰でも知ってる常識だろう
ES5脳なJSerは知らないだろ? JSは日進月歩なんだから
未だにES5脳な奴がJSerなわけ無いだろ JSerの定義でもめるぐらいなら、ES5erとES2015erに分けろ
JavaScript===ECMAScript2015ではないんだぞ async-awaitで逐次処理書いてる時に比較的長いタスクをやらせると
裏で動いているのかどうか分かんなくなるんですが。
定期的にconsole.logとかでログ出力していれば分かるんですが、
そうでない場合、逐次処理が実行中だってどうやって把握すればいいんですかね? そりゃconsole.logを適切な個数置くしか無いよ
それかメイン関数以外にあちこち置くのが嫌なら
await longTimeTask()
をpromiseが解決するまで一秒ごとにログを出すperiodicLogingを用意して
await periodicLoging( 'タスクA', longTimeTask() )
と書くとか、同様にしてタイムアウトさせたりするとか 結局時間かかるのはIOかEvent待ちのネイティブの部分だからステップ処理は意味ない。 結局時間かかるのはIOかEvent待ちのネイティブの部分だからステップ処理は意味ない。 >>502
>>499の目的である「動作確認」は可能だと思うが、どういう理屈で意味がない? そもそも確認したい動機が分からん
エラーハンドリングをあえてすっぽかしてない限り
棄却が伝わってこないと言うことは正常動作中ということで心配する必要ないだろう
パッチ処理とかで本当に10分とかかかるものなら
大本にProgressイベントが用意されていないのなら>>500のような感じになるだろうな str='黄と黄緑と緑'
.replace(/黄緑/g, '<span style="color:greenyellow">$&<\/span>')
.replace(/黄/g, '<span style="color:yellow">$&<\/span>')
.replace(/緑/g, '<span style="color:green">$&<\/span>')
黄緑にも色を付ける方法を教えて下さい >>507
その種の複数置換は結局
replace(/[黄緑]+/g, function(match){ … })
が簡単 >>508 でmatchで条件分岐がおすすめだけど超簡単にするなら「黄緑」を一旦「青」とかにしてから最後に戻すとかでもいいよ
ほほえましくてよきよき >>507
str='黄と黄緑と緑'
.replace(/黄緑/g, '<span style="color:greenyellow">$&<\/span>')
.replace(/黄[^緑]/g, '<span style="color:yellow">$&<\/span>')
.replace(/[^黄]緑/g, '<span style="color:green">$&<\/span>')
>>508-510
正規表現ぐらいもうちょい頑張れwwwww
ぐぐりながらやってみたけど30分でできたぞwwwww
>>511
最悪の回答wwwwww >>514
だからほほえましくていいって書いたんだけどw >>514
あ、一旦「青」にするってのが、よくわからずやってた頃を思い出してほほえましくていいって意味です >>512
どう見ても>>508の足元にも及ばない 間違えてるのか?正常に動いてるように見える
正規表現ほとんど使わないからわからんわ [^緑] は「緑以外の1文字」だから /黄[^緑]/ だと「黄と」がヒットする
/[^黄]緑/ も同じ
なので結果は
<span style="color:yellow">黄と</span><span style="color:greenyellow">黄緑</span><span style="color:green">と緑</span>
ってなるはず jqueryでは
セレクタに要素を複数並べて要素の子孫の要素を選択することが出来ますが
このように要素を選択する方法は何というのでしょうか? >>521
しかも文頭の緑と文末の黄にはマッチしないしな
ECMAScriptだと後読み出来たっけか >>506
おー。ありがとうございます
Progressイベントなんてあるんですね。
独自の処理にもそう言うの用意できるんですかね。 自前でonProgressプロパティに関数があれば呼び出してもいいし
EventEmitterみたいなモジュール使ってもいいし
DOMのカスタムイベント使ってもいいし >>524
後読みはES2018になりそう
現在モダンブラウザは要フラグ
>>525
async-awaitと組み合わせるのは工夫がいるよ
できればasync-generatorを使ってトランスパイルする >>508
ありがとうございます
その方法で出来ました ド素人ですみません
膨大なデータをJSONで書き出す処理をしようとしてます
大体1MBくらいで一区切りして、fs.writeFileで書き出して、for構文で繰り返す…
というような方法を取っています。
例えば10回繰り返すような設定をすると、処理が終わる度に1ファイル追加されるのですが
10回すべての処理が終わるまでファイルに何も書き込まれず、空っぽのままになります。
すべての処理が終わって初めて全てのファイルにデータが書き込まれる感じです
これが10ファイルくらいならいいのですが、大量に処理するときに困るので
毎処理ごとにデータが書き込まれるようにしたいです。
なにか方法があれば、お教えいただけると助かります >>529
fs.writeFile に渡す callback の中で
書き込みの続きを継続するようにすれば期待する動作が得られるかも? みんなありがとう
ファイルへの書き込みが完了するまでループを一時停止する・・・と言う処理は可能でしょうか?
今はこんな感じです
var ループ回数 = 10;
for(var i=0 ; i > ループ回数; i++){
var データ = 膨大なデータを生成する関数();
fs.writeFile(ループ回数 + '.json', JSON.stringify(データ,'',' ') , function (err) {});
} >>521
トンクス
上手く行ってるように見えてたわ >>533
同期版のfs.writeFileSyncを使うかasync/await使うか fs-extraがpromise返すようになったから使っとけ IOは内部で並列度が抽象化され、タイミングが最適化されてるから完全な制御は無理 ファイルの読み込みでも、4つのファイルを、並列に読み込む for in使うとeslintに怒られるんですがなんか理由があるんですか? そういうのは積極的に調べていって言語に詳しくなるチャンスにすべきだと思うよ
結論から言うとfor of Object.keys()を使う >>511
元々の文字列に「青」があったら破綻するのでは
バックスラッシュのエスケープシーケンスのように、構文規則を作っておかないと破綻する
>>540
配列に for-in を使っているのでは >>507>>511
自分もこれでやるけど、翫とか見たことないような漢字にしとけばいいよ
正規表現だとノット条件がないから[^翫]で近いことが出来るようになるし、これが早くて楽だった asyc-awaitつかってると使いたいところで使えないのが凄くもどかしい。
たとえばclassのコンストラクタで非同期処理を入れる方法ないかな。 プログラミングを初めて、
配列を知った人は、これ便利と配列ばっかり使いだします。
連想配列を知った人は、これ便利と連想配列をばっかり使いだします。
クラスを知った人は、これ便利とクラスばっかり使いだします。
asyc-awaitを知った人は、これ便利とasyc-awaitばっかり使いだします。 >>546
async関数はpromiseを返す関数だから
クラスのインスタンスを返すコンストラクタとは相容れない
まあ色々方法はあるけど、newして非同期にそれを改変するasync関数を用意するのが良いと思う
>>548
async-awaitばかりというのは悪くないと思うよ
ある特定の関数が開発していく途中でasyncにする必要が出てきたり必要が無くなったりもするしさ
そういうときawaitで受けてれば問題ないからね Face Detectionのライセンスがわかる方いますか?
もしくは顔検出出来るライブラリで他に商用利用可能なものがあったら教えていただきたいです firebaseってサーバーサイドで
node.jsなどを動かすことできますか? セレクトボックスAとBが横に二つ並んでいます
それぞれにJavaScriptで動的にoptionを追加したところ、BがAの下に移動してしましました
横に並べたまま要素を追加したいのですがどうすればいいでしょうか >>553
CSS でやるのが普通
方法はいくつかあるが flex が最も簡単だろう location.searchを手軽にjson化する標準APIってなかったでしたっけ?
なんかここで一度教えてもらった気がするんですが >>556
location.search はただの String 値なので、JSON化する余地はないと思うが String値もJSON化可能だよ
例えば`"abc"`はvalidなJSON >>558
そうかもしらんが、JSON.stringify(location.search); で解決する問題をわざわざ質問するかね… >>556
いや”key=value&”という形式をオブジェクトのkey-valueに変換してくれるやつを知りたいってことなんですが。 >>552
firebase functionとかそれっぽくね >>561
> いや”key=value&”という形式をオブジェクトのkey-valueに変換してくれるやつを知りたいってことなんですが。
key1=valueA&key1=valueB&key1=valueC
の場合にどういう結果を期待してるの? IEやiOSのSafariで使えないし
知らなくてもしょうがないかな Polyfillがあるし、WHATWGで標準化もされてる
常に最新仕様を追いかける人なら知ってると思うよ 仕様を追いかけるのが悪いんじゃなくて
仕様を追いかけるのが目的となってるのが悪い むしろ目的でもないのに仕様を追っかけてる人の方が意味不明だが 必要になった時点で調べるんじゃ三流
普通は必要になる前から知っておく form要素の中に設置したラジオボタンのグループは
form要素.ラジオボタンに持たせたname
で取得できます
このグループはconsoleで確認するとRadioNodeListオブジェクトのようです
これはform要素の中にラジオボタンが格納された時にだけ作られる
特殊なオブジェクトのようですが
DOMツリーに組み込まれているのか、取得時に生成されているのか、
どっちなのでしょう? 少し考えたらDOMツリーが最初からListを含んでるはずないと気づくだろ そうですか?
DOMツリーに詳しくないので分かりませんでした
コンテナとしてツリーに組み込まれていることもあるんじゃないかと思ったのですが、
そのたびごとに生成して返しているのですね
ありがとうございました どちらの考えも成り立つと思うが、>579の「ちょっと考えたら」は暴論な気がするな
実際、仕様のどこに書いてあるのか、を明示しないと本当の意味では解決にならない
(Array#length が動的に計算されるのか、静的データを参照するのか、という命題と似てる) RadioNodeList が継承する NodeListは
デフォルトでは live (静的でない)とDOM仕様に書いてある
特に静的とする記述はなかった(?)ような liveかどうかは関係ないでしょ
例えばa,b,cというオブジェクトとそれを含むツリーがあって
どこかにa,b,cへの参照を含むオブジェクトあっても、
それはツリーに含まれてるとは言えないから
つまりはこの問題はNodeListがDOMの木構造に含まれているかどうか
横着に言うとツリーを辿っていったときListに到達するかというと、
それはないなと分かる >>583
liveの実装はオブジェクトをキャッシュするだけで実現可能なので、liveな事が動的データである事を保証しているわけじゃないと思う >>584
ごめん、いってる意味が分からない
> どこかにa,b,cへの参照を含むオブジェクトあっても、
> それはツリーに含まれてるとは言えないから
なぜ?
> つまりはこの問題はNodeListがDOMの木構造に含まれているかどうか
ツリーに含まれているかどうかをどうやって判断するの? async-await便利だけど意図せず無限ループに入っていても
気づかないのがちょっと心配。
プロダクションビルドしてみるとやたらメモリリークするようになってはじめて
発覚した。
この辺を気づきやすくする方法ってなんかないかな。 >>586
a.child==b,b.child==cの時、
[a,b,c]という配列を作ってもそれはツリーの一部ではないということ
ルートから辿れない物はそのツリーに含まれているとは言えない
そしてDOMツリーにListが含まれないことは自明
なぜならDOMツリーはNodeのツリーであり、NodeとはElementやTextであり、
NodeListは実際それらのサブクラスではないし、概念としてもかけ離れているから そもそも何で含む含まれないの区別をする必要があるんだっけ? ただ単純な興味だろうよ
まあこの手の設計思想は勉強しておくと自分が設計する際のセンスに近い部分ととして表れるから、馬鹿にはできない javascriptは少々調子に乗りすぎたようだね
ここ10年でごちゃごちゃと新機能入れ杉
ついていけねえよ そもそも最新のミドルからハイスペックの開発環境でしか確認してないクソ重いサイトが量産され過ぎなんだよ >>592
javascriptは少々調子に乗りすぎたようだね(個人の感想です)
ここ10年でごちゃごちゃと新機能入れ杉(便利になりました)
ついていけねえよ(個人の能力です) 互換は有るわけで別についてきたくなかったらついていかなくても良い 13Mくらいのjsonがあるんだけど簡単に解析するツールってないかな。 Promise+awaitとかは一癖あるが、実際コールバック地獄に比べると格段に楽になれるので黙って覚える価値はある >>595
誤解を招く言い方は控えよう
>ついてきたくなかったら
ついてこれなかったら
だぞ >>597
かなり癖は強いよね。forEachとかと組み合わせると死ぬから
for文使わなきゃいけなくなるの辛い。
デフォルトasync functionになってくれればいいのに。 >>600
async func内で無名関数作ったら自動でasync func になるか、async funcにしないと警告するようにできないもんかね。
あとawait記入漏れも地味にきつい。これもlintツールでチェックして欲しい >>601
できるだろうけど、そうすると互換性がなくなるので
それならCoffeeScriptの二の舞いになって
結局使われなくなる asyncにし忘れはawait書いた時点で構文エラーになるんだから実際は問題ない
await書き忘れもちょっとしたミスで変数に意図しない型が入ってそのまま進んでしまうという
動的型付け言語のよくある問題点だしデバッグには慣れてるでしょ 15年ぶりにJavaScriptを弄る必要性に迫られ、過去でも怪しかった知識と技術力と現実が
さらにかけ離れて目が回ってます・・・先輩方おしえてくださいな。
【環境】自分の環境はWindosw10 Firefox55 サーバーにはUPせずローカルのみの用途です。
【何をしたのか】document.writeしたらその部分以外が出ないしbodyカラーさえなくなるしずっとローディング中になる
→innerHTMLにしろという情報を得たがこれって既にあるものを置き換えるだけで複数出力できなくね??
【希望している仕様】
コンマ区切りのテキストファイルを読み込んで変数に出し、その変数の変化する数だけセレクトを出力
【コード】ネットに転がってるサンプルを改造してる。body前後は省略。
<body bgcolor="black">
<script type="text/javascript">
function getCSV(){
var req = new XMLHttpRequest(); // HTTPでファイルを読み込むためのXMLHttpRrequestオブジェクトを生成
req.open("get", "smp.csv", true); // アクセスするファイルを指定
req.send(null); // HTTPリクエストの発行 レスポンスが返ってきたらconvertCSVtoArray()を呼ぶ
req.onload = function(){convertCSVtoArray(req.responseText); // 渡されるのは読み込んだCSVデータ}
}
// 読み込んだCSVデータを二次元配列に変換する関数convertCSVtoArray()の定義
function convertCSVtoArray(str){ // 読み込んだCSVデータが文字列として渡される
var result = []; // 最終的な二次元配列を入れるための配列
var tmp = str.split("\n"); // 改行を区切り文字として行を要素とした配列を生成
var opel = document.getElementById("test");
// 各行ごとにカンマで区切った文字列を要素とした二次元配列を生成
for(var i=0;i<tmp.length;++i){
result[i] = tmp[i].split(',');
document.write('<option value="'+result[i][1]+'">'+result[i][1]+'</option>');
}
}
getCSV();
</script></body> とりあえずconsole.logでcsvの入力が処理できてるか確認したら?
そしたらcsv云々の質問はまるまるカットできる。
問題を切り分けるところから始めようか とりあえずパッと見て思ったのは
・document.writeは使うな
・XMLHttpRequestは使うな
・opel (#test)ってなんだ?使われてないが
・selectがないぞ
・CSVの構造がわからん
だな >>605
CSVの入力はできています。
>document.writeしたらその部分以外が出ない
→document.write('<option value="'+result[i][1]+'">'+result[i][1]+'</option>'); ×CSV行数
=<option value="[数字]”>[数字]</option>のタグになってるかはわからないですが
×CSV行数</option>前の数字は表示されているので。
というか・・・できるはずだと思っていたのですが、document.writeを書くと
真っ白になるんですよね、上記表示以外が。
consol使ったこと無いのでググってきます・・・ >>606
ありゃ失礼
・opel→innerHTMLに書き換えようとして設定した変数。
しかしinnnerHTMLではfor文で繰り返し出力ができないんじゃね?でdoument.writeに変えた
使い慣れてたし(化石)
・CSVの仕様
PerlCGIでよく使うログファイルといっしょ。UTF-8になってるが。
1,ねこ,くろ
2,いぬ,しろ
selectは消しすぎたごめん(改行多すぎって怒られた)
<body bgcolor="black">
<form method="post" name="info">
<div class="title">ろぐびゅーわ</div>
<div class="element-select">
<div class="small"><span>
<select name="id" >
<script type="text/javascript"> </script>
<script type="text/vbscript"> select要素拾って普通にlength増やしつつoption追加してけばいいんじゃないの? 全部書くのめんどいからヒントっぽく書くと
var foo = '';
for(){
foo += '<option>';
}
select.innerHTML = foo;
ってすればいい >>611
できました!!
変数+=は初めて見ました。こんなのあるんですね。
みなさん感謝! でも古臭くて今となっては誰もやらないやり方だからな みんなfoo=foo+"bar"って書いてるってこと? document.write は、文書自体をすべて一旦破棄してから上書きするから、使うな
XMLHttpRequest は、jQuery の、ajax を使う。
初心者には、jQuery は必須だから、検索して
$("#test").text("hello world!");
「セレクタ.動作」の構文で、該当するセレクタすべてに対して、ある動作をする。
つまり、ループ処理と同じ DOM叩く(これも古いがinnerHTMLよりは新しいかな)か
VirtualDOM叩くフレームワーク使うかってことでは ローカルファイルは、node.js, electron とかを使う
csv ファイル読み込み関数なども、あるはず >>615
初心者にはjQuery必須とかいうのヤメレ
document.querySelector('#test').textContent = 'hello world!’; jQuery使わないにしても
test.textContext =
でいいのに何で冗長な書き方するかね Web制作板の癌はjQuery必須なんて馬鹿な落書きをしに巣から出てくんなよ XMLHttpRequestに変わる新しい通信方法があったはずですが思い出せません
誰か教えてください 621ですがすいませんfetch apiのことでした
ってことで〆 const o = document.getElementById('o');
const f = (n) => (e) => {
console.log(n, e);
};
o.addEventListener('click', f(1), false);
(n) => (e) =>っていう2個書く書き方をよく知らないんですがなんですかこれは?
なんでこれでnとeが使えるんですか? >>623
const f = function(n){
return function(e){
console.log(n, e);
}
};
なので
o.addEventListener('click', f(1), false);
は
o.addEventListener('click', function(e){
console.log(1, e);
}
, false);
になる >>623
関数の戻り値がまた別の関数になってる
カリー化ともいう
nが使えるのはその戻り値の関数もまたのfの範囲内だから
ちなみに
const f = n => e => console.log(n, e);
でもいい
ただJavaScriptでカリー化することなんてあるか?
Haskellみたくデフォルトでカリー化されてるわけじゃないんだしメリットが見当たらん Underscore.js にも、curry ある window.alertなら文字列の"window.alert"
window.widthなら"window.width"のように
オブジェクトの名前を取得する方法ってありませんか? >>618-619
一番単純な例を出してドヤ顔するのやめれw
jQueryはその一番単純な書き方で複雑なことができるんだよ
例えば
document.querySelector('#test').textContent = 'hello world!’;
に相当するjQueryの書き方は
$('#test').text('hello world'); だが
全てのclass=testの要素に文字を入れるのもほぼ同じ書き方でよい
$('.test').text('hello world'); > でいいのに何で冗長な書き方するかね
test.textContext = 'hello world';
$('#test').text('hello world');
jQuery使ったほうが短いっていうねw
なんで冗長な書き方するかね? EdgeだとうごかないやんXMLHttpRrequest
node.jsってインストールとか言ってるけどなにこれJavaScriptファイルじゃないの? node.jsはサーバー側アプリを作るものだから関係ない
まあ正確に言えばブラウザ用のJavaScriptファイルを
"ビルドして" 作ることも有るからサーバー用限定ではないが、
少なくともブラウザで直接動かすためのものじゃない >>625
> 関数の戻り値がまた別の関数になってる
> カリー化ともいう
それはカリー化ではない。
カリー化は、引数を取る普通の関数を
特殊な形式の関数に変換すること
foo(a,b,c) という使い方をするfoo関数を
foo2(a)(b)(c) という使い方ができる別の関数に変換すること
>>623は関数を返す関数ってだけなのでカリー化ではない
JavaScriptでカリー化をする必要はないっていうのは理解できるが、
関数を返す関数はときたま使う
ある関数に同じ引数を何度も渡すのであれば、
部分適用を行って何度も渡さないようにできるし、
別のもう少し具体的な例をだすと
[{a: 1, b: 2}, {a: 11, b: 22}, {a: 111, b: 222}] みたいなデータが有って
aの項目でソートするか、bの項目でソートするか、選べるようにしたい時
aでソートする関数、bでソートする関数の2つを作る代わりに、
ソートする項目名を引数にして「ソートする関数」を返す関数
なんてのを作る時に使う >>623
> (n) => (e) =>っていう2個書く書き方をよく知らないんですがなんですかこれは?
アロー関数が2つくっついたってだけなだな。
function(n) {
return n+1;
}
という関数を(thisの扱い以外)同等のアロー関数で書くと
(n) => {
return n + 1;
}
一行で書いて
(n) => { return n + 1; }
{}とreturnを省略して
(n) => n + 1
n+1の部分が (e) => { console.log(n, e) } だったら?
(n) => (e) => { console.log(n, e) } react学ぼうと思うんですがオススメの書籍教えてください >>634
あーごめん、変な間違いしてしまった
関数を返す関数は高階関数の範疇やね >>637
また間違えた
いや、確かに関数を返す関数は高階関数の範疇なんだけど、今回のケースは特に部分適用って言った方がいいな
厳密に参照透明にこだわりたいなら使うのも良いと思うけど、ほとんどクロージャで対応しちゃうなあ
>>623なら
const n = 1;
o.addEventListener('click', e => console.log(n, e), false);
で済むし、ソートする場合も
xs => _sort(xs, 'a')
みたいな無名関数で対応してることが多い
JavaScriptの部分適用は何か無理やり感があって個人的に苦手だ そんな貴方にこの仕様がオススメ
https://github.com/rbuckton/proposal-partial-application
今のままだと身になる可能性は5割程度
議論に参加し支援してStageを上げよう! jQuery を使っていないと、各ブラウザに対応できないから、
自分で各ブラウザの違いを調べて、コーディングしなければならないから、無理
>>636
入門 React ――コンポーネントベースのWebフロントエンド開発、2015
WEB+DB vol.97 の特集が、React
WEB+DB vol.94 の特集が、Kotlin, Electron 各ブラウザの違いというけど今のモダンブラウザに違いは殆どないよ
逆に残っている違いってjQueryでも同じく対処が難しいなものばかり
(例えばfile選択キャンセルの監視とか)
あとはIEに対応するかどうかだけど、他にもAPIのポリフィル噛ますのと
同じようにIEにもポリフィル用意するほうが良いと思う o.addEventListener('click', function(e) {}, false);
ってするとダメで
const f = (e){}
o.addEventListener('click', f, false);
がメモリにいいとか無駄に関数が作られないとか何とか昔呼んだ気がするけど
理由はよく知りません >>641
> 各ブラウザの違いというけど今のモダンブラウザに違いは殆どないよ
そう思うならjQueryのソースコード見てみれば?
特定のブラウザ(機種)用のワークアラウンドがいくつも有る
仕様において違いはなくても、バグがあったりするわけ
特定の環境のみで起こるバグだから見つけるのは大変 >>643
そもそも全く同一に動かそうというのが間違いなのでは?
しかも普通その必要があればオーサリングツール使うよね ゲームのBGMで繋ぎ目が分からないシームレスなループ再生をしたいのですが一般的にはどんな方法がありますか?
Web Audio APIにはloopStartやloopEndがあるので可能ですがこれは短い音声の再生用でBGMには向かないとか・・・ 普通にaudio要素のloop属性や秒数指定で十分じゃないかと思うけど
本当に完璧に無くしたいんならAudioWorklet使うしか無いんじゃね >>647,648
ああその用途ならこれ、といったものは無さそう?
もう少し調べてなんとかしてみます ありがとうございました >>645
あんたが言ってるのは、同一じゃなくても(違いがあっても)
動いてるなら良いじゃないって話でしょ?
俺が言ってるのは、特定のブラウザだけバグや仕様の違いで
動かないって話だよ。
https://code.jquery.com/jquery-3.2.1.js
例えばms-プレフィックスがついて動かないとか
// Support: IE <=9 - 11, Edge 12 - 13
// Microsoft forgot to hump their vendor prefix (#9572)
セレクタのバグに対応する
// Support: IE8, Opera 11-12.16
// Nothing should be selected when empty strings follow ^= or $= or *=
// The test attribute must be unknown in Opera but "safe" for WinRT
// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
とか
// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
とか
// Webkit/Opera - :checked should return selected option elements
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
// IE8 throws error here and will not see later tests
とか
// Support: Safari 8+, iOS 8+
// https://bugs.webkit.org/show_bug.cgi?id=136851
// In-page `selector#id sibling-combinator selector` fails
とか 古いブラウザが大半だろうから、サポートしませんって言っても良いのかもしれないけどさ
jQuery使っておいたほうが安全だろ?
// Support: real iOS 8.2 only (not reproducible in simulator)
// `in` check used to prevent JIT error (gh-2145)
// hasOwn isn't used here due to false negatives
// regarding Nodelist length in IE
// Support: Firefox<24
// Workaround erroneous numeric interpretation of +"0x"
// Support: Chrome 14-35+
// Always assume duplicates if they aren't passed to the comparison function
// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
// Detached nodes confoundingly follow *each other*
// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
// Treat the template element as a regular one in browsers that
// don't support it.
// Support: Chrome <=35 - 45
// Webkit & Blink performance suffers when deleting properties
// from DOM nodes, so set to undefined instead
// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
// Support: Firefox <=43 - 45
// Disconnected elements can have computed display: none, so first confirm that elem is
// in the document.
// Support: Windows Web Apps (WWA)
// `name` and `type` must use .setAttribute for WWA (#14901) >>651
ごめんけどあんたの気持ちは分からないや
今だってやってるプロジェクトで権利の関係でオールスクラッチで
当分Chromeでしか検証しないまま一応完成させて
その段階でFxやらEdgeやらモバイルで動かしてみたらなんの問題もなく動いたもの
仮にそこで何かに引っかかっても簡単な置換やなんかで済むだろうし
つうか長文載せないで今生きてるブサウザでの活きてる例をピックアップして挙げてよ
個人的にはIEには興味ないからそれ以外だとより説得力を感じる
特にChとFxの違いは勉強になるから教えて欲しい 長文? 文章なんて書いてないよ。
これはjQueryのソースコードの中のコメント
こういうマイナーケースで問題が有ることは明らかになってる
ユーザーが使うブラウザのバージョンなんて指定できないからね。
あとはどれだけ見れる人が多いかどうか
問題が起きた時のクレームに悩まされるかどうか
予防していればクレームは減るよ。
あとからマイナーケースに悩まされる必要はなくなるよ
> 個人的にはIEには興味ないから
あんた個人の都合で物事を決めたりはしない
客観的なデータ。ユーザー数で考えよう まぁとりあえず、さも当たり前のように初心者に
さてjQueryを使いますって勧めるのはやめなよ。
とりあえずjQueryに頼らなくてもjsが使えるようになってから選択として
jQueryなりvue.jsなりlodashなり選択使を提示すればいい。
独善的にjQueryは標準装備ですと言うのはヤメテってだけ >>653
客観的だのなんのってよくわからないそれっぽいこと言うけど、
あくまで今は俺と君とが固有の価値観をすり合わせるんでしょ、それ以上でも以下でもない
もし一般的な話をするとしたら「客を選べない」って本来良くはないことだからね
下請けとか部下の立場で言われたとおりに作るなと言ってるわけじゃないけど、
まるでそれが正義か理想かなにかと勘違いするのは辞めたほうが良いよ
というか、なんかjQuery使わないことを病的に恐れ過ぎなんじゃない?
いつかその補助輪外す勇気が出せると良いね jQueryは補助輪じゃなくて
自転車だと思いますよ。 補助輪付けてる人は少ないわけで
jQueryは世界中の多くの人が使っている以上補助輪じゃないわな
「ということにしたい!」という臭いが
プンプン感じられるレスだ 唐突な自分語りですまんが
jquery使わない俺かっけーって思ってた時期があった >>655
>>654じゃないが、基礎が何も分からないのにいきなりjQueryの記述だけ覚えたときに何も出来ないかと
>>660
そもそも単なる関数の集合体のライブラリなんだから、全て自分で出来るのを簡単に書けるようにしただけだし、
使わなくて済む、または出来るならカッコイイというか良いと思うけどね > >>654じゃないが、基礎が何も分からないのにいきなりjQueryの記述だけ覚えたときに何も出来ないかと
なんで? 基礎が何も分からないのにいきなりjQueryの記述だけ覚えたときに何も出来ない
っていうのは結局何の根拠もないんだよな。
そもそもおかしいよね。
jQuery使える人なら、jQueryがなくてもプログラムできるでしょ?
できない理由が「基礎がわからなくてもjQueryならできる」のであれば
どんだけjQueryは簡単なんだよ?って話になる。
jQueryは面倒な記述を減らしてくれるだけで、
決して基礎が知らない人でも使えるようになるライブラリじゃない
jQueryを過大評価するのはやめろよ。
アンチが過大評価してんだよ ここ最近のjQueryディス流れは親から育つ反抗期的な感を受ける jQueryはプログラム組めないけど何となく読める
くらいの知識で、落ちてるフリーのやつをちょっとだけ弄る
って感じの人に需要がある 求めてもいないjQueryを勝手に勧めて「jQueryを使うべき理由」を語り出してもなあ
いずれにしても、スレ違い >>665
それってjQuery使わなくても一緒だと思うけど、
jQuery使わないで作るのが大変だから
そういうのはめったに落ちてないって話ですか? >>666
スレ違いはごもっともだが一々反応しているのが滑稽w 何度もこういう流れがあったからテンプレ出来たのに荒らしが消したからなぁ jsからjQueryに入ったら簡単に感じる
jQueryから入って難しくてjs勉強した俺が言うんだから間違いない 全然流れわからないけど、ウェブの参考にしたり拾ってくるならjquery分からないとかなり厳しい
自分だけでやるなら本当に好きにしろ 多分某ローダッシュ君のような布教目的だと思って嫌う人がいるんだろうけど
jQuererに関しては単にjQuery使わないやり方を知らない・想像もできないだけだと思う
自分も昔そうだった
だからjQueryでこう書けばいい、程度であれば許してやって欲しい 例えるなら仕事では「スーツを着る」のが無難で常識だと思っているところに対して
生JS派が別に裸やシャツ一枚でも十分仕事はできる、むしろスーツは窮屈
と言ってるのと同じに聞こえるんだと思う jQueryが悪いとかじゃなくて、「当然手間はかかっても生jsで同じコード書けるよね?
その上で利便性や開発生産性からjQuery選んでるんだよね?」って話じゃないの DOM APIでも大昔に比べて少しマシな書き方が
できるようになったとは言えjQueryにはかなわない
jQueryでできないことも有るかもしれないけど、
そこだけDOM APIを使えばいい
こう考えるとDOM APIのメリットはライブラリが必要ないから
ダウンロード時間が不要なのと実行速度が速い
そういうメリットを言えばいいのに、jQueryやめろーとしか言わないんだよな
いや、もちろんダウンロード時間も実行速度も無視できる程度だよ。
だからjQueryを使った時の開発速度と比較すると、小さなメリットしか無いよ。
でも、メリットを言うならそこしか無いだろ?そこを言えば良いんだよ。
今は反論されて撃沈したくないから、あえてDOM APIのメリットを言わないようにしか見えないよ
結局その程度の気持ちなんだろ? jQueryをやめろーって言ってるのは
本気でDOM APIの方がいいと思ってるなら、メリットを言えるはずだ
補足 ライブラリのメリットデメリットの話なので、
jQuery以外使えない人は困るとかいう、
人間の能力の話はしないでください jqueryが初心者向けだというなら、俺はTypeScriptを薦めたい。
コッチのほうが初心者向け。
例えばdocument.まで打ち込めばquerySelectorが候補として出るし必要パラメーターと返り値の型が分かる。
null安全でもあるからちゃんとnullチェックの分岐処理を入れないとエラーになる。
だから丁寧なコードをある程度矯正できる。
という具合に相手が求めてないのに薦めてうざいと思った? > jqueryが初心者向けだというなら、俺はTypeScriptを薦めたい。
TypeScriptは否定しないけど、それは言語の話なので
TypeScript(言語)でjQuery(ライブラリ)を使うのが良いよ。
君が勘違いしてるのはjQueryでコードが短くなることのメリットは
書く量が減るというメリットじゃなくて読む量が減るというメリット
たしかにタイプ数は減るが、仮に少ないタイプ数(操作)で
何万行もコードが自動生成され、それを読まないといけないとなったらどうする?
大変だって思うだろう? コード補完されたからといって、
そこから生成されるコード量が多ければ、その分だけ読まないといけない。
書くのは一回(数回)だが読む回数はもっと多い。
バグ修正で忘れた頃に読まないといけない。他人が読まないといけない。
そういう時に読む量を減らすのが目的なんだから、候補として出るというだけじゃ
何も問題は解決してない
そして最初の話。TypeScriptでjQueryを使えば良いんだよ
> という具合に相手が求めてないのに薦めてうざいと思った?
いや別に? 内容に穴があるなぁって思ったよ。 俺も時々、型あり言語では型を書くのが面倒だが、
それは補完してくれるテキストエディタがあれば
そこまで面倒ではない。的な発言をすることがあるしね。
ここで型があったら読まなければいけない量が増えるじゃないか
っていわれそうなんで補足
俺が言ってる読まなければいけないから大変いうのは「処理」
型などの定義部分は、処理とは違って、何をやってるんだろう?と
読み解かなければいけない所ではなくって、コメントのように
あぁ、ここはこの型なのねってさらっと見ればいい部分
なので定義部分に関しては許容できる。というスタンス
だから俺にとって「冗長なコード」っていうのは、
型(定義)ありだから冗長ってことにはならないんだよね
処理しか見ないからね。
そして型(定義)部分は、たいして読まなくて良いものだから
面倒な点があるとすると(繰り返すけど定義部分は)書く時
それは補完で相殺できる。
もちろん>>677の
> 例えばdocument.まで打ち込めばquerySelectorが候補として出るし
っていうのは補完してるものが定義ではなく処理(メソッド)の一部なので
こういうのはなるべく少ない方がいい。書く時ではなくて読む時の話。 もう一つ>>677に補足しておこうか?
補完してくれるから、とかnull安全だからという理由は
初心者向けということにはならない。
だってそれらは上級者でも便利な道具なんだもの。
初心者向けというのは補助輪のように、
上級者にとっては足かせになるようなもののことだろう。
例えばScratchみたいなビジュアルプログラミング言語も
上級者にとっては足かせになるから、初心者向けだろう。
TypeScriptもjQueryも上級者が使っても便利なものは
初心者向けと呼ぶのは間違いだろう。
初心者でも上級者でも使いやすい道具という言い方なら間違いじゃないけどね。 あと俺はjQueryが初心者向けだとは言ってないよ。
初心者に上級者でも使ってる道具を薦めるのは
小さい頃から本物のピアノを薦めるのと同じようなものだろう。
本物志向w
まあjQueryは上級者でも初心者でも使いやすい道具なんだが 無関係な話は無い方が良いけど、TypeScriptやjQuery
はこのスレに関係ある内容なのでうざいとは思いませんね。
無関係な話(例えば「おまえの考えは気に食わんから書き込み禁止」的なもの)は
やめましょう。 直接DOM触らんのにeachの為にjquery入れてる
みたいな悲劇が起こらなけりゃ別に良いよ ライブラリを本来の目的と違う使い方をするのは
ライブラリの問題ではなくて、使う人の問題なので、
人の問題を理由に、ライブラリに文句をつけること自体がおかしい
それを言ったら、ブラウザで動かす必要が無いのに
(alertで)画面にメッセージ表示したいために、
JavaScriptを使うという悲劇とかいう言い方までできてしまう。
そういうのは人の問題 みんな今流行りのprototype.js使おうぜ最高にイケててナウいからモテるぞ prototype.jsは最終更新日は2年以上前だよ
最新のブラウザに対応しているのかどうかも怪しい
prototype.jsはDOM周りは、DOM APIのショートカットでしか
なかったのが良くなかった。jQueryはDOMをリストとして
扱うという考え方の変更だったけど、prototype.jsは
document.getElementByIdって入力するの長いでしょ?
短い名前の関数用意したよ。で終わってしまった。
標準オブジェクトのprototypeを変更するというのは、
そんなに悪くない発想だと思うんだけど、やっぱり標準で
同じ名前のメソッドが定義されて互換性がなくて。
なんだろうな。GoogleとかMozillaとか大手が同じことをやっていれば
このアプローチでも良かったんだと思うけど、運かなぁ。それがなかった
まあやっぱりjQueryに駆逐されたものという扱いなんだろうな >>675
問題はその理屈だと結局ありとあらゆる事をする時に色んなライブラリを提案しないといけないのか?ということになり
極論を言うと、今その問題を「a()」だけでこなせるライブラリ書いてupしたからそれを使うのが一番スマートだよとも言えてしまう
勿論もしそういう事なら皆それはおかしいと思うはずだが、jQueryで意見が別れるのはJSで一番有名なライブラリという特殊性にあると思う
jQueryを準標準だと考える人と、そうでない人との溝は深い >>1の禁止事項を読んでから書き込みしてもらえないものかね 多分jQueryを他のライブラリと同列だと考えない人にとってはその禁止事項は意味を成さないんだろうね
何でうざがられてるのかもよく分かってないようだし jQueryがオワコン気味なのは紛れもない事実
流行中はドヤってもいいけど潮目が変わればおとなしく引き下がるべし 取り敢えず使いたいやつは使えってことだろ?
俺が知りたいのは、JavaScriptを学ばずにjQueryを使うことは最適解なのかどうか。教えてくれ jQuery を使わない開発者は、ドンドン貧乏になっていく!
このブラウザでバグが出た。
このOS でも、バグが出た
新たな環境で、バグが見つかる度に、修正依頼が届くから、
結局、無料で、永遠に修正させられる
最終的には、時給が100円以下になる。
JS は、トラブルと貧乏しか生まない! とりあえずdom操作目的ならvue.jsとかreactを使うから
そのためにjquery使うのは微妙。
他に使いみちなんかあるの? なんというか、「え?プログラミングってどんなものか知りたいの?」
「じゃあ今見てるブラウザでF12押して、コンソールに1+1って入力してみて」
ってできる気軽さがJSの醍醐味なのに、初期学習者に対してjQueryを押し付けるのは無粋なんだよ
開発者としてならどんどん使ってどうぞ、でもJS初心者の学習には不要 つうかそういうようなプログラミングを勉強したいっていう層や動機無視で
すぐ業務が云々言い出す奴も無粋極まりないと思う
最初はChromeとか今使ってるブラウザで動けばいいじゃない
でもそれを公開しようとした段階で別のブラウザだと仕様が違うことを知り、
じゃあどうするのかを考えるのも勉強だと思うよ
最初からjQueryありきで進めるのはやはり良くない 基本的に俺もjqueryいきなり勧めるやつ否定派だけど
jqueryオワタ論は懐疑的。chrome-extensionで今開いているサイトの使ってるライブラリが分かるやつがあるんだけど
qiitaではreact押しでjquery否定な感じだが
現実はそこまでreact使ってるサイトはないし、jquery使ってるサイトは多い。
多分、理想と現実のギャップを目撃してるんだろうけどね。 このスレはそういう流れをもう何度も繰り返してきたんだよ
>>11にまともなテンプレが載ってるから目を通すと不毛な争いを避けられる どう考えても避けられるとは思わない
歴史の教科書や犯罪事例が合っても犯罪がなくならないのと同じ 何れにしてもライブラリの話題は他所でやれってことでしょ
jQueryなんて専用スレあるんだしそっちに誘導してやればいい >>690
> jQueryがオワコン気味なのは紛れもない事実
せめてシェアが大きく下がってから言うか、
jQueryよりも優れているというコードを書いてから言ってほしい所 >>693
> とりあえずdom操作目的ならvue.jsとかreactを使うから
現実から目をそらさないで考えてみ。
今までHTMLとCSSで書いていました!
というのをvue.jsやreactに置き換えた所あるかい?
vue.jsやreactの欠点は、既存のHTML+CSSに
JavaScriptを付け足して動作をカスタマイズするという
用途に向かないんだよ。 >>696
> qiitaではreact押しでjquery否定な感じだが
> 現実はそこまでreact使ってるサイトはないし、jquery使ってるサイトは多い。
> 多分、理想と現実のギャップを目撃してるんだろうけどね。
理由ははっきりしていて、react押しなのはもともとJavaScriptを
多用するサイトを使っていて、JavaScriptコードのメンテナンスコストが
高くなってしまってるという前提が有るからなんだよ。
残念ながら既存のウェブサイトはページの一部にJavaScriptを利用しているだけ
例えば会社の地図を表示するためにAPIを使ったりとかね
その程度なんだからreactに乗り換えるわけないよ Reactは最近むしろReact Nativeが最近勢い良いじゃん
知ってるか?WebブラウザのためのReact風にNativeアプリを作れるようにした
React NativeをWebブラウザ用に書き出すためのReact Native Webというのがあって
そこそこ使われてるんだぞ?まさに奇想天外だな >>706
> Reactは最近むしろReact Nativeが最近勢い良いじゃん
あー、それは理解できるな
Reactはアプリ用であってウェブサイト用ではない
と考えるとReact Nativeになるもんな
まあどちらにしろウェブサイト用のjQueryに変わる
ライブラリはまだ登場してないことに変わりはないが reactのjsxはキモいんだがわかるやついない? jQueryに変わるウェブサイト用のライブラリってのも必要性が分からんけどな
jQueryで何千行も書いたりしないんだろう?
実際はせいぜい十回くらい要素取るためだけに使ってるだけじゃないの?
なら別にそれ使わなくたって大した違いないじゃん
lodashに含まれる僅か数種類の機能を数カ所で使いたいからといって
わざわざlodashをライブラリに加えたりしないでしょ
逆にアプリケーションとしてフレームワークを使うってことなら
それこそ何千行の短縮になるから価値も理解できるけどさ
なんか取り敢えずちょっとはマシになるだろうから何も考えず取り敢えずちょっと使っとけ
みたいなのは容認できないわ >>709
いやねあんたの言う「大したことはない」は
「面倒だけど、それぐらい我慢できる」って意味になってるんだよ
なんでいちいち我慢しなきゃならんのかと 各ブラウザのバグ対応も有るしな
jQueryをやめると、コードは5倍ぐらいになるからな なんのメリットもないのに使わなくても我慢できるから使うな的な
理屈を言うのやめろよ。メリットを言えよ。メリットを 古いブラウザは動かなくさせられるメリットがある、とか >>712
いや、メリットは暗に言ってるだろ
管理するライブラリが減る、管理しなくて済むと
仮に倍違うとしても、ここで質問されるのはせいぜい数行のもの
その数行の節約のために質問者にjQueryのDL、もしくは管理と
勉強を強制するのはそれこそメリットよりデメリットが上回ってるでしょ
バグ対策とかいうのもここでの質問には基本的に必要ないんだよ
まあ仮に質問者が教えていただいたコード僕のIE6じゃ動きませんと言ったとしても
じゃあjQuery使うと良いよというのが良いのかどうかは分からんがな 必要に応じて適切なライブラリやフレームワークを推奨するんなら分かるけれど
何でもかんでもjQuery有りきっていうのは間違ってるってことでしょ
メリットが有るなんてどのライブラリやフレームワークだって同じだし
ならこの世の全てのライブラリやフレームワーク使うのか?って話になる >>714
> 管理するライブラリが減る、管理しなくて済むと
普通の言語だったらそうだろう
だけど、ブラウザの場合はどうしても避けられない
ブラウザの種類というものが有る。
ブラウザの種類を管理しなければいけないんだ。
jQueryを使うと管理するブラウザの種類が減る
それぞれのブラウザのバグの対応を行ってくれる
そっちのメリットのほうが大きいよ >>715
> 必要に応じて適切なライブラリやフレームワークを推奨するんなら分かるけれど
> 何でもかんでもjQuery有りきっていうのは間違ってるってことでしょ
いや、場合によってはjQueryじゃなくてlodashを勧めたりしてるよ
momentを勧めたことも有る。なんでもjQueryではなく
その他が適切な場合は別の方法を提示してるよ。
単にAngularやReactが適切な質問がないってだけ
それは俺が適切じゃないと思ってるだけで、
jQuery以外のライブラリやフレームワークが適切だと思えば
その例をサンプルコード付きで出してあげればいいじゃない >>714
> 仮に倍違うとしても、ここで質問されるのはせいぜい数行のもの
> その数行の節約のために質問者にjQueryのDL、もしくは管理と
人生で数行しかコードを書かないならそうだろうね。
でも違うからね。 >>716
だから上でも一度言ったがお前の仕事ならそうすればいいさ
俺も仕事ならそうする
でもこのとかのスレの性質上コード作成依頼は当然お断りだし、一問一答のような場合が殆ど
レベルとしては小中学校の義務教育内容なんだよ
jQueryを使ってどう書けますか?どういう道具を使えば実現できますか?という質問なら
その都度、何も考えずにこのライブラリ使えばこれで済むよ、でいいんだよ
でも質問者的にはJSを勉強しよう、理解しようという趣旨で一般的な質問してきてる場合が多い
ここは「JavaScript を自ら学ぶ人のための質問スレッド」だからね
そうじゃないと必然的にコード作成依頼に近くなってくる
その上でここなどでの回答というのは最も単純に物事を解決できるものではなくて
きちんと質問者がJSの勉強を出来るものでないといけないんだよ
誤解しないでほしいけどそれはライブラリの話するなと言うことではないよ
ただjQueryは必須だといってJSに全く向き合おうとしないのは、
何だかんだ理由つけて完全に素のJSから逃げようとするのは行き過ぎということ 質問者に決めてもらえばいい
『私は小中学生なので高校や大学で習う公式で教えないで下さい』か
『私は社会人なので率直に役立つ方法を教えて下さい』か >>719
質問者を育ててるつもりかもしれんがそれはお前のエゴ
育つやつは勝手に育つ
俺達は自由に解答すればいいだけ
それをどう捉えて活かすかは完全に質問者の責任 そんなに「JavaScriptを学ぶ」に
こだわるならDOM APIはブラウザが提供しているAPIであって
JavaScriptではないと言わないといけないな。
どうせダブルスタンダードなんだろうけどな。 ChromeでのみWebGL2のcreateVertexArrayが時々nullを返すんですけど返す条件って分かりませんか?
あとcreateVertexArrayやcreateBufferで作成したオブジェクトも参照が切れた時点でGCで回収されるので明示的にdeleteしなくても大丈夫ですよね? >>723
できれば再現するための最小コード貼ってみて
まあ経験上はタイミング的問題というかバグなのかもしれない
それと昨今のメモリリークバグはdeleteは関係ないよ
JSオブジェクトとリンクされた内部バッファの管理の問題だから
JS側では別策を取る以外何もできないというのが主流だから
とは言えChromeは1年くらい前からネイティブとJSのGCを統合する仕組み強化したから
Canaryでも使っていない限り滅多にお目にかかれないと思うけどね
(ただしBlobURLを使うと仕組み上どうしてもリークする) 取ってつけたように適当な質問しなくていいから(呆) >>722
それは流石にない
まずは銃に頼らず筋肉を付けろと言ってるところに
じゃあ人間の本質は脳だから手足を無くせと言うようなもの >>726
例えが的外れ。
まずjQueryはJavaScriptで使うライブラリなのだから
使う言語はJavaScriptだ。jQueryを使っていても
JavaScriptを使う以上、JavaScriptの勉強になる。
DOM APIはJavaScriptではない。これはJavaScriptの仕様書に
DOM APIがのってないことからも明らか
つまり、おまえはJavaScriptとDOM APIを混同している。 > まずは銃に頼らず筋肉を付けろと言ってるところに
これを「道具に頼らず筋肉をつけろ」と言い換えれば
DOM APIの立場ってのがよく分かるだろう。
jQueryは道具。DOM APIは筋肉。普段の生活で何を使っている?
朝起きてシャワー浴びて着替えて電車に乗って
パソコンを使って仕事をして食べ物を調理して寝る
川に行って水を組んで火を起してお湯にして
何キロも歩いて紙と鉛筆で図表を作って
狩りをして火をおこして焼いて寝る
これが「道具に頼らず筋肉をつけろ」ということだ
無人島ツアーじゃあるまいし、そんなことをして遊ぶ気はない。
どうしても必要なところだけ頑張ればいい DOM APIはCで言うところのOSのAPI(の一部)みたいなもんだと思う
CとJavaScriptは単独ではコンパクトな辺りはよく似てると思う OS、例えばWindowsだと、Win32APIを持ってきて、
これが基礎だと騒がれる気持ちがわかるだろう? ぶっちゃけjQueryが一番息が長くて
これからもほとんど変わらず生き残り続ける
ライブラリだよ。
AngularとかReactとか1年後に今の知識が
使えるかどうか怪しい オワコン云々よりjQueryに変わるような優れたライブラリがないだろ?w まあbootstrapがjQueryに依存してるからなあ
生き残ってる理由はそれが大きいな >>730
数年前ならWin32APIだったと思うが今なら(ネイティブではないが).NETくらいには感じてるよ >>739
本末転倒ってやつだなw
○○が良いから乗り換えた・・・乗り換える理由がある。正しい
○○が嫌だから乗り換えた・・・乗り換える理由がない。間違い Underscore を使っている、Backbone.js でさえ、
イベントハンドラーを追加した要素の、祖先の要素を削除したら、メモリリークを起こす
jQuery では、祖先の要素を削除したら、
その子孫のイベントハンドラーもすべて削除するから、メモリリークしない
jQueryの互換ライブラリのZepto.js でも、メモリリークする それは仕様の違いであってメモリリークとは言わない
もしかしたら生子要素を再利用する場面もあるかもしれないし >>727
> DOM APIはJavaScriptではない。これはJavaScriptの仕様書に
> DOM APIがのってないことからも明らか
JavaScript APIという用語を知らないのか
それから、JavaScriptという仕様書はないぞ
君が「JavaScriot = ECMAScript」と曲解してるだけ そんな文句を付けて何か意味があるのかは知らんが
取り敢えずJavaScriptという仕様書はかつてあったけどな
__defineGetter__やらESの仕様にないがブラウザが実装しているものについて
WHATWGが定義していたが拡張も概ねES仕様書に乗るようになったので削除された >>743
jQueryもJavaScript APIだよ JavaScript APIとはなにか?
https://www.google.co.jp/search?q="JavaScript+API"&oq="JavaScript+API"&sourceid=chrome&ie=UTF-8
Maps JavaScript API - Google Developers
JavaScript API for Office - MSDN - Microsoft
JavaScript API の例 - IBM
Garoon JavaScript API - cybozu developer network JavaScript APIって呼び方意味分からんわ
JavaにJSの環境を公開するAPIならそう呼ぶのはわかるが
ライブラリはあくまでライブラリでしょ
jQueryくらい薄いラッパーではAPIと名乗ることすらおこがましい >>744
「JavaScript, aka.」の事だとしたら、相互運用性の為に非推奨機能をまとめただけの補完的仕様で「JavaScriptの仕様」と呼べるものでもなかったと思う JavaScriptによるAPIなのか
JavaScriptのためのAPIなのか
コンテキストによるだろ それ単体で「JavaScriptの仕様」と呼べるものでもなかったと思う
に訂正しておく 過去にW3CでJavaScript APIという単語を見た覚えがあるけど、今見るとなくなってるね
まあ、API for JavaScriptとでもいえばいいんじゃない? 今の論点はEcmaScriptという仕様の実装であるJavaScriptに
DOM APIが含まれているものは存在しないというところでしょ DOM APIはJavaScript以外からも呼び出せる
だからDOM APIがJavaScript APIなのではなく
DOM API for JavaScript というものがあるという話
"JavaScriptのための" DOM APIなのだから
JavaScriptに DOM APIが含まれていないのは明らか Google Chrome等のJavaScript実装はDOM APIを実装しているだろ >>753
その理屈はおかしい
クロスプラットフォームなAPIはどのプラットフォームでも実装できるというだけ
JavaScritptでもJavaでもPHPでも使えるAPIがDOM API >>754
> Google Chrome等のJavaScript実装はDOM APIを実装しているだろ
その答は「含んでない」
ということを明らかにすれば君も納得できるんじゃない?
なぜ含んでいないのが明らかなのかというと、Google Chrome等のJavaScript実装は
V8 Engineなわけだが、このV8 エンジンは ブラウザではないnodeでも使われてる。
nodeにDOM APIがないのは言うまでもない
そしてもう一つDOM APIを実装しているものとしてBlinkという別の名前がある
https://www.chromium.org/blink
そのblinkから興味深いコメントを持ってきたよ。DOMがBlinkにあることの証拠になるだろう。
> Finally, we’d like to explore even larger ideas like moving the entire
> Document Object Model (DOM) into JavaScript. This has the potential to
> make JavaScript DOM access dramatically faster, but will involve a very
> large re-write of WebKit’s DOM implementation?something that would
> be difficult in WebKit which has two supported JavaScript engines.
Google翻訳
> 最後に、Document Object Model(DOM)全体をJavaScriptに移行するなど、
> より大きなアイデアを検討したいと考えています。これは、JavaScript DOMへの
> アクセスを劇的に高速化する可能性を秘めていますが、WebKitのDOM実装を
> 非常に大きく書き直す必要があります.WebKitでは2つのJavaScriptエンジンがサポートされていません >>755
JavaでもPHPでも使えるから
Java APIでありPHP APIだって
言いたいって話でOK? >>757
それぞれの言語仕様の範疇でDOM APIを呼び出しているわけだから、その解釈でいいんじゃない?
同じDOM APIでもJavaとJavaScriptでは命名規則が微妙に違うよね >>756
仕様と実装の違いは理解できるか?
node.jsはDOM APIを実装しなかった
Google ChromeにおけるJavaScript実装はDOM APIを実装した
それだけの違い >>758
そりゃそうだろ。
概念的にはこんな感じだ
[DOM] - [JavaScript用バインディング] - [JavaScript]
[DOM] - [Java用バインディング] - [Java]
見ての通り、JavaにDOMが含まれているわけじゃない >>759
node.jsとChromeは両方共
同じJavaScript実装を使ってるんだよ。
おまえまずそこからだな。 これ仕様の話をしてんの?
実装の話をしてんの?
「JavaScriptの仕様」なんて話をしている輩は論点がずれている気がするけど そもそも、JavaScriptという名の仕様が存在しないから、JavaScript実装なんてワードを持ってくるのが間違いなんだな >>763
そもそもそれ言ってるやつ「仕様」と「実装」の意味がわかってないと思う
なんかブラウザのことを実装、JavaScript(?)のことを仕様と思ってるっぽい
正しくはブラウザはJavaScript実行環境。
V8エンジンなどのJavaScript実装とBlinkなどのレンダリングエンジン(DOM含む)
これがJavaScript実行環境
JavaScript実行環境は、JavaScriptの仕様でも実装でもない V8エンジンを使っただけどオレオレブラウザ作っても
JavaScript実装したぜすげーだろとはいえないからなぁ な? >>765はブラウザのことをJavaScript実装って言ってるわけだよ
バカってわかっただろ? >>724
どういう環境・状況で発生するか分からないので最小コードは分かりません
開放してないのでメモリリークでnullになってるのかと思ったので
deleteVertexArrayやdeleteBufferで開放してないせいだと思いましたが
明示的にしなくても良いということでしょうか? ドライバのバグかもしれんしとりあえずnullが来ても良いようにするしかない >>770
しなくてもJSオブジェクトの参照が切れれば遠くないうちに回収される
deleteを呼ぶとそれを早める事ができる
と仕様に書いてある 子供の頃自治会の野球やらされ続けて苦痛だったがjQuery推しの奴らはそれと似てるな
ただ皆と上手く遊べるように運動神経付けたいですってだけなのに素振りを押し付けてくる
実際遊ぶことが多いのは野球が多いにしても問題があると思うけどな まーたわけのわからないことを言い出した
野球批判したいだけなら野球板でやればいいだろ マジレスすると、野球の批判ではなく野球のように有名だが特殊なものを
それが常識であるかのように押し付ける事への不満だろ わかってて野球批判へ話をすり替えるためにレスしてるんでしょ >>775
マジレスすると
1. 野球とjQueryが似てると言うだけでその根拠が書いていない(だから似てないかもしれない)
2. 1以外(似てるという根拠がない)野球の話しかしていない
3. 子供の頃野球やらせて苦痛だという前提の話をしてる(苦痛じゃない人には当てはまらない)
4. 運動神経付けたいだけの人という前提で話をしてる(野球やりたい人を含めていない)
5. 素振りを押し付けてくるという前提で話をしてる(野球をさせてくれる所に当てはまらない)
つまり勝手な前提を取っ払って、自分の感想部分を明確にすると
「俺は運動神経付けたいだけなのに、俺の自治会では野球をさせてもらえず
素振りばかりやらされて苦痛だった。でも世の中には野球が好きで野球させてくれる
恵まれた人もいるだろう。そういう自治会であれば苦痛でもなんでもないのに。
そういうところがjQueryと似ている」
と言ってるわけだよ
一言で言うと「俺は野球嫌いで野球やらされるのも嫌い。お前らもそうだろ。そうに決まってる」
と言ってるわけで・・・あぁ、一緒だ
「俺はjQuery嫌いでjQueryやらされるのも嫌い。お前らもそうだろ。そうに決まってる」
おまえの好みを押し付けるな。余計なお世話だって話と一緒だ。
野球やるかやらないかは、勧められた人が決めれば良いこと
提案はなんでもOKだ。 >>788
おまえが野球嫌いだからって他人も同じだと思うな
野球勧められてやるかどうかは、本人が決めることだ
他人のおまえが指図すんな。だまってろ ただの感想にこれだけ突っかかってる時点で自己矛盾してるわけだが、自覚がないのが厄介だな なぜ感想に突っかかることが矛盾になるのか?
意味が分からんな あれかな?
jQueryに文句言っても、黙っていてください
その代わりjQueryに文句言いませんから
とかいう矛盾w jQueryに対して何らしかの不満を持ってて嫌われているんじゃなく
それを使う人のとある振る舞いが注意されてるだけなのにまだわからないか
呆れるね >>783
あんた質問者でも回答者でもないんだろ?
それが余計なお世話ってまだわからないのか?
注意してるのはおまえであって、質問者じゃない
感謝すべき回答をおまえは自分が気に食わないからって
書き込むなって言ってるだけ。
少しは口をつぐんだら?おまえが黙っていれば
おまえに文句はつけないよ?w 「とある振る舞い」とかぼやかして書くから
何が言いたいの分からんが、やって良いことを羅列しておこう
・jQueryの話題をすること
・jQueryのサンプルコードを書くこと(むしろ大歓迎)
・jQueryのすばらしさを語ること
・jQueryのデメリットを言わないこと(ほかの人がやればいい)
・jQuery以外のサンプルコードを書くこと(むしろほかの人がやれ) > おまえの好みを押し付けるな。余計なお世話だって話と一緒だ。
ブーメランだよなあ 「言論の自由」を主張しながら、他者に対しては言論封殺。
そういう行為を二枚舌と言います。 >>785
jQuery信者のjQuery信者によるjQuery信者の為の言論統制 別にjQueryに限らなくても、ちょっとした数行の質問回答程度で
やれ関数型で書くのが安全だのワンライナーがスマートだの拘り過ぎるやつは鬱陶しい
しかもそれが今回のケースでは適当というのならまだ有用だしなんの問題もないけど
jQueryの奴らはDOM操作が伴えば必ずそうしろというただの信仰心の押し付けを行ってるだけだもの 俺はjQueryがどちらかといえば嫌いだが、jQueryユーザには罪はないと思っていたんだ
だが、このスレを見てると、jQueryユーザの宗教染みた押し付けが酷くて、jQueryユーザそのものに嫌悪感を抱くようになりつつある
良識あるjQueryユーザにはいい迷惑だろうな >>789
それはおまえの思い込み。
ただ単にjQuery使ったほうがシンプルにかけるから
書いているだけ。被害妄想も大概にしとけ >>786
ブーメランじゃないよ。
選択肢を増やすのは良いこと。
その選択肢をなくそうとするのはダメなこと。
選択肢をなくそうとするのではなくて
別の選択肢をいわないと >>789-790
そもそもここは荒らしがこの流れにするためにテンプレ撤去して立てたスレなんだから
良識も糞もないんだよ ページの再読み込みなしでURLとページ内容が変わるのってどういう仕組みでしょうか?
進む戻るの履歴には記録されましたが、読み込み中の表示もないしページが読み込まれると動くアドオンなどは動かないです
IEとCHROMEで同じ挙動でした
javascriptだとは思うのですが、よろしくおねがいします >>794
History APIを調べると良いよ >>791
違うね
ライブラリを入れるって事自体がシンプルじゃない
関数型チックに書くとかとは訳が違う
結局jQuery推しの人は目の前の問題にシンプルに答えることをせず
やれブラウザの互換性だの自分で勝手に問題を難しくしてるだけ >>797
シンプルに"書ける" って話をしてる
おまえが言うシンプルとは書くことの話じゃないだろ
曖昧な言い方をして話をすり替えんな
ホントお前キモいわ >>797
どんな答だって目的を実現できてるなら
書いて良いんですよ?
jQueryで書きたい人はjQueryで書けばいいし、
あんたの好きなやり方で書きたいなら書けばいいでしょ?
やったらだめなことは、jQueryで書くなと言うこと
どんなやり方だってそれはちゃんとした回答だが
書くなということは回答じゃない。
単なるおまえのやり方の押しつけ
押し付けはやめておまえのやり方のコードを書きましょう。
jQuery版は何回もコードが上がっています >>795
ありがとうございます。多分これですね
詳しく調べてみます どういたしまして。とまあjQuery布教の合間に
こうやって感謝されているわけさw
悔しかったら対抗してみれば? 子供のケンカまだやってたのかいい加減にしろよ
ここら質問スレなんだから他でやれ >>792
jQuery以外の選択肢を奪っておいてよくいうなあ、と思った
> ・jQueryのデメリットを言わないこと(ほかの人がやればいい)
> ・jQuery以外のサンプルコードを書くこと(むしろほかの人がやれ) >>803
奪うというのは、jQueryの話題をするなと連呼すること
なんで俺が書かないことが、奪うことになるのか?
俺が全ての書き方を伝授すれば良いのか? >>799
だれもjQueryで書くななんて言ってないと思うけど
ただ本当は有用でないものを有用だと偽って勧めるのは良くないよね
最初から「布教目的だけど」とか「俺のエゴだけど」とか言って勧めてね
あ、違うか、「ブラウザ互換が怖いからおせっかいかもしれないけどわざわざライブラリ使うね」だったね >>805
じゃあこれからもjQueryでサンプルコード書いていきますね(にっこり)
もちろん理由もちゃんと書いていきますね。jQueryを使った理由を jQueryを含めたライブラリの話題をすることは
禁止じゃないからな。誰もjQueryで書くななんて言うはずがない >>805
ブラウザの互換性ならとっくに問題なくなってるよ。
今問題になってるのはブラウザのマイナーなバグや
(互換性ではなく)機能の違い
互換性は高くてもバグが有ることは避けられないし
互換性は高くても、あるブラウザには搭載されてない機能
ってのが存在する。機能の有無と互換性は関係ないから
そういう時jQueryで書いていれば、かなり古いブラウザも含めて
同じように動くことが保証されている。
そしてそれ以上にjQueryを使うと記述量が大幅に減るのがメリット
これは誰もが比較コードを書いて証明してくれる
jQueryで書くとこんなに短いコードが、jQueryなしだと
こんなに複雑になりますよって。 っていうかjQueryを未だにブラウザ互換のために使う人なんているの?
純粋に開発効率が高いから使ってるんでしょ?
何年前から時代が止まってるんだろうなー >>809
互換に於いての開発効率も上げるよ
そんなに目の敵するようなことでもないだろ?w
スレ違いなのでこれで終了 jQueryが対応している互換の範囲をサポートすべきという前提で
互換に於いての開発効率を上げるためにjQueryを使うべきと言ってるから酷いね
実際は互換が問題にならない場合だってjQueryでしか書けないし、
jQueryでも不足する場合は書けないだろうしね
実際はJS切ってる人でも最低限閲覧できるようにした状態で
プログレスエンハンスメント的に作っていくことだって必要だし
一般的な質問においてjQueryを使うのはマイナスでしかないけどね
そこを勘違いしてはダメだよね いつもjQuery使いに仕事を取られてるの?
必死すぎでワロタ 以前脱jQueryを称える上司と話したことあるんだが
どうやら素JSがドレスコードあり(ジャケットくらいのレンタル可)の店だとすると
jQueryを使うのは浮浪者対策に全ての客にマネキン被せる店だそうな
それでjQuery使わなくて済むのが理想形だから云々言ってた
因みにフレームワークは対戦道場でロボットスーツ着るようなものでそれはOKらしい
要は臭いものに蓋してまで受け入れることが許せないと叫んでた
つまり結局はここでjQueryを批判する人たちって要は
ここくらいでは理想を語っても良いじゃないかという事なのだろう jQuery使わなければまともに書けないと思うのは勝手だが
そう初心者を洗脳するなと言いたいだけだけどな
要するに標準DOMにもある程度慣れて覚えたほうが良いってこと
理想というか、標準APIが使えない人が増えることへの危惧はある
そういう点はjQueryの功罪の罪の部分で回り回って自分たちの首締めつ行為だと考えてるから
こういう初心者教育スレでは皆で気を付けていこうよという気持ちはある
古い環境を相手し無いというのだって現実は難しくても
せめて相手するのが当たり前という思想だけでも増やさないようにしようよという感じ
で、そういうのはWebプログラマの義務であり共通認識じゃないの?という戸惑いがあって
そういう意味でその場しのぎのjQuery推しはエゴだって言った 料理質問スレで旨みを出したいという質問者に対して味の素ばかり勧めるようなもんだろ
味覚は千差万別だし最初から全日本人向けに調整されている味の素を使うべき
1から出汁を作るのはナンセンスだよとか言われちゃ
調味料を全否定する気がなくとも一部の料理という行為自体を大切に思っている層から顰蹙を買うのは分かる
でも実際質問してきてるのが今日の献立に悩む主婦なら味の素を勧めたほうがいいだろうけどな
実際そういう人の割合が高いと思うし、その人達に料理を深く学ばせようとする事にどれだけの社会的価値があるのかね 標準DOM、APIが扱いにくいだけだろ?
jQuery叩いたって仕方がない扱いにくいのは事実なんだからな 扱いにくいのは絶対間違いない
だから実際はライブラリ使うか作るかになる
せめて例えばnew Elenent({attributes})とかできればいいのに
そうなるなる言われて何年経っただろうか?
CSS HなんとかとかよりDOM直せよとつくづく思う >>814
おまえのエゴを押し付けないように
単におまえが質問にDOM APIで答えればいいだけの話
俺はjQuery版を書くだけの話
こちらは選択肢を提示するだけ
あとは質問者が選べば良い
おまえの考えを押し付けるな 別にjQuery使ったからってDOM APIを使えなくなるわけじゃあるまいしw
どうも能力が低いやつが多いよな
自分がjQuery使ったらDOM API使えなくなるからって
他人も同じだと思わないように
他の人はjQueryを教えたってDOM APIも使えるんですよ? >>813
ひどいなw
jQueryを批判することが出来ないから、
理由もなしに別の何かに例えて、その別の何かの話にすり替えてそっちを批判してる
カレーはウンコ色。ウンコは汚い臭い。だからカレーも同じだと思うだろう?という
非論理的な思考をしてる
例え話のダメな使い方だね。ちょっとそれは議論する能力が低いとしか思えない 時は金なり
必要であれば時間に余裕がある時に掘り下げて学習すればいいことよ
これも能力な >>811
> 実際はJS切ってる人でも最低限閲覧できるようにした状態で
> プログレスエンハンスメント的に作っていくことだって必要だし
> 一般的な質問においてjQueryを使うのはマイナスでしかないけどね
それjQueryを使わない理由になってないよ
プログレスエンハンスメント的に作るんだろう?
DOM APIを使って、それをそのままjQueryに置き換えられるんだから
つまりjQueryを使ってプログレスエンハンスメント的に作ることも可能
AngularやReactなどのフレームワークの類ならJavaScriptをオフにしたら
なんにも表示されなくなることがあるがjQueryはそうではない プログラム板のが落ちてWeb板も荒らしの立てたスレを再利用したらこの有様
やっぱ真っ当なJSスレが一つは必要なんじゃねえかな
ずっとテンプレ作ってた人も既に見てないっぽいけどさ 某人物が一人で必死になって連投しているようだから、ID強制可能なプログラム板を復活させたらどうか、と思った だからお前の考えを押し付けるなって
なんで、jQueryの話題がないことが
まっとうなJSスレってことになるんだよ。
jQueryを含めてJavaScript関連の話題であれば
それはまともなJSスレの内容だ >>826
> ID強制可能なプログラム板を復活させたらどうか、と思った
普通にあるぞ? そっちでもjQueryの話題をしてるけどな。
+ JavaScript の質問用スレッド vol.124 + [転載禁止](c)2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1427008785/ >>826
以前立ってたスレもIDやワッチョイのあったところで延々と荒らされてたし
ないよりはマシ程度なものだと思う
>>828
引用の仕方から本人なんだろうけど騙される人がいないようレスしておく
それはここに居座っている荒らしが立てたこのスレと同様にテンプレぶっ壊れてるスレ >>826
俺むこうでも普通にjQueryを使った回答してるけど
確かにあっちはjQuery使うな!って連投してくるやついないな
(じゃあお前がDOM APIで書けば?って思うが) プログラム板にあるスレはWeb制作板と同じで荒らしの乗っ取りスレしかないから、まともなスレを立てようとするのは良いと思う
Web制作板/プログラム板共にまともなテンプレのスレがないから >>829
ん? じゃあこっちか?
+ JavaScript の質問用スレッド vol.123 + [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1491143438/
7ヶ月でたった32スレとか、ID強制は誰にも求められてないんじゃないか? >>832
ワッチョイあるしそっちが、もともとは
まともなスレとして立てられたんだろうな
この上まだ立てる気? 乱立させるなよ・・・ >>832-833
わかってて言ってるんだろうけど騙される人が出ないようにレスしておく
それはドサクサで立てられた強制IPスレで本来の次スレではないし利用もされていない
白々しい >>834
めんどくせーやつだな。乱立させるなって話だ
一体いくつ有ると思ってんだよ
プログラム版のJavaScriptスレ全部リンクしてやろうか?
+ JavaScript の質問用スレッド vol.124 + [転載禁止](c)2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1427008785/
JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1449440793/
【node.js】サーバサイドjavascript 4【io.js】 [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1460359714/
+ JavaScript(ECMAScript)質問用スレッド vol.123 + [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1482325013/
【JavaScript】スクリプト バトルロワイヤル55【php,py,pl,rb】 [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1475332848/
+ JavaScript の質問用スレッド vol.123 + [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1491143438/
JavaScript 4(c)2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1417749547/
+ JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1467906869/
jQuery,.js [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1473773598/ 結局自分が気にいらないスレだから
自分が望むスレをたてようとしてるだけ
そこで何を会話するかまで考えちゃいない 新しくスレ立てた所で、結局住民はここと一緒って話な
新しいテンプレのスレができるだけで、そのスレで会話する内容は
ここと変わらないだろって言いたい >>837
俺じゃねーし、っていうか逆にお前か?
ずーっと気に食わない気に食わない
新しいスレ立てるって言ってるやつは ここで話してもまったく建設的じゃないのは見ての通りだし
とりあえずIP出てるスレ再利用して議論した方がいいんじゃないの
http://mevius.2ch.net/test/read.cgi/tech/1491143438/ 議論ねぇ、今度はDOM APIによる実装を書いてくれよ?
jQueryによる実装を書いてくれる人がいて(素晴らしいことだ)
それに対して、jQuery書くなー書くなーって言ってるだけのおっさんよ?
jQueryを叩くのではなく、自分の考える素晴らしい方法を書くのが
正しい議論だ https://github.com/jquery/jquery/wiki/Roadmap
jQuery 3.3.0 はそう遠くない将来にリリースされる
https://github.com/jquery/jquery/wiki/jQuery-4.0-Event-Design
jQuery 4.0 ではイベントの設計が変わるっぽい
・Support all addEventListener options
・Avoid the need for a jQuery.Event wrapper
・Eliminate manual .trigger() bubbling and method calls
・Remove special events hooks
・Provide backcompat through Migrate 4.0 jQueryの話題はこっちでやって
jQuery 質問スレッド vol.8
http://mevius.2ch.net/test/read.cgi/hp/1508707878/
現在のスレの話のメインがjQueryになっているのに、何でjQueryのスレは過疎っているのか意味わからん >>636です。
react勉強し始めたのですが、webpackとか、fluxとかreactのついでに覚える事多いですねw >>849
そこが欠点だよな
プログレスエンハンスメント的に
HTMLを書いて機能を付け足していくってやり方ができない
ブラウザとテキストエディタがあれば作れた時代とはやり方がまったく異なる
だからjQueryで十分な用途にフレームワークを持ち出そうとは思わない。
この状況が解決するとしたら、WebComponentsが完全に仕様化され
ほぼすべてのブラウザに標準で搭載されて、今の同じく
ブラウザとテキストエディタがあれば作れるようになってからだろうな
その頃にはフレームワークは必要ないって言われているだろうw >>849
create-react-appを使えばwebpackは覚える必要は後回しにできる。
fluxはまぁぶっちゃけ後からでもいいんじゃないか。
stateの管理をトップレベルのコンポーネントに纏めることを心がければいいってだけ。 つまり
create-react-appを覚えればwebpackは覚える必要は後回しにできる
ってことなんだよなw
結果的に覚えるものが増えてるという。
あと、数年後それが使えるかというと・・・
ほんとフレームワークって変わりすぎ webpackはいらんよ
今のモダンブラウザはESModuleにネイティブで対応している >>852
create-react-appは特に覚える事ないと思いますけど、、、 >>853
about:configとかでフラグ立て無いと使えないものは
サポートしてるとはいえない
デフォルトで使えないならば、他の人に要求しなければいけないからだ >>855
モバイルとEdgeとSafariとCromeで使えるんだぞ?十分でしょ
FirefoxはまだみたいだけどFx使いはそれらと一緒にしては行けない
わざわざFxを好んでインストールしてる人なんだから
必要とあればフラグの有効化や別ブラウザを使うこともできる
そんなFirefoxももうすぐでしょ
今からwebpackとか覚える必要は無いよ >>856
十分じゃないよw
ほとんどん人が設定を変えないと使えんだだろ
99%使えないと言ってもいい Babel使えば良いんじゃないん?
ESModuleもサポートされてるみたいだし reactでwebpackを使う理由はESModuleのためだけじゃなくて
JSX対応もあるんだからwebpackなしにreactを使うのは
非現実的だよ。環境整えるのがめんどくさすぎる
もちろんJSX対応だけでもなく開発用のサーバーとか
テストフレームワークとかデバッグ用のツールとか
そういうのが統合されてる >>842
心からそう思う
>>843は荒らし以外の何物でもなかった >>861
誘導するだけで隔離できると思ってるんだからおめでたい頭をしてるな 気に入らない人を追い出す為に隔離スレを作って張り付いてんのか
5ch中毒だな まともな人は平日の日中帯に5chに書き込めないから高確率で荒らしなんだよな
対応した人が気の毒だ あ、だから俺が深夜にjQueryで回答した後
次の日の夜返ってきた時に大量にレスついてるのか 質問攻めしか能がないというか、いろんな意味で考えが浅い荒らしだと思った ちなみのこれとか書いたの俺な。時間も深夜だろ?
458 自分:Name_Not_Found[sage] 投稿日:2017/10/11(水) 01:55:18.33 ID:???
補足
「今回は」アロー関数もクロージャーもいらない
今回の要件にthisがどうなるかってのが書かれていないから
this.barは今回は動くがthisは違っていると念の為に言っておく
いろんなサンプル追加
https://jsfiddle.net/rdeuvep2/6/ 「俺って質問者に感謝される回答をしてるんだぜ。悔しかったらお前らも回答してみろよ。」の人だよね
自己主張が激しいというか、承認欲求が高いというか それがあんたのいいたいこと?
俺と争ってないで、質問者に回答すればいいのに おそらく、何らかのパーソナリティ障害持ちだと思う。
- 自己評価/自尊心が非常に高い
- 他者からの自己が低い評価をされることに強迫観念を持っていて、少しでも低い評価をされると自己を保つ為に猛反発する
- 自分が信仰しているjQueryがけなされると、自分が否定されたように感じて、jQueryの有用性を熱く語って反論せずにはいられない
- スレに張り付いて、自分と思わしき人物が否定されると反論せずにはいられない(少しでも可能性があれば自分だと思い込む)
自己評価が高くないと気が済まない性格。
「質問者から感謝される自分」をアピールすることは、彼にとっては重要な事なのだろう。 だからそういうJavaScriptと関係がない話で荒らすの辞めたら?
自覚ないんだろうけどさ 自覚なき荒らしに自覚なき荒らし扱いされてて笑ったw まあJSと関係ない話をここでするなっていうのは正論だ 彼のいうようにここを隔離スレに出来るなら丁度良いね >>1を守ってjQueryの話題をしないのも正論だな まあどっちが隔離スレかは質問者が決めることさ
俺はどこでも質問があればjQueryで答える あれ、正論を守るんじゃなかったっけ?
>>1も守りなよ? どうでもいいって事だね
荒らしてもいいし、自由に振舞えばいい 1つ確かなことは、その人が書き込んでるその内容が
その人が書き込みたいと思ってることなんだ。
jQueryで回答する人であれ、jQueryを書き込むなーって言ってる人であれ jQueryで回答したい人は、jQueryで回答したいと思ってるだけで、
jQueryを排除したい人は、jQueryを排除したいと思ってるだけってことか 件のライブラリ偏重の荒らしは「自分=自由」「他者=束縛」な二重規範な思想の持ち主だから嫌い
都合のいい時だけ自由を振りかざす 自由意思を尊重するならJSと関係ない話題をする人を隔離スレに追い出す必要はないし、jQuery批判者に反論する必要はないし、自分を否定されても反論する必要がない
矛盾してるよな
都合が悪い時の逃げ口上として彼は「俺もお前も自由だ。勝手にやれ。」と主張する いやいやw 問題は自由意志かどうかではなくて、
JavaScriptに関係ある話題かどうかだよ。
JavaScriptに関係ある話ならここでいいし、
そうでないならほかスレ出やれってだけの話 jQuery批判者は、jQueryを批判するだけで、何も生産的なことを言わないのがアウト
代替案を出せと JavaScriptに関係ある話題しか投稿できないと思うならそうすればいいし、JavaScriptに関係ない話題も投稿していいと思うならそうすればよい ただJavaScriptの関係ない話題ばっかりしてるやつは荒らしってだけ
少しはjQueryを見習え こうやって都合の悪い時だけ自由でなくなって、荒らし認定するんだよね
>>1の禁止行為に接触している自分は自由を振りかざすくせに まあ>>1の禁止行為なんてみんなから同意を得ず勝手に決めたもんだしな そうやって自分の都合のいいように解釈するのも得意だよね
あなたがそういうなら他の人もそうしていいよね
このスレのルールはみんなから同意を得ずに勝手に決めたもんだから、JSに関係ない話題をしてもいいんだよね >>897
その書き込み自体がJSと関係ない話題だって自覚は有るかい? >>898
JSと関係ない話題も問題ないよね
勝手に決められたルールに従う必要はないんだよね >>900
JSとは関係ないね
荒らし対応をしてるだけ JSと関係ない話をするやつよりか
jQueryの話をするヤツのほうがマシだな 俺はあのjQuery荒らしの方が嫌いだわ
無自覚だし、他人のコードをけなすし、jQueryをちょっと批判しただけで猛反発するし、個人を尊重してないよな jQuery荒らしはその時々で都合のいい理屈を主張するから、前後で矛盾していて信頼できない
既にブーメランでやりこめられてるわけだけどw 彼は最初lodash荒らしだったしjQuery一筋ってわけじゃない
自分が優位に立てる状況がほしいんでしょ でも最後に力を持つのは動くコードを出してる側なんだよな jQueryはずるいよな。ちょっとしたコードなら簡単にかけてしまう。
DOM APIで同等のサンプルコードを書けって?そんな面倒なことやってられるか
そう思っている間に、さっさとjQueryでコードを書いてしまう react-routerめっちゃ便利ですね。感動しました まともな回答者は彼とのやり取りに疲れていなくなったからね
彼のネガティブな側面が現状を生み出している
俺ももう正直面倒くさい ずっと熱心にテンプレ更新してスレ立ててた人も去っちゃったし
まあ見ていてもストレス溜まるだけだからな jQuery, lodash(Underscore) で、すぐに書ける事が多いので、便利。
JavaScript だけを使えとか、非効率な事で、時間を浪費させる奴がいる。
そいつが荒らし
getElementById() とか、ブラウザの差異とか、
仕事時間の8割が、ビジネスロジックとは無関係で、無駄な時間
多くの開発者が、jQuery, lodash(Underscore), React など、
JavaScript の無駄な時間からの、脱却を目指してきた
それに延々と反対する、荒らしがいる。
JavaScript だけを使えとか
C言語を勧める奴と同じ。
非効率な事をさせて、相手の時間をつぶさせる
CSS の質問に、SASS で答えたり、
Python の質問に、Ruby で答えると「死ね」とか言ってくる
とにかく、新技術・新ライブラリなど、荒らしの知らない技術を書き込むと、荒らしてくる
新しい知識を邪魔しよる。
人に新技術を教えると、教えるなって荒らしてくる。
たぶん、新技術を教えると、自分が食えなくなるから、荒らしてくるだろ
荒らしは放っておくべき。
相手をする奴がいるから、いつまでも荒らしてくる
相手をしなければ、書くことが無くなるはずだが、
荒らしに反論するから、荒らしが喜んで書き込んでくる 以前、テンプレ更新していた者だが、今でも時々スレを覗いてはいる
>>1のテンプレがすっきりまとまっていて感心してた(見習いたい)
荒らしは決していなくならないので、今、やり直すなら荒らしの見分けがつきやすいプログラム板が良いと思う
俺はテンプレ改修には参加しないと思うが、やるなら一人でテンプレ更新するのはモチベ的に辛いので複数人で更新していくのがお勧め
俺としては「誰も動かないなら俺が」という気持ちから始めたことだが、
- 誰もがテンプレ更新なんて面倒な作業をやりたくない
- でも、ルール無用では困るので、他の誰かがテンプレ更新してくれるならしてほしい(やってくれるならやってほしい、でも積極的に勧めるわけでもない)
- 一部は2chなんて便所の落書き(ルールなんて守られなくて当然)だと思っている
そんな中で孤独にテンプレを更新していくのは誰がやっても続かないと俺は思う
多分、多くの人に望まれてやった事ではないし、一部は俺のエゴも入ってた
でも、それだけではテンプレ更新を続ける理由としては弱すぎた 本人の確証は何もないが一応お疲れさま
自分も誰も動かないうちの一人だったから偉いことは言えないけど
以前ライブラリ荒らしが暴れてプログラム板へ移ったときはそれなりに上手く行ってたよ
最終的に民族憎悪みたいなレスが投下されまくってスレが消えたけど 「テンプレはどうせ守らない人が出てくるから作っても仕方がない」という意見が一部にあるが、これは正解でも不正解でもあると思う
テンプレは一つの基準にすぎず、守るか否かはそれを読んだ人の良心に委ねられている
道徳やマナーと呼ばれるものと同じ
だが、「他の人が守らないのだから俺も守らなくても仕方がない」と消極的ながら荒らしを幇助する行為は頂けない
「他の人が守らない事」と「自分自身が守らない事」は本来別物であるはずだが、「みんなで渡れば怖くない」理論で自己を正当化してしまう
これが良くない
「他の皆は守っていないが、自分だけは守ろう」
そういう意識を持った人が出てきて、それに賛同する人が続かなければこの現状は打開できない
俺がテンプレ更新したのも「他の誰もが期待していなくても俺は更新を続けよう」という気持ちからだった
だが、それは一人でやっても絶対に成功しない
もし、今誰かが新しくスレを立てようとしていて、テンプレ更新しようとしている人がいるのなら、そしてあなたがその人に賛同するのなら、勇気をもって賛同してほしい
そうした一人一人の意識(良心や道徳観念)がテンプレを守る為に必要な事だと俺は思う
それから、荒らしは少人数なので複数人で対処すれば対策できると思う
一人の人間に出来る事はたかが知れている >>914
ありがとう
俺も自分がテンプレ更新していた事を証明する事は出来ないが、労いの言葉だけでも「やってよかった」と思える
これからテンプレ更新してくれる人がいたら是非労ってあげてほしい 逆にある程度の属人性が必要なんじゃない
Web板とム板に分かれた後も荒らしが次スレを乗っ取ろうとするのは変わらなかったが
その度にそれぞれのスレで熱意ある人が立て直しと誘導を行ってスレが続いているように見えていた
でもWeb板の人は荒らしに根負けしたのか消えて、ム板では別の荒らしにスレ自体が潰されてしまった
この乗っ取りスレも滅茶苦茶にされたテンプレに指摘が何度かあったが行動する人はもう残ってない
過去うまく回っていたのは貴方を含む何人かの努力に寄るところが大きいと思う
俺は質問への解答が誰かの助けになればと考えてまだブックマークしているだけで
今も珍しい話を聞けたから長文書いてるだけであって荒らしと体力勝負をする気は更々ない >>914
> 以前ライブラリ荒らしが暴れてプログラム板へ移ったときはそれなりに上手く行ってたよ
だろ? 俺がjQueryの書き込みをするからじゃないんだよ。
それをいちいち否定するから荒れるんだよ jQueryの話は有用だからね
排除するまでもない 漏れなんて、Kotlin, Python の質問に、Ruby で答えたりしてる
基本的に、どの言語でも同じだし、
それを見た違う人が、Kotlin, Python に翻訳してくれる。
数言語使えるのは、当たり前だし
別に、jQuery, lodash で答えても、自分に関係なければ、スルーすれば良いだけ。
質問者以外の人には、参考になる
本の紹介をしても「ステマするな」とか、荒らしは一々、因縁を付けてくる
たぶん荒らしは、仕事してない奴だろ 仕事仕事と言う人いるけど、プログラミングは仕事の為のものじゃない
ここは純粋にJavaScriptを学びたいという気持ちに答えるスレであって
むしろ仕事の為のものなら金払って教えてもらえというのが伝統 今度は質問者にまで、仕事に関係があることは
書き込むなとかいいはじめたよ・・・
どんだけ自分の思う通りのスレじゃなきゃだめなんだか いまだ5chに違和感
専ブラだから5chって出ないし 昔は趣味でブログ作るために手探りでHTMLから勉強始めたんだろうなと言うような頓珍漢で超初歩的な質問から
古きWebの荒波の中まだ整備が進んでないJSの海路を開拓しようとする挑戦者の高度な質問まで溢れてて
それに対して孤独に修行して様々に悟りを開いた仙人たちがコードをただ与えるだけではなく檄を飛ばして育てようとしてたものだが
今では取って付けたような業務的な単機能の質問と回答のみでググレカスさえも言われなくなってしまった
回答者がスレ住民として一致団結して質問者を育てようとすることが無くなり単なる回答発表会になってしまった じゃあ教育スレでも作ったらいいんじゃないですかね(棒) >>920
釣り針太すぎ
質問に対して別言語で答えるのは迷惑でしかないよ
荒らし以前の問題 >>926
たまにはそんなこともあった気がするけど、基本は今も昔も変わらない気もするなあ
気に入った話題が目についたら、質問者置いてきぼりで長文連投
そしてディスり合い、週末になると面倒になって収束する
みたいな ほんと質問と関係ない初心者は
こうあるべきだ論を語るの
やめればいいのに >>930
「jQuery」を連鎖でNGすればいいよ
それでかなり快適になる
jQueryは悪くないとは思うけど言い争ってるガキはほぼその話だから index.htmlに
<html><head type="module" src="./index.js"></head></html>
とmodule指定し、
index.jsにただ
alert('alert');
と記述しました。module指定しないとダイアログが表示されるのですが、module指定しないと表示されません。
module指定するとどういう違いが発生するのでしょうか?? >module指定しないとダイアログが表示されるのですが、module指定しないと表示されません。
は
module指定しないとダイアログが表示されるのですが、module指定すると表示されません。
の間違いです。 質問と関係のない話をする奴や、因縁を付けてくる奴を無視しよう。
反論すると、荒らしが喜ぶだけ
荒らしはそればっかり、ずっとやってるし、
他人が新技術を取得するのを、妨害してくる
人の成長を、ねたむだけ 本当に質問と関係ない話を無視してくれるのなら支持するけどね…
・jQueryの啓蒙
・>>1のルールを守っていない話題
・jQuery批判への反論 その>>1自体が書き換えられて参照先も機能してないんだが >>932
> 「jQuery」を連鎖でNGすればいいよ
それ本当にやってくれるなら支持するよ
荒れてる本当の原因はjQueryを批判しだすから
ここでNGにしてjQueryの書き込みが見れないなら
批判しようがない
質問者はjQueryの回答が見れるし、jQueryの回答を
見たくない人は見れない。だから批判しようがない。
そうすれば両者Win-Winになって平和になる jQueryの「啓蒙」は質問と関係ない話題だが、本人は気が付いてないんだな >>939
禁止行為は読めるから守らない理由にはなってない >>941
「啓蒙」じゃなければjQueryの話題は質問と関係あるって
認めてくれる? 質問者以外にも、多くの人が見ているのだから、
ライブラリなど有意義な話は、書き込んでよい
理解できなければ、スルーすれば良いだけ。
他の人が説明してくれることもあるし、その他者とのコラボも面白い
話が転がっていくのが、便所の落書きの面白い所。
多人数だから、思わぬ発見があって、非常に効率的
荒らしは、それを批判してくる奴。
何々を書き込むな、とか言ってくる奴が荒らし
ただし、宗教論争のように実のない、関係のない話はダメ 内容からして>>920や>>935と同じ人だと思うけど
自分が滅茶苦茶やりたいからケチ付けるやつは荒らしだって言ってるようにしか見えないよ jQueryの回答自体が悪いんじゃないんだけどなぁ
どんな回答しようが回答者の勝手でしょ みたいな態度は良くない
まあ>>615が極端すぎたから荒れただけで節度を守ってくれれば文句はないんだけどね ただ好きに質問して好きに回答してそれに対してケチを付けられたくなければ他所でやればいい
ここは一問一答サイトではなく、1スレ1000レスが連なる掲示板で
それが百数十回繰り返されてきた伝統と由緒ある場所がここ
質問と回答はその全てを踏まえて尊重した上で行わなければならない
テンプレが変わってもvol幾つと付いている限り受け継がれている精神がある
それが嫌ならvol幾つと付けずに直前の30レスのみ返答可などにすればいい つうか質問者が悪い
まず情報提供しなさすぎだし
荒れてなくとも返答も不十分
荒れそうになった場合質問者が唯一舵を切れる立場にあるんだから
色んな方法があるのは分かりました
今回はjQuery使った場合を詳しく教えてください
くらい空気を読んで言うべき
もしくは回答者どうしで喧嘩しないように一人ひとり相手をすることもできる
俺が質問してたときだって10レスに対して返答したり追加情報加えたり普通にしてた
それで良く回答者集団から変なやつといじられてたが
それはそれで回答者が団結してるということでよかった 質問スレッドなんだから質問に対して任意に答えれば良いだけ
答えに対しての疑問を問いただすのは質問者の範疇
課題に対して討論するならプログラム板でやればいい
何が伝統だよ
乱立スレ建てまくってるしw 他人の回答に、因縁を付けてくる奴がいるから、もめる。
そいつが荒らし
どう回答するかは自由。
JavaScript の質問に、Haxe で答えたり、CSS の質問に、SASS で答えたって良い。
それを見た他人が、JavaScript に翻訳してくれることもある
誰も書き込まないよりはマシ。
少しは正解に近づく
何も1人で、正解を書かなくても良い。
何人かで正解を作りあげても良いし、正解に近づくだけでも良い。
本来、便所の落書きは、気楽なもの
荒らしは、回答者の努力に対して、因縁を付けてくる 回答に対してこういうのもあるよとか、こうした方がよくないとかはいいと思うけど、それはダメだこうすべきとかの押し付けや宗教は他いけ 現実問題
誰かがこうすれば?と書いて
その次に別の人がこうした方がいいよと書けば
それだけで喧嘩になりうる >>954
沸点低すぎな人が、たまにねw
HAHAHAそういう考え方もあるよねガイズ!
ですませば良いのに >>952
> 対応ブラウザがどうのと因縁付けてくる奴もいるしな
それは因縁じゃなくて注意点だな。
質問者が、教えてもらったコードで自分のブラウザで動作テストして
リリースしたら動かないってクレームが来ました。
どうしてですか?って後から追加質問がくる可能性あるだろ
その可能性がある以上、対応ブラウザについて注意をうながすのは
回答者の義務だよ。もちろん回答者が忘れたりすることもあるだろう
そういう場合は他の人が教えてくれる方がみんなのためになるよ >>953
> 回答に対してこういうのもあるよとか、こうした方がよくないとかはいいと思うけど、それはダメだこうすべきとかの押し付けや宗教は他いけ
良くないとか言いたいなら、少なくとも別のやり方を提示するべきだろうね
そうでないと質問者も動くコードが有って解決してるのに、
なんで喧嘩してるの?このコードがなんでだめでどうすればいいの?って戸惑ってしまう もし質問者が僕のIE9で動きませんと言ったら?
プログラマーである回答者の義務はChrome使えということだろ
IE9で動くようなコードをこの2017年に新しく教えてネットのゴミを残すことではない
大アホが >>959
> IE9で動くようなコードをこの2017年に新しく教えてネットのゴミを残すことではない
え? for文使ったらダメってこと?
IE9でも最新のブラウザでも動くコードならOKでしょ ここ数レスの発言を考慮して、荒れないようにテンプレ書き直した
次からはこのテンプレを守って欲しい
特にこれ↓
> ・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです
+ JavaScript の質問用スレッド vol.131 +
http://mevius.2ch.net/test/read.cgi/hp/1511269113/ >>958
君はIE9は切り捨てればいいと言えばいい
他の人はIE9で動くコードを書く
この2つの回答が出て終わりだよ
そこでネットのゴミを〜とか言い出すのはダメ
他人を批判しないように。流れを黙って見てろ >>961
意に沿わない内容を独善的に消して都合のいい内容に書き換えてるだけじゃん
そこまで別スタンスにしたいなら>>947の言うように別スレとして立てりゃいいのに >>963
headはscriptの間違いだという仮定の上でレスするよ
type属性に"module"の値があるとES Modules形式のスクリプトとして読み込む仕様があるから
それを実装しているブラウザだとindex.jsがES Modulesとして実行されるせいだと思う
普通のスクリプトとして実行するぶんにはtype属性は要らないよ >>933
答がつかないのは、headなんて書いてるからだよ。scriptが正しいだろ?
<script src="./index.js"></script>は
<script type="text/javascript" src="./index.js"></script>と同じ
外部JavaScriptスクリプトを読み込んでいるだけ
昔のIEはJavaScriptとは別にvbscriptも対応していた
その場合は <script type="text/vbscript" src="./index.vbs"></script> と書く
vbscriptに対応してないブラウザで↑の書き方をした場合はどうなるか?
そう、text/vbscriptなんて知らないから、なにもしない。読み込まない
もうわかっただろ?
ES modulesに対応してないブラウザでは、type="module" をつけると
知らない言語扱いで読み込まないんだよ
あー、そうか、普段最新のJavaScript使えーブラウザ使えーって言ってる人は
ブラウザが対応してないという現実を見るのが悔しいって可能性もあるな >>965
>headはscriptの間違いだという仮定の上でレスするよ
その通りです。単にここに書くときに間違えただけです。実際は<script>タグです。
>>966
>ES modulesに対応してないブラウザでは、type="module" をつける
ひょっとしてそういうオチかもしれません。
他のブラウザでも実行してみます。ありがとうございます。 一部のモダンブラウザが対応しているからって
今よく使われてるブラウザは必ずしもES Modulesに
対応しているとは限らないからね
最新のブラウザだけでテストしていると動かないってことになる
ちなみにwebpackあたりを使って変換すれば
非対応のブラウザでも動くようになる >>943
jQueryの質問に対する答えなら関係ある話題と認める
だが、スレのローカルルールを守るのは大前提であり、jQueryスレでやれ スレのローカルルールなんてVol.1から変わってきてるだろ
現実に合わせて変えれば良いんだよ 一部が対応してないとか言ってるといつまでも使えないけどな
ESMは間違いなく今が使い始めどころ
心配ならnomoduleでアラートでも出しとけ! だからwebpackやbabelを使おうって話になるんでしょ?
こちとら何年も前から旧ブラウザ対応かつES6対応ができてる
それにブラウザがネイティブにModuleに対応したとしても
ファイルが分割されたままだと遅くなるので
どちらにしろビルド処理は必要になる
Moduleは使えるなら使うけど、無くても問題ない機能だよ JS の規格がコロコロ変わるし、各ブラウザで挙動が変わるから、
純粋なJSだけの話では、解決できない。
そこが他の言語と違う所
だから、jQuery, Lodash, React, webpack, babel などが、JSスレに入ってくる
これらの混合技術は、現実との折り合いを付けた結果。
純粋な言語の、JS部分だけを分離できない >>972
だからというのはおかしくないか?
別にWebPackなんかを使うんなら標準でサポートされてる必要が無いんだから
いつまでもポリフィル使うと言ってるのと同じことだぞ 誰も柔軟とか言ってないし
扱いにくいとも言ってない
単にブラウザで動くJavaScriptは
他の多くの言語と違い、同時に複数の
実行環境に対応しなければいけないという
課題があるということ
そしてブラウザ、バージョンがことなれば
使える機能(言語だけではなくAPI)も違う
実装がばらばらなのでどうしても抽象化
レイヤーが必要になる >>975
なんでいつまでもポリフィルつかうの?
ほとんどのブラウザが対応したときに
ポリフィル使うのやめればいいだけじゃない >>977
ブラウザが対応した時に、じゃないんじゃない?
非対応のブラウザを使うユーザがいなくなった時だよ より正確には無視していいほど、
少なくなった時だろうね ポリフィルつかったら、ずっとポリフィルを
使い続けなきゃいけないという
発想がよくわからない
ポリフィルは将来けすことを前提に使うものだよ 将来消すというのは理想だが実際はありえないことだけどね それぞれのサポートポリシーの問題としか言えなくね
公的サービスとか100%にリーチしなきゃいけない場合はともかく >>981
しらんがな
一般的な話をしている時に
お前の悩みを言われても関係ない話だ >>971
> 一部が対応してないとか言ってるといつまでも使えないけどな
そもそもES Moduleなんて使う必要あるの? モジュールシステムはやっぱり必要
どうせならimportキーワードを使って公式にサポートされてる方がいいだろう でもminifyや難読化、WebAssemblyとかを使うと
結局ビルド環境は必要になるんだよね
必要なのはビルド環境がなくてもES Moduleを使ったライブラリを
使いたいってときぐらいかな
ライブラリを作る方からすればES Module対応で作っておけば、
ビルド環境でもブラウザだけでも使えるので楽ってことぐらいか どう見ても、なんでもいいから次の新環境が必要なのにGoogleはとりあえずDartのChromeへの
搭載再開しろよ。
このままだと10年後もJavaScriptでみんなで摩耗してそう。 うん、だから、「再開」してほしいと。
クソ言語使ってみんなで必死こいて生産性あげようと、ずっとやってて馬鹿みたなんだけど。
それで次から次へといろんなフレームワークでてきて。
「クソ言語」使って「超がんばる」より
「そこそこ言語」使って「そこそこにがんばる」方が百倍ましなんだから、
多少のえり好みとかは置いといて主要ブラウザでなんでもいいから新言語作ってまとめろよな。 chromeのローカルストレージを他の環境にコピーしたいです
以前はサイトごとに分かれていない
単にサイトごとのローカルストレージ用ファイルをコピーするだけで事足りたのですが
今は実装がLevelDB
というものになっているようで、
サイトごとにデータを簡単には取り出せないようです
特定サイト用のローカルストレージのデータを移す方法やツールがあれば
教えて下さい ×以前はサイトごとに分かれていない
○以前はサイトごとに分かれていて
でした >>990
JavaScriptを改良するほうが遥かにいい
TypeScriptやBabelという下地が出来てしまったから
今は新しい仕様のJavaScriptを変換するだけで
すぐに使えるようになった はっきり言って今のJSは十分良い言語
どちらかと言うと他のWeb標準仕様が問題
未だにPromise対応してないものが多くあったりだとか
特にIndexedDBはセッションの問題があるから自作でラップは難しいし
どうにかして欲しいよね どこがいい言語なんだよ、それは他の優秀な人がクソ言語の上に頑張ってフレームワーク作って
それ使ってるだけだからだろよ。
それにWeb技術の流行り廃りがはげしいのは、元になるJavaScriptがクソだから
安定しないで、いろんなライブラリ・フレームワークが生まれ消えるのが激しいいんだよ。
もっとJavaScriptがまとな言語だったなら周辺ライブラリ・フレームワークの流行り廃りももっと安定してるわ。
もうちろんいい言語使うときにもフレームワークとか使ってたりするだろうけど。
馬鹿すぎだろおまえら。 意味不明
プログラミング言語は、どこかしらイケてない
しかも「なんでそこをそのままにした?」って不思議になるくらいイケてない
そんな中でJavaScriptは、そんなに悪くない
むしろいい方の言語だと思うけどね たとえばpythonにはいまだに定数すらない
年次ごとのアップデート体制を整えたJavaScriptは相当進んでるだろ 本の紹介。Stefanov も書いてる
入門 React ――コンポーネントベースのWebフロントエンド開発、2015
Reactビギナーズガイド ――コンポーネントベースのフロントエンド開発入門
Stoyan Stefanov, 2017 なんで、pythonあたりの古い言語と比較するんだよww >>999
機械学習も関係して今一番流行ってるから このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 114日 20時間 23分 21秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。