+ JavaScript の質問用スレッド vol.134 +at HP
+ JavaScript の質問用スレッド vol.134 + - 暇つぶし2ch2:Name_Not_Found
18/06/07 21:27:53.72 .net
>>1
乙です

3:Name_Not_Found
18/06/07 21:28:55.62 .net
MySQLとMongDBならどっち?
このスレできく理由も勝手にエスパーして考慮に入れてお願いします。

4:Name_Not_Found
18/06/07 21:58:02.88 .net
そんな聞き方する奴にrdbは合わないに決まってるのでmongo。

5:Name_Not_Found
18/06/07 23:15:04.02 .net
うめ

6:Name_Not_Found
18/06/08 00:59:57.44 .net
>>4
「そんな」ききかたではありません!
回答者の経験と発想を最大限尊重した
自由意思にゆだねた回答を求めるとてもリスペクトフルな質問法です!!

7:Name_Not_Found
18/06/08 01:24:05.63 .net
テンプレ滅茶苦茶になった挙げ句ついにほぼカットされたか

8:Name_Not_Found
18/06/08 06:39:51.84 .net
とりあえず巻き上げに関して正しておく
宣言された変数が属するスコープ内全域に浸透するのは当たり前
JSの巻き上げとは、宣言ではなく初期化の話
varならundefinedで、関数宣言なら関数値で初期化されることを巻き上げと言う
勿論アロー関数は巻き上げされたりはしない
ただアロー関数には変数宣言文中に定義することで
その変数名の名前がつくという特殊挙動がある

9:Name_Not_Found
18/06/08 07:02:20.40 G7whztLr.net
>>6
レスを最大限分析された的確な答えだと気づくべき

10:Name_Not_Found
18/06/08 08:09:56.78 .net
>>4
あのさー、お前がね、いちいち用語の定義をする必要はないんだわ
世間一般に知られたことは、世間一般的な用語の定義があるんだから
それを引用して書けばいいだけ

URLリンク(developer.mozilla.org)
> この動作は、変数の宣言が関数やグローバルのコードの先頭に移動したように見えるため、
> "巻き上げ (hoisting)" と呼ばれます。
変数の "宣言" が移動する。それが巻き上げ

11:10
18/06/08 08:10:27.64 .net
>>4じゃなくて>>8宛ね

12:Name_Not_Found
18/06/08 08:25:10.85 .net
宣言とundefinedによる初期化は別々なのか?
var testvar; console.log(testvar); とだけ書くとundefinedが出力される
・元から先頭にあるのだから巻き上げは行われない、宣言が常にundefinedでの初期化を内包する
・元から先頭にあっても巻き上げが実施される、巻き上げにより宣言とundefinedでの初期化が行われる
どっちなのか判別が付かん

13:Name_Not_Found
18/06/08 10:44:46.46 .net
スッゲ曖昧な知識だが。
function命令は命令なので、ちょっと特殊で、最初に読み込まれる。だから巻き上げが出来る
変数は最初に名前だけ収集解析だけされて、値の入ってない変数のリストだけが作られ構造化される。
だったような。
アロー関数がなぜ変数にいれているのに、巻き上げ?がおこるのかはしらない。

14:Name_Not_Found
18/06/08 11:01:32.95 .net
概念についてあーだこーだ言われても確認できるコードがないとわからん

15:Name_Not_Found
18/06/08 11:18:35.65 .net
これは知識不足というか、経験的に浅いと言った方がいいのか
巻き上げというものがあるんだ、そうなんだね!
ぐらいにしか考えてなさそう
なんで巻き上げという機能を実装したのかまで
考えられてない。C言語をしらないからか、
いや昔のC言語と言ったほうがいいのか
C言語に対するJavaの特徴といったほうが良いのか
なんでこうなってるかの、基本がないのは
時代の流れの方が理由大きいのかねぇ

16:Name_Not_Found
18/06/08 11:25:46.46 .net
今のC言語はちょっと違うが、昔のC言語っていうのは、
関数は宣言してからじゃないと使えなくて、
変数の宣言は関数の頭の方に書くしかなかったんだよ
void foo() {
 int i; // OK
 int j; // OK
 bar(); // NG 先に宣言されてない = この時点では知らないので使えない
 int k; // NG 関数の頭じゃないからここで宣言できない
}
foo(); // OK 先に宣言されてるから使える
void bar() {
 return 0;
}
それを他の言語は、先に宣言されて無くても
スコープ内で宣言されていればOKにしたほうが
いいんじゃねという考えで改良したんだよ。
Javaはそれを特徴の一つにもしていた

17:Name_Not_Found
18/06/08 11:26:59.18 .net
ちなみに当時はコンパイラの時代で、主にコンパイルする時点で
先に宣言されて無くてもOKという機能だった

18:Name_Not_Found
18/06/08 11:34:23.93 .net
なんで先に宣言されてないといけないのかというと
関数に関しては、ファイルの頭からコンパイルするときに、
いきなり知らない名前がでてきたらどう処理したら良いかわからんし
変数というのは、関数内で一時的に(スタックに)メモリを確保して
関数が終わったら解放しなきゃいけないから。
頭にまとまってりゃ関数の最初でその処理をやって
関数終了に解放するだけで簡単
主にコンパイラの実装が簡単だからそうなってたんだよ。
これはインタプリタのJavaScriptでも同じ
だが、先に宣言されて無くてもOKにしたほうが便利だろう?
だから、先に宣言されているかのように
内部的に順番を入れ替えるのが、巻き上げの機能の本質

19:Name_Not_Found
18/06/08 11:34:39.70 .net
文法の見てくれが似てるからと言ってjavascriptの動作をjavaやcなどのいわゆるc系言語の動作から読み解こうとしても無駄だよ。
なぜならjavascriptはc系言語の皮を被ったlispだから。
URLリンク(www.crockford.com)
URLリンク(raganwald.com)
URLリンク(qiita.com)

20:Name_Not_Found
18/06/08 11:39:23.25 .net
あとC言語はみ初期化の変数は中になにが入っているか不定
>>16のi,j変数はなにが入っているか決まってない
その時にメモリ(スタック)に入ってるゴミデータになる
実行速度重視のC言語ではそれもやむなしだったが、
決まってない値がなにか入っているのは分かりづらいバグの原因になるので
これが他の多くの言語では、0やNULLや未初期化を表す値になることを
保証している。それがJavaScriptではundefined
宣言したときに、undefinedに初期化するのではなく
初期化されてない変数は、undefinedになると考えたほうが良い

21:Name_Not_Found
18/06/08 11:49:27.70 .net
チューリングマシンの構造によるものだときいたことがるようないような。
チューリングマシンだと最初に命令をよみこんでおかないとだめだとかなんとか。

22:Name_Not_Found
18/06/08 11:50:26.31 .net
ここまで言えばわかったと思うが、
JavaScriptでは宣言前でも関数や変数を使えるようにするために
var i = 1 の var i の部分に相当する宣言と、function hoge() {} の宣言の
二種類の宣言が内部的に頭の方に集められる。そういう機能でしかない。
アロー関数( 例 (param) => value) は、function hoge() {} という形ではなく
名前がないため、後で宣言したアロー関数を宣言前に呼び出すなんてことは
ありえないので上の方に集める必要はない
だが var f = (param) => value と書いた場合の、変数fに関しては
その宣言である var f の部分だけが、その他の変数と同じように
関数の頭の方に集められる(アロー関数が集められるわけではない)

23:Name_Not_Found
18/06/08 12:00:31.41 .net
もっと簡単に言えば、
関数は先に宣言されて無くても使えるようしたい
変数はスタックからのメモリの確保と解放を楽にしたい
という異なる二つの目的を叶えるために
巻き上げという名前で表現されるような
処理が行われるということ
ただ変数の方は、内部的にメモリを確保すればいいだけの話なんだから
宣言前に使えなくてもいいと思うんだが
内部的に関数の頭にまとめてメモリ確保するという実装が
仕様になってしまった感じがするな。

24:Name_Not_Found
18/06/08 12:26:11.76 .net
>>19
はえ~

25:Name_Not_Found
18/06/08 12:40:19.30 .net
>>20
それは違うな。
JSでは未初期化の変数にアクセスすると例外になる仕様がきちんとある。
letやconstで宣言された変数は実行がその文に達するまでは未初期化の状態になる
その未初期化の区間がTDZと言われる。
未初期化と未宣言とundefinedで初期化済は皆違う。

26:Name_Not_Found
18/06/08 12:46:08.72 .net
>>22
あと、アロー関数は名前がある。
var f = ( ) => { }
のように変数宣言と一緒にアロー関数が定義される場合は
特別に解釈されてf.nameがきちんと"f"になる。

27:Name_Not_Found
18/06/08 12:46:32.11 .net
バカものどもがホイスト嫌ったせいでTDZなんていう化け物を産み出してしまった

28:Name_Not_Found
18/06/08 12:50:47.50 .net
>>26
それ最初はchromeの独自実装だったよね?
今は仕様化されたの?

29:Name_Not_Found
18/06/08 12:51:33.45 .net
言われてみれば確かにTDZってもんがあったな
どんな仕様にしても、自分は最初にまとめて宣言・初期化書いておくが

30:Name_Not_Found
18/06/08 12:53:18.97 .net
>>28
ES2015仕様だよ

31:Name_Not_Found
18/06/08 12:56:05.04 .net
>>26
あ、そういう意味じゃないんだわw
宣言時の話
代入すると名前が付きまーすって話じゃない

32:Name_Not_Found
18/06/08 13:00:41.05 .net
アロー関数として定義された関数が巻き上げられているかどうか
って確認する方法あるのか?

33:Name_Not_Found
18/06/08 13:03:29.74 .net
var f; // 宣言時
console.log(f.name) // undefined
f = () => {} // 代入
console.log(f.name) // f つまり代入によって名前がつく。f宣言時ではない

34:Name_Not_Found
18/06/08 13:16:03.50 .net
それだと、
var f = function (){} では関数オブジェクトへのポインタ代入のみであるところ
f = () => {} では関数オブジェクトへのポインタ代入と変数 fへの.nameプロパティ付加の2つを行う
というだけである、とも解釈できるのでは
アロー関数そのものが巻き上げられていて、3行目でf.nameだけ後から処理されているのか
アロー関数そのものは巻き上げられず、3行目で関数の評価とともにf.nameが処理されているのか
どっちなのかわからないように見える

35:Name_Not_Found
18/06/08 13:17:33.65 .net
console.log(f) // undefined
var f = () => {}
console.log(f.name) // f
console.log(g) // ? g() {}
function g() {}
console.log(g.name) // g
関数gは宣言なので当然巻き上げられるが
アロー関数(?)fは巻き上げられない
fはただの変数であり、変数宣言のみが巻き上げられる
アロー関数 () => {} に名前がつくのは代入した時なので
function g() とは違い記述よりも先に呼び出すことはできない

36:Name_Not_Found
18/06/08 13:20:05.69 .net
アロー関数は関数というより値とみなしたほうが良い

37:34
18/06/08 13:33:17.77 .net
>>35
console.log(f); // null
var f = () => {}
f=null;
console.log( f ); // null
console.log(g); // null
var g = function (){}
g=null;
console.log( g ); // null
console.log(h); // function h()
function h(){}
h=null;
console.log( h ); // null
console.log(i); // null
var i = 1;
i=null;
console.log(i); // null
なんで1, 5, 7番目のconsole.log();がundefinedでなくnullになるのかは知らんけど
ともかく
function h(){}ではなくvar g = function (){}と書いたときの挙動とvar f = () => {}と書いたときの挙動
どういうことだろうか

38:Name_Not_Found
18/06/08 13:35:44.15 .net
一言でいうと、ホイスティングにおいてほんとにアロー関数は特別なのか?ということ

39:Name_Not_Found
18/06/08 13:57:45.93 .net
> 一言でいうと、ホイスティングにおいてほんとにアロー関数は特別なのか?ということ
全然特別じゃない。
アロー関数は、関数宣言じゃないので当然巻き上げられないし
アロー関数を、変数の宣言と同時に変数に代入する場合は、変数宣言のみ巻き上げられる
今までとなにも変わってない

40:Name_Not_Found
18/06/08 13:59:21.52 .net
>>39
端的回答サンキュー

41:Name_Not_Found
18/06/08 14:01:45.36 .net
>>37
> なんで1, 5, 7番目のconsole.log();がundefinedでなくnullになるのかは知らんけど
だから、宣言(関数の宣言 と 変数の宣言)のみが巻き上げられるんだって
わからなかったら、var文とfunction文が一番上にくると思えばいい
var f;
console.log(f); // null
f = () => {}
f=null;
console.log( f ); // null
var g;
console.log(g); // null
g = function (){} // ※これは文ではないので関数宣言ではない
g=null;
console.log( g ); // null
function h(){}
console.log(h); // function h()
h=null;
console.log( h ); // null
var i
console.log(i); // null
i = 1;
i=null;
console.log(i); // null

42:Name_Not_Found
18/06/08 14:04:30.16 .net
console.log(v); // undefined
// console.log(f); // referenceError
var v=function f(){console.log(f.name)}
v(); // f
こうだもんな
変数に関数ぶっこんだときと何ら変わらん

43:Name_Not_Found
18/06/08 14:13:59.38 86T0W8kr.net
>>39
それおかしくね?
変数の巻き上げは宣言だけで中身までは巻き上げられないでしょ

44:Name_Not_Found
18/06/08 14:19:27.97 .net
即時関数も変数に入れる関数もアロー関数も、前後を問わず、その場所や格納された変数以外から呼べない
呼べないだけで、中身が本当に巻き上げられていないのかどうかは、誰にもわからない

45:Name_Not_Found
18/06/08 14:22:51.06 .net
>>43
だれが中身が巻き上げられるなんて言ったんだ?
そもそも宣言に中身は存在しない
こういう名前の変数 or 関数を使いますよーって言うだけ
だから宣言

46:Name_Not_Found
18/06/08 14:25:09.08 86T0W8kr.net
>>45
だけどアロー関数だと
f()
var f = () => {}
とあとに定義しててもf()で定義より先に呼び出して実行出来るという話でしょ?

47:Name_Not_Found
18/06/08 14:26:33.85 .net
ずれてるやつの原因はこれか?
var f = () => {}
fはアロー関数ではない
() => {} がアロー関数
fはアロー関数を入れている変数

48:Name_Not_Found
18/06/08 14:29:17.26 .net
>>46
> とあとに定義しててもf()で定義より先に呼び出して実行出来るという話でしょ?
実行できるわけがない
>>41でどう解釈されるか書いてやったろ

f()
var f = () => {}
↑は↓のように解釈される
var f
f()
f = () => {}
当然undefinedになってるんだから呼び出せない
(蛇足だが、アロー関数 () => {} に fという名前がつくのは
三行目の f = () => {} を実行した時)

49:Name_Not_Found
18/06/08 14:32:47.86 86T0W8kr.net
>>48
できるよ。
試してみたら。
自分も最初できないと思ってたけどできたから意外だったと話をしたんだけど。

50:Name_Not_Found
18/06/08 14:37:30.11 .net
>>49
できませんでしたwww
試してから言えや

もう一つ
function foo() { console.log(1) }
foo()
function foo() { console.log(2) }
↑は関数宣言が巻き上げられて↓と解釈される
function foo() { console.log(1) }
function foo() { console.log(2) }
foo()
だから2と表示される

var foo = () => console.log(1)
foo()
var foo = () => console.log(2)
↑は変数宣言が巻き上げられて↓と解釈される
var foo
foo = () => console.log(1)
foo()
foo = () => console.log(2)
だから1と表示される

51:Name_Not_Found
18/06/08 15:04:14.53 .net
どんな環境(※さすがにIE/Edgeは除外)でも挙動変わらないのか?

52:Name_Not_Found
18/06/08 15:11:49.09 .net
IE / Edge 含めて変わるわけないね

53:Name_Not_Found
18/06/08 15:14:28.46 .net
>>30
いやアロー関数自体の話じゃなくて変数に束縛したアロー関数の.name。
初期はchrome以外空白じゃなかったっけ?

54:Name_Not_Found
18/06/08 15:15:47.72 .net
>>31
いや、意味は勿論分かってるがちょっと関連することとして思い出したので
補足的に書いただけだよ

55:Name_Not_Found
18/06/08 15:18:25.96 .net
>>53
それも含めてES2015仕様のはずだよ
あまり重要でない機能だから実装が遅かっただけでは?

56:Name_Not_Found
18/06/08 15:19:03.58 .net
実際にfirefox52ESRではアローのf.nameは何も出てこないな

57:Name_Not_Found
18/06/08 15:34:32.92 .net
というかだなfunctionの名前のように
関数名がその関数オブジェクトの.nameになるってのは思いつくけど、
関数を入れた変数名が、関数名になるなんて仕様普通思いつかないよ
匿名関数はデバッグが面倒になるので
どうにかして名前をつけられないか?という
方針で考えてやっと思いつけるってもんだ
仕様になるのが遅れるのも当然

58:Name_Not_Found
18/06/08 20:41:47.10 .net
仕様は遅れては居ないが実装が遅れてるのかもな
仕様の該当箇所はここか
URLリンク(www.ecma-international.org)
e. If IsAnonymousFunctionDefinition ~~

59:Name_Not_Found
18/06/08 21:48:42.42 .net
firefoxってアホみたいに(褒め言葉)早く正確に仕様通りに実装するUAじゃなかったっけ

60:Name_Not_Found
18/06/09 07:40:37.68 .net
contenteditableな要素にクリップボードをペーストする前に
リッチテキストをプレーンなテキストに変換しようと思い、
onPasteイベントの中でclipboardDataにsetDataしたのですが、反映しません
ペースト時にclipboardDataに書き込むことは出来ないのでしょうか?

61:Name_Not_Found
18/06/09 10:05:45.85 .net
URLリンク(teratail.com)
これを思い出した。
関数宣言→「変数の実体化」で変数定義が巻き上げられる
変数宣言(var)→「変数の実体化」で巻き上げられる
let,const→「変数の実体化」で巻き上げられるが、TDZでは参照不可
アロー関数→即時呼び出しor変数宣言に含めることしかできない
関数式→即時呼び出しor変数宣言に含めることしかできない
「変数の実体化」はES3当時の表現だが、分かりやすいのでつい使ってしまう。
ES2017ではこの文言はどう変わってるんだったか。

62:Name_Not_Found
18/06/09 19:40:55.00 .net
>>59
いや、JS2.0とかやってた名残で当初は早いようにも見えたけど
実際は独自実装の非互換性問題とかもあったし、ここ2年くらいはChromeの方が実装早いよ
>>61
難しく考えずとも、変数とはスコープオブジェクトのプロパティのようなものだ
そのスコープにぶら下がる変数はスコープに入る時に全て作られる
そういうことをしなければ。スコープ外でlet aと定義していてスコープ内で同じくlet aと定義している場合、
スコープ内のlet aに達するまでにaを参照した場合スコープ外のaを参照する挙動になってしまう
あるいはそういう挙動でも良かったのかもしれないが、JSではその挙動を是としていないため、
スコープ内で作られる変数はそのスコープに入った段階で作られることになる
仕様での用語としては「CreateBinding」で、スコープ(Environment Record)に対して値を紐付けるための名前を作る作業がある
そしてその変数宣言文に実行が達したら「InitializeBinding」で、値が初期化される
それまでに変数を利用しようとした場合は例外となる
要するに変数の状態としては「created」かどうかと、「initialized」かどうかの2つを考えればいいだけ
関数宣言に関してはブロックが評価される時に、通常の宣言であればcreateされるだけのところを追加でinitializeされるというだけ

63:Name_Not_Found
18/06/09 20:42:00.96 .net
>>60の件ですが
clipboardDataの実体はドラッグ&ドロップで使われているDataTransferオブジェクトのようです
JavaScriptリファレンス第六版には、
DataTransferオブジェクトのsetDataメソッドの説明として
ドラッグアンドドロップ操作の最初の dragstart イベントに応答して
ドラッグ元がこのメソッドを呼び出します。
このメソッドはその他のイベントハンドラからは呼び出せません。
とあり、DataTransferオブジェクトというのは自由に読み書きできるようなものでもないようです
ペースト前にデータをJavaScriptでフィルタするのは機構的に不可能なのでしょうか?

64:61
18/06/09 21:56:44.42 rjw/LaIP.net
>>62
変数の挙動は理解しているし、詳細な説明が欲しかったわけではない
「仕様上の文言がどうなっているか」が気になっただけ

65:Name_Not_Found
18/06/09 23:59:05.12 .net
Reactを勉強しているものですが、Reactのスレが見つかりませんでした。日本ではマイナーなのでしょうか?

66:Name_Not_Found
18/06/10 00:54:36.18 .net
>>64
だからそれも書いてるじゃん
変数周りの仕様としては「created」と「initialized」しか無いって
関数宣言は「Hoistable」に含まれるわけだけど、それは「created」されて「initialized」されるということでしかない
「実体化」などという表現や概念は存在しない

67:61
18/06/10 01:57:27.73 AOyPV8Fv.net
>>66
> 変数周りの仕様としては「created」と「initialized」しか無いって
あなたの解釈はどうでもいいのだよ
知りたいのは一次情報源だけ
> 「実体化」などという表現や概念は存在しない
そんなことはない
URLリンク(www2u.biglobe.ne.jp)

68:Name_Not_Found
18/06/10 02:57:42.92 .net
React Angular Polymer Vueなんかのフレームワークと
jQueryって同じフレームワークでもなんか別物のような気がするんですが
これらは出来ることは同じなのでしょうか?

69:Name_Not_Found
18/06/10 11:32:11.73 .net
>>67
一時情報源だけ知りたいのなら自分で仕様を読めばいいじゃない
URLリンク(tc39.github.io)
俺もあんたのためにきちんと仕様を読みながら噛み砕いて説明したんだからさ
それをそんな言い方されちゃもうどうしようもないね

70:Name_Not_Found
18/06/10 11:39:33.94 .net
>>67
と言うかそこでいう実体化っていうのは、「コンテキストの実体化」だからね
静的なコードという型からその時に使う生きた状態を生成する
つまりインスタンス化するというニュアンスだから
「実行コンテキスト」の項にあるでしょ?
その「変数の実体化」っていうのは今話してる変数の状態や「有効化」の話とは軸がずれている
静的な定義らから生きた変数インスタンスを作るというニュアンスの話
そしてやっぱりちょっと妙な表現でもあるから今の仕様では使われてないよ

71:Name_Not_Found
18/06/10 12:19:29.70 .net
>>68
jQueryはライブラリであってフレームワークではありませんよ
それを使っているプログラマが、それを呼び出すコードを書くのがライブラリ
呼び出されるコードを書くのがフレームワークだと誰かが言っていました

72:Name_Not_Found
18/06/10 14:34:15.01 .net
>>69
> 俺もあんたのためにきちんと仕様を読みながら噛み砕いて説明したんだからさ
尋ねてもいない事をあなたが勝手に誤解してお節介しただけだろう
「ES2017ではこの文言はどう変わってるんだったか」とちょっとした疑問を口にしただけで、なぜそこまで絡んでくるのか
しかも、なぜか「あなたの言葉」で返ってくる始末

73:61
18/06/10 14:57:34.96 Q6IKpI1g.net
>>72も自分なので、念のため
>>70
> その「変数の実体化」っていうのは今話してる変数の状態や「有効化」の話とは軸がずれている
俺からすれば、俺が書いた「独り言(>>61)」にあなたが勝手に絡んできただけなんだがな
で、俺の趣旨は「宣言が巻き上げされるのではなく、宣言した結果、実体化される変数初期化処理が巻き上がる」
変数宣言も関数宣言も巻き上げなんて発生していない
関数スコープにある変数は、実行コンテキストに入る段階で「変数が実体化」されるだけだ
「変数の実体化」がES3の用語である事は61で書いた通り
で、俺は「ES2017ではこの文言はどう変わってるんだったか」と書いた
詳しくは読んでいないが、おそらく関係するにはこの辺りで、俺が欲しいのは「ES2017の文言」
URLリンク(www.ecma-international.org)
あなたはなぜか「あなたの言葉」で説明してきた
そして、一時情報源を求めたら、なぜか ES2019 URLリンク(tc39.github.io) を持ち出してきた
仕様書は必要になれば読むが、今の時点でそこまで切羽詰まって読む必要性はない
ただの独り言で誰かに答えてもらう事を期待していたわけでもない
答えてくれるのは有り難いが、俺への返信は全てピントがずれているんだよ

74:Name_Not_Found
18/06/10 15:28:19.00 SGg1sNhW.net
まだやっとるのか巻き上げの話w
そんな話時間の無駄のような気がするわ
物理の真理でもあるまいし
時間の無駄
プログラミングなんて使えりゃ良いんだよ
JSの仕様策定にかんよしてるのでないなら
もっと別のこと勉強しろ

75:Name_Not_Found
18/06/10 15:53:33.14 .net
仕様を読まなければ、無駄にクロスブラウザする事もあるから時間の無駄ではないけど、否定から前向きな結論は出ないだろうね
独り言に絡まれたのは同情するわ

76:Name_Not_Found
18/06/10 16:05:06.46 .net
というか、絡まれて火の粉を払っている方はともかく、絡んでいる方が望む終着点が読めん

77:Name_Not_Found
18/06/10 16:06:05.78 .net
用語は根拠をもって統一すべきとは確かに思う
そしてもし詳しいなら実務に影響あるところを書いてくれるとうれしいんだが
宣言と初期化の違いが、実際のコーディングにどう影響するのか
アローを含む変数格納の関数と巻き上げの話にしても
その変数を介さずに中身を直接呼ぶ方法がないんだし
「巻き上げなんて無かった」と考えてコード書いていけばそれで良い話にも思える

78:Name_Not_Found
18/06/10 16:13:57.91 .net
>>76
絡んでいる方は「一つの論題」に皆が参画している感覚なんじゃない?
>>70の下記一文は「一人一人にスレッドがある」と考えていない節があって、そこで61と齟齬が発生している印象
> その「変数の実体化」っていうのは今話してる変数の状態や「有効化」の話とは軸がずれている

79:Name_Not_Found
18/06/10 16:27:21.22 .net
>>78
なるほど、確かにそういう人は少なからずいるな…

80:61
18/06/10 16:51:48.21 Q6IKpI1g.net
>>77
> 「巻き上げなんて無かった」と考えてコード書いていけばそれで良い話にも思える
それで良いと思う
元々、ECMAScript には「巻き上げ」という概念はなく、誰かが hoisting と言い出したのが始まり
今では仕様上に hoisting も出てきてはいるけど、本質ではないと思う
実践的な部分では変数初期化のタイミングさえ覚えれば良い
基本的な部分だけまとめると、
- 「関数呼び出しされるタイミング」で関数宣言/変数宣言(var)の変数が初期化される
- let,const変数も同様に初期化されるが、TDZでは RefarenceError (TDZは仕様外の用語)
- グローバルコードでは先頭で関数宣言/変数宣言(var)の変数が初期化される
「関数式」「アロ


81:ー関数」は単体で宣言する機構がないので、他のスコープから呼び出すなら変数宣言/引数などに絡めて使う



82:Name_Not_Found
18/06/10 17:07:16.04 .net
>実践的な部分では変数初期化のタイミングさえ覚えれば良い
覚える必要あんのか?
変数は「初期化するコード」より前のタイミングで使うな、なんならブロック先頭で網羅的に初期化しろ、で済む話では?

83:Name_Not_Found
18/06/10 21:03:36.41 .net
>>73
俺からすれば最初>>62は君に対する返答でもたしかにあったけど、
君だけへの返答ではなくそれまでの流れを含めた視聴者に対するまとめを書いただけで
別に君に変数の仕組みを解説したつもりはない
そこに君が>>64で突っ込んできたから、それ「も」書いてると言った
君は「自分の言葉」と思ったかもしれないが、仕様書のURLは、「あえて」記載しなかった
ただ俺はきちんと必要ならすぐ調べられるように仕様上の用語は含ませた
そこは確かに君を強く意識して行ったことだけど
先にも言ったとおり全体としては君の質問へのど直球の回答ではないので
君の期待通りの返信では無いのは悪しからず
そして>>78の言う通り、俺が>>62などで書いた文章は以前の話を含めて書いているため
その後のそれらに対するレスは、>>61だけではない流れ上で考えさせて貰っている
君がやけに>>61に拘ってたことには失礼ながら今気づいたが、俺はそんなちっぽけなところなんて見続けていない

84:Name_Not_Found
18/06/10 21:14:46.91 .net
>>73
あとこれは完全に別件として問いたいことだが、
なぜES2017に拘る?
俺はES2017というのは最新仕様の言い換えだろうなと思ったから
より適切な最新のドラフトを案内した
今回の件でES2017に拘る理由がわからない
ES3,5や、letやconstが入ってその辺りに変更が入った2015を見てみるというのはまだ分かる
でもES2017なんて中途半端なところを拘って見たがる理由って一体全体なんだ?
今を知りたいのなら最新のドラフトの方がいいぞ、多少読みやすくもされてるし

85:Name_Not_Found
18/06/10 22:36:17.46 .net
一次情報云々の話ならそもそも実体化とかいう訳語が怪しいんだが
誰かがそう決めたの?

86:Name_Not_Found
18/06/11 08:47:51.79 .net
>>81
それはポリシーの問題
それでいい人もいれば、良くない人もいる
const房と根本的に同じ問題

87:Name_Not_Found
18/06/11 09:52:34.11 .net
>>85
ちょっとおかしくね
>>80を理解したところで初期化jsコードより先に使っちゃダメなのは確かで
初期化jsコードより後に使うなら>>80は無意味では
問題おきてデバッグする時にもまず役に立たない知識

88:Name_Not_Found
18/06/11 10:06:20.55 .net
知っていると実益があるかどうか
var,let,constはそれぞれ性質が違いしかも一方だけでコードを書くことができる
選択の余地ひいては実益があり、実益をどう判断するかのポリシー問題
変数の巻き上げやTDZや宣言・初期化とか用語・説明の話は実益あるのか

89:Name_Not_Found
18/06/11 11:12:20.90 .net
俺様が満足していればどうでも良いんだよ

90:Name_Not_Found
18/06/11 12:13:44.14 VhNszVLU.net
URLリンク(ekaz4.xyz)

91:Name_Not_Found
18/06/11 12:40:18.54 .net
実益があるのかって、単純に何事も内部構造をできるだけ分かって使う方がより良いと思うけど。
クラッチやエンジンの仕組みを何も知らないで感覚だけで覚えるのと、理屈で理解してるのとでは違いがあると思う

92:Name_Not_Found
18/06/11 13:18:48.10 .net
巻き上げ周りの知識があったら書き方がどう変わるのかってやつだな
自動車の例でいえば、仕組みを知ってれば効率良い運転に繋がる可能性もあろう

93:Name_Not_Found
18/06/11 15:55:56.82 .net
ジェネレーター関数って使い道ありますか・・?

94:Name_Not_Found
18/06/11 15:57:10.40 .net
フレームワーク作者とかは使うんじゃない?

95:Name_Not_Found
18/06/11 18:37:23.63 .net
通常のジェネレータはあんまり使い道はないが
asyncになるとイベント的なことに使えるのでかなり重要な存在
これがあれば、whileループみたいに描くしか無いところをfor awaitで書ける

96:Name_Not_Found
18/06/11 19:18:59.97 .net
でもそれwhileループで書けば良いんですよね?

97:Name_Not_Found
18/06/11 22:32:05.39 .net
そうでもないと思う
ジェネレータの良いところは、継続状態と返り値が同時に抽象化されてることだから
for awaitならそれを抽象化されたまま自然と扱えるが、
whileを使った場合その抽象化システムを丁寧に自分で組み立てるか、
その場その場で適応的に書くか、もしくは妥協しないといけない

98:Name_Not_Found
18/06/11 23:47:57.05 FHvAGVIA.net
ftp%3A//ftp2.shuwasystem.co.jp/pub/book/javascpermas/chap09.zip
これのsec04/dragdrop.htmlの26,36行のpreventDefault()ってなにを取り消してるの??

99:Name_Not_Found
18/06/12 00:18:43.22 .net
あ、ちなみに、ページ内の「ドラッグできます」というのを上の四角の領域にドロップすると要素が移動するというコードです。

それから34行のcurrentTargetとtargetと違いもわからないです。
targetに書き換えるとドラッグしても何も起こらなくなるのはなぜだろう

100:Name_Not_Found
18/06/12 01:33:58.85 .net
んなURL持ってくんなよ
しかも度々書籍ステマ・書籍アフィが出てるスレで「コンピュータ、パソコン書籍の出版社」が
アクセス統計でも得たいのか

101:Name_Not_Found
18/06/12 06:26:12.22 .net
本買うと特典でサンプルDLできるとかのあれか
本買ってないやつがDLするわけにはいかないし
本買ったやつならURLなんて出さなくてもわかるだろうし
何より本書いたやつか出版社に聞け

102:Name_Not_Found
18/06/12 12:39:51.08 .net
>>98
どなたかお願いします

103:Name_Not_Found
18/06/12 12:54:37.96 .net
>>92
データのID作るときとか便利
ループだとそのループ中でしかできないが
ループ以外でも簡単に連番等つけれる
同じ理屈で数列つくるときに便利。
遅延評価で無限数列つくるときとか。
ま、あんま使わんと思うが。

104:Name_Not_Found
18/06/12 12:55:33.83 .net
調べるべき用語が分かってるんだからググった方が絶対いい結果を得られるよ

105:Name_Not_Found
18/06/12 12:58:21.53 .net
>>97
$('a').click(function(e){ e.preventDefault(); });
例えばこれなら、a タグによるページ遷移という、デフォルトの動作が取り消される
jQuery のイベントバブリング、preventDefault()・stopPropagation() を参照

106:Name_Not_Found
18/06/12 13:35:41.02 .net
('q')

107:Name_Not_Found
18/06/12 16:23:25.80 .net
>>97-98
URLリンク(jqueryui.com)
jQueryUI の、Draggable, Droppable のソースコードを見れば?

108:Name_Not_Found
18/06/15 05:12:24.54 OkF/hEF8.net
JS違法だって
おまえら逮捕だね
【ウイルス】WebサイトでJavaScriptでPCに負荷をかける行為は違法 警察が検挙
スレリンク(newsplus板)

109:Name_Not_Found
18/06/15 05:40:24.41 .net
jkなら大丈夫だから

110:Name_Not_Found
18/06/15 12:42:58.55 .net
ひまつぶしにどうぞ
+ JavaScript のお題用スレッド +
URLリンク(mevius.2ch.sc)


111:/



112:Name_Not_Found
18/06/15 15:06:38.85 .net
パターンマッチ関数って何のためにやるのですか?
回りくどいな、という印象しかなかったのですが

113:Name_Not_Found
18/06/15 16:35:12.09 .net
パターンマッチ関数??
それだけ言われても…

114:Name_Not_Found
18/06/15 17:28:44.15 .net
>>110
すべてモジュール化するため

115:Name_Not_Found
18/06/15 17:41:20.29 .net
処理のメイン部分の記述が簡素になる。

116:Name_Not_Found
18/06/17 09:54:02.75 .net
JavaScriptで配列をすごい勢いでループしてる時に
緊急停止ボタンが押されたらブレーキをかけることはできますか

117:Name_Not_Found
18/06/17 10:02:59.78 .net
>>114
再帰なら可

118:Name_Not_Found
18/06/17 10:24:28.66 .net
>>115
質問者じゃないけど興味があるので理由を詳しく聞かせてもらいたい

119:Name_Not_Found
18/06/17 12:03:06.04 .net
嘘だから気にすんな

120:Name_Not_Found
18/06/17 12:33:49.85 .net
なんだうそか

121:Name_Not_Found
18/06/17 12:35:22.12 .net
setTimeoutやsetIntervalで再帰させてれば緊急停止できるのでは
概念的にはもはやループじゃなくてタスク管理だけど

122:Name_Not_Found
18/06/17 14:34:27.38 .net
> setTimeoutやsetIntervalで再帰させてれば
再起である必要はないね

123:Name_Not_Found
18/06/17 14:57:27.97 .net
緊急停止ボタンのクリックイベントでkinkyubrake = trueしておく。
ループではkinkyubrakeがtrueのときはbreakするようにしとけばいい。

124:Name_Not_Found
18/06/17 16:18:01.04 .net
再開どうすんの
あ、再開はないのか

125:Name_Not_Found
18/06/17 17:49:51.65 9b6f4Zt8.net
緊急停止っていみわからんけど
再帰で無限数列とかつくるとオーバーフローでエラーでるが
それを回避するためにsetIntervalに入れるんだが。
そういうことじゃねぇのか?

126:Name_Not_Found
18/06/17 17:58:49.16 .net
そりゃ別の問題だろ
jsエンジンの保護機能があって、理解した上でそれを回避する手法を使う
そこにユーザの停止意思は関係ない

127:Name_Not_Found
18/06/17 18:07:58.46 .net
>>110
関数型プログラミングの質問か?

128:Name_Not_Found
18/06/17 20:12:00.03 .net
皆様ご回答有り難うございます
長い時間がかかる計算をさせているのですが
私のラスクトップはこの時期長時間動かすと熱で落ちてしまいます
その兆候が現れた時に、物理的なUSBボタンが押されたら
全タブの処理を抑えたいと思っています
完全に止まらなくとも構いません
再開はしたいです

129:Name_Not_Found
18/06/17 20:13:14.81 .net
なんかラスク食べたくなってきた。買ってこよう。

130:Name_Not_Found
18/06/17 20:15:51.10 .net
つまりオーバーフローによる問題を回避するためではなく
エアフローによる問題を回避したいわけですな
ドヤァ

131:Name_Not_Found
18/06/17 20:18:15.35 .net
ラスクトップってなんだデスクトップなのかラップトップなのかどっちだ
PCごとスリープさせたらダメなのかね

132:Name_Not_Found
18/06/17 20:32:27.93 .net
とりあえずJSの仕事では無さそう
プロセスごとのCPU使用率制御かなんかを調べた方が多分近道

133:Name_Not_Found
18/06/17 23:23:03.78 .net
>>116
厳密には同期的繰り返し処理では割り込み処理出来ない

134:Name_Not_Found
18/06/19 09:33:33.46 adLbUfl+.net
オライリーのサイ本はもう新しいのは出ないんでしょーか?
7版待ってるんですが

135:Name_Not_Found
18/06/19 12:29:07.22 .net
一回読んだら次は仕様書見て理解すればいい

136:Name_Not_Found
18/06/19 23:04:41.37 .net
今までOOPでやっていた部分をFPで書いていてふと思ったのですが
FPって名前空間汚しまくりじゃないですか?
例えばOOPだと
hoge={sum:()=>{}}
みたいにhogeだけですみますがFPだと
hoge=()=>()=>{};
sum=()=>{};
みたいに延々増えていくような?気がします
そういうものなんでしょうか?

137:Name_Not_Found
18/06/19 23:50:01.24 .net
サイの絵の表紙のサイ本
JavaScript 第6版、2012、David Flanagan
初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発、オライリー、2017
Flanagan は、Java, Ruby など色々な言語の本を書いてる。
最近は、何をやってるのかね?

138:Name_Not_Found
18/06/20 06:16:56.26 .net
>>133
>>135
まだ持っていなくこれから学習始めるのに本が欲しかったんですが、第6版は古いから手が出しづらいです。
6版買うくらいならいっそのこと古本の5版でも構いませんか?

139:Name_Not_Found
18/06/20 06:49:06.68 .net
良いか悪いかで言ったら俺は悪いと思う
要するにJSの実際はそんなには難しくもないんだけど、
適切な解説が少ないプロトタイプチェーンやスコープチェーンだったり
多くのJSerが曖昧にしてきたであろう基礎的な仕組みに近いところを
まんべんなくそれなりに分かりやすい解説が載ってたっていうのが価値だった
だけどその他の部分のテクニックとかも肌感覚が古くなってきてるし、
今なら当然合わせて知っておきたいクラス構文やモジュールなんかも学べないしな
まあ物好きでお金と時間に余裕があるなら、
一旦ES5までの知識を付けて個別にアップデートしていってもいいとは思うが

140:Name_Not_Found
18/06/20 07:35:11.72 .net
>>137
ありがとうございます
第6版も古いからオライリーに拘らず他所の新しい本の方がよいでしょうか?

141:Name_Not_Found
18/06/20 12:15:51.98 .net
Javascriptで、生成されたオブジェクトを終了するために、
VBSで言うところのNothingを使いたいのだけれど、
どうも使わない感じみたいで、困ってます。
Javascriptでは、もしかしてnullとか使うでしょうか?
ヒントでもいいので教えてください。

142:Name_Not_Found
18/06/20 12:20:28.72 .net
変数にnull代入
参照してる変数が無くなればgcがいつか解放する

143:Name_Not_Found
18/06/20 12:24:43.92 .net
>>140
ありがとう、参考になりました。

144:Name_Not_Found
18/06/20 12:33:17.45 .net
>>138 わからん
サイ本のように一昔前は中級者や中級者になりたい人向けという幅広い括りで取り敢えず読んどけという本もいくつかあったが、
今の時代は難しい

145:Name_Not_Found
18/06/20 13:13:57.05 .net
大昔におけるオライリー本ですら有効性はクエスチョンマークだった
今や書籍の価値なんてGCに回収されてる

146:Name_Not_Found
18/06/20 13:27:31.60 .net
> 今や書籍の価値なんてGCに回収されてる
どういう意味?

147:Name_Not_Found
18/06/20 17:15:47.10 .net
>>142
どうもありがとうございます
参考になりました

148:Name_Not_Found
18/06/21 16:52:49.08 .net
Javapcriptのスリープ実装って永遠の課題なんか?
代替手段はどれも使いづらいし、
何でこんなことになっとんのや?

149:Name_Not_Found
18/06/21 20:35:03.15 .net
俺のスニペット帳より。元ネタは確かtry-puppeteerサイトのコード
なぜか5ちゃんのセキュリティゲートウェイに引っ掛かったので全角で貼る。
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
await sleep(5000);

150:Name_Not_Found
18/06/21 21:09:31.87 .net
>>146
Atomics APIでできるよ
Atomics.wait()とすればそのまんまスリープする
ただメインスレッドでは禁止されてる場合が多い
メインで待機しちゃうとUIが止まっちゃうからね
でもWorkerなんかではSharedArrayBufferと組み合わせて効果的に使えるよ
ただ今は例のCPUサイドチャネル攻撃脆弱性問題のおかげで
情報が抜けてしまうのでデフォルト無効にされてるが

151:Name_Not_Found
18/06/21 23:38:00.72 .net
でもAtomics APIってJavaScriptじゃなくて
ブラウザのAPIですよね?
NodeJSでは使えませんよね?

152:Name_Not_Found
18/06/22 12:49:32.69 .net
>>149
違う。列記としたECMAScriptの仕様だからV8にも載ってるしNodeでも使える
ただマルチスレッド動作が上手く行くかはわからんが

153:Name_Not_Found
18/06/22 12:52:44.08 .net
>>149
URLリンク(www.ecma-international.org)

154:Name_Not_Found
18/06/22 13:10:01.25 .net
chrome、firefox、edge、safari などメジャーブラウザ全てでメインスレッドでは使えない。ワーカー内でしか使えない。
実質役立たず。

155:Name_Not_Found
18/06/22 14:09:38.16 .net
つまり俺みたいな奴ってことだな

156:Name_Not_Found
18/06/22 19:53:35.82 .net
そもそもメインで待機なんてされたら迷惑も良いとこ

157:Name_Not_Found
18/06/22 19:59:45.83 .net
そういうruby信者みたいな情けない言い方はやめろ
やるやらないとできるできないは違う
できるけど理由があってやらない、が一番かっこいい

158:Name_Not_Found
18/06/22 20:38:55.29 .net
要素Aがあって
<div id="A"></div>
この要素Aに要素Bを動的に入れ子したとき
<div id="A"><div id="B"></div></div>
要素Aが膨らんだので
要素Aの大きさを取得したいのですがどうやってやりますか?
(そもそもAが膨らまないように、、みたいな話ではなく単純に、
予想外に膨らんでしまった要素のサイズを取得してみたい、という用途です)

159:Name_Not_Found
18/06/22 20:59:14.80 .net
scriptをbodyの末尾に置けばreadyハンドラを待つ必要ないと思いますが
このやり方に何か問題ありますか?

160:Name_Not_Found
18/06/22 21:05:35.16 .net
>>157
遅い

161:Name_Not_Found
18/06/22 22:21:10.44 .net
>>155
簡単にできるけど、理由があって禁止されたんだよ
最初期はそういう縛りなく実装されてた
理由があるなら最初からできないほうが良い
過剰に自由なことはデメリットのほうが大きい

162:Name_Not_Found
18/06/22 22:27:28.54 .net
>>157
要素にJSを適応したい場合はカスタムエレメントを使うこと
そうすれば要素が出現する前に定義できるし、
出現した瞬間に効果が適応される
コンポーネント化もしやすい

163:Name_Not_Found
18/06/22 22:31:28.54 .net
まず適用と適応の区別をつけろ

164:Name_Not_Found
18/06/23 18:58:40.28 .net
こういう人ってネット以外でも周りの人の会話に対して一々ケチをつけるのだろうか?

165:Name_Not_Found
18/06/23 19:08:18.04 +g3NNQ6c.net
低脳くやしいのうwwwww

166:Name_Not_Found
18/06/23 20:57:32.52 .net
低能を悔しがらせようと思ってJS質問スレでそんなレスをしたのか

167:Name_Not_Found
18/06/23 20:59:11.34 .net
えマジで悔しかったのか

168:Name_Not_Found
18/06/23 21:21:45.34 .net
うん。マジで悔しかった

169:Name_Not_Found
18/06/23 21:36:08.78 .net
適応はadapt
適用はapplyとかadoptやな

170:Name_Not_Found
18/06/23 21:51:33.46 .net
効果が「適用」される
だとしてもおかしいがな
効果が反映される
とかだろ

171:Name_Not_Found
18/06/23 22:37:00.39 .net
効果を適用する↔効果が適用される
結果としてその効果が反映される
URLリンク(helpx.adobe.com)

172:Name_Not_Found
18/06/23 23:43:14.39 .net
いや違うだろ
言葉の組み立てとしては正しくともニュアンス的にな
「誰々が何々を適用する」は自然だが「誰々が何々を反映する」はより不自然
つまりは「反映」よりも「適用」と言ったほうが誰がそれをするのかイメージされやすいんだよ
そして今回のように「(自然と、勝手に)~される」と言いたいのなら
「誰によってか」を意識させにくい「反映される」のほうが適切

173:Name_Not_Found
18/06/24 00:05:37.04 .net
>>158
ありがとうございます
>>160
カスタムエレメントというのは聞き慣れない言葉ですが
それは素のJavaScriptで出来るのでしょうか?
なんかフレームワークっぽい響きがありますが

174:Name_Not_Found
18/06/24 00:11:00.59 .net
日本語的には「効果が」に続く言葉としては「反映」「適用」どちらもおかしいんじゃないか
効果とは通常は一定の結果をあらわす言葉
何かに対して、規則・ルール・設定などを反映・適用した結果、あらわれるのが効果
一定イベントに特定の処理を当てはめる際も同様
逆に、設定画面で設定を変更したときに押すボタンが「適用」なのは正しい

175:Name_Not_Found
18/06/24 04:24:09.05 .net
いや、「適用」が使える場面は限られるよ
プロフィール画面で、公開ルールを設定する場合には使えるけれど
ニックネームなどを設定する場合には使えない
「適用」っていうのは値をそのまま当てはめるような場合ではなく
応用して使う場合にのみ使える言葉
例えば同じようなケースでも、マイプロフィール画面で
「プロフィールに『A』スタイルを適用する」とは言えるけれど
「プロフィールのスタイルを『A』で適応する」とは言えない
Aというスタイルは適用できても、スタイルの名前を指定する際は「適用」は使えない

176:Name_Not_Found
18/06/24 05:04:49.53 .net
>>173
ようするに「を」はOKだけど
「で」は適切じゃないって話?
○ プロフィールに『A』スタイルを適用する
× プロフィールに『A』スタイルで適用する
○ プロフィールのスタイルに『A』を適応する
× プロフィールのスタイルに『A』で適応する

177:Name_Not_Found
18/06/24 05:54:28.06 .net
>>174
厳密には違う
キャラクターメイキングで
「彼女」に「我慢強い性格」を適用する
に比べて
「彼女の性格」に「我慢強い」を適用する
は明らかに不自然だろう
後者はよく捉えたとしても結局
「彼女の性格」に「我慢強いという性格」を適応すると言ってるのと同じだ
そして先にも言ったようにただ固定値を貼り付けるだけであればあるほど「適用」というのは不適切
例えば、ゲーム開始以降に
「彼女の性格」に「より我慢強い」を適用する
なら
「彼女の性格」に「より我慢強い」を設定する
よりは適切だ

178:Name_Not_Found
18/06/24 07:03:04.54 .net
要するにAがBにただなるときはAにBを適用するというなということか

179:Name_Not_Found
18/06/24 08:09:40.94 .net
>>175
> キャラクターメイキングで
> 「彼女」に「我慢強い性格」を適用する
> に比べて
> 「彼女の性格」に「我慢強い」を適用する
> は明らかに不自然だろう
いやべつに?
だって、性格の他に髪型とか身長があるだろ?
「彼女の髪型」に「ショートヘア」を適用するは自然だけど、
「彼女」に「ショートヘアの髪型」を適用するとか
「彼女」に「150cmの身長」を適用するとか冗長じゃん

180:Name_Not_Found
18/06/24 11:12:37.93 .net
往生際が悪いぞ。いずれにせよ「適応」は間違いだ

181:Name_Not_Found
18/06/24 11:21:56.62 .net
「適応」あってるじゃんか
言い返せないから、往生際が悪いとか
意味不明なこと言って逃げたんでしょ?

182:Name_Not_Found
18/06/24 11:22:45.57 .net
適応障害
適用障害

183:Name_Not_Found
18/06/24 11:43:03.57 .net
>>173
>ニックネームなどを設定する場合には使えない
>「適用」っていうのは値をそのまま当てはめるような場合ではなく
>応用して使う場合にのみ使える言葉
・法令を適用する
・3秒ルールを適用する
応用じゃないんだが。辞書ひいてこい
「(入力した)ニックネーム(設定)を」「(今使っているソフトウェアに)適用する」
字面だけ見てもダメ

184:Name_Not_Found
18/06/24 12:07:43.98 .net
法令は遵守

185:Name_Not_Found
18/06/24 12:12:38.85 .net
いやなら法令を変えてみせろ

186:Name_Not_Found
18/06/24 12:30:23.46 .net
金も力もないでやんす

187:Name_Not_Found
18/06/24 12:33:49.52 .net
財布にお金を適用する

188:Name_Not_Found
18/06/24 13:40:37.03 .net
カードで

189:Name_Not_Found
18/06/24 14:38:00.51 .net
>>171
素のJavaScriptというと
URLリンク(developer.mozilla.org)
のあたりとか

190:Name_Not_Found
18/06/24 22:11:16.26 .net
>>181
それを応用っていうんだよ
>>176の言う通り

191:Name_Not_Found
18/06/24 22:22:03.01 .net
Microsoftに喧嘩売ってるな
もっとやれ

192:Name_Not_Found
18/06/24 23:30:02.76 .net
しれっと応用にすり替えてんじゃねーよ適応は間違いだろうがw

193:Name_Not_Found
18/06/25 00:29:29.06 .net
>>188
>176は「適用」の話

194:Name_Not_Found
18/06/25 00:51:38.93 .net
「適用」が
>応用して使う場合にのみ使える言葉
かどうか、って話だろ?

195:Name_Not_Found
18/06/25 03:20:49.95 .net
substringとsubstrのメソッド名ってちょっと適当すぎるのでは?

196:Name_Not_Found
18/06/25 04:59:47.75 .net
初心者です。JavaScriptを簡単な電卓代わりに使おうと思うのですが
平方根などを知りたいときにMath.sqrt(5)などとやるのが面倒です。
この組み込みオブジェクトの宣言を取っ払って
sqrt(5)とやるだけでMath.sqrt(5)が実行されるようにするにはどうすればいいですかね。
というかそうでなくても例えばPythonのように
import math as m
とやれば
m.sqrt(5)
のようにタイプしやすくなりますがJavaScriptでもそのようなことがしたいです。

197:Name_Not_Found
18/06/25 06:05:07.09 .net
原点に戻ったほうが良いぞ
まず英語版Windowsはどうなっているか?
URLリンク(i-msdn.sec.s-msft.com)
↑この機能がapplyだ
俺に認識では
・設定を反映させて閉じるのが OK
・設定を反映させないで閉じるのが Cancel
・設定を反映させて閉じないのが Apply だ
OK、Cancel、Appyにダイアログを閉じる or 閉じない
という意味がないことは同意するよな?
で、閉じる閉じないを省略しつつ、簡潔に書くと
・この設定内容でOK
・この設定内容をCancel
・この設定内容でApply
あとは日本語の問題だ
この設定内容[で/を]応用・・・言わない
この設定内容[で/を]応用する・・・言わない
この設定内容で適用・・・ぎりぎり言う
この設定内容を適用・・・言う
この設定内容で適用する・・・言う
この設定内容を適用する・・・言う
これは翻訳の問題なので(意味はApplyが適切だと英語版Windowsで決定されてる)
応用という言葉は適切ではなく、適用がふさわしい
応用して使うとかいうのは意味不明。だって「テコの原理の応用」。とか
そういう使い方をする用語なんだから。設定内容を応用するとか言わないでしょ?

198:194
18/06/25 06:11:51.73 .net
194ですが自己解決しました。すいません。
とりあえず
推奨案
 m=Math
 console.log(m.sqrt(5))
最適案
 with (Math) {
  console.log(sqrt(5))
 }
だったので後者を採用しました。

199:Name_Not_Found
18/06/25 06:15:55.40 .net
>>173がそもそも的はずれなのは、
「適用」がニックネームに対して行う操作ではなく
ダイアログに対して行う操作であることに気づいてないからだな
プロフィールという設定があるとして
「Aスタイル」というのは「プロフィール」の選択値
「適用」というのは「プロフィールの設定ダイアログ」に対する操作
「プロフィールにAスタイル」を「適用」するんじゃなくて、
「プロフィールとしてAスタイルを選択した設定内容」で「適用」するが正しい
そこがごっちゃになるから的はずれなことを言うわけさ
この設定内容で設定した値を使うわけだから「適用」
応用っていってしまうと、
(この設定内容は使わずに)この設定内容を応用して何かを作ってそれを使う
というニュアンスになってしまう

設定内容に対しての「適用」はどんな場面でも使えるよ。
そもそもOKしてダイアログを閉じないってだけなんだから
OKの代わりとし使える

200:Name_Not_Found
18/06/25 06:16:40.58 .net
>>196
withはなにがあっても使うなって言われてるだろ?

201:Name_Not_Found
18/06/25 06:20:34.91 .net
Math.sqrt(5) は Math.sqrt(5) と書くのが普通
どうしても sqrt ってしたいなら、
const sqrt = Math.sqrt.bind(Math)

const sqrt = Math.sqrt でも動くと思うが、sqrtメソッド内のthisが異なる
constが使えないブラウザの場合はvarで代用

202:196
18/06/25 06:30:00.42 .net
>>199
ありがとうございます。
しかしそれだと
sinやlogやabsやら全てに対しその宣言をしないといけませんよね。
それはちょっと面倒です……。
それと、後出しのようになってしまいますが、完全に個人目的(ブックマークレット)なので
evalやwithなど危険性・脆弱性のある機能を使ってもいいかなと思っています。
他人が触らず、かつ入力されるものが完全に把握できている場合でもevalやwithの使用は控えるべきですか?

203:Name_Not_Found
18/06/25 06:43:35.57 .net
Microsoftって昔J-Scriptっていうのを作ったのにどうしてそれを放棄してAction Scriptを作ったん?

204:Name_Not_Found
18/06/25 06:45:41.21 .net
ActionScriptじゃなくてTypeScriptだった

205:Name_Not_Found
18/06/25 06:53:43.91 .net
Math.sqrtって打つのが面倒なら
m.sqrtって打っていって
最後にm\.sqrtをMath.sqrtに置換すりゃいいじゃん

206:Name_Not_Found
18/06/25 07:04:57.51 .net
>初心者です。JavaScriptを簡単な電卓代わりに使おうと思うのですが
JSを使って簡易電卓を作ってみたい
なら少しわかるが
初心者が、JSを電卓代わりに使う、とか意味わからん

207:Name_Not_Found
18/06/25 07:11:11.56 .net
>>201
JScriptは大人の事情で名前を変える必要があっただけで
実質はJavaScript。開発当時は標準仕様などなく
どのブラウザも好き勝手JavaScriptを発展させたので
互換性がない部分がたくさんあった
標準仕様が作られたが、いちばん重要な互換性を保つために
IEはJScriptの開発を続けていったが、ようやく互換性を切り捨て
標準仕様に準拠できるようになった。
TypeScriptはJavaScriptをもとに改良したもの
JavaScriptの標準仕様を満たしており、+αで機能強化されてる。
JScriptが標準仕様を満たしてないために切り捨てたものにたいして
TypeScriptは標準仕様を満たしてなおかつ拡張されているところが違う

208:Name_Not_Found
18/06/25 08:08:38.93 .net
>>205
なるほど
ありがとうございます

209:Name_Not_Found
18/06/25 08:57:05.49 .net
ここまですべてくそ
わからないものにはクソをする
ワハハ バタン!

210:Name_Not_Found
18/06/25 12:51:04.88 .net
>>200
何個使う気が知らないけど
let {sin,log,abs}=Math
みたいにできるし、10個未満なくらいならwith文使わなくても
煩雑になったりはしないと思うよ

211:Name_Not_Found
18/06/25 13:18:53.49 .net
だな。
用途がブックマークレットって言ってるしIIFE使うんだろうから、
(function({sin, log, abs}) {
})(Math);
ってやってもいい。

212:Name_Not_Found
18/06/25 17:03:44.22 .net
a = !a
みたいな処理が一度に出来る代入演算子ってありますか?

213:Name_Not_Found
18/06/25 17:58:56.29 .net
AIがスクリプトを自動生成する。

214:Name_Not_Found
18/06/25 18:04:26.45 .net
AIじゃ生活できないのよ

215:Name_Not_Found
18/06/25 22:36:30.22 .net
jqueryのtextメソッドを使って改行を表示させる方法はありますか?
文字列の中に"\n"を書いても改行になりませんでした

216:Name_Not_Found
18/06/25 22:38:40.91 .net
ソース上での改行かhtml上での改行か
html上なら無理

217:Name_Not_Found
18/06/25 22:43:29.56 .net
preでも使えば

218:Name_Not_Found
18/06/25 22:49:14.26 .net
無理なんですね
ではhtmlメソッドとHTMLエスケープを使ってやります
ありがとうございました

219:Name_Not_Found
18/06/26 00:33:04.61 .net
改行は、<br> だろ
改行を使わず、<p> でも良いかも

220:Name_Not_Found
18/06/26 12:08:01.32 WhKzw99L.net
テーブルタグでクリックしたtdを連結するにはどうすればいいでしょうか?

221:Name_Not_Found
18/06/26 12:32:01.63 .net
>>218
URLリンク(developer.mozilla.org)
rowSpan, colSpan

222:Name_Not_Found
18/06/26 14:40:19.03 .net
よく考えたらjqueryのtextメソッドって
文字列にHTMLをかけてinnerHTMLに代入するメソッドではなくて、
テキストノードを作成するメソッドですよね
たからbr要素を入れられないのも当然ですね

223:Name_Not_Found
18/06/26 14:40:47.20 .net
×HTMLをかけて
○HTMLエスケープをかけて
でした

224:Name_Not_Found
18/06/26 16:17:52.29 .net
JavaScriptファイルを編集してもキャッシュが読み込まれてしまう時がありますが
条件はあるのでしょうか?

225:Name_Not_Found
18/06/26 18:57:16.64 .net
>>220
エスケープなどしない
DOMを覚えて、タグを挿入している感覚を改めた方がいい

226:Name_Not_Found
18/06/26 22:37:31.77 21Hh71GO.net
質問です。このシステムの名前を知らない為、長文になりますがよろしくお願いします。
サイトの中にあるリンクをクリックすると当たり前ですがリンクに組み込まれたurlに飛ばされます。
しかしこのリンクに組み込まれたurlをコピーし別タブで開くとサーバーエラーになりページが表示されません。
そこで、
質問1:このシステムの名称があれば教えてください
質問2:この現象(コピペするとエラー)を回避し、例えば自作のページに画像を貼るコードサンプルをご教授お願いします

227:Name_Not_Found
18/06/26 22:50:47.17 .net
・そんな糞なシステムを真似ないほうがいい
・そんな糞な仕組みを実装すると弊害が出る

228:Name_Not_Found
18/06/26 23:55:55.62 .net
そういう「外部からの勝手なアクセス」は迷惑行為として対策されていることがあります
著作権侵害などの問題が発生する可能性もあるので、できるとしてもやりたくないですね

229:Name_Not_Found
18/06/27 00:34:19.12 .net
ページAからページBのリンクを踏んでページBに遷移するときも、
直接アドレスバーにページBのURLを打ち込んで移動するときも、
そのサイトのサーバーにはページBに対するリクエストがクライアント(=ブラウザ)から来るわけですが、
この時クライアントがいっしょに送ってくる情報を調べて動作を変えることができます。
質問の動作の違いは、恐らくその情報のうち、リファラーというものを見てサーバーが動作を変えている(そういう風に作って/設定している)のだと思われます。
リファラーは簡単に言うとひとつ前にいたページのURLです。
アドレスバーに直接打ち込んで行くとカラなので区別できます。

230:Name_Not_Found
18/06/27 03:52:34.75 .net
>>222
普通はキャッシュから読み込まれる
故意にキャッシュを捨てるか、ページをリロードするか、
ファイルが変更された都度、ファイル名を変えるなどすると、
更新後のファイルが読み込まれる
>>224-227
履歴だろ。直前のページ。
どのページから、ここのページに来たか

231:Name_Not_Found
18/06/27 08:42:42.72 +obW3Yl5.net
>>226
>>227
ありがとうございます

232:Name_Not_Found
18/06/27 08:45:33.40 .net
いいってことよ

233:Name_Not_Found
18/06/27 11:32:45.97 13209M2/.net
>>219
ありがとうございます
rowSpanで下の行のtdを削除したいのですが
複数行ある場合にはどうすればいいでしょうか?
event.target.parentNode.nextSibling.nextSibling.nextSibling...
とクリック毎にnextSiblingを続ける方法がわかりません

234:Name_Not_Found
18/06/27 12:23:35.95 .net
>>231
rows, cells, cellIndex, rowIndex

235:Name_Not_Found
18/06/27 14:49:23.24 .net
>>232
できました!
ありがとうございました

236:Name_Not_Found
18/06/28 15:59:33.64 .net
jsSHAは
生成したオブジェクトを再利用することは出来ないのでしょうか?
ハッシュを生成するたびにオブジェクトをnewするのは無駄な気がして気になります

237:Name_Not_Found
18/06/28 18:49:35.60 .net
40桁の16進数を、36進数にしたいです
基数変換はtoStringで出来ますが、40桁の16進数はJavaScriptで扱える数の範囲を超えてますよね?
どうやればいいですか?

238:Name_Not_Found
18/06/28 19:59:25.22 .net
>>235
n進数のnを基数というのかと思っていたのですが、どうも違うようですね
n進数のnのことを何と言いますか?

239:Name_Not_Found
18/06/28 20:05:37.33 .net
基数

240:Name_Not_Found
18/06/28 20:31:56.51 .net
基数

241:Name_Not_Found
18/06/28 20:54:35.78 .net
基数を辞書で引くと
記数法で、基礎として用いる数、すなわち〇(ゼロ)から九までの整数。
と書いてあったので、これはちょっと違うのかな?と思ったのですが、基数でしたか
ありがとうございました

242:Name_Not_Found
18/06/28 22:45:36.04 .net
それ国語辞書とかで調べてない?
基数って言ってもいろいろあって、IT用語ならまさにn進数のことだし、数学用語ならa^n(べき乗)とかlogaN(対数)とかのaのこと
基となる数は基数

243:Name_Not_Found
18/06/28 23:33:23.55 .net
>>235
V8はBigIntが実装されたので、Chromeやnodeでは
BigInt


244:('0xcafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafe').toString(36); が使える



245:Name_Not_Found
18/06/29 07:55:55.18 .net
>>235
16進数->4進数->36進数

246:Name_Not_Found
18/06/29 10:09:40.67 .net
>>240
国語辞典で調べてました
文脈によって変わる語なんですね
ありがとうございました
>>242
それはどういうものでしょうか
自分の理解の範疇を超えています
40桁の16進数はJavaScriptで扱える整数の範囲を超えているので、
組込み関数ではなくてアルゴリズムでやるってことですよね
16進数から4進数は、各桁を4で割っていけばいいだけなので簡単そうです
でも4進数を36進数にするのは、そう単純じゃないですよね
4進数n桁が36進数m桁と同じになるのでしょうか?

247:Name_Not_Found
18/06/29 12:07:48.57 pAnXDGBH.net
>>232
度々すいません
左隣りの縦列にrowspanがあるとcellIndexが変わってしまいますが
これはどうすればいいでしょうか?
URLリンク(jsbin.com)

248:Name_Not_Found
18/06/29 12:22:43.11 .net
>>243
>>241は試した?

249:Name_Not_Found
18/06/29 12:43:31.93 .net
>>243
そうかね
36^0の桁だけ先に計算しておけば、36^1以降は計算しやすいと思うが

250:Name_Not_Found
18/06/29 15:57:41.13 .net
>>241
自分への回答と思わず読み飛ばしていました、すみません
そういうのがあるんですね
しかも、同様の機能を提供するbig-integerという汎用的なライブラリもあるようです
これを使えば簡単ですね
ありがとうございました
>>242
おっしゃる意図が読めません
理系の人なら分かるのでしょうか
四則演算以上の計算は難しいです
でもありがとうございました

251:Name_Not_Found
18/06/29 19:54:35.21 .net
>>244
左上から順番に数えなされ

252:Name_Not_Found
18/06/29 21:55:17.95 .net
せっかくBigIntの話を聞いてもライブラリで妥協するとかつまんねえ奴だな
そんなにレガシーブラウザで巨大数を扱いたいのか?
もうそっとしておいてやれ

253:Name_Not_Found
18/06/30 12:05:09.33 .net
>>248
できました!
適切なアドバイスありがとうございます

254:Name_Not_Found
18/07/02 21:32:49.58 .net
>>249
は??
electronアプリならいいですが
chromeでしか使えないものをウェブアプリで使えないのは当たり前ですが?
アホですか?

255:Name_Not_Found
18/07/02 21:37:11.27 .net
せやね

256:Name_Not_Found
18/07/02 21:43:13.56 .net
フォーム中のenterキー入力で発動する処理の中で、
別のフォームにフォーカスする処理を書いていたら、
フォーカス後のフォームにenterキーが入力されてしまいました
preventDefaultしたら現象は消えましたが
イベント伝播の最中に処理らしい処理をするのはもしかして避けた方がいいのでは?
と思ってきました
イベントハンドラの中ではlodashのdeferのようなもので処理の予約だけしておいて、
イベント伝播が終わった段階で処理が実行されるようにした方がいいのでは?と。
どうなのでしょうか?

257:Name_Not_Found
18/07/03 01:29:30.34 .net
単純な処理なら、かまわないだろうけど、
時間がかかる・複雑なものなどは、避けた方がよい

258:Name_Not_Found
18/07/03 10:44:08.98 .net
やはりそうですよね
ありがとうございました

259:Name_Not_Found
18/07/03 12:37:48.02 .net
>>251
アホはあんただ
そんなこと言ってるといつまでたっても使えない
モダンブラウザは今年中には対応してくるんだから
これからどうするのかという話だとBigIntを使っていこうと言う方が正しい

260:Name_Not_Found
18/07/03 12:45:59.98 .net
いや間違ってるよ。
create-react-appなどのツールもes2015+で書けはするものの最終的にはbabelでes5に変換している。
レガシーブラウザ対応のためだ。
世の中知らなすぎ。イキリ学生かな?
こんなとこでマウントとってないで勉強しろw

261:Name_Not_Found
18/07/03 12:59:05.16 .net
>>256
そうなんですか?
それはめでたいですが、
使う側からしてみればネイティブ実装だろうがライブラリ実装だろうが
インターフェイスに実質的に大差ないので、ちょこっと変えればいいだけの話です
マウンティングになってないんですよ
だからアホなんです

262:Name_Not_Found
18/07/03 13:08:41.19 .net
>>256
マジ学生のうちは勉強しといた方がいいよ。
時間とれるの今のうちだからさ…

263:Name_Not_Found
18/07/03 21:48:01.48 .net
マウントマウントってゴリラじゃないんだからさ
世の中~とかどうでもいいわけ
世の中に合わせるために生きてるわけじゃないんだから
そんなゴタゴタしたことは実際にゴタゴタしたときに考えて
最も適切な方法を見つければいいだけ
IEで動かしたいのかもしれないし、Nodeで動かしたいのかもしれない
もし駄目なときはそりゃあ良いように対応すればいい
でも基本的にはネイティブを使っていこう、試してみようと思わないと先に進めないんだわ
要するに綺麗事でいいじゃないかということ
教科書っていうのは大抵は綺麗事だ
それに現実はそう上手くは行かないとケチつけるのはアホ
まず綺麗事があって、そこから綺麗事じゃないことに対応するべきなんだよ
つまりはせっかく教えてくれた人がいるんだからBigIntを
もっと積極的にできる限り使おうとしてみろよということ
「へー、まそれはまだ早計でしょうからこれにしますわ」じゃあまりに失礼だろう

264:Name_Not_Found
18/07/03 21:59:38.61 .net
っていうかそこまで新しい技術を積極的に使っていくことに反対するやつの気がしれないわ
babelでレガシーサポートが基本みたいに言うしさぁ
本人は現実的で無難で実際に役に立つ思想のつもりなのかもしれないけどさ
そういう奴らは結局10年前からいるIEガ~厨と変わらないんだよ
ここに古い環境をサポートすべしと書けば書くだけ自分含む全JSerの首を締めることになるのが分からないのか
まだ吸収力がある初心者にこそケツひっぱたいてレガシー環境から遠ざけるべきなんだよ
それが俺たちのやるべきことだ
未熟な人に物事を教えるってことは甘く考えちゃいけない
学校の先生だって道徳で綺麗事を教えるだろう
それが変わりにいかに小狡賢く生きていくかを教えたらどうなる?
お前らがやってることはまさにそういうことだといい加減気づけ
お前らが根絶するまで俺はあえてこの極端なスタンスを取ってバランスを取る
これは俺がJS質問スレ20か30のころからずっと続けてきてることだ
わかったか??

265:Name_Not_Found
18/07/03 22:19:16.13 .net
ケンカをする悪い子は
スパークリングワイドプレッシャーで
お仕置きなのだ!

266:Name_Not_Found
18/07/03 23:21:51.04 .net
ドン引きですわ。糖質かな?

267:Name_Not_Found
18/07/04 09:18:13.96 .net
確かに古いブラウザを切り捨てないといつまでも新陳代謝が進まないということはあると思いますが
BigIntは時代遅れになったブラウザに欠けている標準的機能というより
最先端なブラウザにようやく実装されはじめた先進的機能ですよね?
ですからそれを使っても新陳代謝に寄与することはないんですよ
はい論破

268:Name_Not_Found
18/07/04 10:56:06.24 .net
stage4に入ってpolyfillも整備されたら使い始めれば良いと思う

269:Name_Not_Found
18/07/04 11:07:23.74 .net
最初にBigIntを紹介した者ですがこんなキチガイ中学生に背乗りされて荒らしの道具にされるとは思ってもみませんでした。
最初からポリフィルライブラリのほう紹介すればよかった。
申し訳ない。

270:Name_Not_Found
18/07/04 12:24:45.17 .net
>>266
お前も同類

271:Name_Not_Found
18/07/04 14:11:37.30 .net
>>267
お前は人類

272:Name_Not_Found
18/07/04 14:59:27.62 .net
タンノは魚類

273:Name_Not_Found
18/07/04 23:10:54.85 .net
美味いのは乙類

274:Name_Not_Found
18/07/05 07:09:57.58 .net
使えもせんもの紹介しっぱなしで逃げといて被害者ヅラとか片腹痛いわ

275:Name_Not_Found
18/07/05 08:59:56.88 .net
>>261
XHTML2やECMAScript4の失敗がある今でもこんなことをいう人がいるんだね
そういうことは、全人類を従わせるだけの力を身につけてからいいなよ

276:Name_Not_Found
18/07/05 09:10:18.70 .net
そいつ古参ぶってる中学生だぞ

277:Name_Not_Found
18/07/05 09:20:42.91 .net
>>261
> ここに古い環境をサポートすべしと書けば書くだけ自分含む全JSerの首を締めることになるのが分からないのか
誰も古い環境をサポートすべしとは言ってない。
現役のブラウザをサポートすべしと言ってるだけ

278:Name_Not_Found
18/07/05 09:29:58.26 .net
babelを使うとサポートしてない古いブラウザでも動いてしまう
だがウェブ標準で書いてもChrome 1(2008年リリース)という
サポートしてない古いブラウザでも動いてしまう
それとなにも変わらねぇ
わざわざ古いブラウザを切り捨てる意味はない

279:Name_Not_Found
18/07/05 09:39:27.10 .net
世の中から古いブラウザが消えないと新しい機能が使えない?
アホか。古いブラウザが消えなくても
お前がサポートをやめれば新しい機能は使える
昔流行ったIE6以上推奨です。みたいな文章を入れるだけの話だ

280:Name_Not_Found
18/07/05 09:55:50.51 .net
蔵「IE6で動かないのですが?IE6以上で動くと言っていましたよね?至急この不具合を直してください。ハヤク!」

281:Name_Not_Found
18/07/05 10:16:01.63 .net
そりゃIE6以上で動くことを保証していれば
対応しないといけないだろうな。
ホントな、サポートの意味をわかってない
馬鹿(>>277のことな)が多すぎw
サポートしないためには、動かなくしないといけない!
だからbabelを使ったらいけない
動いてしまったら、サポートしてることになるんだ!!
って思うのかね。アホかと
はいはい。Chrome 1で動いてしまったら
サポートしてることになるんですよねー(アホ理論では)

282:Name_Not_Found
18/07/05 10:21:39.63 .net
今年後半ジャバアプレットっていうのが流行るらしいです
去年マイナンバーのサイト?で導入されて話題になったそうですね
名前からしてジャバスクリプトの進化系だと思ってます
まだジャバスクリプト勉強中の身としては先が長いです
この世界は進化が激しいですね
みんなもうジャバアプレット使えるんですか?
ついて行けててすごいです…

283:Name_Not_Found
18/07/05 10:59:43.92 .net
誰かレスしてあげろ。可哀想だろ

284:Name_Not_Found
18/07/05 11:25:00.70 .net
中学生かー・・・・・・・・ええなあ

285:Name_Not_Found
18/07/05 12:09:58.93 .net
とりあえずwin8.1のサポートが終了すれば
理屈上はIE限定の環境はほぼ無くなるハズ

286:Name_Not_Found
18/07/05 12:19:51.82 .net
みんな新しいほど優れてるとは限らないんだぞ
これからはアップルウォッチの簡易ブラウザもサポートしないといけないんだから

287:Name_Not_Found
18/07/05 12:35:34.95 .net
クライアント「つまり、Google Chromeだけが対応ブラウザなのですね。IE12,Firefox,Safari...eycはサポートしないのがトレンドと仰るのですね。」
>>261「はい。世のブラウザはもっと、レガシー環境から遠ざけられるべきなんです。Google Chrome以外は全てレガシー環境。世の中の人が皆、Google Chromeを使えばいいのです。」

288:Name_Not_Found
18/07/05 13:05:51.98 .net
うち過半のアクセスがモバイルSafariなんやけど~

289:Name_Not_Found
18/07/05 13:12:59.75 .net
いま一番問題になってるのは、古いAndroidスマホを
使い続けてるやつやで

290:Name_Not_Found
18/07/05 16:53:31.86 .net
lynx使ったら逮捕される世の中だし仕方ないな

291:Name_Not_Found
18/07/05 19:12:11.64 .net
IE12に突っ込む人はだれも居ないか

292:Name_Not_Found
18/07/05 19:20:05.74 .net
そもそもeycやし…w

293:Name_Not_Found
18/07/06 00:00:58.84 .net
typoしか、突っ込むところなしか

294:Name_Not_Found
18/07/06 14:13:03.14 .net
node.js難しいので導入とかしてないのですが
npmでインストールしてimportするのと
scriptタグで、なんとか.min.jsみたいなのを読み込むのって
何か違いがあるんですか?

295:Name_Not_Found
18/07/06 15:05:29.86 .net
はい。

296:Name_Not_Found
18/07/06 15:50:27.16 .net
はげ。

297:Name_Not_Found
18/07/06 20:32:45.30 .net
テキストやバイナリの1バイト目だけ取り出したいときって
text.substring()するしかない?

298:Name_Not_Found
18/07/06 20:46:46.99 .net
text.substringじゃむり

299:Name_Not_Found
18/07/06 21:28:58.75 Z0wHOskr.net
来年でなるからそれを記念してされたらいいな。 してるかも。

300:Name_Not_Found
18/07/07 09:57:36.64 .net
>>291
HTML 内で読み込むのは、普通のやり方。
一方、npm で読み込むのは、そのフレームワークのやり方
Rails でも、実行環境は、Node.js だよ。
Node は画面機能として、すべての言語で必要
web アプリは、HTML, JavaScript で画面を作る

301:Name_Not_Found
18/07/07 11:09:54.64 .net
× HTML 内で読み込むのは、普通のやり方。
○ HTML 内で読み込むのは、昔ながらのやり方。
× 一方、npm で読み込むのは、そのフレームワークのやり方
○ フレームワークではなく、改良された新しい標準的なimport方法
× Rails でも、実行環境は、Node.js だよ。
○ ビルド環境がnode.js 実行環境はブラウザ
× Node は画面機能として、すべての言語で必要
○ 必要ない
× web アプリは、HTML, JavaScript で画面を作る
○ HTML、JavaScriptを使わず、それ以外の言語だけで作ることもある

302:Name_Not_Found
18/07/07 12:37:26.05 .net
npmってつかったことないけど
どっかからコピーしてきたjsファイルと
そのjsファイルに関するメタ情報(バージョンとか)が記述されたjsonとかのファイルを
プロジェクトフォルダに配置して
jsに更新があれば更新してくれるようになるみたいな代物?

303:Name_Not_Found
18/07/07 13:25:10.31 .net
nodejs
package
manager
npmが管理するパッケージは基本node専用。
require()やioなどnode用api使われてるからな。
ただ条件満たせばブラウザで実行できるよう変換できる。
パッケージ次第。
ブラウザ環境で使用可能かどうかはそのパッケージのウェブページなどに書いてある(ことが多い)ぞ。

304:Name_Not_Found
18/07/07 13:27:12.71 .net
あと>>297>>298は嘘松。
なんでこんないい加減なこと書くんだろ…

305:Name_Not_Found
18/07/07 13:42:32.04 .net
>>301
じゃあお前が信じてる嘘を書けば?

306:Name_Not_Found
18/07/07 13:49:07.87 .net
結局誰もよくわかってないんだろうなw

307:Name_Not_Found
18/07/07 14:23:14.57 .net
どこが嘘かも書けない低脳

308:Name_Not_Found
18/07/07 14:46:19.56 .net
正直node、nodeって言うほどそこまで良いものとは思えん
javascriptをそのままサーバサイドで、が売りだけど
node専用部分多いし、一定ライン以上複雑な処理書こうとすると途端に面倒になるし
多ユーザを高速にさばくためにnodeを使うとなるとお手軽とは正反対になる
それにコネクション張りっ放しにしてもらうような使い方しないなら、apache/phpで適切にチューンした方が・・・

309:Name_Not_Found
18/07/07 15:15:42.45 .net
nodeでコネクション張りっぱなし??ごめん何のこと?

310:Name_Not_Found
18/07/07 16:32:46.77 .net
例えばvue.jsのインストール方法見るじゃん
URLリンク(jp.vuejs.org)
cdnをscriptタグでリンクする方法の他にnpmとcliによるインストールがあるじゃん
npm用いてインストールしたらcdn使うのとHTML,Script,Style的に差は出るの?
もちろん通常のクライアントサイドのWeb用途を考慮して

311:Name_Not_Found
18/07/07 17:01:52.59 .net
以下のようにしてHTMLのbutton要素を取得したいのですが
var button Elements = document.getElementsByTagName("button")
Twitterのモバイルサイトではbuttonが表示されているのに
Chromeのユーザーエージェントをiphone設定して、HTMLを確認するとbuttonTagが存在していません
URLリンク(mobile.twitter.com)
Ajaxによって動的に書き換えられた後のhtmlソースコードを確認する取得する方法はあるでしょうか?

312:Name_Not_Found
18/07/07 17:07:58.53 .net
>>308
document.head.outerHTML + document.body.outerHTML

313:Name_Not_Found
18/07/07 19:47:09.42 .net
>>309 ありがとうございます
document.documentElement.outerHTML では
ChromeデベロッパーツールでiPhoneに設定し
表示されたHTMLと同じになってしまいます
スクリプトだらけでタグ類はほとんどありません
以下のWebアプリで
URLリンク(seo.mash-comp.com)
Twitterのモバイルサイト( URLリンク(mobile.twitter.com) )
のHTMLを表示するとAjaxによって動的に書き換えられた後のHTMLを確認できました
inputタグやbuttonClassが正常に取得できています
このようなWebアプリはどのような手段で
動的に書き換えられた後のHTMLを取得しているのでしょうか?

314:Name_Not_Found
18/07/07 20:08:55.73 .net
いちいち動的に書き換えられたって言ってるがjsからはブラウザが(静的な)HTMLを解釈して組み上げたDOMしかいじれないのだから普通にいじればそれは動的に書き換えられているHTMLをいじってることになる。
何も特別なことする必要がなくて、なんとも答えられない。
jsから、ブラウザや他のjsにいじられる前のそのページの(静的な)HTML取得するにはどうすればいいですか、というほうがよほど質問らしい質問。(この場合はlocation.hrefをfetchして必要に応じてXMLParserかけるのだが)

315:Name_Not_Found
18/07/07 20:42:59.17 .net
何をしたいのかさっぱりわかんね

316:Name_Not_Found
18/07/07 21:13:56.46 .net
jsを性的にいじる話?

317:Name_Not_Found
18/07/08 02:14:52.45 .net
Reactを勉強しているのですが
Atomic Design の Organisms を人前で読み上げることができません
赤面してしまいます
なぜこんな性的な名称を付けたのでしょうか?
これはセクハラです

318:Name_Not_Found
18/07/08 07:22:39.00 .net
野球開始のプレイボーイ!みたいなもんや
気にするな

319:Name_Not_Found
18/07/08 07:53:18.98 .net
>>315
それはプレイボールでは?
こういう下品なオジサンが鼻の下伸ばしながら用語決めてると思うと許せない

320:Name_Not_Found
18/07/08 08:27:35.42 .net
>>316
え? だからいちいちプレイボールってきいて
セクハラって思うなって話なんだけど?

321:Name_Not_Found
18/07/08 08:38:35.08 .net
>>317
そういう単語をあえて使わないでほしいと言っています

322:Name_Not_Found
18/07/08 09:08:05.71 .net
orga"ni"sm な
元々iにアクセントがあるんだからはっきり発音すればよろしい

323:Name_Not_Found
18/07/08 09:11:47.25 .net
大蟹住む

324:Name_Not_Found
18/07/08 09:14:16.14 .net
まんさんに大声で読み上げさせたいわ
オーガニズム、オーガニズム

325:Name_Not_Found
18/07/08 09:49:18.05 .net
>>318
サセックス州
大声でいってみ

326:Name_Not_Found
18/07/08 10:01:15.28 .net
>>322
最低

327:Name_Not_Found
18/07/08 11:06:55.22 .net
最大限にハゲを侮辱するようなjsコードありませんか

328:Name_Not_Found
18/07/08 11:19:37.94 .net
徹底的にハゲをいじめるためのjavascript

329:Name_Not_Found
18/07/08 11:30:52.31 .net
お前の頭がパイパンだぜ!

330:Name_Not_Found
18/07/08 18:13:09.21 .net
やっぱりこういう性善説に基づいたスレって破綻するよね

331:Name_Not_Found
18/07/08 18:32:31.13 .net
え?性伝説?なにそれ?エロそうな伝説だな。

332:Name_Not_Found
18/07/08 22:05:37.89 .net
belief that human nature is fundamentally good

333:Name_Not_Found
18/07/09 15:29:33.07 .net
>>310
Ruby + Selenium WebDriver で、ブラウザを操作するとか?

334:Name_Not_Found
18/07/09 17:40:19.38 .net
Seleniumは様々な言語から操作させるドライバーがリリースされていますが、最も保守メンテが滞っているのがrubyとか言うクソ言語です。
Selenium自体はJava製のソフトウェアですから、ネイティブドライバーが使えるJava版が鉄板です。
とはいえJavaはめんどくさいという人はPythonやnodejs用のドライバーがそれに次いでよくメンテされています。

335:330
18/07/10 09:47:08.81 .net
Ruby + Selenium WebDriver で、最新のChrome 67 でも動く

336:Name_Not_Found
18/07/10 11:59:12.33 .net
Pythonista的に糞言語には同意だけど
特定のドライバーの保守メンテが滞ってるから糞言語ってのはちょっとひどくねw

337:Name_Not_Found
18/07/10 13:50:49.74 .net
初心者で、クッキーの設定、取り出しを学習しております。
if(navigator.cookieEnabled)
{
document.cookie = 'key=value';
alert(document.cookie);
}
else{deocument.write("駄目")};
こんな感じでクッキーを設定して、取り出してアラートで表示するようにしたところ、
firefoxやIEではちゃんと表示されるのですが、Chromeだとアラートは出るのですが空白になります。
これはChromeの設定の問題でしょうか?
javascript許可、クッキーの保存読み取り許可しているのですが

338:Name_Not_Found
18/07/10 20:18:36.28 .net
昨今ポリシーがどんどん厳しくなってるからそういうことも起こる
オプション含め確実に値を設定し、万が一の場合も失敗が検知できるようにするため
chromeでは今後はcookieStoreが推奨される
cookieStore.set('key','value')
alert((await cookieStore.get('key')).value)
Canaryで試せる

339:Name_Not_Found
18/07/10 20:19:59.47 .net
最初の行await付けるの忘れてた

340:Name_Not_Found
18/07/11 19:11:15.53 .net
非同期クッキーAPIが入ってローカルストレージの非同期が来ないのはなぜだろう

341:Name_Not_Found
18/07/12 01:03:43.79 .net
>>335
ありがとうございます!

342:Name_Not_Found
18/07/13 02:48:26.75 RFgBSoyz.net
var aud = $("#audio");
$("#next").on('click', function() {
var u = Math.floor(Math.random()*5) + 1;
aud.attr('src', "URLリンク(xxx.x.xx.x.x"+u+".mp3"));
});
※nextはbutton要素のid です。
ここで質問させていただきます。この次の行にaudのsrcに指定したファイルを再生するのですが、
#nextを押しても再生されるファイルが変わってない(urlに指定していある「u」の値が反映されていない)ため、
思うように作動させることが出来なくて困っています。
なお、この関数は最初に呼び出されていると共に、一番上に書いてある関数です。
どなたかご教授願います。。。

343:Name_Not_Found
18/07/13 02:50:10.84 .net
5が全角なのはギャグか?

344:Name_Not_Found
18/07/13 06:16:38.93 .net
>>339
alert(u);

345:Name_Not_Found
18/07/13 09:58:34.45 5pSsdTZj.net
>>340
コピペする過程で全角になってしまった可能性があります。というのもuが1になった時のファイルは再生されるので......

346:Name_Not_Found
18/07/13 14:11:40.54 RFgBSoyz.net
>>341
ずっと1が表示されます

347:Name_Not_Found
18/07/13 16:09:42.60 .net
1のファイルとやらはvideoタグの初期ロードファイルだったりしないか
+で連結する前に、uと".mp3"について、それぞれ末尾にtoString()つけて、toString()含めて括弧で括る

348:Name_Not_Found
18/07/13 17:49:19.43 .net
>>343
URLリンク(jsfiddle.net)

349:Name_Not_Found
18/07/13 19:51:17.84 .net
> コピペする過程で全角になってしまった可能性があります
コピペでそんなこと発生しないような
コピペした後、手入力し直したのが原因

350:Name_Not_Found
18/07/13 19:59:33.00 .net
っていうか自分の質問の原因のコードと
自分が質問のために書いたコードなのに、可能性があります ってなんや

351:Name_Not_Found
18/07/13 20:36:49.17 .net
何れにせよ単純なミスっぽいし
まずはエラーメッセージを見て確認してみるのが
正攻法として勉強になると思うよ

352:Name_Not_Found
18/07/13 21:42:43.41 .net
なにもしてないのに、全角になったんです。

353:Name_Not_Found
18/07/13 22:00:51.87 .net
なにもしてないのにjavascriptがこわれた

354:Name_Not_Found
18/07/13 22:13:54.69 .net
なにもしてないのに~が壊れたの90割は何かしてる

355:Name_Not_Found
18/07/13 22:27:47.72 .net
>>349
何もしてないのに「コピペする過程で全角になってしまった可能性があります」と書けるのか
それとも、何もしてないのに、そう書いていたのか
結論「何もしてなかった」

356:Name_Not_Found
18/07/13 22:27:48.65 RFgBSoyz.net
>>340 - >>348
var i = Math.floor(Math.random()*5+1);
var num = i.toString();
aud.attr('src', "URLリンク(xxx.xx"+num+".mp3"));
で解決することができました!!皆様本当にありがとうございました!!!

357:Name_Not_Found
18/07/13 22:35:34.20 .net
>>353
それ、toString() は要らんのだがね
原因「なにもしてないのに、全角になったんです。」

358:Name_Not_Found
18/07/13 22:38:43.81 RFgBSoyz.net
>>339の者ですが>>349>>350は私の投稿ではないです
5が5と全角になった理由としては当初random()*5はrandom()*2であり、
「1の値のみが返ってくる原因として
Math.floor()以降の数字が小さい数字であるのでは」という疑問を解消するため大きい数字を入れて
テストしていました。その後投稿する際に日本語入力のまま2を5に変更したため5が全角に
なってしまったのだと思います。混乱を招いてしまい、すいませんでした。。。

359:Name_Not_Found
18/07/14 00:06:04.24 .net
テストと投稿が関係あるとしたら
投稿時に書き直す必要はないし、そもそも全角の5に気づかないって何のテストになったんだという話
テストと投稿が関係ないんだったら
投稿時に2を5に変える必要がどこにもないよね

360:Name_Not_Found
18/07/14 00:32:27.87 .net
ええやん別に
お前らもうちょい優しく甘くなろうぜ
おかんやないんやから

361:Name_Not_Found
18/07/14 00:38:38.21 .net
>>357
概ね同意だけど、おかんはどっちかって言うと「何もしてないのに~」って言う側やろ

362:Name_Not_Found
18/07/14 01:01:39.32 .net
なにもしてないのに怒られた

363:Name_Not_Found
18/07/14 01:36:50.75 .net
なにもしてないから怒られる

364:Name_Not_Found
18/07/14 03:30:24.67 .net
で、結局>>343の原因はなんだったの

365:Name_Not_Found
18/07/14 03:41:12.33 .net
複数安価で355がNGなってただけで原因みれたわ

366:Name_Not_Found
18/07/14 04:01:09.95 .net
Canvasでクロスフェードをしたいのですが、思うようにいきません
具体的には、例えば2枚の画像A,Bを半分ずつ重ねた状態を作るには、
アルファを0.5同士で重ねると良いように思えますが実際にそれをすると背景が透けます
0.5A画像+0.5B画像ではなく、
0.5(0.5背景+0.5A画像)+0.5B画像になってしまうということです
画像だけ分けて合成してから背景と合わせればいいだろうと思うかもしれませんがそれも上手くいきません
AB合成画像のαが(1-(1-(1-0)[無背景]*(1-0.5)[A画像])*(1-0.5)[B画像])=0.75[AB合成画像]となってしまい背景が0.25混じってしまうためです
解決方法を思いつかれた方はご教授ください

367:Name_Not_Found
18/07/14 04:11:43.68 .net
てかよくよくみたら原因は、全角のみじゃん。
ふつう「単に全角になってただけでした、すいません笑」みたいな返しが自然だが
>>353時点で、全角が原因だとまだ気づいてない or 別の原因があったことにしたい風なテンションはなんなん・・?

368:Name_Not_Found
18/07/14 07:58:32.00 .net
>>363
javascriptじゃなくそういう画像作れば?

369:Name_Not_Found
18/07/14 12:27:23.78 .net
<div id="a"></div>
スクロール必要な長いソースコードが続く
<div id="b"></div>
こういう状態で#bにいったときにアクションをしたいのですが
検出方法やどういったイベントを使うのでしょうか?

370:Name_Not_Found
18/07/14 12:32:48.65 .net
#bにいったときって?

371:Name_Not_Found
18/07/14 12:35:00.85 .net
マリア「なにもしてないのに子どもが出来ました!」

372:366
18/07/14 12:37:34.38 .net
>>367
縦スクロールです
例えばこのスレを開いて>>1からスクロールしていって
>>366のところで画面にalertをジャンと出すような感じです



374:Name_Not_Found
18/07/14 12:50:56.79 .net
>>363
ユーザーの目

画像A(50%)

背景
この時点でユーザーからは背景と画像Aが1:1で混ざった状態に見えるのは分かる?これに画像Bを50%で更に足すと、それにさらに1:1で混ざった画像になっちゃうわけ。背景:画像A:画像B=1:1:2
背景が透けて見えるのがおかしいと認識してるんだから、次のようにすればいいと分かるよね?
ユーザーの目

画像B(50%)

画像A(100%)
↓(以下は見えない)
背景
割合を変更するには、画像Bのところだけをいじる。画像A:画像B=95%:5%にしたいなら画像Bのアルファを0.05(5%)にする。画像Aはいじらない。

375:Name_Not_Found
18/07/14 13:00:16.18 .net
>>369
>>366のところって?

376:366
18/07/14 14:10:13.38 .net
#bの位置yを取得して
window全体をscrollイベントで現在の位置y'を監視して
yがy'になったら発火で良さそうですが
これだと常時scrollイベントが発生するので(位置yになったら解除するにしても)
環境によっては重い 電池消耗が激しいなどの問題に見舞われるので
そのへんうまくできないかなと思ったのですが

377:Name_Not_Found
18/07/14 16:10:47.05 .net
YouTube とか、その要素が表示されたら、画像を読み込むとかだろ
その要素が表示されたらとか、そういうイベントは無いの?

378:Name_Not_Found
18/07/14 17:07:28.37 .net
>>365 >>370
ご回答有り難うございます
確かに同形同位置の2枚の画像のフェードの場合はおっしゃる通りなのですが
実際は透過部分を持った不定形不定位置不定数枚のpngが動的に現れたり消えたりし得るというフェードであります
つまり、画像Aに画像Bを重ねる場合
画像Aを100%のままにしておくと画像Bが重ならない部分に問題が出てしまうということです
フェードが50%に達した段階では、
画像Aの画像Bに重ならない部分は背景と1:1で交わってほしく
画像Bの画像Aに重ならない部分は背景と1:1で交わってほしく
画像Aと画像Bの重なる部分はそれぞれ1:1で交わって背景は交わらさせたくないということです
ここからはフェードが同期的に始まったという場合で例を書きますが
もし画像Aのアルファが元々0.5である部分Дと、画像Bのアルファが元々1である部分Бが背景部分Gの上で交わるときは
フェードが50%に達した段階で0.25Д+0.5Б そしてのこる 0.25の部分がGとなってほしいです
もし画像Aのアルファが元々0.6である部分Дと、画像Bのアルファが元々0.7である部分Бと、
画像Eのアルファが元々0.8である部分Ёが背景部分Gの上で交わるときは
フェードが50%に達した段階で0.3Д+0.35Б+0.4Б これは1を超えるので、全ての係数の形が1となるように調整し
Gは全く含まれない、というような挙動にしたいです
要するに、αはフェード段階と画像のアルファに基づいて各画像分加算し、色もフェード段階と画像のアルファに基づき単純に加算する
ただしそのときαの合計が1を超える場合、αを1とし色の合計を調整して、最後に背景と重ねる
というようなうまくいくかどうか分からないアルゴリズムまでは考えたのですが
ピクセル操作などを行わずこういうようなことが簡単にできませんかね
ライブラリのフェードも試してみましたが、やはり問題は起こるようです(少しちらつくというか、浮くように見える)
今まで他の方はどうやって対処されてきたのでしょうか

379:Name_Not_Found
18/07/14 17:47:49.01 .net
>>374
これは見てる?
URLリンク(developer.mozilla.org)

380:Name_Not_Found
18/07/14 17:51:26.77 .net
画像をうまいこと願望どおりに重ねたい、っていうのにjavascript関係ある?

381:Name_Not_Found
18/07/14 18:11:11.87 .net
>>375
まさにこういったことでできるのであれば良いと思っているのですが、
どう使ったら良いのか検討もつかないので色々試しても上手くいきません
このオプションごとにどういう計算式が使われてるかが分かればまだやりようがあるかもしれません

382:Name_Not_Found
18/07/14 18:38:30.94 .net
そもそもcanvasでないといかんのかね?
css の transition で済むように思えるが

383:Name_Not_Found
18/07/14 18:49:22.19 .net
>>378
フルCanvasのゲームなので何とも……
ビュー層をHTMLにしたこともありますが
パフォーマンスや表示互換性、スクリーンショットなどの機能の実現の容易さから
今はCanvasを使って進めています

384:Name_Not_Found
18/07/14 21:01:41.87 .net
読み込むjavascriptのファイルを1つに統一することって出来ますか?
出来るならどんな風にやったらいいでしょう?
変数や関数名がかぶったりすると思うのでそこを解決しないといけないのと
あとライセンス的にどうなのかなという問題もありますが
/***
なんたら.js
author Nantara
URLリンク(nantara.example.com)
MIT License
**/
/***
うんたら.js
author Untara
URLリンク(untara.example.com)
Apache License
**/
こんなかんじで同ファイルに列挙すればいいのかとか


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch