X



+ JavaScript の質問用スレッド vol.137 +
■ このスレッドは過去ログ倉庫に格納されています
0001Name_Not_Found
垢版 |
2019/01/06(日) 20:11:13.75ID:???
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください

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

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

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

※前スレ
+ JavaScript の質問用スレッド vol.136 +
http://mevius.5ch.net/test/read.cgi/hp/1542707959/
0103Name_Not_Found
垢版 |
2019/01/14(月) 20:11:29.02ID:???
>>95
マジレスすると、Mapリテラルは非常に設計が面倒くさいと思うぞ
keyに何でも入れられるので、Syntaxが複雑化極まる
{{1:1,true:2,"s":3,{}:4,[]:5,()=>1:6,function f(){}:7,Symbol():8,new Object:9}}
0105Name_Not_Found
垢版 |
2019/01/14(月) 20:17:16.40ID:???
飛影はそんなこと言わない
0106Name_Not_Found
垢版 |
2019/01/14(月) 20:25:54.34ID:???
Mapいいんだけどさぁ、重厚長大過ぎるよ。
使いどころはあるけど普段使いしないよ。
単なる組み込みクラスでリテラルも無くsetget系APIも目にうるさい。
顧客が本当に求めていたもの: 列挙時順序保証のオーダードオブジェクトリテラル
const list = #{variable1, variable2, variable3};
>>81の順序が保証されるみたいな。
これをfor inしたときはプロトタイプ辿らないみたいな挙動なら完璧。
0107Name_Not_Found
垢版 |
2019/01/14(月) 20:41:21.54ID:???
たしかにget/setはダサい
[]でアクセスできてこそmap
TypedArrayが[]アクセスできるのは何でだっけ
0108Name_Not_Found
垢版 |
2019/01/14(月) 20:44:51.69ID:???
>>106
後方互換性を考慮してあの設計なのだろう
0109Name_Not_Found
垢版 |
2019/01/14(月) 20:48:57.65ID:???
>>107
TypedArrayは通常の配列と同じでString,Symbol型しかプロパティに持てないから
原理的には、プロパティアクセサを拡張すれば、new Mapでも[]の参照が可能
0110Name_Not_Found
垢版 |
2019/01/14(月) 20:52:39.68ID:???
テンプレートリテラル`〜`に対するタグ付きテンプレートリテラルhoge`〜`みたいに配列リテラル[〜]、オブジェクトリテラル{〜}に対してもfuga[〜]、piyo{〜}みたいにユーザー定義の道を開いてくれると嬉しい。
配列リテラルについては無理か…
fugaに対するキーワードアクセスと区別つかないもんな。
0111Name_Not_Found
垢版 |
2019/01/14(月) 20:54:21.73ID:???
>>110
タグ付きテンプレートリテラルとは?
0113Name_Not_Found
垢版 |
2019/01/14(月) 21:02:17.81ID:???
>>112
滅茶苦茶読みにくいな
template(`${0} ${'foo'}!`)がtemplate`${0} ${'foo'}!`と書けるだけだが、何が便利なんだ?
0114Name_Not_Found
垢版 |
2019/01/14(月) 21:05:44.07ID:???
>>113
styledComponentのAPIがこれ使ってた気がするな…
まあリフレクションAPIとかと同じでフレームワークやライブラリを作る人が使う機能で一般ユーザーは提供されるAPIにしたがってhoge`〜`するだけだよ。
0115Name_Not_Found
垢版 |
2019/01/14(月) 21:09:53.55ID:???
>>114
なるほど、タグ付きテンプレートリテラルに最適化されたAPIを作れるのが利点か
0117Name_Not_Found
垢版 |
2019/01/14(月) 21:41:28.08ID:???
>>113
そんなもんテンプレートエンジン使っていればわかるやん?

例えばCakePHPだとh関数でHTMLエスケープするやろ?
e関数だと、そのままechoやろ?
0118Name_Not_Found
垢版 |
2019/01/14(月) 21:46:25.67ID:???
tag(``)がtag``って書けるのがナウいんだよ!うるせーな!!
0119Name_Not_Found
垢版 |
2019/01/14(月) 21:52:53.15ID:???
>>118
違います。
tag(`a${1}b`)だと関数tagは1つの文字列a1bしか受け取れません。
tag`a${1}b`だと関数tagは配列(厳密にはrawも含むが)['a', 'b']と1がそのまま受け取れます。
0120Name_Not_Found
垢版 |
2019/01/14(月) 21:58:48.37ID:???
ようするに出力をエスケープするためのもの
0123Name_Not_Found
垢版 |
2019/01/15(火) 19:35:11.81ID:???
眺めてたらってそういう話もなくはないんだなって。。。
もういい加減にしてくれ
この手の話は何度もES6から出てただろうが
そして何度も挙がるものって2種類あって
毎回進歩するものとそうでないもの
これは後者だろうが
そのへんなんにも追っかけてなくてニュアンス理解してないくせに
一瞬調べて無責任に引っ張ってくるってどうよお前
お前どうよ?それ
0124Name_Not_Found
垢版 |
2019/01/15(火) 19:41:05.06ID:???
無責任って何を当たり前なことを…
なんで俺が責任とるんだよバーカw
0127Name_Not_Found
垢版 |
2019/01/15(火) 21:06:16.47ID:???
あんまり誤爆に見えない
0128Name_Not_Found
垢版 |
2019/01/15(火) 21:20:55.61ID:???
中身がない文章は汎用的になるので
どこでも使える
0129Name_Not_Found
垢版 |
2019/01/16(水) 08:46:50.52ID:???
>>77
let variable1 = "";
let variable2 = [];
let variable3 = 12;

let list = [];

list.push({variable1});
list.push({variable2});
list.push({variable3});

for (let obj of list) {
alert(Object.keys(obj)[0]);
}
0130Name_Not_Found
垢版 |
2019/01/16(水) 12:35:22.45ID:???
名前はスコープで管理されているのでwithを使うしかない
それでも原理的に確実ではないのでwith-proxyを使うか
0131Name_Not_Found
垢版 |
2019/01/16(水) 20:06:14.67ID:???
リストに追加した後も変数名残そうと思ったらwith-proxyだけじゃ足りないだろ
value-proxyが導入されたら組み合わせて可能かもしれないが
0132Name_Not_Found
垢版 |
2019/01/16(水) 20:20:43.58ID:???
with-proxyて何?検索しても出てこない(´;ω;`)
なんでみんな知ってるんや…
0133Name_Not_Found
垢版 |
2019/01/16(水) 21:25:52.91ID:???
そのまんま
with(new Proxy(......)){}
のことでしょ
こうしたら変数アクセスをほぼほぼプロキシできる
例えば__scope__でスコープオブジェクトにアクセスできるようにしたり
$GetVariableName(a) // 'a'
みたいな事とかいろいろできる
0134Name_Not_Found
垢版 |
2019/01/16(水) 21:33:32.12ID:???
他にも分数だったりbignum同士の四則演算もできたはず
$BEGIN_BIGNUM
a = '12345678901234567890'
b = '23456789012345678901'
c = a + b
$END_BIGNUM
c // '35802467913580246791'
って感じでできるようにプロダクトで使ったことある
0135Name_Not_Found
垢版 |
2019/01/16(水) 22:45:54.04ID:???
へぇ〜
参考ページない?英語でも可
いろいろサンプル見たい
0139Name_Not_Found
垢版 |
2019/01/17(木) 20:02:14.70ID:???
原理的に変数アクセスがプロキシできたらできることなら何でもできるよ
0140Name_Not_Found
垢版 |
2019/01/17(木) 20:04:53.47ID:???
変数名を後から変更すると不具合誘発するとか、怖くて使えない
0141Name_Not_Found
垢版 |
2019/01/17(木) 20:19:06.33ID:???
変数名を変えても影響でないでしょ
メタ処理で決め打たなければいいだけなんだから
0142Name_Not_Found
垢版 |
2019/01/17(木) 20:41:53.84ID:???
論よりコード。
with proxyでゴチャゴチャ言ってる人たちは上の奴らと違ってコードを出さずにイキってばかり。
0143Name_Not_Found
垢版 |
2019/01/17(木) 20:53:03.94ID:???
すまんが俺はコードより論派なんでね
糞面倒な糞コードをわざわざ書こうとは思わん
特に楽しくアイディアを語り合ってるのをイキってるとか言うやつの言うことは聞きたくないね
素直なかわい子ちゃんのお願いだったら聞いてやる
0144Name_Not_Found
垢版 |
2019/01/17(木) 20:59:33.67ID:???
てかwithproxyとやらでも順序は保証できないじゃんw
順序保証しなくていいなら>>81でいいじゃんww
ダラダラproxy書く意味まるでナシwww
proxyproxy言ってる人は何か勘違いしているのでは?wwww
論は論でも机上の空論wwwww
0145Name_Not_Found
垢版 |
2019/01/17(木) 21:09:12.84ID:???
こいつ何いってんだ?
listに入れたものだとvalue-proxy使わないと難しいねって最初から話されてるだろ
勿論すべての箇所で値が欲しいときはSLOVE(x)、名前が欲しいときはNAME(x)を使う
つまり
for(let i = 0; i < SLOVE(list).length; i++)
{
alert(NAME(SLOVE(list)[i]));           //variable1 variable2 variable3と順番に表示
}
みたいに書いてもいいっていうなら原理的に可能だが
0146Name_Not_Found
垢版 |
2019/01/17(木) 21:16:04.21ID:???
あと、ただ変数を列挙したいだけなら上で挙がったように
__scope__みたいなの1つだけ特別扱いして
__scope__.keys()みたいなのを定義すればいいだけだと思うよ

そのままだとすべて列挙することになるけど
まあどうして列挙したいのかわからんが、例えばデバッグのためなら
変数名のパターンで絞り込むとか、そのくらいのことで実際はOKかもしれんよ
0147Name_Not_Found
垢版 |
2019/01/17(木) 22:52:01.72ID:SKqdbC1t
お願いします

x = {"hello" : "world"};

x.["hello"] と x.hello で値が取得できますが


y = {"my name" : "John"};
のようにキーに空白が入った場合
y["my name"] としか書くことはできないのでしょうか
0149Name_Not_Found
垢版 |
2019/01/17(木) 23:16:56.33ID:???
>>77
趣向を変えてタグ付きテンプレートでやってみたよ!

let list_keys = strs => [eval(strs[0]), strs[0].replace(/\[(.*)\]/, '$1').split(/ *, */)];

let variable1 = '';
let variable2 = [];
let variable3 = 12;

let [list, keys] = list_keys`[variable1, variable2, variable3]`;

for (let i = 0; i < list.length; i++) {
alert(keys[i]);
}
0150Name_Not_Found
垢版 |
2019/01/17(木) 23:25:33.24ID:SKqdbC1t
>>148
さよか。
おおきに。
0151Name_Not_Found
垢版 |
2019/01/18(金) 22:26:47.21ID:???
$.ajaxのget使うときにurlのパラメータを指定しますが
{"url":'ht略://sample.com/api.php',
"type":"GET",
data:{"hoge":2,"fuga":3}
}
とした場合403が返ってきます。でも、
{"url":'ht略://sample.com/api.php?hoge=2&fuga=3',"type":"GET"}
みたいに"url"に書いてやると問題なくなります
考えられる原因はなんでしょうか
0152Name_Not_Found
垢版 |
2019/01/18(金) 23:24:59.96ID:???
>>151
記述を間違えている
開発ツールのnetworkタブで見てみると良いかも
0153Name_Not_Found
垢版 |
2019/01/19(土) 01:40:58.09ID:???
DOM操作ライブラリ回帰の流れでjQueryのajaxはもうslimビルドから削除されたよ。
AxiosかSuperAgentかRequest使いなよ。
0154Name_Not_Found
垢版 |
2019/01/19(土) 08:30:04.20ID:???
$.ajax使わないで、$.get使えばいいのにっていつも思うんだが
なんでわざわざ冗長なのを使うんだ?
0155Name_Not_Found
垢版 |
2019/01/19(土) 15:49:16.81ID:???
Axios と言うのを、本でよく見る
0156Name_Not_Found
垢版 |
2019/01/19(土) 15:53:51.86ID:???
>>154
ajax()ならgetでもpostでも容易に切り替える事ができるって理由で使っていたな
要は実装が決まってない状態
この状態を悪いって言わないでくれよ、この状態になってるから仕方ないんだ
0157Name_Not_Found
垢版 |
2019/01/19(土) 16:36:33.22ID:???
getは取得でpostは送信だろ?
なんでどちらかが決まらないなんてことがあるんだ?

今はデータ取得してるけど
もしかしたらデータ送信するかもしれない
とかか?なんでそんなのがあるんだ?
0158Name_Not_Found
垢版 |
2019/01/19(土) 16:37:17.02ID:???
仮に会ったとしても、$.getを$.postに変えれば同じだろう
0159Name_Not_Found
垢版 |
2019/01/19(土) 16:43:33.91ID:???
postでも取得できるしgetでも送信できるけどね
0160Name_Not_Found
垢版 |
2019/01/19(土) 16:44:59.65ID:???
最近axiosしか使ってないわ
0161Name_Not_Found
垢版 |
2019/01/19(土) 16:46:11.53ID:???
>>157
データを取得するけど指定したパラメタに応じた副作用があるAPIはどっちにしたらいいんだ?
0162Name_Not_Found
垢版 |
2019/01/19(土) 16:52:35.07ID:???
>157
getは取得→いやそもそもその取得するためのデータを送信してるだろ
postは送信→いやその後取得するだろ

検索結果、登録情報の更新、など、決めないと難しいと思う
0163Name_Not_Found
垢版 |
2019/01/19(土) 16:53:49.49ID:???
1970年1月1日9時00分からの任意の経過秒数から
年月日と曜日を求めるにはどうすればいいんですか?
例えば 6300000000 secだったら西暦何年の何月何日何曜日かというようにです
0164Name_Not_Found
垢版 |
2019/01/19(土) 16:57:41.81ID:???
9時間分のミリ秒数足してnew Date(経過時間)じゃダメ?
0165Name_Not_Found
垢版 |
2019/01/19(土) 18:47:47.25ID:???
Date
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date

1970年01月01日 00:00:00 UTC (Unix エポック) からのミリ秒数を表す整数値です
(ただし、多くの UNIX タイムスタンプ関数は、秒単位でカウントすることを考慮してください)。
なお、閏秒を無視します

その、+9時間は、エポックを日本時間で表示しただけ。
内部的には、UTC で管理していて、表示する際、ローカルタイムに変換しているだけ
0166Name_Not_Found
垢版 |
2019/01/19(土) 19:31:48.91ID:???
>>162
> getは取得→いやそもそもその取得するためのデータを送信してるだろ
> postは送信→いやその後取得するだろ

それは屁理屈
0167165
垢版 |
2019/01/19(土) 19:34:31.89ID:???
// 1970年01月01日 00:00:00 UTC (Unix エポック)
var dt = new Date( 1970, 0, 1, 0, 0, 0 );
console.log ( dt );

// 1日後
dt.setSeconds( dt.getSeconds() + 86400 );
console.log ( dt );

日付を扱うなら、moment.js が便利らしい
0168Name_Not_Found
垢版 |
2019/01/19(土) 21:07:34.88ID:???
date-fns、DayJS、Luxonもあるでよ
0169Name_Not_Found
垢版 |
2019/01/19(土) 21:16:24.33ID:???
var timestamp = 6300000000
var date = new Date (timestamp * 1000)
console.log(date)
document.write(date)
0170Name_Not_Found
垢版 |
2019/01/19(土) 22:40:05.23ID:S+7e1llm
下記で、本日の日付を表示できますが、
本日の一週間後 を表示させるには、どこを+7したら宜しいでしょうか
よろしくお願い致します。


<SCRIPT type="text/javascript">
<!--
function _HpbDays()
{
this[0] = "日"; this[1] = "月"; this[2] = "火"; this[3] = "水";
this[4] = "木"; this[5] = "金"; this[6] = "土";
}

var now = new Date();
var yr = now.getYear();
var mn = now.getMonth() + 1;
var dt = now.getDate();
var dy = now.getDay();

var fyr = (yr < 1900) ? 1900 + yr : yr;

var dys = new _HpbDays();
var dyj = dys[dy];

document.write(fyr + "年" + mn + "月" + dt + "日");
//-->
</SCRIPT>
0171Name_Not_Found
垢版 |
2019/01/19(土) 23:13:46.94ID:???
splice()って取り除いたのを返すのかい?
0172Name_Not_Found
垢版 |
2019/01/19(土) 23:47:52.97ID:???
>>170
const nextWeek = new Date();
nextWeek.setDate(nextWeek.getDate() + 7);
0175Name_Not_Found
垢版 |
2019/01/20(日) 00:31:07.74ID:???
momentはオワコン。
date-fns、DayJS、Luxonを使え。
0176Name_Not_Found
垢版 |
2019/01/20(日) 01:20:16.39ID:J9RkdJn9
170です
165さん172さん、ありがとうございます。
しかしよく解りません。そのコードを、どこに挿入すればよいのでしょうか・・・
0177Name_Not_Found
垢版 |
2019/01/20(日) 02:11:22.79ID:???
       ∧__∧
      (´∀` )
       (⊃⌒*⌒⊂)
        /__ノωヽ__)
0179Name_Not_Found
垢版 |
2019/01/20(日) 20:10:06.39ID:???
キモイんでカッコの中にスペース入れるのやめてください
0180Name_Not_Found
垢版 |
2019/01/20(日) 20:10:53.32ID:???
関数呼び出しの後にスペース入れるのもやめてください
0181Name_Not_Found
垢版 |
2019/01/20(日) 20:16:29.21ID:???
昔Cのコードでよく見かけたなぁ
0182Name_Not_Found
垢版 |
2019/01/20(日) 20:54:41.59ID:???
テンプレート文字列使ってるのにvar使うのやめてください
0183Name_Not_Found
垢版 |
2019/01/20(日) 21:03:18.91ID:???
ブラウザのコンソールで書いては消して試すのに便利だよvar
0184Name_Not_Found
垢版 |
2019/01/20(日) 21:44:06.51ID:???
ブラウザのコンソールでいちいちvarなんて書いてんの?
使い捨てるのになんでそんな面倒なことしてんの?
0185Name_Not_Found
垢版 |
2019/01/20(日) 23:23:54.97ID:???
オレ関数スコープがピッタリなところはvar使ってるわ。ブロックスコープ欲しいときは基本const、どうしてもミューテートしたい時やっとlet。letが一番使わない。
0186Name_Not_Found
垢版 |
2019/01/20(日) 23:27:28.75ID:???
let, constのTDZの仕様が気に入らな過ぎて関数スコープ作ってvar使ってるわ。
0187Name_Not_Found
垢版 |
2019/01/20(日) 23:33:09.72ID:???
不自由が好きな人も多いんだなあ
0188Name_Not_Found
垢版 |
2019/01/20(日) 23:37:03.27ID:???
効率的でもない、可読性や保守性が高いわけでもない、何のメリットもないこだわり
0189Name_Not_Found
垢版 |
2019/01/20(日) 23:53:32.45ID:???
なんか打つのめんどくてlet使うことが多い……
あとでconstに置換
あほか俺
0191Name_Not_Found
垢版 |
2019/01/21(月) 01:00:38.15ID:???
もしbabelでes5に変換してるんだったら関数スコープできてるとこはvarのままのほうがいいんじゃないかな。
変換後のコード量が意味もなく増える。
0192Name_Not_Found
垢版 |
2019/01/21(月) 01:16:22.39ID:???
>>178
☓ `${ dt.getFullYear( ) }年${ dt.getMonth( ) + 1 }月${ dt.getDate( ) }日`
○ dt.toLocaleDateString('ja',{year:'numeric',month:'long',day:'numeric'})
0193Name_Not_Found
垢版 |
2019/01/21(月) 12:30:52.67ID:???
>>191
babelはconstもletもvarに変換されるんだが?
0195Name_Not_Found
垢版 |
2019/01/21(月) 12:51:10.15ID:???
>>194
えとさぁ、変換後のコードは増えないって意味なのわからない?
0197Name_Not_Found
垢版 |
2019/01/21(月) 13:13:59.52ID:???
変換してからレスしようね
ほんとくだらない
0198Name_Not_Found
垢版 |
2019/01/21(月) 13:22:28.57ID:???
そもそもvarもletもよっぽど使わないでしょ
変数なんてなるべく変更しないものであるべきで、それならconst使うわけだし
変更しない変数にlet?
後から他人が読むこと考えろとしか
0199Name_Not_Found
垢版 |
2019/01/21(月) 13:32:19.80ID:???
>変数なんてなるべく変更しないものであるべき
そうなのか???
初めて聞いたぞ
■ このスレッドは過去ログ倉庫に格納されています

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