+ JavaScript の質問用スレッド vol.133 +

■ このスレッドは過去ログ倉庫に格納されています
2018/04/16(月) 00:09:43.45ID:???
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください

■規則/推奨ルール
・メール欄を空欄にし、名前にレス番を入れることを強く推奨(なりすまし防止)
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」だけでなく「意見」を出しても良い。

■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為(批判の代わりに「AよりBが良い」のような代案を出す事)

■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。
【条件】期待する回答の条件を書いてください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/

■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです
2018/04/21(土) 10:12:05.79ID:???
>>59
そこにも数値じゃない値って書いてあるね
2018/04/21(土) 10:32:13.24ID:???
Not a Numberなのに数値という意味が分からない
Nullが文字列って言うようなものでは?
2018/04/21(土) 10:59:50.45ID:???
哲学かな?
2018/04/21(土) 14:19:52.67ID:???
>>29
ソースよろ

NaNはNumberオブジェクトに属し
typeof NaNでnumberを返すくらいの認識しかない

数値計算の結果生成されるからNumberオブジェクトに入れてるだけじゃないの?
2018/04/21(土) 14:35:18.38ID:???
>>63
その前にやることが有るだろ。

お前の、ソースよろ だ
2018/04/21(土) 14:39:08.77ID:???
typeof nullがオブジェクトwwwww
javascriptワロタwwwww
2018/04/21(土) 14:55:55.87ID:???
Rubyなんか、null(nil)にnil?メソッドが有るんだぜw
もちろん nil.is_a? Object は true である
2018/04/21(土) 15:26:28.92ID:???
>>64
は?なんのソース?
アタリマエのこと書いただけのつもりなんだが?
2018/04/21(土) 15:37:56.43ID:???
もしdoubleな数値型の値だったら、比較や加減乗除できるはずなんじゃないの
2018/04/21(土) 16:56:23.20ID:???
比較も演算もできるやろ
まあ結果が直感には反するかもしれんが
仕様(IEEE 754)に沿ってるだけ

そもそもなんでそんな仕様なんだクソが、とは思わなくもない
既存の数値処理にあわせたとか、ゼロ除算や文字列からの変換をエラーにしたくなかったとか、なんか理由はあるんだろう
2018/04/21(土) 17:09:35.50ID:???
jQuery は、gzip圧縮時で、30KB。
広告1つ分

CDN はサポートがしっかりしている、Google, MS を使うのが普通

jquery.com は、テスト用で使えるってだけ。
jQuery はソースコードを作っている団体。
CDN サービスなど、やっていない
2018/04/21(土) 17:12:08.29ID:???
https://code.jquery.com/
<title>jQuery CDN</title>
2018/04/21(土) 17:33:08.62ID:???
広告の30KBと圧縮コードの30KBでは全然違う。
jQueryはロードしたねヨカッタヨカッタというようなライブラリではなく、導入しているからには様々なプラグイン、依存ライブラリ、依存コードの依存先となる。
つまり非同期読み込みできない。bodyの下のほうに置いてる場合でもない。head内でなるべく早く読み込まなければ依存コードが動かない。
なのでbodyの最後に置ける広告コードと違い、圧縮状態で30KBのコードが展開され、パースされ、ロードされるまでそのページはブロックされる。
2018/04/21(土) 17:39:44.61ID:???
jQueryはbodyの最後におけるよ
実際にやってる人いた

jQueryとCSSを最後に読み込ませてサイトの表示速度を上げる方法
https://hodalog.com/move-jquery-to-footer/

たしかにjQueryを最後の方で読み込ませることで
表示速度が改善されているね
2018/04/21(土) 17:46:46.13ID:???
最近はwebpackで一つないし少数のファイルに結合してしまうけど、
昔RequireJSを使っていた頃は、jQueryを含めて依存プラグイン全てを
非同期で読み込ませていたな

どういう仕組みかと言うとRequireJSが全てのJavaScriptファイルを
同時に読み込み、依存関係情報に従って、すべてが揃ってから発動する
だから、jQueryをjQueryを使うライブラリを非同期で両方同時に読込始めて、
先にjQueryを使うライブラリの読み込みが終わったとしても
jQueryの読み込みが終わってからライブラリの処理が発動するから問題なく動作する
2018/04/21(土) 17:50:45.44ID:???
操作前のDOMが描画された後にガチャガチャ動いて良いなら当然そうできる。
ただし依存コードもすべてその後ろに置くこと。
コードの規模にもよるが、大きくなるにしたがって姿は見えれどインタラクション不能状態が長くなる。
2018/04/21(土) 18:03:06.79ID:???
>>75
jQueryに限らずDOMを操作するものは全て同じことでは?

広告はページ本編から独立しているから、問題ないのであって
同じように独立していればjQueryでも同じことできるし。

えーと、なにが良いたいんだい?
最初の一回は読み込むのが遅いけど、二回目以降は
まったく問題ないよで解決するよね。
2018/04/21(土) 18:14:14.29ID:???
アホがjQury厨を召喚したせいでまたjQueryのすれになっとるわ
死ねよカス
別スレでやれやばーか
2018/04/21(土) 18:19:17.17ID:???
同じサイトで2回目以降問題ないのは当たり前だろ
無関係のサイトでも同じcdnから読んでればキャッシュ効くのがいいとこなのに
2018/04/21(土) 18:21:09.53ID:???
jQuery(JavaScript Query)
2018/04/21(土) 18:37:35.48ID:???
angular使ってるサイトってどこがある?
教えて
2018/04/21(土) 19:04:42.90ID:???
>>61,63
(nullはオブジェクトではないけど)
オブジェクトに対するnullみたいな存在だよ

他にもInfinityとか、0が+-の2種類あるとか、double型ならではの仕様があるけれど
結局それらもNaNも全部ひっくるめてJSの数値の内なんだよ

JSの仕様と言うかもうCPUに内蔵されてる仕様で、
1.0+1.0が2.0になるように、1.0/0.0などをするとNaNになる
それらは全てdouble=64bit型の数値であってビット配列が違うだけなんだよ
2018/04/21(土) 19:10:20.62ID:???
ちょっと自分もどういう流れで話してたか忘れそうだから纏めるけど、
だから通常の数値=doubleが期待される関数でNaNが返ってくるのは極めて自然なんだよってこと
それとJSの数値がdoubleであることによる特徴と、int/uintの特徴と、int/uint化の手法
くらいはしっかり理解しておくのもいいよということ
(概念上は一時的だけど)intにキャストすればInfinityや-0、NaNなんかは出てこないからね
2018/04/21(土) 19:54:19.34ID:???
浮動小数点数の演算においてゼロ除算の結果の扱いと

文字列をintに変換しようとしたときの扱いと

全然関係なくね
2018/04/21(土) 20:36:52.71ID:???
文字列をInt型に変換しようと思ってparseIntを使ったという話ならそれは確かに
parseIntが悪いっていうか紛らわしいってことになるかもしれないね

ただ、(ES.nextの話は抜きで簡単に言うと)
JSの数値っていうのは全てdouble型だからね
Int型を返す関数っていうのは無いの

parseIntのIntは、元のJavaでは確かにint型のIntの意味合いもあるけど、
JSではせいぜいInteger=整数っていう程度のものと考えると良い
つまり文字列の中の整数(=integer)を抜き出して、double型で返す関数ということ

そしてdouble型を返す関数に於いて、不正な値を例えば0にするか、それともNaNを返すか
どちらが自然かと言えばやっぱり後者だろうよ
2018/04/21(土) 20:56:24.17ID:???
せやな。で?
2018/04/21(土) 20:59:55.77ID:???
javascriptで阪神を勝たせる方法ありますか
2018/04/21(土) 22:00:20.54ID:???
var 試合結果出力 = () => {
var rand = Math.rand();
var 阪神勝利フラグ = true;
console.log(阪神勝ちフラグ ? '阪神勝利!' : rand > 0.5 ? '阪神勝利!' : '阪神敗北…');
};
試合結果出力();
2018/04/22(日) 02:32:21.88ID:???
以上のように、数値リテラルには様々な表現方法がありますが、本質的にはこれらの違いは見かけ上のものに過ぎません。
JavaScriptにとっては「0b10010」(2進数)、「0o22」(8進数)、「0x12」(16進数)、「1.81e1」(指数は)はいずれも同じく10進数の18なのです。
どの表記を選ぶかは、その時々でのよみやすさに応じて決めるべきです。

JavaScript本格入門より
2018/04/22(日) 03:04:58.75ID:???
10進数と言うのは嘘だな。
ならどうして0.1 + 0.2が0.30000000000000004になるんだい?
2進数だろう?
2018/04/22(日) 03:42:38.53ID:???
>>89
"10進数" リテラル を
内部的に2進数に変換して計算しているからだけど?
だから10進数であっている
2018/04/22(日) 03:55:37.21ID:???
合ってない。
> いずれも同じく10進数の18なのです。
8進数の22なのです。
16進数の12なのです。

"8進数" リテラル を
内部的に2進数に変換して計算しているからだけど?
だから8進数であっている

"16進数" リテラル を
内部的に2進数に変換して計算しているからだけど?
だから16進数であっている
2018/04/22(日) 04:09:14.79ID:???
いやあってるじゃん?

なにを根拠に違うって言ってるのか?
2018/04/22(日) 08:28:21.05ID:???
>>60
doubleじゃないとは書いてない
NaNは何型だと思ってる?
http://php.net/manual/ja/function.gettype.php
2018/04/22(日) 08:46:37.34ID:???
phpにおけるNAN(phpにおいてはNaNじゃなくてNAN)がphpにおいてはfloat/double型に属するというのはいい
しかしNANが数値だとすると以下が成り立ってしまうのではないか

前提1: NAN - 1 は NAN となる
前提2: NAN - 2 は NAN となる
∴1=2である
2018/04/22(日) 08:49:52.28ID:???
∞に1を足しても∞に2を足しても∞なのは変わらない
しかし1=2とはならない
それは∞が特定のある数値を指すものではなく、∞=無限大という概念を指すものだから
NaNも同じ
2018/04/22(日) 08:51:18.69ID:???
JS は、内部的には整数は無い。
数値型は、Double のみ

整数かどうか判断できる、関数もない

一方、Ruby では整数型もある
2018/04/22(日) 08:52:45.10ID:???
つまりRubyはすごくて偉大で最高
2018/04/22(日) 09:07:18.88ID:???
>>94
NaNはdouble型で非数値なんだよ
そう書いてあるでしょ?
http://php.net/manual/ja/function.is-nan.php

> NAN(phpにおいてはNaNじゃなくてNAN)
NANは誤植じゃないの
NaNと書いてある箇所もあるし、NANが正しいなら、"Not A Number" が正式名称になる
単数の "A" を大文字にするのはどう考えてもおかしい
2018/04/22(日) 09:45:50.26ID:???
>>98
前段
>>29からずっとNaNがdoubleがって言ってるやつが、>>29でこう書いてる
>なんか勘違いしてるみたいだけど、NaNも立派なdouble型の数値だよ
「NaNも(中略)数値だよ」

後段
php -r "var_dump(NaN);" // Notice: Use of undefined constant NaN と共にstring(3) "NaN"を出力
php -r "var_dump(NAN);" // float(NAN)を出力
100Name_Not_Found
垢版 |
2018/04/22(日) 09:54:15.00ID:si0FuKql
>>99
ああ、ごめん
型の話と勘違いしてた
>>59,93,98までが自分で他は知らない
2018/04/22(日) 09:58:40.77ID:???
>>100
その>>59からして変なんだがどういう認識で>>59を書いたんだ?

>>59がレスしている>>44は、doubleかどうかではなく数値かどうかを問題にするもので、
  まさにNaNを数値と言う>>29に対するレス
・NaNの扱いやNaNの発生なんて言語ごとの定義次第だが、なぜかJSスレでphp.netのURLを持ってくる
102Name_Not_Found
垢版 |
2018/04/22(日) 10:09:51.60ID:si0FuKql
>>101
元の>>6がPHPだし、double型といってるからphp.netを持ってきた

JavaScriptの話をするなら、NaNはNumber型で非数値(数値型で非数値)
型名称と非数値の性質の名前の混乱が起きやすいのはどの言語でも同じでそういう話かと思ってた
2018/04/22(日) 10:15:10.60ID:???
>>102
これ「文字列をintにキャストしようとしたときjsだと頭が非数値文字列ならNaNになる、phpだと0になる、どっちが直感的か」の話だろ
NaN周りの仕様持ち出すならjsのじゃないと意味ないし
どんな頭してんだ
2018/04/22(日) 10:16:02.86ID:???
ああまあ、言いすぎた
ただの勘違いだったんならそれでいい、すまん
105Name_Not_Found
垢版 |
2018/04/22(日) 10:25:06.40ID:si0FuKql
>>104
こちらもすまんかった
2018/04/22(日) 12:12:56.46ID:???
お前ら全員謝れ
2018/04/22(日) 12:26:53.36ID:???
ごめんなすって
2018/04/22(日) 13:01:05.56ID:???
結局NaNがdoubleだってソース誰も出せてねぇじゃんw
2018/04/22(日) 13:07:31.37ID:???
doubleマックのソースなら
2018/04/22(日) 13:42:51.83ID:???
console.log( (typeof 1) );
console.log( (typeof 1.0) );
console.log( (typeof 1.1) );
console.log( (typeof NaN) );

結果は全部 number
jsではintやlongint、float/doubleみたいな型分けが無く、全部number型に押し込められてて実質全部double
なのでNaNも実質double

頭ではわかる気がする
けど、そうすると整数扱ってたつもりが浮動小数点数にありがちな誤差が生じて……みたいなことは、ないの?
2018/04/22(日) 13:48:06.96ID:???
typeof null
オブジェクトwwwww
2018/04/22(日) 17:04:26.83ID:???
typeof ""
ストリングwwwww

typeof {}
typeof []
オブジェクトwwwww

typeof (()=>{})
ファンクションwwwwww
2018/04/22(日) 17:39:44.09ID:???
型といえば関数型プログラミングとオブジェクト指向型プログラミングってどっちがいいの?
2018/04/22(日) 17:42:29.17ID:???
オブジェクト指向は全体の構造を司るもの
わかりやすく言えばクラス

関数型は処理を司るもの
わかりやすく言えばメソッド

だから両方組み合わせるのが良い
2018/04/22(日) 18:06:55.47ID:???
>>108
https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type
>>The Number type ...... representing the double-precision 64-bit format IEEE 754-2008 values ......
https://tc39.github.io/ecma262/#sec-terms-and-definitions-number-type
>> set of all possible Number values including the special “Not-a-Number” (NaN) value ......
https://tc39.github.io/ecma262/#sec-terms-and-definitions-nan
>> number value that is an IEEE 754-2008 “Not-a-Number” value
2018/04/22(日) 21:47:05.72ID:???
MDN にもあるね、倍精度浮動小数点数だって
https://developer.mozilla.org/ja/docs/Web/JavaScript/Data_structures#Number_type
2018/04/22(日) 21:48:13.24ID:???
倍精度浮動小数点数があるなら
3倍精度浮動小数点数とか
4倍精度浮動小数点数とかあるの?
2018/04/22(日) 23:10:10.68ID:???
ごまかすなまず謝れ
2018/04/23(月) 00:19:04.20ID:???
これが勉強になった
https://ja.wikipedia.org/wiki/NaN
2018/04/23(月) 00:20:35.95ID:???
IEEE 754では、NaNの表現について、指数部は全て1とし(これは無限大と同じ)、無限大の場合は仮
数部の全てを0とするのに対し、NaNは全0以外の任意のビット列としている。他に、先頭の符号
ビットで正負の区別がある。また、NaNの種別としてquiet NaN (qNaN) とsignaling NaN(sN
aN)があり、例外を投げる場合について違いがある。
2018/04/23(月) 01:21:54.08ID:???
position:absolute;でブロック要素を自由に動かす
みたいな手法ってまだ生き生きしていますか?
例えば、div要素で小窓作ってD&Dで動かすみたいな作業です。

なぜこんな質問をしたかというと、3年くらいjs事情から離れていたので
もしかしたらブラウザから万能小窓を呼び出せるような機能が追加されたりしてないかな
と思ったからです
要は、alert窓の万能版(htmlタグも解釈できるし、呼び出したタブのみでjsで情報の授受ができる、など)みたいな
やはり、div要素で小窓作ってcssで操作というのが基本でしょうか?
2018/04/23(月) 03:20:26.98ID:???
position:absolute;でやるけどdraggable属性とd&d APIが提供するevent使って実装ずいぶん楽になったんじゃないのかな。知らんけど。
2018/04/23(月) 06:34:25.98ID:???
>>121
用途によってはdialog要素が使えるかも
https://developer.mozilla.org/ja/docs/Web/HTML/Element/dialog

ただ、かなり新しくてブラウザの対応も不完全だからもうしばらくはおすすめしない
2018/04/23(月) 10:50:12.67ID:???
使われなくなったイベントリスナを削除し忘れて
ずっと残っている時がありますが、使われなくなったイベントリスナを検知するにはどうすればいいですか?
2018/04/23(月) 11:00:55.36ID:???
使われなくなったことをどうやって検知するんですか?

イベントリスナが貼り付けられた要素が削除されればブラウザが勝手に開放してくれんじゃないか
2018/04/23(月) 12:54:47.97ID:???
いやそういう意味ではなく、
ソースコードの中に、もはや使われなくなったイベントリスナ追加処理のコードが残るということです
呼ばれないイベントリスナは特に問題を起こさないので、見つけるタイミングが少ないです
2018/04/23(月) 13:26:24.03ID:???
どういう意味だよ日本語が不自由すぎる
2018/04/23(月) 13:57:41.12ID:???
は?
ここまで書いて分からないということは、多分あなたには分からないのでしょうね
2018/04/23(月) 17:11:34.45ID:???
俺も意味分からんからスルーしてたw
2018/04/23(月) 17:30:05.01ID:???
コードの変更改修によって
もう使われなくなった「リスナに呼んでもらう関数」を
掃除したい

という意図にピザまん3個
2018/04/23(月) 18:07:14.70ID:???
つ grep
2018/04/23(月) 23:56:59.95ID:???
意味が分からんな
オブジェクトにもう使われなくなったプロパティが残ってるからそれを削除したい
と同じようなニュアンスか?
2018/04/24(火) 09:14:58.58ID:???
用済みになったコードを削除したいんじゃない?
次のように

{
let func = function(event){
…何かやる…
func = null;
}

element.onclick = func
}
2018/04/24(火) 09:28:46.12ID:???
「イベントリスナ追加処理のコード」だからなあ
やっぱり意味不明
2018/04/24(火) 09:28:46.27ID:???
必要なのか、不要なのかは人間様が判断しないとダメです
JavaScriptに人工知能は実装されていません
2018/04/24(火) 09:29:38.36ID:???
この流れ、もしかして一休さんかな
2018/04/24(火) 11:18:09.84ID:???
>>134
ワロタwそういやそうだな
2018/04/24(火) 23:38:54.58ID:???
型情報って物理的にはどういう風に保持されてるの?
2018/04/25(水) 03:53:37.54ID:???
物理的にメモリをですね
140Name_Not_Found
垢版 |
2018/04/25(水) 22:33:55.34ID:hTMdu4KG
>>28お願いします

非アクティブになってるタブをアクティブにしたいです。
非アクテヒブになるとジャバスクリプトも停止するので無理なのでしょうか?
2018/04/25(水) 23:58:24.98ID:???
テルアビブ
ひでぶ
2018/04/26(木) 00:12:45.00ID:???
なにがしたいのかよくわからない
ブラウザのタブをアクティブにしたいの?
だとしたらコンテンツからでは無理だよ
2018/04/26(木) 00:44:57.34ID:???
配列のreduceメソッドが何も減らないのになぜreduceなんて名前になってるかわからなくてイライラするので
理由を教えて下さい
2018/04/26(木) 01:02:32.10ID:???
>>143
reduceを一般的な使い方で使ってないのだろう


ここにも書いているが
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce

reduceは配列(複数の値)をどんどん消費していって
最終的に一つの値にするからreduceなんだよ
2018/04/26(木) 01:44:47.41ID:???
>>144
蓄積変数ある以外forEach とかわらんやん
使った配列の中身が減っていくならまだ分かるけど減らんし
forEachWithAccumlatorVersionSpecialArrayMethodって名前にすべき
reduceなんておかしいわ
2018/04/26(木) 01:46:38.21ID:???
関数型にforなんてものはありませんよ?
2018/04/26(木) 01:47:57.22ID:???
>>142
例えば指定した時間になるとタブをアクティブにするとかです
2018/04/26(木) 05:52:06.81ID:???
>>146
?
149Name_Not_Found
垢版 |
2018/04/26(木) 07:53:27.15ID:0TDqn0Ks
>>143
(整理して)変える
https://ejje.weblio.jp/content/reduce
2018/04/26(木) 13:16:29.47ID:???
map
射影。1対1

reduce
蓄積変数・accumulator に畳み込む。多対1
SQL のgroup by
2018/04/26(木) 13:50:57.93ID:???
>>149
なるほど。
勉強なった。
2018/04/26(木) 21:23:45.17ID:???
>>122-123
なるほど
HTML5APIに便利なのがどんどん追加されてるみたいですね
dialog要素とかUI系ライブラリが対応すればまさに、という感じでした
ありがとうございました
2018/04/27(金) 13:14:02.46ID:???
null と undefinedの違いと使い分け方をおしえて
2018/04/27(金) 14:44:46.29ID:???
基本undefinedは自分で使うな
2018/04/27(金) 16:01:01.79ID:???
lodashのdebounceを使う時は

const f = _.debounce(()=>{
console.log('debounce');
},1000);

function hoge(){
f();
}

hoge();
hoge();

のように呼び出す関数の外で定義しておかないと、
前回のキャンセルが出来ませんが
呼び出す関数の中でdebounceを定義する方法はありますか?
2018/04/27(金) 16:35:33.80ID:???
画面遷移のあるSPAはフレームワークを使った方がシンプルに作れると思いますが
一番シンプルなSPA用JavaScriptフレームワークは何ですか?
2018/04/27(金) 17:36:44.71ID:???
SPAは意識高い系の営業がよく使いたがるな
それだけ
2018/04/27(金) 19:24:30.41ID:???
アプリがSPAになるのはごく当然のことだと思いますが・・
2018/04/27(金) 20:08:32.39ID:???
開発がものっそい面倒になるけどメリットが見合わない印象

画面内の一部の要素をajaxで動的に変更するだけで十分で、複数ページ分の機能を丸ごとjsで面倒見るメリットがない
みたいな状態でほんとにSPA必要なんか?ってのが多いというか
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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