X



+ JavaScript の質問用スレッド vol.130 + [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001Name_Not_Found
垢版 |
2017/07/31(月) 21:10:56.03ID:???
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/
0240Name_Not_Found
垢版 |
2017/09/12(火) 00:11:13.48ID:???
次に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オブジェクトに変換しているわけだ。
0241Name_Not_Found
垢版 |
2017/09/12(火) 00:16:36.00ID:???
次にもうちょっとマシな例を示すぞ

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する。
これも全く同じ動きをする。
0242Name_Not_Found
垢版 |
2017/09/12(火) 00:21:07.20ID:???
では最後にクイズだ

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()するようにすれば・・・?

そう、非同期で実行される処理が終わってから
次に進むわけだよ。
0243Name_Not_Found
垢版 |
2017/09/12(火) 01:28:09.67ID:???
せっかく無料で公開してくれてんだからazuのpromiseの本でも読みなよ
0244Name_Not_Found
垢版 |
2017/09/13(水) 17:47:19.69ID:???
firebaseについて勉強中です
サーバーのアクセスに必要なパラメータがソースで丸見えになりますが
これを使って他人にデータをいじられる可能性はないのでしょうか?
0245Name_Not_Found
垢版 |
2017/09/13(水) 18:45:57.45ID:???
そのための認証システムだろ
0246Name_Not_Found
垢版 |
2017/09/13(水) 23:48:19.39ID:???
それはそうなんですが認証させる部分も丸見えなのが気になります
ソースをコピーして他のサイトを立ち上げたら、
そこからも普通にデータベースを操作出来てしまうような?
0247Name_Not_Found
垢版 |
2017/09/14(木) 00:05:50.11ID:???
>>246
やればいい
本当に知りたければセキュリティを本気で学ぶ必要がある

一応言っておくと、その観点は結構いい線いってる
しかし当然のようにその観点からの攻撃はちゃんと守られている
(下手なアップデートで攻撃され放題になることもある)

偉そうに言ってるけど、俺はその辺無理と思ってフレームワークに逃げた口だ
0248Name_Not_Found
垢版 |
2017/09/14(木) 00:34:20.03ID:???
>>246
認証してアクセス権が無ければ読み書き不可に出来るし
書き込みは可能だが変更は不可能にする事は出来るし
キーを知らなければアクセス出来ないようにも出来るし
あるキーをデータに含んでないと書き込めないようにも出来る

面倒ではあるがやりようによっては大体のことが出来るぞ
0249Name_Not_Found
垢版 |
2017/09/14(木) 10:12:37.24ID:???
>>247-248
対策の方法はあるんですね
ではこのまま勉強していきます
ありがとうございました
0250Name_Not_Found
垢版 |
2017/09/14(木) 11:15:08.75ID:???
function wait(ms){
return new Promise((resolve)=>{
setTimeout(()=>{
resolve();
},ms);
});
}

wait(1000).then(()=>{
console.log('done');
});

こんな感じの指定した時間待つだけのPromiseを提供しているユーティリティーライブラリで
いいのがあれば教えて下さい
0251Name_Not_Found
垢版 |
2017/09/14(木) 12:55:39.96ID:???
君が書いたそれでいいじゃん
0253Name_Not_Found
垢版 |
2017/09/14(木) 22:06:22.47ID:???
>>250じゃないですが、setTimeoutではなく
setIntervalを使って定期的にPromiseが
発動するようなものはないですか?
0254Name_Not_Found
垢版 |
2017/09/14(木) 22:13:17.41ID:???
>>253
promise は根本から一度限りのイベント用にあるもの
setInterval じゃだめなのは何故?
0255Name_Not_Found
垢版 |
2017/09/14(木) 23:21:58.47ID:???
そういう用途ならEventEmitterでも使った方がいいんじゃない
0256Name_Not_Found
垢版 |
2017/09/15(金) 00:29:14.37ID:A42SYKF8
kanto.htmlの中で saitama.jsとchiba.jsとtokyo.jsとyamanashi.js を読み込んでるのだけど、

yamanashi.jsを外したいのだが、kanto.htmlのどの部分でyamanashi.jsを使ってるのか分からなくなってしまった。
どこの部分でyamanashi.jsを使ってるのか特定する方法はありますか?

Chromeなどのデバッグツールとか何でもよいので、何か方法があれば教えてください。
0257Name_Not_Found
垢版 |
2017/09/15(金) 01:28:44.94ID:???
>>251
ライブラリにあるものはライブラリを使った方が保守性が上がりますし
ライブラリの他の機能も視野に入ってくるのがいいです
>>252
ありがとうございます
見てみます
0259Name_Not_Found
垢版 |
2017/09/15(金) 04:04:55.93ID:???
>>256
デバッグして、yamanashi.js の中の、すべての関数に、break point を張って、
どこから呼ばれたか確かめる
0260Name_Not_Found
垢版 |
2017/09/15(金) 09:30:44.31ID:???
>>255
EventEmitterは2とか3とかあるようですが
どれを使うのが良いのでしょうか?
0261Name_Not_Found
垢版 |
2017/09/15(金) 11:14:12.84ID:???
>>257
ライブラリに機能を求めるというよりは
効率を求める意味で使用した方がいいよ
0262Name_Not_Found
垢版 |
2017/09/15(金) 11:41:07.60ID:???
>>260
機能の2と速度の3みたいな
あとはライブラリスレとかで聞いてね
0263Name_Not_Found
垢版 |
2017/09/15(金) 12:53:25.21ID:???
>>258
その頃はまだ実装されたばかりだし、Promiseのなんちゃってポリフィルと違って、
状態を外に見せないかつメモリリークを起こさないかつ継承可能にするため
内部的にWeakMapと同等のものを用いてるのと、継承可能やPromise Likeの受け入れとPromiseとの区別の処理なんかでどうしても簡素ななんちゃってPromiseよりは遅くなる可能性がある
0264Name_Not_Found
垢版 |
2017/09/15(金) 14:41:01.63ID:md1y6t7N
>>253

while()
0265Name_Not_Found
垢版 |
2017/09/15(金) 14:55:16.12ID:???
arrow関数式で
a => a+1
と式を書いた時にa+1が返ってくるのは分かりますが
a => a=a+1
と代入文を書いても、a+1が返ってくるのは何故でしょうか?
0266Name_Not_Found
垢版 |
2017/09/15(金) 15:32:31.45ID:???
最後に評価したものをreturnとするから
この場合はaに代入した値がa+1だから
0268Name_Not_Found
垢版 |
2017/09/15(金) 17:09:54.73ID:???
クライアントサイドで、JavaScriptのみでSMTP使ってメール送信できますかね?
情報が古いのですが、ActiveXかなんか使ってIEなら出来るようですが、
ChromeとかFirefoxとかでも可能な、普通のJavaScriptのAPIがあればそれでやりたいです。
SMTPサーバを指定して、ログインIDやパスワード入れて使うのを想定してます。
どう考えてもセキュリティ上厳しいような気はしますが。
サーバサイドでやると、どうしてもリクエストが多くなるため、
スパマー扱いされて、サーバのIPがSMTPサーバに拒否されるおそれがあるので、
各クライアントで送信するようしたいです。
0270Name_Not_Found
垢版 |
2017/09/15(金) 18:39:07.05ID:???
>>266-267
ありがとうございます
言われてみればそうですね
値を返すので、JavaScriptの代入は文ではなく式ということになるのでしょう
=を代入演算子と呼んでますし
0272Name_Not_Found
垢版 |
2017/09/15(金) 19:04:04.73ID:???
Storybookを使ってreact componentを作ってるんですが
ダミーデータとして文字列とか適当に毎回入力するのが面倒なんですが
ダミーデータ自動生成ライブラリってないですかね?
0273Name_Not_Found
垢版 |
2017/09/15(金) 19:11:33.28ID:???
>>272
自己レスです faker.jsってありましたね。
0274Name_Not_Found
垢版 |
2017/09/15(金) 19:46:38.00ID:???
>>268
この辺とか
ttp://artemyankov.com/tcp-client-for-browsers/
0276Name_Not_Found
垢版 |
2017/09/16(土) 12:26:38.13ID:???
firebaseはオフラインになっていても後から同期してくれるのがメリットですが
この機能に任せられるのって、
編集がバッティングする可能性がない場合だけですよね?
チャットアプリなんかは、ただ追加しあうだけなので問題になりませんが
同じアイテムを同時に編集できる場合や
階層構造を変更できる場合、
時間差同期によってデータが不整合をおこして恒久的に破壊されかねないと思います
そういうことはトランザクションを使えば避けられるのではないかと思いますが
そうなると使えるのはオンラインの時だけになりますか?
0277Name_Not_Found
垢版 |
2017/09/16(土) 12:28:34.86ID:???
>>275
なるほど
宣言代入はそういう挙動をするんですね
考えたことなかったです
ありがとうございます
0278Name_Not_Found
垢版 |
2017/09/17(日) 10:24:46.35ID:J64I4/e3
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
0280Name_Not_Found
垢版 |
2017/09/17(日) 12:04:27.13ID:???
>>278
それは、他の言語だとそれは当然のようにstringのはずので、その感覚とずれるというお話なのだ
ちなみにjsはいろんなところで型が他の言語とずれていて、型チェックが妙に難しくなっている

もしjs以外使ったこと無いなら
>これありますけどnew Stringで作られたのは文字列じゃないんだから
>typeofで型チェックしても問題ないと思いますけど違いますか?
これ以外に言いようはないと思うし、それはそれで良いことだと思う
ただjsの型は他言語とは大きく違うということは覚えておいたほうが良い
0281Name_Not_Found
垢版 |
2017/09/17(日) 12:12:51.17ID:???
> ちなみにjsはいろんなところで型が他の言語とずれていて、型チェックが妙に難しくなっている

他の言語とはなに?
どのように難しいの?
0282Name_Not_Found
垢版 |
2017/09/17(日) 12:31:17.69ID:???
>>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つはマジでやばいってことだけ覚えておいてほしい
0283Name_Not_Found
垢版 |
2017/09/17(日) 12:37:32.17ID:???
vbaとphpが特殊なだけでは?

Cだったらどうなる?
0284Name_Not_Found
垢版 |
2017/09/17(日) 12:46:36.14ID:???
>>283
特殊といえば言語は全部特殊。言語にはそれぞれ特徴がある。もし特徴がなければ別言語で良くね、になる
使用者の多いvba、phpはデファクトスタンダードとはいえなくとも、感覚的な基準にはなっている

ただ知る限り、未定義であるundefindに代入できる言語は存在しない
0285Name_Not_Found
垢版 |
2017/09/17(日) 12:49:20.55ID:???
代入できなくなったから、普通の言語になったってことだね
0286Name_Not_Found
垢版 |
2017/09/17(日) 12:54:11.11ID:???
今コンソールでやったら普通にできたんだが
0287Name_Not_Found
垢版 |
2017/09/17(日) 12:59:10.82ID:???
古いモードで動いてんだろw
0288Name_Not_Found
垢版 |
2017/09/17(日) 13:26:29.20ID:???
>>287
さぁ?
chrome+google.co.jpで試したけど
undefined=1
1
だとさ
0290Name_Not_Found
垢版 |
2017/09/17(日) 13:46:30.47ID:???
console.log(undefined=1) //1
console.log(undefined) //undefined

こういう話じゃないの?
0291Name_Not_Found
垢版 |
2017/09/17(日) 13:54:28.79ID:???
>>290
あぁごめん、そういうことだった
代入はできるけど取得はできないのか
な、なんだこれ…
0292Name_Not_Found
垢版 |
2017/09/17(日) 15:53:59.45ID:ca9PTnIh
'cloneNode' in document // true
document.hasOwnProperty('cloneNode') // false
どうしてですか?
0293Name_Not_Found
垢版 |
2017/09/17(日) 16:16:33.22ID:???
cloneNodeはdocumentではなくNodeの持つプロパティであって
hasOwnPropertyは継承元まで遡らないからだよ
0294Name_Not_Found
垢版 |
2017/09/17(日) 16:37:08.53ID:???
横だけど、以下もfalseになる。なんでだー(モヤモヤァッ
Object.hasOwnProperty(Node,'cloneNode')
false
0295Name_Not_Found
垢版 |
2017/09/17(日) 16:40:01.79ID:ca9PTnIh
なるほどそういうことでしたか
ありがとうございました
0296Name_Not_Found
垢版 |
2017/09/17(日) 16:46:28.97ID:ca9PTnIh
もう一つ質問させてください
"SVGAnimatedAngle" in window // true
window.hasOwnProperty("SVGAnimatedAngle") // true
なのに
for (let i in window)console.log(i)

Object.keys(window)に
SVGAnimatedAngleが含まれない出力されないのは何ででしょうか?
0297Name_Not_Found
垢版 |
2017/09/17(日) 17:10:54.98ID:???
"use strict"; undefined = 1; // error!

はい
0298Name_Not_Found
垢版 |
2017/09/17(日) 18:30:07.79ID:???
>>291
違う
代入はできていないけど、
式の返り値は当然右辺の物を返す

例えばobj.setというセッターが合ったとして、
a = obj.set = 1 というのがあったら
obj.setの状態と関係なくaは1になるのが自然でしょ、
つまりx = yの式は例外が起きない限り必ずyを返す
0299Name_Not_Found
垢版 |
2017/09/17(日) 18:34:38.56ID:???
>>294
使い方が間違っている
Node.prototype.hasOwnProperty('cloneNode')
0300Name_Not_Found
垢版 |
2017/09/17(日) 18:36:50.50ID:???
>>296
列挙不可に設定されているから
Object.getOwnPropertyDescriptor(window,'SVGAnimatedAngle').enumerable //false
0301Name_Not_Found
垢版 |
2017/09/17(日) 19:13:20.84ID:???
>>300
なるほどそうことでしたか
列挙可と列挙不可の両方取得する方法ってないですかね?
0302Name_Not_Found
垢版 |
2017/09/17(日) 19:20:19.09ID:???
Object.getOwnPropertyNames(target)

Object.getOwnPropertyNames(target.__proto__)

Object.getOwnPropertyNames(target.__proto__.__proto__)
0303Name_Not_Found
垢版 |
2017/09/18(月) 02:23:29.72ID:???
>>278
>new String('a');

まぎらわしいから、なるべく、文字列リテラルを使う
0304Name_Not_Found
垢版 |
2017/09/18(月) 10:17:03.11ID:w1pO6IcM
悪の自民党に絶対投票しないように。 

http://www.data-max.co.jp/280113_ymh_02/

↑ 自民改正案の真の狙いは言論の自由を奪うこと!

http://blog.goo.ne.jp/kimito39/e/ec37220f64a8e1d6ed732dd0ab95cbf0

↑超危険な緊急事態条項で人権無視の内閣独裁に!

https://www.youtube.com/watch?v=h9x2n5CKhn8

↑ 自民党は 国民に基本的人権はないと断言!

http://xn--nyqy26a13k.jp/archives/31687

↑ 小池都知事も安倍と同じく 憲法改正で 人権
無視の大日本帝国憲法に戻す民主主義破壊論者!

http://www.mdsweb.jp/doc/1488/1488_03f.html

↑”9条自衛隊明記”は 9条無効化だった!

http://blog.goo.ne.jp/ngc2497/e/8899f65988fe0f35496934dc972e2489

↑ ネトウヨ= 安倍サポーター工作員はネットで国民を騙す。

https://dot.asahi.com/aera/2016071100108.html?page=3
http://blog.goo.ne.jp/kimito39/e/c0dd73d58121b6446cf4165c96ebb674

↑ 安倍自民を操るカルト右翼「日本会議」は国民主権否定。
国民投票や選挙では自民党、維新、小池新党に絶対に入れるな。
0305Name_Not_Found
垢版 |
2017/09/19(火) 00:12:46.04ID:???
jqueryで
複数の対象に同じイベントリスナーを付けるにはどうすればいいですか?
0306Name_Not_Found
垢版 |
2017/09/19(火) 00:25:05.57ID:???
$関数の引き数に、複数の対象にマッチするセレクタを書けばいいだけ

jQueryはそもそも複数の対象に同じイベントリスナーをつけるもの。
対象が1個しかないとか、まったくない(0個)の場合もあるけれど、
それはたまたまそうなっただけで、コード的には複数の対象に
マッチしたと仮定して書くのが良い。
0307Name_Not_Found
垢版 |
2017/09/19(火) 00:35:45.88ID:???
ありがとうございます
クラスを設定してonしました
0308Name_Not_Found
垢版 |
2017/09/19(火) 12:52:14.09ID:???
フレームワークとか使うとwindowオブジェクトが汚されてしまうんですが
汚された後から汚されてないwindowオブジェクトを取得する方法を教えてください
0309Name_Not_Found
垢版 |
2017/09/19(火) 14:40:42.03ID:0Cp4Rl+n
何のためにかによって方法は変わってくるが
iframeのcontentWindowを取ればいい
0310Name_Not_Found
垢版 |
2017/09/20(水) 10:10:10.77ID:???
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をメモリに記録してるからですかね?
0311Name_Not_Found
垢版 |
2017/09/20(水) 10:50:56.91ID:???
同じディレクトリにあるjsonファイルを
JavaScriptから読み込むにはどうすればいいのでしょうか?
0314Name_Not_Found
垢版 |
2017/09/20(水) 15:10:39.10ID:???
>>310
そんな単純ではない
多くの場合DOMと1:1で対応する様な独自ツリーを持っていて
その変更がある程度たまった時点で
必要最低限の変更をDOMに反映させることで
抽象化と同時にパフォーマンスを確保している

それが重いというのは使い方が間違っているか、
使い所が間違っているだけ
0315Name_Not_Found
垢版 |
2017/09/21(木) 13:35:51.86ID:???
(() => {
'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)
が出るんですがこれはダメな書き方なんでしょうか?
0316Name_Not_Found
垢版 |
2017/09/21(木) 13:40:50.16ID:???
jQuery みたいに、一々、DOM にアクセスしないから速い。
一々、DOM から、CSS クラスの状態を取得して、コーディングしなくてもよい

ただし、速いと言うことは、メモリを大量に使う。
ブラウザの状態を、自分のメモリ内に持つため

常に、速さ・メモリ使用量は、反比例する
0317Name_Not_Found
垢版 |
2017/09/21(木) 13:45:57.08ID:???
>>315
それは、そういうルールなんだろ

eslint のルール一覧表でも見れば?
自分で、好きなルールも設定できるだろうし

君や会社・使うツール、次第
0318Name_Not_Found
垢版 |
2017/09/21(木) 13:49:33.28ID:???
メモリ1GBの環境でreact使われているサイト開くと重い
特にqiitaのトップページ
0319Name_Not_Found
垢版 |
2017/09/21(木) 14:12:29.58ID:???
>>315
文法的に問題はないが、例えばlet i = 2; を記述し忘れたとしても動いてしまって二回22が出力されてしまうだろ?
そういった事を防ぐために同じ変数を使わないようにしようって事
オプションで文法的に間違いではないならエラー出ないようにも出来るし全部許可してしまうことも出来る
0320Name_Not_Found
垢版 |
2017/09/21(木) 21:51:32.14ID:???
指定した要素の文字列を選択状態にするにはどうしたらいいですか?
フォーム部品はjqueryでselect()すればいいですが
普通のdivの中の文字列を選択したいです
0321Name_Not_Found
垢版 |
2017/09/21(木) 22:12:12.47ID:???
>>320
createRange()でレンジを作って
selectNodeContents()にdivを放り込んでレンジの範囲を決めて
getSelection()でセレクションオブジェクト作って
addRange()でさっき作ったレンジをどーん!
0322Name_Not_Found
垢版 |
2017/09/21(木) 23:16:12.95ID:???
>>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を直接呼びだす時代は終わったかな。
0323Name_Not_Found
垢版 |
2017/09/21(木) 23:23:15.22ID:???
Virtual DOMでもDOM API使っているのでは?
Virtual DOMというのはライブラリであってそういう仕様があるわけじゃないでしょ
0325Name_Not_Found
垢版 |
2017/09/21(木) 23:51:52.84ID:???
> Virtual DOMを使うということはブラウザのDOM APIを使わないということだから学習コストは高い。

この部分はプログラマがという意味

プログラマがReactなどを使ってVirtual DOMを使うということは
ブラウザのDOM APIを使ったプログラミングをしないということである。

要はReactなどを使えば document.getElementById とか
使わなくなるってことよ。
0327Name_Not_Found
垢版 |
2017/09/22(金) 06:44:47.07ID:???
select要素の選択アイテムをjqueryで変更し、
設定しておいたonchangeイベントを発火させるにはどうすればいいのでしょうか?
0329Name_Not_Found
垢版 |
2017/09/22(金) 07:43:21.97ID:???
Reactの内部の仕様はともかく自作のタグが作れる感覚は楽しい。
どっちかというとreduxの理解のほうが学習コスト高め。
0330Name_Not_Found
垢版 |
2017/09/22(金) 08:13:03.10ID:???
自作のタグなんてstylesheet書くだけでいいんやで
0333Name_Not_Found
垢版 |
2017/09/22(金) 14:52:22.14ID:???
google保守大変そうだな
元ソースも相当汚いだろあれ
0334Name_Not_Found
垢版 |
2017/09/22(金) 17:27:26.43ID:???
Workletも揃い始めてきたし、メニーコアの時代はまだ遠いけど
ゆくゆくは要素毎にレイアウトとペイントを数十のコアで分担するようになるだろうな
だから今の仮想DOMフレームワークにしても、そこのところ混み合っていないものを選んで慣れておいたほうが良い
0335Name_Not_Found
垢版 |
2017/09/22(金) 18:45:00.07ID:???
vueとかreactってShadow DOMを使ってるわけじゃないんですね
0336Name_Not_Found
垢版 |
2017/09/22(金) 20:29:40.08ID:???
Shadow DOMは例えば配布するようなコンポーネントを作る際
使われる環境のCSSなど変に影響されることを防ごうという趣旨のものだからね
HTMLを部品として扱う際のカプセル化の方法だから
0337Name_Not_Found
垢版 |
2017/09/23(土) 03:08:19.72ID:???
>>334
> ゆくゆくは要素毎にレイアウトとペイントを数十のコアで分担するようになるだろうな
要素毎に何の処理をしてるっていうんだい?
要素なんて殆どは動きが何もないただの絵だろう?
0338Name_Not_Found
垢版 |
2017/09/23(土) 12:47:58.05ID:???
let a = 100;
let a = 200;
だとエラーになるのに
let a = 100;
if (1){
let a = 200;
}
だとエラーにならないのは何故ですか?
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況