X



+ JavaScript の質問用スレッド vol.140 +
レス数が1000を超えています。これ以上書き込みはできません。
0001Name_Not_Found
垢版 |
2019/05/19(日) 16:07:12.99ID:2J4OYdDV
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください

■規則/推奨ルール
・メール欄を空欄にし、名前にレス番を入れることを強く推奨(なりすまし防止)
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」から解離した議論はよそでやること。
■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。
【条件】期待する回答の条件を書いてください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです

■前スレ
+ JavaScript の質問用スレッド vol.139 +
https://mevius.5ch.net/test/read.cgi/hp/1555750241/
0160Name_Not_Found (ワッチョイ 938f-h/tS)
垢版 |
2019/05/28(火) 20:55:20.67ID:???0
>>131 の発言の意味が良く分からないのですが、どういうことでしょうか。

fieldset 要素は flow content 要素を入れられる模様
https://www.w3.org/TR/html5/sec-forms.html#the-fieldset-element
> Content model:
> Optionally a legend element, followed by flow content.

div 要素も section 要素も、flow content に含まれる模様
https://www.w3.org/TR/html5/dom.html#flow-content-2


この2点を前提とすると、何がどう問題なのか分からなくなってしまいまして。
0161Name_Not_Found
垢版 |
2019/05/29(水) 06:31:11.72ID:???
よりその状況向けの要素があるからそっちを使えってことじゃないの
まあ別に好きにやればいいと思うけど
0162Name_Not_Found
垢版 |
2019/05/29(水) 06:50:42.03ID:???
>>131は「個人の感想」だろ
なんでこの質問者は荒らしに構うのかね
0163Name_Not_Found
垢版 |
2019/05/29(水) 09:09:21.18ID:???
そういうお前が荒らしにかまってるわけだがw
0164Name_Not_Found
垢版 |
2019/05/29(水) 12:30:07.40ID:???
なにいってるのか分からんが、>>160が荒らしといいたいのか
0165Name_Not_Found
垢版 |
2019/05/29(水) 12:36:18.75ID:???
>>163つまり荒らしに触っちゃダメって話かと
0166Name_Not_Found
垢版 |
2019/05/29(水) 12:45:41.98ID:???
ようは一切レスをするなってこと。
荒らしに構うなということ自体が、荒らしにレスしてることになる
0167Name_Not_Found
垢版 |
2019/05/29(水) 12:48:59.18ID:???
その論理だと、>>162-166が全員荒らしなわけだが
>>162-163は同じ主張してるのに、なんて争そうのかね
0168Name_Not_Found
垢版 |
2019/05/29(水) 12:52:01.88ID:???
なんで荒らしに構うと荒らしになるんだ?
荒らしに構うなって言ってるだけだろ

正確には荒らしと思うやつにレスするな。
反論もするな。黙って受け入れろってことだが
0169163
垢版 |
2019/05/29(水) 12:55:21.07ID:???
>>168
なぜ>>160に構うことが荒らしになるんだ?
0171Name_Not_Found
垢版 |
2019/05/29(水) 13:59:27.71ID:???
>>169
誰が「>>160に構うことが荒らしになる」と
言ってるのか、まずそれを言おうか?
0174Name_Not_Found
垢版 |
2019/05/29(水) 19:03:07.54ID:???
>>172
荒らしに構うなって書いてあるだけだよね?
どこに荒らしに構うと、荒らしになるって書いてあるの?

なにか弁明することあるかい?w
0175Name_Not_Found
垢版 |
2019/05/29(水) 19:36:30.03ID:???
>>174
お前、それ荒らしだぞ
もう書き込み禁止ね
0176162
垢版 |
2019/05/29(水) 20:15:09.53ID:???
>>174
>>160に構ってはいても、荒らしに構ってないから、その指摘は不適当
0177162
垢版 |
2019/05/29(水) 20:32:39.13ID:???
>>175
確かに>>174は荒らしだな
すまんかった
0178Name_Not_Found
垢版 |
2019/05/29(水) 20:32:41.15ID:???
いいから質問の回答をしろよ
クソ回答者共が
0179Name_Not_Found (ワッチョイ 938f-h/tS)
垢版 |
2019/05/29(水) 22:22:17.64ID:???0
まじめに読んでしまったのが間違いだったのかなあ
>>131 は上から目線で発言してるだけで、内容を読んだらブーメランだった、と
かつての位置付けは存じませんが、fieldset の現在の位置付けからしたら、完全に誤った内容だった、と


そりゃ確かに section 要素や div 要素は、避けるべきものであったり最終手段とすべきものであって
今回のケースでは span あたりの方が適切だったのかも知れませんが

https://www.w3.org/TR/html5/sections.html
https://www.w3.org/TR/html5/grouping-content.html#elementdef-div
https://www.w3.org/TR/html5/textlevel-semantics.html#the-span-element

…まだ確信が持てて無いので「ココ違うよボケカス」的なもので良いので指摘ねがいます…
0180Name_Not_Found
垢版 |
2019/05/29(水) 22:25:09.86ID:???
OS:Win Vista,ブラウザ:IE8使用(IE9はセキュリティが厳しいのでダウングレードしています。)
JSでテキスト(data1.txt)の中身を読み込んで、ブラウザでalert()出力したく思って
いますが何も表示されないので困っています。

テスト段階なのでdata1.txtは1行のみの極単純なものです。
(テキストの中身: 西暦,為替[円/$],名目GDP[兆円],間接税率[%],税収[兆円])

<書いた内容> ※すいません全部書きます。
function readFile(name) {
iomode = 1;
format = 0;//ASCIIフォーマットで読み込む
// ファイルシステムオブジェクト
myobject = new ActiveXObject("Scripting.FileSystemObject");
// OpenTextFile()でファイルを開く
file = myobject.OpenTextFile(name, iomode, true, format);
data = "";
// eofが来るまで 1行ごとに読む
while (!file.AtEndOfStream) {
// ReadLine() で1行読む
data += file.ReadLine()+"\n";
}
// ファイルを閉じる
file.Close();
// データを返す
return data;
}
window.alert(readFile("data1.txt")+" です");

すいませんが問題点をご指摘願います。
0181Name_Not_Found
垢版 |
2019/05/29(水) 22:26:51.73ID:???
>>179
たかがHTMLに避けるべきものも最終手段もクソもないよ
著しく非常識でないのなら好き勝手に書けばいい
018275 (ワッチョイ 938f-h/tS)
垢版 |
2019/05/29(水) 22:27:23.94ID:abAA3gFU0
sage を外し忘れてたもんで
一連のQ&Aでの発言まとめときます
おかしなこと言ってる可能性たかいかも

>>75
>>76
>>78 (バージョン古くても平気な御人は無視すべきだったかも)
>>92
>>93
>>95

あたりです
レスアンカー多いと怒られたので途中まで
0183Name_Not_Found
垢版 |
2019/05/30(木) 00:17:56.53ID:???
>>180
15年くらい時間が巻き戻った気分!

急IEのJavaScriptはほぼJScriptのラッパーで
JScriptも半分くらいはActiveXのラッパーだから
そう言うこともあるもんだ

同期・非同期が問われるようなことするときは特に
0184Name_Not_Found
垢版 |
2019/05/30(木) 07:42:57.55ID:???
荒らしに構うなっていう書き込み自体は、荒らしに対するレスでは無いから、荒らしにならない!
正常な人に対する忠告だから

一方、荒らしに反応して書き込みを続ける者は、荒らし!
荒らしはレスが欲しい。レス乞食

荒らしは無視されるのが大嫌いだから、無視すべし!
0185Name_Not_Found
垢版 |
2019/05/30(木) 07:49:04.75ID:???
file = myobject.OpenTextFile(name, iomode, true, format);

ここで、10秒ぐらい、sleep すれば?
読み込むまで、確実に待つ

while (!file.AtEndOfStream) {
0186Name_Not_Found
垢版 |
2019/05/30(木) 08:04:19.21ID:???
>>184
だからそういう書き込みは、このスレの内容と
何の関係もねーだろ。関係ない話すんな
0188Name_Not_Found
垢版 |
2019/05/30(木) 10:53:24.80ID:???
>>184さん文体に特徴ありすぎて一人コテ状態
0189Name_Not_Found
垢版 |
2019/05/30(木) 11:37:58.60ID:???
>>184が人気すぎて、jQuery厨の俺も嫉妬(笑)
0190Name_Not_Found
垢版 |
2019/05/30(木) 11:57:16.72ID:???
>>180
相対パスはデスクトップ基準になるので絶対パスで指定する
0191Name_Not_Found
垢版 |
2019/05/30(木) 15:30:57.32ID:???
var str = "2x*(sqrt(-3/7+5))"
みたいな文字列があったときに、sqrtの後に続くカッコ内の"-3/7+5"だけ取り出そうと思ったら
どんな処理をするのがスマートですか?
0192Name_Not_Found
垢版 |
2019/05/30(木) 15:40:03.04ID:???
>>191
ちょっと質問が説明不足だったので補足すると
以下のように、ランダムな文字列があって
var str1 = "2*x*(sqrt(-3/7+5))"
var str2 = "4*x/3*(3*sqrt(-1/3+4*x))^2"
var str3 = "(4*x+2)^3/3*(3*sqrt(-1/2+2*x^2))^4"
sqrtの後に続くカッコ内の文字
str1であれば、-3/7+5
str2であれば、-1/3+4*x
str3であれば、-1/2+2*x^2
をそれぞれ取り出したい、といった場合、どういう処理をするのが良いですか?
0193Name_Not_Found
垢版 |
2019/05/30(木) 15:42:48.93ID:???
正規表現で抜き出す
str.match(/sqrt\((.+?)\)/)[1]
0194Name_Not_Found
垢版 |
2019/05/30(木) 15:46:12.13ID:???
str.replace(/.*sqrt\((.*?)\).*/, '$1')
0196Name_Not_Found
垢版 |
2019/05/30(木) 17:26:46.43ID:???
そんな特定の場合にしか使えない処理が
何の役に立つっていうんだろう?
0200Name_Not_Found
垢版 |
2019/05/30(木) 21:25:30.44ID:???
jQスレにも貼ったがこちらにも貼っておく
jQueryの脆弱性が発覚した
https://portswigger.net/blog/abusing-jquery-for-css-powered-timing-attacks
jQuery独自のセレクタを巧みに使うことでタイミングアタックで情報が抜かれてしまう
直接使っている部分で絶対にセレクタに想定外の文字列が入ることがなくとも
プラグインやjQを利用するライブラリでどうなっているのか分からない

とりあえず当分は使われている全てのjQuery、もしくは全てのスクリプトの全ての関数定義
function〜(){〜を一括置換処理して
一行目にif((''+arguments[0]).length>30)throw 'Err'
などと入れることを勧める
020175 (ワッチョイ 6f8f-pVhm)
垢版 |
2019/05/30(木) 21:58:48.40ID:Dx7zqLH/0
>>200
ここはライブラリのスレでも無いし…
vanilla js 自体の穴じゃないし…
0202Name_Not_Found
垢版 |
2019/05/31(金) 00:23:50.52ID:???
荒らしは相手にするな!

ソースコードを書かない奴は、荒らしだから無視しろ!
プログラマー以外とは、話をしないように!

荒らしは、30分毎に書き込むから、要注意!
0203Name_Not_Found
垢版 |
2019/05/31(金) 00:30:32.59ID:X+GRK4xK
JavaScript初心者です。

classBのオブジェクトからmethodAを呼び出したいんですが
methodAがないというエラーが出ます。
--------------------------------------------
function classA () {
}
classA.prototype = {
methodA: function() {
console.log('classA methodA');
},
methodB: function() {
console.log('classA methodB');
}
};

function classB () {
}
classB.prototype = new classA();
classB.prototype = {
methodB: function() {
console.log('classB methodB');
}
};
--------------------------------------------
継承先のクラスで特定のメソッドだけオーバーライドしたい場合は
classB.prototype.methodB = function() {
console.log('classB methodB');
};
のように個別に書いていくしかないんでしょうか。
0204Name_Not_Found
垢版 |
2019/05/31(金) 00:39:18.05ID:???
はい
IE対応しなくていいならclass構文使えばよろし
0206203
垢版 |
2019/05/31(金) 01:08:18.04ID:qxavy1wZ
とりあえず >>205 を参考に以下の書き方をしたら
思ったとおりの動作にはなったっぽいです。
--------------------------------------------
function classB () {
}
classB.prototype = Object.create(classA.prototype, {
methodB: { value function() {
console.log('classB methodB');
}}
});
--------------------------------------------
Chromeで動かす前提ならやっぱりclass構文使うほうがいいんですかね
0209Name_Not_Found
垢版 |
2019/05/31(金) 05:49:09.78ID:???
まだIE30%ぐらいいるのかなとおもったら
もう10%切ってるのね
まー国内に限定すればもっといそうだけど
0210Name_Not_Found
垢版 |
2019/05/31(金) 09:58:22.09ID:???
みんなedgeに移ったからね
0212Name_Not_Found
垢版 |
2019/05/31(金) 13:24:00.07ID:???
なんか最近
過去からタイムリープしてきてる人がいるな…
0213Name_Not_Found
垢版 |
2019/06/01(土) 00:53:09.91ID:???
すいません、質問になるのか分からないのですが
もしよろしければご教授ください。
ある案件でjqueryのライブラリをいくつか使った
数ページのちょっとしたサイトを納品しました。
納品先はクライアントではなく、
クライアントのサーバを管理する別の制作会社です。
で先日そこから突然サーバOSやインストールした
プログラム一覧が送られてきて「jqueryのバージョンもご確認ください」
とか意味不明なことを言ってきたのですが
(実際そこが作業したものの一覧ではなく
ホスティング業者が用意したfedora標準のリスト)
そこの会社の担当者は超絶馬鹿ってことで宜しいでしょうか。。
OSとミドルウェアとフロントエンドの区別も付かんとは。。
しかも自分のとこがjsの何を入れたかも分からんという。。。
0216Name_Not_Found
垢版 |
2019/06/01(土) 01:52:36.45ID:???
nodeのグローバルにjQueryがインストールされている可能性が微レ存
0218Name_Not_Found
垢版 |
2019/06/02(日) 15:17:18.79ID:T9wUlVDz
画像のスクロールに合わせてセレクトボックスを変更するにはどうすればいいでしょうか?
<img src="1.jpg" alt="">
<img src="2.jpg" alt="">
<img src="3.jpg" alt="">
<select style="left:0;top:0;position:fixed"></select>
<script>
for (var i=0, len=document.images.length; i < len; i++) {
option = document.createElement('option');
option.value = i;
option.text = i;
document.getElementsByTagName('select')[0].appendChild(option);
}
const observer = new IntersectionObserver((entries) => {
if (entries.isIntersecting) {
option.selected = true;
} else {
option.selected = false;
}
});
const img = document.querySelectorAll('img');
img.forEach(img=>{observer.observe(img)})
</script>
0219Name_Not_Found
垢版 |
2019/06/02(日) 15:48:51.61ID:???
>>218
entriesは配列

const selectbox = document.querySelector('select');
for (let i=0, len=document.images.length; i < len; i++) {
const option = document.createElement('option');
option.value = i;
option.text = i;
selectbox.appendChild(option);
document.images[i].dataset.value = i;
}
const observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
selectbox.value = entry.target.dataset.value;
}
});
});
const img = document.querySelectorAll('img');
img.forEach(img => observer.observe(img));
0220Name_Not_Found
垢版 |
2019/06/02(日) 16:57:12.34ID:???
無駄を削ぎ落とした

const observer = new IntersectionObserver(entries => {
 const entry = entries.reverse().find(entry => entry.isIntersecting);
 if (entry) {
  $('select').val(entry.target.dataset.value);
 }
});
$('img').each(function(i) {
 $('select').append($('<option>', {value: i, text: i}));
 this.dataset.value = i;
 observer.observe(this);
});
0221Name_Not_Found
垢版 |
2019/06/02(日) 18:13:58.86ID:clpLsV2H
>>219,220
ありがとうございました!
0223Name_Not_Found
垢版 |
2019/06/03(月) 00:13:56.29ID:1bbMRnlG
Java scriptの心得がほとんど無い為、情報不足の折はご容赦ください。
マスターテーブルA,入力テーブルBと2つのテーブルがあり、Bテーブルの「分類A」を入力すると
Aテーブルの分類B、分類Cより
Bテーブルの分類D、分類Eへ値を返したい時、下記のスクリプトを
一部編集して使用するようなのですが、どこに各値の編集をすれば
よろしいでしょうか。
ご教示頂ければ幸いです。よろしくお願いいたします。

$p.events.on_editor_load = function () {
//Bテーブルの「分類A」の値が変更されるたびに呼び出されるイベント
$(document).on('change', '#Results_ClassA', function () {
//Bテーブルの「分類A」に値がセットされている場合のみ、Aテーブルの指定したレコードの値を取得する
if ($('#Results_ClassA').val()) {
$p.apiGet({
//Bテーブルの「分類A」の値(レコードID)を指定
'id': $('#Results_ClassA').val(),
'done': function (0) {
//Bテーブルの項目にAテーブルから取得した項目の値をセット
$p.set($('#Results_ClassB'), data.Response.Data[0].ClassB);
$p.set($('#Results_ClassC'), data.Response.Data[0].ClassC);
},
'fail': function (data) {
console.log(data);
}
});
} else {
//Bテーブルの「分類A」に値がセットされていない場合、Bテーブルの項目に空文字をセット
$p.set($('#Results_ClassA'), '');
$p.set($('#Results_ClassA'), '');
}
});
}
0224Name_Not_Found
垢版 |
2019/06/03(月) 06:44:48.72ID:???
スレタイ見て自分の書き込み見てなんにも思わないようなら
情報不足の前に質問者としての心構えが不足している
もしも気づけたら知恵遅れの方も訂正入れとけよ
0227Name_Not_Found
垢版 |
2019/06/04(火) 06:01:44.01ID:???
'done': function (0) {

//Bテーブルの項目にAテーブルから取得した項目の値をセット
$p.set($('#Results_ClassB'), data.Response.Data[0].ClassB);
$p.set($('#Results_ClassC'), data.Response.Data[0].ClassC);
},

done 内で、data という変数を使うなら、引数に、data を渡さないといけないのでは?
>'done': function (0) {
'done': function (data) {

Aテーブルの分類B、分類Cを、Bテーブルの分類D、分類Eへ設定するなら、
data.Response.Data[0].ClassB, data.Response.Data[0].ClassC を、
Bテーブルの分類D、分類Eへ設定すればよい

ここは、JavaScript のスレなので、
jQuery の質問は、下のスレへ移動してください!

+ JavaScript & jQuery 質問用スレッド vol.7 + [無断転載禁止]c2ch.net
https://mevius.5ch.net/test/read.cgi/hp/1478002550/l50
0228Name_Not_Found
垢版 |
2019/06/04(火) 10:35:44.64ID:???
>>227
jQueryにsetなんてメソッドはありません。
jQueryじゃないのならこのスレですね
0229Name_Not_Found
垢版 |
2019/06/04(火) 11:28:05.80ID:???
【速報】金券五百円分とすかいらーく優侍券をすぐもらえる  
https://pbs.twimg.com/media/D8I_rBwU0AIZUL2.jpg
    
@ スマホでたいむばんくを入手 
A 会員登録を済ませる
B マイページへ移動する 
C 招待コード→招待コードを入力する [Rirz Tu](スペース抜き)    
     
今なら更に4日18時までの登録で2倍の600円の紹介金を入手
クオカードとすかいらーく優待券を両方ゲットできます。   
      
数分で出来ますのでお試し下さい
0230Name_Not_Found
垢版 |
2019/06/04(火) 12:58:22.17ID:???
>>229
一万円の請求来たんだけどどういうこと??
0232Name_Not_Found
垢版 |
2019/06/04(火) 13:13:42.07ID:???
>>229
警察に相談する
事件に巻き込まれた場合は、警察に相談することが鉄則です。しかし、本当に詐欺にあったのかわからないため、警察に相談しづらいケースもあります。警察への相談に関して、パターン別に通報先をご紹介します。

相談窓口

詐欺かどうかわからないが何となく怪しさを感じている場合は、「#9110」の相談窓口に連絡しましょう。その地域を管轄する警察の相談窓口に繋がります。

必要に応じて、関係機関の紹介や、解決に向けてアドバイスしてもらえます。緊急を要する事件や事故は110ですが、緊急性のないものは#9110にかけましょう。むやみに110にかけると、他の緊急性のある事件や事故への対応が遅れる恐れがあります。

電話番号:#9110
受付時間:月曜〜金曜8:30〜17:15
休業日:土日祝(当直または音声案内)
0233Name_Not_Found
垢版 |
2019/06/04(火) 13:15:30.11ID:???
>>229
国民生活センターに相談する
国民生活センターは各地域にある消費生活センターのことで、詐欺被害にあった場合には、今後とるべき行動や再び被害にあわないための対策などをアドバイスしてもらえます。

また、業者と和解できるようあっせんしたり、解決に向けて協力するよう業者に伝えたりも可能です。警察に被害届を受理してもらえなかったり、他の関係機関に相談しても解決に至らなかったりする場合に相談しましょう。

電話番号:188(いやや)
受付時間:地域で異なる
休業日:地域で異なる(年中無休、年末年始を除く窓口が多い)
0234Name_Not_Found
垢版 |
2019/06/04(火) 13:58:47.98ID:???
>>228
えええ…
上の質問に答えるつもりはないけど
setは$pのメソッドだろ
0235Name_Not_Found
垢版 |
2019/06/04(火) 14:50:38.33ID:???
だから$pの使い方を知りたいなら、(jQueryではなく)
$pのクラスのマニュアルを見れと言ってる
jQueryの話じゃないんだからjQueryスレに誘導されても困る
0236Name_Not_Found
垢版 |
2019/06/04(火) 15:50:55.18ID:???
ライブラリのスレで聞けば?
0237Name_Not_Found
垢版 |
2019/06/04(火) 18:28:46.62ID:???
質問者も$pが何のライブラリから来てるか分かってなさそうだけどな
0238Name_Not_Found
垢版 |
2019/06/04(火) 18:44:51.23ID:???
ライブラリの質問をこのスレでされても困る
0239Name_Not_Found
垢版 |
2019/06/05(水) 11:30:46.92ID:???
Javascriptでの画面サイズの取得には、
window.innerWidthやscreen.widthとか複数の手段がありますが、
iPhoneXのような変態ディスプレイで取得できる値も
他のスマホと同様に実際の領域との認識で良いのでしょうか?
0240Name_Not_Found
垢版 |
2019/06/05(水) 11:35:06.58ID:???
いいえ違います。実際の領域はわかりません。
0241227
垢版 |
2019/06/05(水) 21:51:47.83ID:???
$(document).on('change', '#Results_ClassA', function () {

'done': function (0) {
'fail': function (data) {

これは、jQuery じゃないの?

>'done': function (0) {
'done': function (data) {

引数を、data にしないといけないのでは?
0242Name_Not_Found
垢版 |
2019/06/05(水) 21:59:10.02ID:???
on changeにdoneとかfailとかないから明らかに違う
0243Name_Not_Found (ワッチョイ 6f8f-pVhm)
垢版 |
2019/06/05(水) 22:48:53.10ID:uH52cmvV0
vanilla js で $ マーク使う場面ってどんなん
0244Name_Not_Found
垢版 |
2019/06/05(水) 23:57:51.85ID:???
昔から識別子に使える文字だが?
0245Name_Not_Found
垢版 |
2019/06/06(木) 02:03:50.90ID:???
undefined が変数名としても使えるようなもんか(絶対違
0246Name_Not_Found
垢版 |
2019/06/06(木) 07:13:27.75ID:???
>>239
実際の領域を取得する方法は多岐にわたる
0247Name_Not_Found
垢版 |
2019/06/07(金) 17:02:00.30ID:YbWIMtcO
初歩的な質問かもしれませんが…

外部化したJSを、別のJSでdocument writeで出力した場合、元の内容は正しく記述されるのでしょうか?

入れ子構造のような形でJSを出力できるのかな、みたいな
0248Name_Not_Found (ワッチョイ 4f8f-Yhjd)
垢版 |
2019/06/07(金) 18:09:50.71ID:fyjtWq/E0
…なぜ document.write を使う…
0249Name_Not_Found
垢版 |
2019/06/07(金) 18:19:38.87ID:???
そこにdocument.writeがあるから
0250Name_Not_Found (ワッチョイ 4f8f-Yhjd)
垢版 |
2019/06/07(金) 18:27:54.93ID:fyjtWq/E0
strong discouraged
0251Name_Not_Found
垢版 |
2019/06/07(金) 21:47:36.00ID:???
document.write は、使うな!

一旦、そのページのすべての要素が削除されてしまうから!
つまり、上書きされる
0252Name_Not_Found
垢版 |
2019/06/07(金) 22:48:14.44ID:???
ナウなヤングはdocument.writelnだよな!
0254Name_Not_Found (ワッチョイ 4f8f-Yhjd)
垢版 |
2019/06/08(土) 11:23:52.43ID:SPSMcI1T0
呼び出し元
<script type="module" src="main.js">

main.js
import {name} from './module.js';
console.log(name);

module.js
export const name = "Taro";

こんな感じで動くっぽい @ Firefox 67.0.1
参照: https://analogic.jp/module-summary/
0255Name_Not_Found (ワッチョイ 4f8f-Yhjd)
垢版 |
2019/06/08(土) 11:42:00.55ID:SPSMcI1T0
んで

main.js
import {hikizan} from './hikizan.js';
console.log(hikizan(10,1));

hikizan.js
import {tasizan} from './tasizan.js';
export const hikizan = function(a,b){
return tasizan(a,-b)
}

tasizan.js
export const tasizan = function(a,b){
return a+b;
};

これで多分動く…とおもう
0258Name_Not_Found (ワッチョイ 4f8f-Yhjd)
垢版 |
2019/06/08(土) 16:37:10.38ID:SPSMcI1T0
Parcel とか WebPack とか CommonJS とか AMD とか良く分からん…
$.getScript も良く分からん…
0259Name_Not_Found
垢版 |
2019/06/08(土) 23:34:03.45ID:???
基本的には、VSCode, Node.js を使えばよい

Node.js は、Ruby のライブラリを置き換えたもので、CommonJS 方式(require)で読み込む。
ただし、Node.jsのrequireは同期処理で、CommonJSは非同期処理。
AMD 方式は、最近では聞かない

WebPack, browserify は、モジュールバンドラー。
Babel は、ES6(ES2015)をES5 に変換する。

Gulp, npm-scripts は、タスクランナー
0260Name_Not_Found
垢版 |
2019/06/08(土) 23:42:06.02ID:???
違う次元のものを並べて語るのなんかそわそわする…
0261Name_Not_Found
垢版 |
2019/06/09(日) 00:30:07.94ID:???
Node.js は、Ruby のライブラリを置き換えたもので
0265Name_Not_Found
垢版 |
2019/06/09(日) 09:45:32.74ID:???
function a(){
return false
}
if (a){alert("true")} else {alert("false")}
これはfalseが表示されると思っているのですがなぜかtrueです。
また
function a(){
return false
}
alert(a)
これは関数の文字列?
「function a(){
return false
}」
が表示されてしまいます。期待しているのはfalseが表示される事です。なぜfalseが表示されないのでしょうか? 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
0268Name_Not_Found (ワッチョイ 4f8f-Yhjd)
垢版 |
2019/06/09(日) 11:00:18.62ID:MBWs3EIF0
>>265
console.log(typeof a);
0269Name_Not_Found (ワッチョイ 4f8f-Yhjd)
垢版 |
2019/06/09(日) 11:05:58.91ID:MBWs3EIF0
すみません仕事で javascript は使ってません

>>258 を書いたのは「javascript モジュール」で検索すると過去の経緯とか現状とか出て来るので
「たぶん実務では babel か何かを通してから使うんだろうなあ」と思いつつ、です


検索の過程で出て来たソフトウェアの名前を列記したので
性質の違うものが並んでいる・並んでいる可能性があるのは認識しつつ、でした
「実務に詳しい人が補足してくれるだろう」と思ったのでした
0270Name_Not_Found
垢版 |
2019/06/09(日) 18:13:00.40ID:???
>>269
>>259が少し変な人だっただけで質問は別におかしくないよ
わかんなくて、とりあえず自分で調べたなりに聞いてんだから

んで、今JSは超大雑把に
ブラウザの中でウェブの一部として動くものと、そうでないものがあって
コードのモジュール化についてはそのどちらなのかによって対処は変わるよ
って話
0271Name_Not_Found
垢版 |
2019/06/09(日) 21:06:10.42ID:???
>>269
いいや、今では実務でも直接モジュールつかうよ
まともなところならもうトランスパイラなんかは使ってない
考えてみたら分かる
いくらモジュールや構文をレガシーブラウザで動かせてもAPIに差がありすぎるので
1つのスクリプトで賄うのは無理があるということ

だからあえてmoduleにしてモダンブラウザ用のコードをメインとして提供して
nomoduleを使ってレガシーブラウザ用の本当に最低限な機能をちょこっと書く
これが一番効率がいい
0272Name_Not_Found
垢版 |
2019/06/09(日) 21:07:42.15ID:???
× まともなところならもうトランスパイラなんかは使ってない
○ トランスパイラ使ってない所=まとも。うちは使ってない、だからまとも。はい論破!
0273Name_Not_Found
垢版 |
2019/06/09(日) 21:43:03.86ID:???
最近は「自決」とだけ書いて
質問を投げ捨てるの流行ってるのかなあ
0275Name_Not_Found
垢版 |
2019/06/09(日) 22:02:17.97ID:???
function a(){ return false }

if (a)

a は、関数を呼び出していない。
関数そのもの

a( ) は、関数を呼び出す。
( )は、関数呼び出し演算子
0277Name_Not_Found
垢版 |
2019/06/09(日) 22:49:31.32ID:???
かえって「自決」って書かない方が印象良い気がする
0279Name_Not_Found
垢版 |
2019/06/11(火) 07:34:04.73ID:5bxagqDM
自決って自殺のこと
0280Name_Not_Found
垢版 |
2019/06/11(火) 08:50:58.06ID:???
学校で習った民族自決は?
0281Name_Not_Found
垢版 |
2019/06/11(火) 16:42:11.45ID:???
あー!
自分で解決しました、で自決って書いてたのか

自殺したって書くのが若い子の間で流行ってるのかと思ってた(´∀`)
0282Name_Not_Found
垢版 |
2019/06/11(火) 19:40:42.11ID:???
紛らわしいから今度から「じ」って書くことにするよ
0283Name_Not_Found
垢版 |
2019/06/11(火) 19:51:21.43ID:oZMwi+uu
もう「自決」NGで良いよ
0284Name_Not_Found
垢版 |
2019/06/11(火) 22:26:28.14ID:???
大義のない今の世の中
自尻だろw
0289Name_Not_Found
垢版 |
2019/06/13(木) 15:57:02.88ID:Ni0h74Wk
よくdocument.writeは使うな!って言われるけど、何がしかのhtmlを出力したい時って代わりに何を使えばいいの?

windiw.onloadでページを全部読み込んだ後に処理されるようにしても、やっぱり使っちゃダメなの?
0290Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/13(木) 18:36:16.28ID:PwSIvUNk0
>>289
<p id="foo">
とか html 側で書いておいて getElementByID して textContent を変更

どうしてもタグ入れたいなら innerHTML を使う
あるいは createChild するとか

p要素でもdiv要素でもspan要素でも何でも良いんだが、コンテンツやコンテキストによるかな
0291Name_Not_Found
垢版 |
2019/06/13(木) 18:46:38.04ID:???
$('#p').text(テキスト);
$('#p').html(HTML);

かんたーんかんたーん。
0294Name_Not_Found
垢版 |
2019/06/13(木) 23:36:17.15ID:???
>>293
error
TypeError: Failed to execute 'insertBefore' on 'Node': 2 arguments required, but only 1 present.

あと、dとd1はconstでいいだろ
0295Name_Not_Found
垢版 |
2019/06/14(金) 01:21:28.48ID:RcKxhTr6
スライドトグルとかは生のJavaScriptで書くのは難しいからジェイクエリーを使った方がよいですよね?
0296Name_Not_Found
垢版 |
2019/06/14(金) 02:45:49.74ID:???
別に難しくはないから使わんな
ああいうのは今時はメインはCSSの処理で、JSはクラスの追加/削除くらいしかしないし
0297Name_Not_Found
垢版 |
2019/06/14(金) 04:51:05.08ID:???
クラスの追加/削除程度なら使っても遅くならんし
簡潔にかけるjQueryの方が良くね?
0298Name_Not_Found
垢版 |
2019/06/14(金) 06:36:10.77ID:???
ヤフーニュースのランキングで、
https://news.yahoo.co.jp/ranking

<a>要素を、クリックする前には、href が、
https://headlines.yahoo.co.jp/何々」なのに、

クリックした後には、
https://rdsig.yahoo.co.jp/何々」に変えてしまうのは、なぜでしょうか?

ただし、rdsig をクリックしても、headlines の方に移動するので、どういう意味があるのでしょうか?


クリック前
<a onmousedown="this.href='https://rdsig.yahoo.co.jp/何々'"
href="https://headlines.yahoo.co.jp/何々"></a>

クリック後
<a onmousedown="this.href='https://rdsig.yahoo.co.jp/何々'"
href="https://rdsig.yahoo.co.jp/何々"></a>
0299Name_Not_Found
垢版 |
2019/06/14(金) 06:37:14.95ID:???
13×8が難しいからとわざわざ電卓借りてきて使うのか?
俺は最初から手元にあっても使わない
0300Name_Not_Found
垢版 |
2019/06/14(金) 06:41:06.95ID:???
>>295
Bootstrap には、無いの?

Bootstrapは、jQuery で作られているから、各部品を自分で作らなくてもよい
0302Name_Not_Found
垢版 |
2019/06/14(金) 09:27:55.00ID:???
bootstrapはついに5からjquery抜くんだとw
おせーよww
0303Name_Not_Found
垢版 |
2019/06/14(金) 14:50:26.76ID:???
5ではjquery抜きのついでにIE11サポートもやめるんだろ?
つまり(日本では)仕事では使えない、役立たずFWってことだな
0304Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/14(金) 18:18:23.17ID:IUNfs48K0
使いたい層が一定以上見込めるなら、しかるべきベンダが保守するだろ

ライセンス上は、保守によるパッチを公開する義務ないだろ
GPL じゃないんだし
0305Name_Not_Found
垢版 |
2019/06/14(金) 21:15:29.86ID:???
人に基本的なとこ説明する必要があって、各種プリミティブ型は箱モデル、オブジェクト(配列含む)はラベルモデルで説明しようと思ったんだけど、個人的に文字列について基礎的なとこ分かってないことが明らかになったのでちょっと教えて下さい。
1)文字列を数値や真偽値と同様箱モデルで捉えることに問題はないですか?
2)let a = '文字列', b = '文字列';であるとき、
a === bの結果は当然trueですが、aの指す'文字列'とbの指す'文字列'はメモリ上同一オブジェクトですか?つまり実態はアドレスを比較しているだけ?
そしてそれはesの仕様で決まっているのですか?それとも実装に任されているのですか?

よろしくお願いします。
0306Name_Not_Found
垢版 |
2019/06/14(金) 21:22:21.55ID:???
>>305に追加で以下もお願いします
3)
let str = 'abc';
str[1] = 'B';
console.log(str);
//=> abc(aBcではなく)
となる説明、あるいは参考サイト(MDNレベルの噛み砕いてある説明なら理解できますが仕様書を紹介いただいても私には敷居が高いです…)
0307Name_Not_Found
垢版 |
2019/06/14(金) 22:19:37.75ID:???
Ruby では、同じ内容(等価)の文字列でも、異なるオブジェクトID(同一ではない) になる

a = '文字列'; b = '文字列'

p a.object_id, b.object_id
#=> [15684800, 15684760]

一方、Python のsys.intern() は、内容が同じ「等価」な文字列に対して、
実行環境上で「同一」の文字列を返す。
返された文字列どうしは、==(等価)ではなく、is(同一)でも一致する
0308Name_Not_Found
垢版 |
2019/06/14(金) 22:42:03.40ID:???
文字列は、数値型と同じで、オブジェクトじゃなくて、primitive。
参照を持っていないので、代入しても、参照ではなく、値が代入される。
書き込みできないオブジェクト

str[ 1 ] で、参照はできるけど、代入はできない

str = 'abc';

console.log( str[ 1 ] ); // b
0310間違ってるかも (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/15(土) 00:10:56.90ID:tagTKy3a0
うーむ。

let s = "abc";
console.log(s);
s[1] = "B";
console.log(s);

let t = s[0] + "b" + s[2];
console.log(t);
t[1] = "B";
console.log(t);

文字列を作ると、メモリの中に「変更できない文字列」が作られます。
文字列の変数は、実際には、その文字列を参照するだけのものです。
なので、文字列を「変更」したいときには、必ず、「新しい文字列」を作る必要があります。


…とか…
0312Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/15(土) 01:32:51.44ID:tagTKy3a0
>>307
> 一方、Python のsys.intern() は、内容が同じ「等価」な文字列に対して、
> 実行環境上で「同一」の文字列を返す。
> 返された文字列どうしは、==(等価)ではなく、is(同一)でも一致する

https://ja.wikipedia.org/wiki/Flyweight_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3
これですね
0314Name_Not_Found
垢版 |
2019/06/15(土) 07:02:13.08ID:???
ESでは値は原則消されることも無ければ複製されることもない
新しい値ができることと、
それに新しい名前が付けられ共有されることの繰り返しで成り立っている
ただし他の多くのメジャーな言語とは違い実装と事と仕様は原則綺麗に分離されている

実装では例えば原則参照の値渡し
ただしアドレス値に埋め込めるSMIはそのまま使うなどの
多くの人間的な工夫をした上で、
更に機械的な最適化段階を通すので
ロジック的な意味合いを考えるのは無益
0315Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/15(土) 07:38:32.67ID:tagTKy3a0
>>314
長文なので抽象的すぎて
何のことを書いてるか分からん

サンプルコードで示して貰えまいか
>>310 のように
0316Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/15(土) 07:39:07.58ID:tagTKy3a0
禁止されたのでレス分ける

>>314
>>311 で不充分と考えているのだとしたら
サンプルコードを示しつつ具体的に書いてもらえまいか
質問者の前提も、お忘れなく
0317Name_Not_Found
垢版 |
2019/06/15(土) 09:56:48.04ID:???
>>305-306からのレスはないようだから、もう見てないのだろう
回答する必要はない
0318Name_Not_Found
垢版 |
2019/06/15(土) 11:21:18.97ID:???
>>311
えぇ…
文字列どころかプリミティブ値全部イミュータブルなのね、衝撃だわ…
Cと全然違うんだね。
じゃJavaScriptでは変数を箱モデルで説明すんのは厳密には間違いなんだね。
これからはラベルモデルで説明するわ。
mdnにこんなページあったのか…
0319Name_Not_Found
垢版 |
2019/06/15(土) 11:46:32.77ID:???
ワッチョイ出てない質問者は自演で回答に文句いいそうで怖い
「もういない」と指摘された途端に出てくるのもね…
0320Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/15(土) 11:48:37.07ID:tagTKy3a0
>>318
> mdnにこんなページあったのか

1次情報で裏取るのが一番ですね

日本語の JS の情報ページは古すぎたり、あやふやだったり…
英語の方がまだマシだったりするし…
0321Name_Not_Found
垢版 |
2019/06/15(土) 12:00:52.30ID:???
>>319
プログラム板でC言語と混同してる疑いが持たれた奴がいたが、同一人物じゃないかね
https://mevius.5ch.net/test/read.cgi/tech/1491143438/148-
プログラム板の奴は「解決したら放置、追加質問があるならレス」だった
このスレの奴は「いることをアピール」すれば、追加情報が得られそうなので出てきた
情報搾取する輩は無視して良し
0322Name_Not_Found
垢版 |
2019/06/15(土) 12:42:25.38ID:???
プリミティブはイミュータブルとか見当違いのレスばかり
実際にはJSにそのような制限はない、実質的にそう考えても矛盾はしないというだけ
ラッパーオブジェクトの内部プロキシが吐くディスクリプタが書き込み禁止になっているだけ
0323Name_Not_Found
垢版 |
2019/06/15(土) 12:46:35.24ID:???
そんな事を言うと、JavaScriptで変数を箱モデルで説明すればいいのか
ラベルモデルで説明すればいいのか、わかんなくなるだろw
説明を実装で変えるような馬鹿だからな
0325Name_Not_Found
垢版 |
2019/06/15(土) 12:57:35.44ID:???
>>324
サンプルコードとか何いってんの?
あるコードがこういう挙動示すのは、どういう意味合いでどういう仕組みなのかって話をしてるでしょ
内部の話をする所で表層のサンプルコードもクソもないでしょ
ただ単純に、ES仕様やブラウザの内部実装を見ればいいだけでしょ
0326Name_Not_Found
垢版 |
2019/06/15(土) 13:07:47.01ID:???
>>324
煽って回答を引き出す戦略は止めて貰えませんかねえ
こういう質問者ばかりだから廃れるんだよ
0327Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/15(土) 13:23:43.48ID:tagTKy3a0
>>325
サンプルコードすら示せないのであれば
「MDN の記載を見当違いと言い張る」大嘘吐き扱いになるのですが
それでも構わない、と?

あと私は質問者じゃないので
ちゃんとワッチョイなり ID なり確認されたく。
0329Name_Not_Found
垢版 |
2019/06/15(土) 13:48:09.38ID:???
>>327
> あと私は質問者じゃないので
あなた(>>324)が>>322に回答を求めてるよね
それは質問じゃないの?

> ちゃんとワッチョイなり ID なり確認されたく。
>>305はワッチョイもIDも隠しているから、あなたと同一人物じゃないと証明できてないよ
前スレで>>16のような行為が行われた現状では、こちらの可能性を疑われても仕方ない
0330Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/15(土) 14:08:40.89ID:tagTKy3a0
>>329
うん
質問じゃないよ

MDNの記述と真っ向から矛盾することを書いておいて、サンプルコードすら示せないってありえないじゃん
説明する責任はソッチ

なので、説明を求められるのは当然であって、それは「質問」じゃない
0331Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/15(土) 14:11:56.24ID:tagTKy3a0
>>329
> >>305はワッチョイもIDも隠しているから、あなたと同一人物じゃないと証明できてないよ


それは無理な主張だなあ

私は前スレからワッチョイを出している訳だが?
8f- という文字列で検索すれば全部出て来る

しかも >>305 に対して回答をしている( >>310 )
0332Name_Not_Found
垢版 |
2019/06/15(土) 14:54:41.19ID:???
>>330-331
- あなたの中で矛盾があろうが、質問は質問
- 俺が>>322の説明責任を負ういわれはない
- 回答していようが自演は出来る(前スレの奴はやりかねない)

一番重要なのは「煽るな(=荒らすな)」
0333Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/15(土) 15:47:47.04ID:tagTKy3a0
さて、大嘘吐きさんは逃亡したようですね
「プリミティブラッパーオブジェクト」 (See: https://developer.mozilla.org/ja/docs/Glossary/Primitive )と混同している気配はあったかな

>>332
ワッチョイも無し、IDも無しで言われても…
ブーメランの可能性は自覚しているのかなあ
「俺が>>322の説明責任を負ういわれはない」と断言できる根拠が無いのですね


あと、現代日本語を逐語解釈しても「疑問」と「反語」は区別できないので念のため
>>324 を逐語解釈した場合、さて、どうなるんでしょうねえ
0334Name_Not_Found
垢版 |
2019/06/15(土) 16:14:03.31ID:???
>>333
相変わらず、煽り続けるので「荒らし」と確定した
0335Name_Not_Found
垢版 |
2019/06/15(土) 16:22:32.70ID:???
荒らしとか言いながらお前らそれを一番楽しんでんじゃん
ミイラ取りがミイラになってもなおミイラ取りするみたいな
0336Name_Not_Found
垢版 |
2019/06/15(土) 16:26:59.86ID:???
少なくとも、"ワッチョイ 3f8f-bbbA" は論破するのが楽しくて煽ってるところがあるから、荒らしだろうな
0337Name_Not_Found
垢版 |
2019/06/15(土) 16:53:02.54ID:???
多分、彼には「君子危うきに近寄らず」で敬遠された自覚はないと思う
0338Name_Not_Found
垢版 |
2019/06/15(土) 17:59:43.32ID:???
俺は「天網恢々、疎にして漏らさず」でオナニーしてる
0339Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/15(土) 19:04:31.65ID:tagTKy3a0
>>337
MDN の記述と真っ向から矛盾すること書いておいて
「君子危うきに近寄らず」は無いでしょ

…ずいぶん高踏的な物言いですねえ…
0340Name_Not_Found
垢版 |
2019/06/15(土) 19:42:40.54ID:???
>>333
混同も何もブラケット演算子を適応した場合は
一時的にラッパーオブジェクトが作られそれへの操作になるんだが
常識だろう
だからそれに対する挙動を持ってプリミティブ型の性質を語るのはちゃんちゃらおかしい
str[n]=hoge
が働かないというのはまず、StringObjectの性質であって
Stringプリミティブ型の制限ではない
JSではプリミティブ型を書き換える手段が提供されていないというのが正しいのであって
プリミティブはイミュータブルと決まっているわけではない
ESは様々な拡張が許されており、仮にイミュータブルが書き換え可能でも
その他の部分で矛盾や不都合は発生しない
あと、仕様の話でMDNを見るな、ここを見て語れ
https://tc39.es/ecma262
0341Name_Not_Found
垢版 |
2019/06/15(土) 20:01:20.31ID:???
あと抽象的だのなんだの言ってる奴が居るがこれもまたちゃんちゃらおかしい
仕様書を読めば分かるが仕様書というのは基本的に自然言語で書いてあるのだから
こういう捉え方しかできないというところもあれば、色々な捉え方ができるところもある
特にESの仕様書というのは物理マシンや実装エンジンの世界を殆ど持ち出さずに
正にESというものの概念を定義してるのだから抽象的であるに決まりきっている
ES仕様で最も多く使われているlet〜beなどという言葉だってその挙動をどう捉えるかは難しい
少なくともa is bはbが複写されてaとする、と考えると矛盾する
だからここはbにaという新しい名前を付けると解釈しないといけない
そういったa is bが何十何百何千積み重なって多くのロジックを形成してるので
つまるところESの変数の仕組みだって名付けの連鎖だと帰着できる
一方ESに削除や複写が殆ど無いこともこうやって全てのロジックを追っていけば分かる
勿論そういう概念にこだわっても物理マシンや実装エンジンの世界では無益に近いが
ESの仕様をできる限り忠実に語ろうとするのであればそういう無益な話をせざるを得ない
0342Name_Not_Found (アウアウエー Sa82-aVKm)
垢版 |
2019/06/15(土) 22:24:08.74ID:DMISqiD0a
>>340
同意だが、何をいっても煽られるのが目に見えているので、説明する時間が勿体ないと思う
0343Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/15(土) 22:49:10.79ID:tagTKy3a0
>>340
> 仕様の話でMDNを見るな

仰る通り
手抜きでした
申し訳ない
0344Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/15(土) 23:40:11.54ID:tagTKy3a0
ん…?

>>340
> ブラケット演算子を適応した場合は
> 一時的にラッパーオブジェクトが作られそれへの操作になる

https://www.ecma-international.org/ecma-262/6.0/
を square bracket や bracket notation で検索するも見当たらないですね


12.3.2 Property Accessors
> Properties are accessed by name, using either the dot notation:
...
> or the bracket notation:
> MemberExpression [ Expression ]
> CallExpression [ Expression ]

という記述があるのみ
0345Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/16(日) 00:20:19.76ID:n1lpDHLV0
【初心者に教えるとき】
a[1] = "A"; とか書いても文字列 a の内容は変わらない、と。
「書き換えることはできない、それが仕様」と。



あんまり空中戦やりたくないんだが

>>340
> JSではプリミティブ型を書き換える手段が提供されていないというのが正しい

9.4.3 String Exotic Objects を読む限り、"the encapsulated String value" を操作することが禁止されているとまでは読めないが…。
そうすると、「プリミティブ型を書き換える手段」を提供する実装が存在したとして、それは「規格に適合していない」とはいえない、
すなわち「今の時点で、プリミティブ型を書き換える手段が提供されているブラウザは無い」というのが(この板の性質上)正しいのでは?


> 4.3.2 primitive value
...
> A primitive value is a datum that is represented directly at the lowest level of the language implementation.
(以下省略)

「ECMAScript2015において、すべてのプリミティブ型はイミュータブルである」とは書かれていない。
「その意味で MDN の記述は誤っている」と言う余地もあろだろうし、「実装依存の話であって、誤っていない」と言う余地もあるだろう
0346Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/16(日) 01:06:59.77ID:n1lpDHLV0
【ありそうなこと】
 かつて IE7 あたりで a[1] という記法が使えなかった名残で、
 コーディング規約上 .charAt() を使うことになっている

IE11 では使えるし、さすがに無いか…?
0347Name_Not_Found
垢版 |
2019/06/16(日) 02:57:36.58ID:???
配列内の要素から、簡単に、HTML の<td> タグを作るような方法が、ありませんか?

lodash にあるかな?
jQuery よりも、出来れば、素のJS が良いです

var ary = [ 1, 2, 3 ];

<td>1</td><td>2</td><td>3</td>
0348Name_Not_Found
垢版 |
2019/06/16(日) 04:09:29.36ID:???
const arr = [1,2,3];
// 文字列で作る
const str = arr.map(v => `<td>${v}</td>`).join('');

// DocumentFragmentで作る
const fragment = document.createDocumentFragment();
arr.forEach(v => {
const td = document.createElement('td');
td.textContent = v;
fragment.appendChild(td);
});
0349Name_Not_Found
垢版 |
2019/06/16(日) 06:02:54.22ID:???
// jQueryで作る
const str = $.map(ary, function(i) { return "<td>" + i + "</td>"; }).join("");

// jQueryで作る 2
const str = $.map(ary, i=>`<td>${i}</td>`).join("");

// lodashで作る
const str = _.map(ary, i=>`<td>${i}</td>`).join("");

// lodashで作る 2
var compiled = _.template("<% _.map(ary, function(i) { %><td><%- i %></td><% }); %>");
const str = compiled({'ary': ary});
0350Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/16(日) 08:25:14.43ID:n1lpDHLV0
for で書いてみた

>>347
var ary = [ 1, 2, 3 ];
var str_result = "";

for (var i = 0; i < ary.length; i++) {
str_result += "<td>" + ary[i] + "</td>";
}
console.log(str_result);
0351Name_Not_Found
垢版 |
2019/06/16(日) 09:15:14.79ID:???
>>345
俺はMDNが間違っているとは言わない
>>322 実質的にそう考えても矛盾はしない と言ってるだろう
プリミティブ型がイミュータブルと言ってはいけないとまでも言わない

俺が言いたいのは、どちらにせよ
a[1] = "A"
の挙動に於いてプリミティブ型がどうのを持ち出す流れが完璧におかしいってこと
本当に言いたかったのはそこだけであとは蛇足
0352Name_Not_Found
垢版 |
2019/06/16(日) 09:22:39.41ID:???
素のJSで書いた>>350が一番見やすくて分かりやすいな
0354Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/16(日) 09:36:45.82ID:n1lpDHLV0
ありがとうございました。

>>351
色々勉強になり、より知識体系も改善したようです。
きっかけを作っていただき、感謝しております。
0355Name_Not_Found
垢版 |
2019/06/16(日) 09:53:54.64ID:???
>>354
例は数値配列だからいいけど
実際には< とか > とか含む文字列だったりしないのかな
xss的なめんどくさいことにならないといいんだけど
0357Name_Not_Found
垢版 |
2019/06/16(日) 10:21:42.99ID:???
ワッチョイ 3f8f-bbbAは正義感が強いのはいいが、自信過剰で他人を煽ってるのが当然の権利と言わんばかりなのが鼻についた
自分の誤りに気が付いた途端に謙虚になったが、初めからそうすればいいのに
0358Name_Not_Found
垢版 |
2019/06/16(日) 11:14:27.49ID:???
      , -,____
   /レ/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;`'-,__
 i!、i;;;;;;; ;;; ;; ;;; ;; ;; ;;;;; ;; ;; ;;; ;;;;;;、
 >;;;;;;;;;;;;;;; ;;; ;;; ;; ;; ;;;;; ;;; ;;; ;;;;;;;;;
/〉,、;;/ / !  ̄ ̄ ̄ ̄`ヽ !;;;;;;;;;;i
 /( !;;| ノ=-    -==\|;;;;;;;;;;;l
   `! ,.--、    ,---、 },;;;__;;;!
    ,i.i ●_i    !_● _! リ', i|    ___________
    .l|  ̄ ノ     ̄    i l!   /
    !  l,_        ,__/!   < でも回答者が悪いんですよ
    i   ======    /〉;;/    \___________
    ヽ        / ルi!、
    //`ー───' .//lllll\
 _/llllll!、      / /|||||||||
'||||||||||||||l \_ /ニ ̄  ./|||||||||||
||||||||||||||||i, く;;;;;;;;;;|\ ./|||||||||||||
|||||||||||||||||! 〉;;;;;;/  ー/||||||||||||||
0359Name_Not_Found
垢版 |
2019/06/16(日) 11:32:19.23ID:???
真面目に分析すると、ワッチョイ 3f8f-bbbA の中では「このスレを正しい情報だけにしよう」という気概が強くあるのだと思う。
彼にとっては「MDNは絶対的に正しいはず」であり、それを否定する情報を寄せる輩は是正すべき相手。
だから、「お前の言ってる事は間違ってる。悔しかったら言い返してみろよ。」というスタンスでやり込めたつもりなんだろう。

一流の技術者は「自分の知識を疑うこと」が出来るし、相手の考えを聞くまでは判断を保留する冷静さがある。
そういう意味では彼は二流(or三流)だね。
0360Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/16(日) 11:48:06.61ID:n1lpDHLV0
>>355
https://jsbin.com/qayivic/edit?html,js,console,output


jQuery 等のライブラリにあるのかも知れんし
もっと効率的な書き方もあるかも知れんけど…

html だとバッククオートは放置でも良いんだっけ…?
0361Name_Not_Found
垢版 |
2019/06/16(日) 12:09:50.46ID:???
>>360
> html だとバッククオートは放置でも良いんだっけ…?
仕様を読まないのは「手抜き」ではなかったのですか >>343
0362Name_Not_Found (アウアウエー Sa82-okRp)
垢版 |
2019/06/16(日) 12:21:16.50ID:u8bqBROXa
>>347
HTMLタグを文字列で管理する手法はお勧めしない

// for-of
const td = document.createElement('td');
const df = document.createDocumentFragment();
for (let value of [1,2,3]) df.appendChild(td.cloneNode(false)).textContent = value;

// reduce
const td = document.createElement('td');
const df = [1,2,3].reduce((df, current) => (df.appendChild(td.cloneNode(false)).textContent = current, df), document.createDocumentFragment());

tr要素ノードを含めて挿入する場合は、insertCell()を使用しても良い

// insertCell
const tr = document.createElement('tr');
for (let value of [1,2,3]) tr.insertCell().textContent = value;
0365Name_Not_Found
垢版 |
2019/06/16(日) 12:34:47.81ID:???
文字列を使うとDOM APIを呼び出さないので速いよ
0366Name_Not_Found (アウアウエー Sa82-okRp)
垢版 |
2019/06/16(日) 13:28:20.38ID:u8bqBROXa
> 文字列を使うとDOM APIを呼び出さないので速いよ
文字列として扱う分には無害だが、>>360のように最終的にDOMツリーに挿入する為にサニタイズ処理が必要なら話は別だ
ネイティブで用意されている機能を使わず、手動でサニタイズするのは労力の無駄(車輪の再発名)
そして、将来的に機能のアップデートがあった場合に追従出来ない可能性がある
0367Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/16(日) 13:56:00.43ID:n1lpDHLV0
>>353
> あまり真似しないで欲しいが
> https://jsbin.com/viyoduh/edit?html,js,output

コレが原因で荒れてしまったようで申し訳ない


// for で単純に
https://jsbin.com/wuxayaj/edit?html,js,output

// 御教示いただいた insertCell を使用
https://jsbin.com/fawowuv/edit?html,js,output

// one-liner
https://jsbin.com/dowewag/edit?html,js,output

こんな感じですかねえ…。

replace で正規表現を使うと "." とかで不具合が出るので要注意、と。
https://noumenon-th.net/programming/2016/01/29/xss/ みたいなのもあるようなので油断大敵、と。
0368Name_Not_Found
垢版 |
2019/06/16(日) 14:12:13.86ID:???
>>366
> 手動でサニタイズするのは労力の無駄(車輪の再発名)
ライブラリ使えばいいやん
0369外部サイト見たくないという人のために (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/16(日) 14:20:11.46ID:n1lpDHLV0
> // for で単純に
> https://jsbin.com/wuxayaj/edit?html,js,output

var ary = [ 1, 2, 3 ];
var e = document.getElementById("target");
var row = document.createElement("tr");
var cell = {};

e.appendChild(row);

for (var i = 0; i < ary.length; i++) {
cell = document.createElement("td");
cell.textContent = ary[i];
row.appendChild(cell);
}
0370外部サイト見たくないという人のために (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/16(日) 14:20:43.40ID:n1lpDHLV0
> // 御教示いただいた insertCell を使用
> https://jsbin.com/fawowuv/edit?html,js,output

var ary = [ 1, 2, 3 ];
var e = document.getElementById("target");
var row = document.createElement("tr");
var cell = {};

e.appendChild(row);

for (var i = 0; i < ary.length; i++) {
cell = row.insertCell();
cell.textContent = ary[i]
}

> // one-liner
> https://jsbin.com/dowewag/edit?html,js,output

var ary = [ 1, 2, 3 ];
var e = document.getElementById("target");
var row = document.createElement("tr");

e.appendChild(row);

for (var i = 0; i < ary.length; i++) {
row.insertCell().textContent = ary[i]
}
0371Name_Not_Found
垢版 |
2019/06/16(日) 14:21:21.02ID:???
読み返してみても、>>353に触れてるのは本人だけだった
なんかズレてる気がするなあ…
0372Name_Not_Found
垢版 |
2019/06/16(日) 14:22:11.37ID:???
なんでcellわざわざ{}で初期化してるの?
0374Name_Not_Found
垢版 |
2019/06/16(日) 14:25:22.97ID:???
何も考えてないから。
動くコードをそのまま真似して、動けばOKで終わるやつはそうなる
0375Name_Not_Found
垢版 |
2019/06/16(日) 14:25:48.45ID:???
>>373
ライブラリはネイティブコードで書かれているんですよw
0376Name_Not_Found
垢版 |
2019/06/16(日) 14:28:53.77ID:???
>>375
知ってるよ
でも、>>365に対する反論で「手動が無駄」と彼は主張してる
それに対してライブラリを勧めるのはおかしい
0377Name_Not_Found
垢版 |
2019/06/16(日) 14:32:21.24ID:???
> それに対してライブラリを勧めるのはおかしい

理由は?
0378Name_Not_Found
垢版 |
2019/06/16(日) 14:33:58.18ID:???
>>377

>>373を見ればわかるように、
ライブラリを勧めるのがおかしいのは、ネイティブじゃないから

でも、>>376
ライブラリはネイティブであることを認めた

こういう矛盾を平気でするやつってこと
0379Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/16(日) 14:34:28.84ID:n1lpDHLV0
ん…

>>349 って「サニタイズは必要ない」と保証されてます?
0380Name_Not_Found
垢版 |
2019/06/16(日) 14:34:30.14ID:???
あぁ、相手にしない方がいいですね。
それかちょっとからかってやるとかw
0383Name_Not_Found
垢版 |
2019/06/16(日) 14:35:45.89ID:???
>>348
> const arr = [1,2,3];
> // 文字列で作る
> const str = arr.map(v => `<td>${v}</td>`).join('');

サニタイズしろボケ
0384Name_Not_Found
垢版 |
2019/06/16(日) 14:36:23.53ID:???
>>382
そりゃネイティブじゃなくて、DOM APIでやれば遅いだろうね
0386Name_Not_Found
垢版 |
2019/06/16(日) 14:37:35.84ID:???
VirtualDOMがなんのためにできたのか?
どういう技術なのかわかってないやつが多い

遅いDOM APIを使わないで、JavaScriptネイティブ(=文字列操作)でやるから速いんだが
0387Name_Not_Found
垢版 |
2019/06/16(日) 14:38:05.58ID:???
>>384
> そりゃネイティブじゃなくて、DOM APIでやれば遅いだろうね

え…、DOMってネイティブじゃなかったのか…
0388Name_Not_Found
垢版 |
2019/06/16(日) 14:38:16.05ID:???
>>385
違いますが、君は「前スレで散々、暴れた奴」に
「敵対する奴」ってことでFAですねw
0389Name_Not_Found
垢版 |
2019/06/16(日) 14:38:54.84ID:???
>>387
当たり前だろw
JavaScript(ECMAScript)のどこにもDOM APIは定義されてない
0390Name_Not_Found
垢版 |
2019/06/16(日) 14:39:21.81ID:???
VirtualDOMも最終的にはDOM APIで操作してるんだがな
タイミングを理解している奴はDOM APIで書いても速い
0391Name_Not_Found
垢版 |
2019/06/16(日) 14:40:57.86ID:???
>>390
今重要なのはDOM APIは遅いという事実と
遅いDOM APIを使わずにできることは
DOM APIを使わないほうが速いという事実です。
0392Name_Not_Found
垢版 |
2019/06/16(日) 14:41:36.76ID:???
ここマウント取りたがる奴が多いな
無自覚な荒らし
0393Name_Not_Found
垢版 |
2019/06/16(日) 14:42:22.27ID:???
>>391
では、DOM APIを使わずに書いてみてくれ
0394Name_Not_Found
垢版 |
2019/06/16(日) 14:43:42.71ID:???
DOM APIには「速い書き方」と「遅い書き方」がある、だと思ってた
0395Name_Not_Found
垢版 |
2019/06/16(日) 14:51:53.66ID:???
速いほうが良いとは限らないだろ
俺の会社のPC前任者が訳のわからないソフト入れてて遅かったお陰で俺だけ最新のに買い替えて貰ったし
0396Name_Not_Found
垢版 |
2019/06/16(日) 14:55:54.04ID:???
>>347
すでに書いていますが?

お題 (>>347)
> 配列内の要素から、簡単に、HTML の<td> タグを作るような方法が、ありませんか?

答え (>>349)
// lodashで作る 2
var compiled = _.template("<% _.map(ary, function(i) { %><td><%- i %></td><% }); %>");
const str = compiled({'ary': ary});


このスレってお題すらちゃんと読めない人が多いんですよねぇw
0397Name_Not_Found
垢版 |
2019/06/16(日) 14:56:25.12ID:???
間違えた
>>393
すでに書いていますが?

お題 (>>347)
> 配列内の要素から、簡単に、HTML の<td> タグを作るような方法が、ありませんか?

答え (>>349)
// lodashで作る 2
var compiled = _.template("<% _.map(ary, function(i) { %><td><%- i %></td><% }); %>");
const str = compiled({'ary': ary});


このスレってお題すらちゃんと読めない人が多いんですよねぇw
0398Name_Not_Found
垢版 |
2019/06/16(日) 14:57:20.58ID:???
>>395
> 速いほうが良いとは限らないだろ

そりゃそうだな。開発効率のほうが重要
0400Name_Not_Found
垢版 |
2019/06/16(日) 15:02:10.61ID:???
>>364に書いてあるだろ。ほんと呆れるわ

>>360
https://lodash.com/docs/4.17.11#template

// Use the HTML "escape" delimiter to escape data property values.
var compiled = _.template('<b><%- value %></b>');
compiled({ 'value': '<script>' });
// => '<b>&lt;script&gt;</b>'
0401Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/16(日) 15:10:41.92ID:n1lpDHLV0
>>381
const ary = ["a<br>b"];
let str = $.map(ary, function(i) { return "<td>" + i + "</td>"; }).join("");
console.log(`jQuery_1: ${str}`);

str = $.map(ary, i=>`<td>${i}</td>`).join("");
console.log(`jQuery_2: ${str}`);

str = _.map(ary, i=>`<td>${i}</td>`).join("");
console.log(`lodash_1: ${str}`);

let compiled = _.template("<% _.map(ary, function(i) { %><td><%- i %></td><% }); %>");
str = compiled({'ary': ary});
console.log(`lodash_2: ${str}`);

…なるほど…
0402Name_Not_Found
垢版 |
2019/06/16(日) 15:13:51.36ID:???
>>400
ライブラリ依存でDOM APIとの前方互換性は排除した形か
もうわかったからこれ以降、書かなくていい
0403Name_Not_Found
垢版 |
2019/06/16(日) 15:18:17.43ID:???
>>401
それも指摘したとおり

>>348
> const arr = [1,2,3];
> // 文字列で作る
> const str = arr.map(v => `<td>${v}</td>`).join('');

サニタイズしろボケ
0405Name_Not_Found
垢版 |
2019/06/16(日) 16:22:02.10ID:???
やはり、完全ワッチョイ化が必要だな
0406Name_Not_Found
垢版 |
2019/06/16(日) 16:39:42.51ID:???
質問(>>347)が読めない奴は消えてなくなればいいのに

> jQuery よりも、出来れば、素のJS が良いです
0409Name_Not_Found
垢版 |
2019/06/16(日) 16:43:02.36ID:???
lodashはそりゃOKに決まってるよ。
質問者がその名前を出してるんだから
今回はライブラリはOK
0410Name_Not_Found
垢版 |
2019/06/16(日) 16:46:06.85ID:???
>>347
console.log( ary.map(v => '<td>' + String(v) + '<td>').join('') );
0411Name_Not_Found
垢版 |
2019/06/16(日) 16:47:32.23ID:???
あ、もうそのまんま回答されてた
0412Name_Not_Found
垢版 |
2019/06/16(日) 17:17:18.96ID:???
出来ないやつってことねw
0413Name_Not_Found
垢版 |
2019/06/16(日) 17:24:29.02ID:???
>>305の(2)ってどなたか説明できませんか?
アドレス同士の比較で高速なのならなんで'文字列'(1回目)と'文字列'(2回目)の===がtrueなのかサッパリ。
'文字列'(1回目)と'文字列'(2回目)は別のアドレスにメモリ割り当てられてるんじゃないの?それだとtrueはおかしくありません?
それともまさか===なのに一文字づつ比較してるわけじゃないよね?
0414Name_Not_Found
垢版 |
2019/06/16(日) 17:38:38.65ID:???
>>413
もう答えられてなかったっけ?
本人か成りすましか知らんけど
0416Name_Not_Found
垢版 |
2019/06/16(日) 17:51:51.84ID:???
数日放置して忘れた頃にレスが来るのは悪質だわ
0417Name_Not_Found
垢版 |
2019/06/16(日) 17:59:00.83ID:???
話題をすり替えようとする手
0418Name_Not_Found
垢版 |
2019/06/16(日) 18:02:03.49ID:???
>>417
勝手に質問をねつ造されても迷惑だわ
解決報告もせん奴だし、張り合いがない
0419Name_Not_Found
垢版 |
2019/06/16(日) 18:10:13.42ID:???
本当に解決しようとするなら、回答に対して「〜が分かって、〜は〜まで理解できたが、〜が分からん」とか自分で切り分けして返信しようとするもんだ
それがないって事はたいして重要な問題でもないんだろうさ
0420Name_Not_Found
垢版 |
2019/06/16(日) 18:13:05.40ID:???
>>415
それ>>305の(2)の回答じゃないじゃないですか…
ウンチクじゃなくて回答下さいよ
0421Name_Not_Found
垢版 |
2019/06/16(日) 18:15:03.77ID:???
>>420
君に理解できない事が分かっただけでも良かったじゃないか
0422Name_Not_Found
垢版 |
2019/06/16(日) 18:16:55.12ID:???
分からないなら絡んでくるなよ
0423Name_Not_Found
垢版 |
2019/06/16(日) 18:18:18.11ID:???
図々しい奴だな
「わからないんですかと煽っても無駄です」のテンプレを思い出した
0425Name_Not_Found
垢版 |
2019/06/16(日) 18:44:18.99ID:???
>>413
1文字ずつ比較してるに決まってるでしょ
それにJSにアドレスという概念はない
0426Name_Not_Found
垢版 |
2019/06/16(日) 18:53:54.80ID:???
>>425
つまり
let a = 'abc', b = 'abc';
a === b
としたときも
let a = 'abc';
let b = a;
a === b
としたときも、
'abc'の一文字づつ比較されてすべて等しかったからtrueが返されてると、そういうことですかね?
0427Name_Not_Found
垢版 |
2019/06/16(日) 19:37:07.09ID:???
型を限定した配列を簡単に作成する方法はありますか。
例えば、String型しか代入できず、String型以外を代入したらTypeErrorを返す配列、とか。
0428Name_Not_Found
垢版 |
2019/06/16(日) 19:43:51.15ID:???
>>426
一文字ずつ比較するとかそういうロジック的なことは仕様にはない
とにかく同じ文字コード列ということが確認できればtrueが帰る
そこでアドレスの一致を利用するかどうかはエンジンの問題

君もいい加減分かったほうがいい
仕様に沿う実装方法なんて幾つもあるということ
エンジンは最適化もしないといけないし仕様のステップどおりに実装してるわけでもない
仕様から期待される挙動と同等の挙動ができるように実装されている
0429Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/16(日) 19:52:04.62ID:n1lpDHLV0
>>427
const i = 1;
let u;
const b = true;
const o = {};

console.log(typeof i);
console.log(typeof u);
console.log(typeof b);
console.log(typeof o);
0430Name_Not_Found
垢版 |
2019/06/16(日) 19:53:26.19ID:???
>>429
配列ではないようですが、どういう意味でしょう?
0431Name_Not_Found
垢版 |
2019/06/16(日) 20:00:22.90ID:???
>>427
Proxyを使うといい。簡単に作るとこんな感じ
ary = new Proxy( [ ], { defineProperty (self, key, desc) {
if ( typeof desc.value != 'string' ) throw new TypeError( 'value is not a string' )
return Object.defineProperty( self, key, desc )
} } )
あと必要ならlengthをケアすればいい
0432Name_Not_Found
垢版 |
2019/06/16(日) 20:12:49.44ID:???
>>431
情報ありがとうございます。
その方向性だと、最終的には、ユーザ定義の class を作る事になりそうですね。

- Proxyでプロパティget/setを制御
- lengthを定義
- Array.prototype系メソッドを定義

この辺りを自前実装しなくてもビルトイン関数があるのではないか、と考えていましたが、未だに無さそうなのが残念です。
Number 型なら Int32Array がほぼ要件を満たすのですが。
0434Name_Not_Found
垢版 |
2019/06/16(日) 21:09:14.68ID:???
>>432
要件がよく分からんけど、>>431でもArrayのメソッド使えるよ
もし、mapとかsliceとかで返ってくる値なんかもProxyにしたいということなら
@@speciesを利用して

function StringArray( len ) {
 return new Proxy( len ? Array( len ) : [ ], {
  defineProperty (self, key, desc) {
   if ( typeof desc.value != 'string' && key != 'length' ) throw new TypeError( 'value is not a string' )
   return Reflect.defineProperty( self, key, desc )
  }
  ,get ( self, key, rec ) {
   if ( key == 'constructor' ) return { [Symbol.species]: StringArray }
   return Reflect.get( self, key, rec )
  }
 } )
}

みたいなの作ればいいと思うよ
これ以上なにか必要?
0435Name_Not_Found
垢版 |
2019/06/16(日) 21:18:33.14ID:???
Int32Arrayは速くなるのに、
それは逆に遅くなるのが嫌だな
0436Name_Not_Found
垢版 |
2019/06/16(日) 21:31:57.45ID:???
Int32Arrayは数値以外でも例外出さないじゃん
例外出さなくてキャストしてほしいのなら
設定は許して値を利用する直前に変換掛けるか、値を利用するときに""+でもした方が良いのでは?
0437427
垢版 |
2019/06/16(日) 22:11:39.74ID:???
>>434
要件をくみ取って頂いてありがとうございます。
私が期待する要件をほぼ満たしていました。
Reflect.get や Symbol.species は未知の分野だったので、学習します。

> これ以上なにか必要?

今思いつく範囲では下記がありますが、これ以上甘えるわけにはいきませんので、自分で書きます。

- new StringArray した際の [[Prototype]], @@toStringTag を StringArray 相当に
- 扱える引数を Array もしくは Int32Array 相当に Int32Array -- ex: new StringArray('a', 'b'), new StringArray(['a', 'b'])

元々、ヒントを頂ければ十分と考えていたので、ここまでコードを書いて頂けるとは思ってもいませんでした。
お世話になりました。

---

当初の質問の意図は、「Int32Array に代わる、ビルトイン関数はないか」というものでした。
Number 型だけでなく、String 型, Boolean 型, Object 型など、汎用的に使える配列用コンストラクタがあれば、コーディングの幅が広がると考えました。
Object 型には WeakMap がありますが、列挙不可能ですし、new Map は配列と比較してメソッドが圧倒的に少ないようです。
new Array か new Map を基本インターフェースとして独自classを作る事を考えましたが、ビルトイン関数があれば更に良いと考えたのが質問のきっかけです。
現状では独自コンストラクタを作成するしかないと結論しますが、何らかのビルトイン関数をご存知の方がいらっしゃいましたら、教えて頂けると助かります。

※ちなみに、>>435は私(質問者)ではありません。
0438Name_Not_Found
垢版 |
2019/06/16(日) 22:22:44.97ID:???
ES2015以前からTypedObjectの提案があるけど何回もポシャってる
https://github.com/dslomov/typed-objects-es7
数値型はバイナリを扱うために必要だとしても
基本的にはJSではキチキチに制限するよりもそれっぽく扱っていったほうが良いと思う
0439Name_Not_Found
垢版 |
2019/06/16(日) 22:26:48.61ID:???
まあディズニーランド来て何でスパイダーマンライドが無いんだと喚いてるようなものだからな。USJ行けと。
0440427
垢版 |
2019/06/16(日) 22:55:23.32ID:???
>>438
> ES2015以前からTypedObjectの提案があるけど何回もポシャってる
そういう動きがあったのですね。
ポシャった理由が気になります…。

> 基本的にはJSではキチキチに制限するよりもそれっぽく扱っていったほうが良いと思う
Int32Array が ToNumber しているように、TypeError を返すよりも型変換した方がJSらしい、というような思想は理解できます。

ただ、コードを書いていく上で制限をかけた方がパターン数が減って都合が良い事はあると思います。
例えば、変数には一つの型を決めるコーディング規約が一般的ですが、これは受け取る変数の型を一つに限定する事で、想定される変数の組み合わせを少なくする効果があります。
どんな型が来ても良い設計にすると、7つの型全てを考慮しなければなりませんが、一つの型になれば、アルゴリズムを考えるコストは1/7です。
同じ理由で配列の値に期待される型を一つに限定する事で、考えるコストを減らす事が出来ます。
0442Name_Not_Found
垢版 |
2019/06/16(日) 23:33:37.22ID:X+WthsNM
言語自体はだいたいわかったけど仕事の真似事みたいなことがしたい
なにをしたらいい?
0443Name_Not_Found
垢版 |
2019/06/16(日) 23:44:38.37ID:???
スーパー初心者です
引数について質問なのですが
(とあるページのコードです)

const func = ({ hoge = 'foo' } = {}) => console.log(hoge);
func(); // 'foo'
func({ hoge: 'bar' }); // 'bar'

3行目のように「何らかの値をオブジェクトや配列にして渡す」という場合は
そのオブジェクトや配列を定義しておく必要ないんですか?
0444Name_Not_Found
垢版 |
2019/06/17(月) 02:46:32.40ID:???
>>443
一行目の関数定義でデフォルト引数設定してあるからね。
const func = ({ hoge}) => console.log(hoge);
ならhogeプロパティ持ってるオブジェクトを引数に与えないとエラー。
const func = ({ hoge = 'foo' }) => console.log(hoge);
でhogeプロパティ持ってないオブジェクトでもOKに。hogeのデフォルト値に'foo'を指定してあるから。
const func = ({ hoge = 'foo' } = {}) => console.log(hoge);
でオブジェクトすら与えなくてもよくなる。デフォルト引数に空オブジェクト{}を指定してあるから。その後はひとつ上と同じ。
0445347
垢版 |
2019/06/17(月) 04:04:33.63ID:???
皆さん、多くの回答を、ありがとう!

確かに、ERB みたいな、テンプレートファイルじゃなく、
JavaScript(JS) ファイル内の配列から、簡単に要素を作りたいから、
文字列から要素を作るよりも、JS のメソッドで、要素を作った方がよいかも

map みたいなもので、1行で書けて、ループの記述を排除できれば、うれしいです。
可読性も高い方がよい

でも、同じ手法を、3回使うので、テンプレートエンジンでも良いのか

それと、配列内の数値は、他者からの入力ではなく、自分で用意したものなので、サニタイズは不要です

DOM 操作は遅いけど、createDocumentFragment で、まとめてDOM に追加すれば、
1回になるから、速いのでは?
0446Name_Not_Found
垢版 |
2019/06/17(月) 06:25:08.65ID:???
速いっていうのが何を大事にしてるのか良く分からん
実際大事なのはUXであって処理の速さではない
処理を分割したほうが良いという場合も多分にある
0448Name_Not_Found
垢版 |
2019/06/17(月) 06:53:18.27ID:???
str変数にHTMLをためていって、最後にinnerHTMLをするよりも
div.innerHTML += で変更していくほうが速いのか?

createDocumentFragmentを使うほうが遅くなるんだな
0449Name_Not_Found
垢版 |
2019/06/17(月) 06:58:51.55ID:???
パーサーとレイアウトは非同期で一部マルチスレッド化されてるんだから
そのときの他の処理の状況にもよるし何が速いとか言うことはできない
0450Name_Not_Found (オッペケ Sra3-1W9y)
垢版 |
2019/06/17(月) 08:10:36.67ID:5lEvkncvr
innerHTML += のような、既存DOMの参照を破壊するコードは、選択肢にしてないな
template要素を使う事が多い
0451Name_Not_Found
垢版 |
2019/06/17(月) 12:57:16.60ID:???
>>440
あらゆる型毎にコードを用意する必要なんかなくて、ただ欲しい型に変換すればいいんだからあまりコストはかからないと思うよ
numberを期待してるところにオブジェクトが来ても、もしかするとvalueOfが定義されてるかもしれないでしょ?
numberを期待してるところにbignumが来たらそれで弾くっていうのも勿体ない
JSはスクリプト言語でもあるし、基本的に来る値は寄越した方に責任があると思う
だから未知のものに怯えずに取り敢えず来たものは使おうとしてみるっていうのは悪くないと思う
0452Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/17(月) 14:39:51.66ID:a6fecDOj0
>>445
> map みたいなもので、1行で書けて、ループの記述を排除できれば、うれしいです。

ループをそこまで避けたがる理由、よく分からん…コーディング規約???
可読性についても >>352 さんのような意見もあるし、チーム構成によるかも知れず、保守担当(考えだしたらキリないな)
規約に関して言えば、DOM 操作に関してどうなっているものやら…?
0453Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/17(月) 14:42:11.88ID:a6fecDOj0
何にしても実装依存…?

>>447
ウチではこんな結果
https://i.imgur.com/SHVXElj.png
IE11 は "innerHTHL += " の部分の途中で「この操作を完了するための十分な記憶域がありません」とギブアップ。

do ... while / while() {} / for
の速度比較やってるサイトも存在したような気もする

他には、jQuery で、古いIE向けの div#foo とか div.foo とかのハンドオプティマイズが逆効果になっているとか何とか


x86/x64 なら「文字列の追加処理」のコストが高いのは当然のような気がしないでもない
都度 realloc() のような処理をして、ヒープ領域からメモリ領域を確保してそう
innerHTML の実装は分からんけど、大きめのバッファを確保しているのかも知れず、状況次第で innerHTML 変更のコストもバカにならないかも


do ... while で100回やるとき

let i = 100;
do {
i--;
console.log(i);
} while(i)

とか書くのは可読性の面で駄目なんだろうなあ…
0455Name_Not_Found
垢版 |
2019/06/17(月) 22:44:19.58ID:???
>>454
そのコードって本当にdiv変数見えてるの?
0456Name_Not_Found
垢版 |
2019/06/18(火) 00:25:05.62ID:???
>>444
ありがとうございます!
すいません質問の仕方がよくなかったです。
デフォルト引数とかよりももっともっと低級の質問でした…

const fn = (obj)=>{

const keys = Object.keys(obj);

for(let i = 0; i < keys.length; ++i) {

console.log(keys[i]);

}

};


fn({a:0,b:1,c:2,d:3,e:4,f:5});

上のコードで関数fnに渡されているオブジェクトは…

const obj = {a:0,b:1,c:2,d:3,e:4,f:5};
fn(obj);

のように定義してから渡さなくてもいいの?というのが疑問なんです。
0457Name_Not_Found
垢版 |
2019/06/18(火) 00:39:48.30ID:???
>>456
はい。直接書いちゃって構いません。
コードの分かりやすさや、効率のために変数に入れてから使う方がよいことももちろん多くはありますが、少なくとも文法上はまったく問題なく、またよくそのように書かれています。
0458Name_Not_Found
垢版 |
2019/06/18(火) 01:02:59.23ID:???
>>457
これでモヤモヤが晴れました!
ありがとうございました。
0459Name_Not_Found
垢版 |
2019/06/18(火) 01:10:59.26ID:???
>>456
ググるときは 無名の変数とか無名のオブジェクト でな(´・ω・`)
0460Name_Not_Found
垢版 |
2019/06/18(火) 01:52:58.75ID:???
>>459
いい加減なこと言うな!
無名の変数とやらの具体例を出してみろ!
0461Name_Not_Found
垢版 |
2019/06/18(火) 02:14:52.33ID:???
>>460
ごめんそうだね
何で変数って言ったんだろう俺
0463Name_Not_Found
垢版 |
2019/06/18(火) 02:23:28.15ID:???
分かればいいんだ…
ビックリマーク付けてすまなかった…
0465Name_Not_Found
垢版 |
2019/06/18(火) 03:03:19.95ID:???
parseIntって、整数にするやつって習ったのだけど、
「4.956…」とかの数字を「4」って感じに小数点以下を切り捨てるのは、また別のメソッドですか?
切り捨ては、Math.floorしか方法はないですか?
0466Name_Not_Found
垢版 |
2019/06/18(火) 06:34:06.79ID:???
parseIntは文字列を単位付き整数値としてパースするものでしょ
Math.floorは負の無限大方向への丸めであって切り捨てではない
切り捨てはMath.trunc
0467Name_Not_Found
垢版 |
2019/06/18(火) 10:58:35.38ID:???
>>465
"mdn Math.floor" というキーワードでググったら良かったかも。
0468Name_Not_Found
垢版 |
2019/06/18(火) 11:45:31.71ID:???
ページを開いた時、マウスの座標を取得する方法ってないんでしょうか?
mousemoveイベントで取得する方法だとページを開いてから1ピクセルでもマウスを動かすまでは取得できなくて不便だなぁと困っております
0469Name_Not_Found
垢版 |
2019/06/18(火) 12:28:57.10ID:???
そもそもタッチ系のデバイスだと
タッチされた後マウスが動くまでポインタが消えるものもあるし
そう考えると開いたときのマウス位置を取るってことは、開かれる前の最後に起こったイベントを取りたいってことで
越権行為だということが分かるよね
0470Name_Not_Found
垢版 |
2019/06/18(火) 12:41:38.04ID:???
どなたかご存じの方いましたら教えてください。
DOMとかいうやつのdocumentっていつ作られるんでしょうか?
function() { document.getElementById('hoge'); } // documentを宣言してないけど使える
documentがいつ、どこで、どんな風に作られるのか、技術的な仕様はあるのでしょうか?
仕様があれば、どこの仕様書のどの部分に書かれてるのか教えて下さい。
それともdocumentが作られるかどうかは(仕様がなく)ブラウザによってまちまちなのでしょうか?
0472Name_Not_Found
垢版 |
2019/06/18(火) 13:20:01.33ID:???
そこ気になるのにwindowは気にならないのかw
0473Name_Not_Found
垢版 |
2019/06/18(火) 13:33:50.40ID:???
windowが作られるのはウインドウが出来た時に決まってるじゃん
0474Name_Not_Found
垢版 |
2019/06/18(火) 13:45:47.52ID:???
ウインドウって?ブラウザのこと言ってる?タブ複数開いたらどうなる?
0476Name_Not_Found
垢版 |
2019/06/18(火) 14:20:23.70ID:???
そして今はブラウザの実装の話なんかしてない
0477Name_Not_Found
垢版 |
2019/06/18(火) 14:20:46.74ID:???
つまり関係ない話にすり替えようとするな
0478Name_Not_Found
垢版 |
2019/06/18(火) 14:26:49.06ID:???
>>470
考え方が逆かも
documentはDOMのエントリー点となるインターフェイス
documentがあるからDOMが存在できる
HTMLだけじゃなくXMLでもSVGでも一緒

なのでdocumentが作られるのはDOMができる前

documentはDocument()コンストラクタから作られる
試しにnew Document()ってやってみるといい

いやーこんな説明したの
20年ぶりかもw
0479Name_Not_Found
垢版 |
2019/06/18(火) 15:02:48.33ID:???
答えた気になっているようだが

> documentがいつ
→答えていない

> どこで
→答えていない

> どんな風に作られるのか
→答えていない

> 技術的な仕様はあるのでしょうか?
→答えていない

> 仕様があれば、どこの仕様書のどの部分に書かれてるのか教えて下さい。
→答えていない
0480Name_Not_Found
垢版 |
2019/06/18(火) 15:08:18.13ID:???
>>473
documentが作られるのはドキュメントが出来た時に決まってるじゃん
0482Name_Not_Found
垢版 |
2019/06/18(火) 16:09:01.45ID:???
DOMはESの枠外なのにESの仕様にはない!(キリッ って当たり前じゃんw
0483Name_Not_Found
垢版 |
2019/06/18(火) 16:33:12.39ID:???
documentが必ず存在するってことは、
jQueryの$(document).on(〜)は
body終了直前じゃなくても、$(function() {〜})の
中に入れなくても問題ないってことなのかな?
0484Name_Not_Found
垢版 |
2019/06/18(火) 17:10:40.82ID:???
>>483
問題があるかどうかは一般的には言えない
body終了直前に書くべきかどうかは色々な議論がある
0485Name_Not_Found
垢版 |
2019/06/18(火) 17:44:23.98ID:???
>>484
じゃあ問題があるブラウザは今のところ
見つかってないってことでいい?
0486Name_Not_Found
垢版 |
2019/06/18(火) 18:26:16.91ID:???
そもそもhead内でも動くでしょーが
0487Name_Not_Found
垢版 |
2019/06/18(火) 18:38:24.32ID:???
ブラウザにこだわっててちょっとウケるw
0488Name_Not_Found
垢版 |
2019/06/18(火) 19:21:18.08ID:???
>>479
これでいいのかえ?

> documentがいつ
→ DOMが出来る前

> どこで
→ ブラウザなどの実行環境で

> どんな風に作られるのか
→ Documentコンストラクタのインスタンスとして

> 技術的な仕様はあるのでしょうか?
https://dom.spec.whatwg.org/#dom-document-document

> 仕様があれば、どこの仕様書のどの部分に書かれてるのか教えて下さい。
https://dom.spec.whatwg.org/#dom-document-document
0490Name_Not_Found
垢版 |
2019/06/18(火) 21:20:37.84ID:???
>>466-467
ありがとうございます。
perseIntは逆にMDNの説明を読んでも、なんだかよく分かりませんでした。
全角数字を数値に変えるってこと?くらいでした。

しかし、mathも記事が多過ぎで、truncと教えてもらっておいてよかったです!
なぜ、floorで習ったのかは分からないですが、floorのこともわかった気がします。
ありがとうございます!
0492Name_Not_Found
垢版 |
2019/06/18(火) 21:58:45.59ID:???
>>490
parseIntは数値っぽい文字列を数値に変えるので
0x10みたいな、文字も変換してしまう。
まあ、バグやな
0493Name_Not_Found
垢版 |
2019/06/18(火) 22:05:07.87ID:???
>>490
四捨五入はfloorが正しいで。
10引いてから四捨五入するのも
四捨五入してから10引くのも
同じだと思うやろ?
0495Name_Not_Found
垢版 |
2019/06/18(火) 22:15:55.09ID:???
「仕様通りでも俺の期待に反したからバグ!」
0496Name_Not_Found
垢版 |
2019/06/18(火) 22:26:14.83ID:???
>>493
まてまて
四捨五入ってのは
0〜4は切り捨て、5〜9は切り上げ
だから四捨五入なんじゃねえの?
0497Name_Not_Found
垢版 |
2019/06/18(火) 22:28:36.53ID:???
>>496
なんのために四捨五入するかだろ
半分を境目として、少ないならば、少ない方へ丸めるのが四捨五入だ
0498Name_Not_Found
垢版 |
2019/06/18(火) 22:32:49.29ID:???
税金計算とかで五捨六入とかあったな
0500Name_Not_Found
垢版 |
2019/06/18(火) 22:40:50.60ID:???
>>497
でもfloorって5より上でも切り捨てちゃうじゃん
roundなら5未満だけど
0503Name_Not_Found
垢版 |
2019/06/18(火) 22:46:03.80ID:???
マイナスの世界でも切り捨ては
少ない値の方に行くべきだろ
0505Name_Not_Found
垢版 |
2019/06/18(火) 22:50:44.59ID:???
>>502
floorで四捨五入って出来なくね?って話
自分で数字確かめてから
5未満ならfloor、以上ならceilとかするならわからんでもないけど
0506Name_Not_Found
垢版 |
2019/06/18(火) 23:02:09.10ID:???
2   1   0   -1   -2
  1.1  0.1  -0.9


1.1なら1、0.1なら0なんだから、-0.9なら-1だろ
0507Name_Not_Found
垢版 |
2019/06/19(水) 01:26:22.75ID:???
四捨五入の場合は桁に注意、だろうなあ

小数第二位とかで処理するときは
「文字列→数値→そのまま Math.round() で処理」だと誤差が出る可能性がある

'^[0-9][0-9]*(\.[0-9]*$|$)' が来る前提で
"." で split して 小数以下の必要な桁数を繋いで Math.round() するくらいしか思いつかないので
誰かもっと良い方法あったら補足して貰えるとありがたい
0508Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/19(水) 01:36:09.05ID:Dy76fnOX0
>>506
> -0.9なら-1だろ

そういう処理をする関数が古典BASICに存在した気がする
0509Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/19(水) 01:47:16.70ID:Dy76fnOX0
var numArray = ("" + number).split("e");

は "1e-1" とかの処理か…把握
0510Name_Not_Found
垢版 |
2019/06/19(水) 02:09:33.24ID:???
インテルドライバーサポートアシスタントみたいなのって
どうやって作るんですか?
0511Name_Not_Found
垢版 |
2019/06/19(水) 02:47:27.56ID:???
mathとかの話を質問した者です

>>492
ありがとうございます。
その例えは、かなりしっくりきました!

math.floorは四捨五入というよりも、
何か数字があるなら「より、0に近付ける」みたいな感じみたいですね。
今回、自分はmath.floor(math.random(*6)+1);で、1〜6までの乱数に応じて、サイコロの目を振りたかったのです。
書き方、間違えてるかもです。
でも、多分、統計を取ったらfloorじゃなくて、truncにしないともしかしたら偏りが出そうですね。
0512Name_Not_Found
垢版 |
2019/06/19(水) 02:49:12.56ID:???
ちょっとまだ、引数とか変数とか取得とか、正しく使えてないかもなので、日本語変だったら、すみません
0513Name_Not_Found
垢版 |
2019/06/19(水) 02:58:28.48ID:???
あと、それで、じゃあなんで、parseIntの話が出てきたかと言うと、Math.randomだと0.486……とかとなるので、
「+1する」と習ったのですが、「それなら*10して、小数点以下を切り捨てたらいいのでは?」と思いまして、誤解ではありましたが、parseIntが「小数点のない正数に変換する」というものだと思っていたので、

var num = Math.floor(Math.random()+1);



var num = Math.random()*10;
parseInt(num);

のどっちも同じ様に使えるのか?
と疑問だったのです
0515Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/19(水) 03:11:11.61ID:Dy76fnOX0
var sai = function() {
return Math.floor((Math.random()*6))+1;
}

for (var i = 0; i < 20; i++){
console.log(sai());
}
0516Name_Not_Found
垢版 |
2019/06/19(水) 03:14:29.59ID:???
>>507
桁上げて、四捨五入して、桁戻すのじゃダメかな
0517Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/19(水) 03:46:05.21ID:Dy76fnOX0
\d も + も使えるのですね
それなら ^\d+(\d$)$ を split して小数点以下を拾えなくもない…けれども IEEE 754-2008 を正確に理解していないので正確なコードの書き方わからんちん

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/round
の「よりよい解決策」が参考になるかも知れんけど、正確な理解が出来てないので何とも


+5 して自力で書く…のは車輪の再発明と言われそーだな
0519Name_Not_Found
垢版 |
2019/06/19(水) 05:12:39.92ID:???
>>511
マイナスにならないなら、floorもtruncも同じ。
数学的に正しいのはfloorで、小数点以下をなくすのがtrunc

> 1〜6までの乱数に応じて、サイコロの目を振りたかったのです。
lodashを使うほうが間違いがない

https://lodash.com/docs/4.17.11#random
> _.random(0, 5);
> // => an integer between 0 and 5

1〜6なら _.random(1, 6); だろう
0520Name_Not_Found
垢版 |
2019/06/19(水) 05:14:01.42ID:???
>>517
数値計算でできるものを文字列に変換して、
文字列処理をして、また数値に戻すのはダサすぎる
遅いし
0521Name_Not_Found
垢版 |
2019/06/19(水) 05:32:33.91ID:???
>>519
ありがとうございます!
便利そうなのですが、これはライブラリというのをインストールしないと使えないのですね。
凄く便利そうなのに…

このライブラリをインストールするというのは、
自分が使うのではなくて、htmlのscriptの中に書くのはよくないですよね?
当然、観覧者がインストールされてなければ使えないのですよね?
0522Name_Not_Found
垢版 |
2019/06/19(水) 05:37:32.90ID:???
<html>
<head>
 <script src="どこか/lodash.min.js"></script>
 <script>
  もうつかえる
 </script>
</htm>
0523Name_Not_Found
垢版 |
2019/06/19(水) 05:47:32.04ID:???
そんなにサクッと使えるものなのですね。
ユーザーさんに取り入れてもらえるものなら、良いものですね!
0524Name_Not_Found
垢版 |
2019/06/19(水) 05:57:04.62ID:???
あ!勘違いしてました!
ユーザーにライブラリをインストールしてもらうわけじゃなくて、自分のとこのサーバーに入れといて、呼び出すだけなのですね!
0525Name_Not_Found
垢版 |
2019/06/19(水) 06:12:04.05ID:???
自分のところに入れてもいいし、CDN使っても良い。
CDN使ったほうが速いが、CDNが落ちた場合に困る
0526Name_Not_Found
垢版 |
2019/06/19(水) 06:34:04.41ID:???
バカすぎ
欲しい範囲のランダム整数すらもライブラリに頼るようなら
そもそも完成物ごとどこかからコピペした方が良い
どうせコーディングできないのだから
0527Name_Not_Found
垢版 |
2019/06/19(水) 06:43:38.63ID:???
ちみちみ、作りたいのはランダム整数を取得する処理ではないよ?
ランダム整数を使った何かだ。
手段と目的を履き違えたらだーめだーめ
0528Name_Not_Found
垢版 |
2019/06/19(水) 10:04:41.34ID:???
それでもたかが
(Math.random()*6|0)+1
のためにlodashとか使うのは、ただのばか
0529Name_Not_Found
垢版 |
2019/06/19(水) 10:08:28.23ID:???
他にも使えばいいじゃん
0531Name_Not_Found
垢版 |
2019/06/19(水) 12:26:31.27ID:???
特定の手段を使いたいがために目的を増やすバカ
0532Name_Not_Found
垢版 |
2019/06/19(水) 12:54:00.98ID:???
>>519
> マイナスにならないなら、floorもtruncも同じ。
0.5 は何になる?

> 数学的に正しいのはfloorで、小数点以下をなくすのがtrunc
負の無限大への丸めが数学的な四捨五入?
0533Name_Not_Found
垢版 |
2019/06/19(水) 13:13:26.66ID:???
切り上げ/捨てって言葉を使うのをやめた方が混乱が少ないかもね

Math.floor()
引数より小さい最大の整数

Math.ceil()
引数より大きい最小の整数

Math.round()
引数を四捨五入した整数

Math.trunc()
引数の小数部分を切り飛ばした整数
0534Name_Not_Found
垢版 |
2019/06/19(水) 16:06:31.75ID:???
vanilla JS でのコードが既に出ているのに lodash を持ち出すってイミフ
パフォーマンスに有意な差があるかどうかは知らんけど
0535Name_Not_Found
垢版 |
2019/06/19(水) 16:09:34.27ID:???
>>528
Math.floor(Math.random()*6)+1



Math.floor(Math.random()*6|0)+1

の違いが良くわからん…
ビットごとの or 取って何が変わるんだろう
0536Name_Not_Found
垢版 |
2019/06/19(水) 16:23:32.68ID:???
>>534
もしかして、パフォーマンス以外で見るべき所がわからないの?
0537Name_Not_Found
垢版 |
2019/06/19(水) 16:35:18.82ID:???
>>536
知らんし分からんのだが
何を見るべきなのだろうか…?

複数人が関わるプロジェクトとかなら、規約の範囲に留めなければならないことくらいかなあ?
(そういうのなら既存のモノを import させたりしそうなものだが、そういう話が出て来ない時点で(ry
0539Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/19(水) 16:46:43.82ID:Dy76fnOX0
>>538
vanilla JS でも

var my_rand = function (max, min) {
Math.floor(Math.random()*(max-mix+1))+min
}
※エラー処理は省略している

を関数にブッ込めば可読性も似たようなものかと…
ビット演算の必要性は分からん
あとは名前汚染の危険性か

エラー処理については全体で統一的に処理する、か
この点が面倒なら lodash もアリか


個別の問題としては、前提条件不明なので何とも
0540Name_Not_Found
垢版 |
2019/06/19(水) 17:10:30.13ID:kfvjmMpy
>>535
整数化している
ビット演算はintegerだから
0541Name_Not_Found
垢版 |
2019/06/19(水) 18:19:03.76ID:???
>>540
なので、floorが無駄
ついでに32bitに丸めてる(デメリット)
0542Name_Not_Found
垢版 |
2019/06/19(水) 18:30:16.94ID:???
>>541
あ、でもちょっと結果変わる、のかな?
負の数だったときとか
0543Name_Not_Found
垢版 |
2019/06/19(水) 18:34:17.26ID:???
>>539
有名ライブラリだと、入社したばかりの人でも
前に使っていて知ってるってことがある
その場合に使い方を調べる必要がない。
オレオレライブラリだとそうはいかない
0544Name_Not_Found
垢版 |
2019/06/19(水) 19:35:06.38ID:???
とんでもないスパゲティコードって、
長年使われてきた自社製ライブラリもどきが原因のことがかなりあると思う
まあJavaScriptじゃそこまでの規模のに関わったこと無いけど
0545Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/19(水) 20:32:19.05ID:Dy76fnOX0
>>540
ふむ…

+( hoge ) とどう違うん?
0546Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/19(水) 20:35:49.19ID:Dy76fnOX0
ああなるほど
+( hoge ) だと数値化に過ぎない、と
0547Name_Not_Found
垢版 |
2019/06/19(水) 20:41:51.15ID:???
分かる人にはわかると思うけど、こういうのが
「可読性が低い」っていうんやで

このコードにはどういう意味があるんだ?ってみんなが思ってたら
コードレビューにならないだろ
0549Name_Not_Found (ワッチョイ 3f8f-bbbA)
垢版 |
2019/06/19(水) 20:49:31.48ID:Dy76fnOX0
>>547
> このコードにはどういう意味があるんだ?ってみんなが思ってたら
> コードレビューにならないだろ

この点は総論として同意できる

大昔に INT(RND(1)*6)+1 とか山ほど見てたからな…。
実務上でコレの慣例的表現が見られないらしいことにビックリだよ。。。


その意味では lodash はアリ、なのか
0550Name_Not_Found
垢版 |
2019/06/19(水) 21:02:33.13ID:???
|0にはなんにも異存はないけど
演算子の左右は1スペ空けてほしい…
0551Name_Not_Found
垢版 |
2019/06/19(水) 21:10:44.47ID:???
>>549
> その意味では lodash はアリ、なのか
そんなもん場合によるとしか言えんだろうな

> 大昔に INT(RND(1)*6)+1 とか山ほど見てたからな…。
このような主観からもわかるように、
山ほど見てきたから = じゃあ山ほど見てない場合はどうなんだ?って話

山ほど見てきた人が、この書き方を知らないわけがないので、
山ほど見てない人というのは確定

その人にlodashを使う回答をするのはありだし、それみて、その人が便利だと思ったのだから
lodashを使った回答をした意味があったということ
0552Name_Not_Found
垢版 |
2019/06/19(水) 21:23:31.67ID:???
山程見てなくても
これくらいは見てすぐ理解できるくらいの人を雇いたいなあ
現場では
0553Name_Not_Found
垢版 |
2019/06/19(水) 22:34:37.65ID:???
多くの場合 Date.now()%6+1 で良い件
0554Name_Not_Found
垢版 |
2019/06/19(水) 22:40:14.90ID:???
+ や |0 は熟練者なら大概知ってる
初心者をターゲットにするなら、勿論、使うべきではない
0557Name_Not_Found
垢版 |
2019/06/19(水) 22:50:06.15ID:???
よっしゃ!サイズ10の乱数の配列作ったろ!

Array.from({length:10},()=>Date.now()%6+1);
//=> [4, 4, 4, 4, 4, 4, 4, 4, 4, 4]

あ、あれ?

一方…
Array.from({length:10},()=>(Math.random()*6|0)+1);
//=> [4, 2, 5, 2, 4, 2, 5, 2, 6, 6]
0558Name_Not_Found
垢版 |
2019/06/20(木) 01:14:30.56ID:???
普通はこう。
a = Math.floor( Math.random( ) * 6 ); //=> 0〜5
a + 1; //=> 1〜6

「浮動小数点数 | 0」

これをよく見るけど、可読性も悪いし、
どういう意図なのか、わからないから、考え込まされる

書いた人の仕様(答え)は、読む人にはわからないから、
考えてもあくまで推測だから、正解とは言えない!

最初から答えがあるのだから、推測する時間が無駄!
0559Name_Not_Found
垢版 |
2019/06/20(木) 01:25:39.85ID:???
>>519-525
lodash
https://github.com/lodash/lodash

CDN もあるみたい

// Cherry-pick methods (つまみ食い)で、そのメソッドだけを読み込める?
var at = require( 'lodash/at' );

at.js だけを読み込めるのか?
0560Name_Not_Found
垢版 |
2019/06/20(木) 01:48:42.11ID:???
Math.floorも|0も可読性はたいして変わらんよ
_.random(1, 6)ならわかりやすい?
lodashのドキュメントなり読まなきゃ意味は分からんだろ

可読性いうなら、コードはどれでもいいからコメントつけろよ
0561Name_Not_Found
垢版 |
2019/06/20(木) 02:39:41.93ID:???
まあアンダースコア始まりの関数なら
アンダースコアかローダッシュだなってのはなんとなくわかるからいいでしょ
そんなに珍しいもんでもないし
関数名と前後のコードでだいたいわかるし
0562Name_Not_Found
垢版 |
2019/06/20(木) 05:57:21.72ID:???
> 可読性いうなら、コードはどれでもいいからコメントつけろよ
コードの可読性が悪いからコメントが必要になる。

コードとコメントの二箇所に同じことが書かれてるのはdryではないし
コメントがコードの内容を正しく示しているかレビューする必要がある
0563Name_Not_Found
垢版 |
2019/06/20(木) 06:00:02.00ID:???
> lodashのドキュメントなり読まなきゃ意味は分からんだろ

読まなきゃ意味がわからない = 読めば意味がわかる

オレオレライブラリだと覚えた所で他のプロジェクトで知識を
再利用できる可能性は低く、覚えても無駄になるが
有名なものであれば、知識を再利用できる
0564Name_Not_Found
垢版 |
2019/06/20(木) 06:41:45.92ID:???
>>557
そのような呼び出し方で上の結果にならないアルゴリズムである保証はMath.random関数にはない
Math.randomの実装がDate.nowを使っていても仕様に反しない
一度に沢山欲しいときは保証されているcrypto.getRandomValuesを使うこと
0565Name_Not_Found (ワッチョイ 2b8f-f3ih)
垢版 |
2019/06/20(木) 07:32:17.19ID:jeXdM+ZB0
hoge | 0 ) を使うことに関して、現にこれだけ議論がある訳だし
| 0 ) を使って良いか否か、コーディング規約に入れるべきかなあ

lodash を使う業務なら、議論の余地は無いだろうなあ


>>564
サイコロって話だから、乱数のエントロピーは Math.random() 程度で良いかと思って書きましたが
crypto.getRandomValues で「保証されている」と言い切られると若干違和感…
0566Name_Not_Found
垢版 |
2019/06/20(木) 08:27:57.86ID:???
このサイコロの目の6つが一定の回数の結果、最もバランスよく出るのが優れた正解ということになるのですかね?
習った先生の話だと、Math.floor(Math.random()*6+1)は比較的、6が出にくいだったか、出やすいだったか…と言ってた気がするのですよね。
まだ、習った範囲だとfor文とかで1000回とか、サイコロの結果を出す事までしか頭が回らないのですが、
きっと「1〜6までの数字を1000回出した結果、どの数字が何回出たか?」みたいのを出力する方法がありますよね
for文で1000回振って、ifで仕分けするみたいな感じですかね
0567Name_Not_Found
垢版 |
2019/06/20(木) 08:33:50.15ID:???
>>566
- Math.random()が返す範囲
- 6倍した時の範囲
この辺を頭の中で整理して考える作業が足りない
0568Name_Not_Found
垢版 |
2019/06/20(木) 09:38:14.69ID:???
サイコロなんだから回数なんか配列でインクリメントすればいいだけ
0569Name_Not_Found
垢版 |
2019/06/20(木) 09:38:56.09ID:???
配列でインクリメントすると困るだろ
0570Name_Not_Found
垢版 |
2019/06/20(木) 09:53:47.00ID:???
const counts = [...new Array(7)].fill(0);
for (let i = 0; i < 100000; ++i) {
counts[Math.floor(Math.random() * 6 + 1)]++;
}
console.log(counts); // [0, 16571, 16727, 16748, 16686, 16448, 16820]

まあ、普通は配列でやるよね
0571Name_Not_Found
垢版 |
2019/06/20(木) 12:40:45.89ID:???
>>565
cryptoの方は暗号学的な一定レベルの保証がある
Mathの方は実装者の考え方次第で下限が無い
どの程度の乱数か予想することもできないので程度という言葉は使えない
その辺りがどうでもいいと言うときだけMathの方を使う
0572Name_Not_Found
垢版 |
2019/06/20(木) 16:40:15.66ID:???
サイコロに関しては商業ゲーでもやらかした例がいくつかあるから侮れんよな
0573Name_Not_Found (ワッチョイ 2b8f-f3ih)
垢版 |
2019/06/20(木) 21:40:42.32ID:jeXdM+ZB0
>>571
https://jser.info/2016/01/27/math.random-xsfhit/

主要ブラウザの仕様は、おおむねこんなかんじ
crypto.getRandomValues はああいうことを「保証」すると言えるのか不明

…なお「10回振る」のを1000万回繰り返しても
Chrome / Firefox ともに1度も重複が無かった模様

Worker 以外の何らかの方法で複数スレッド作れば
マルチコアも活かせるんだろうけど未確認
0574Name_Not_Found (ワッチョイ 2b8f-f3ih)
垢版 |
2019/06/20(木) 21:43:30.43ID:jeXdM+ZB0
| 0

すると int32 (singed int) になる様子 @ Chrome / Firefox / IE11
Math.floor は uint64
0575Name_Not_Found (ワッチョイ 2b8f-f3ih)
垢版 |
2019/06/20(木) 22:18:05.54ID:jeXdM+ZB0
あと

JS 上では、ARM って big endian だったっけ
x86 / x64 は little endian だけど

uint64 / int64 の実装は今後どうなるか不明
BigUint64Array のサポート状況は MDN 等を参照されたし
(Chrome で似たようなドキュメントがあるかどうかは未確認)
0577Name_Not_Found
垢版 |
2019/06/21(金) 00:50:01.42ID:7UEK4Hac
test2
0578Name_Not_Found
垢版 |
2019/06/21(金) 06:25:25.98ID:???
Math.floorはdoubleを返すんだが
0581Name_Not_Found (ワッチョイ 2b8f-f3ih)
垢版 |
2019/06/21(金) 08:44:21.62ID:LzAKbx6F0
>>578
> Math.floorはdoubleを返すんだが

> 20.2.2.16 Math.floor ( x )
>
> Returns the greatest (closest to +∞) Number value that is not greater than x and is equal to a mathematical integer. If x is already an integer, the result is x.
>
> If x is NaN, the result is NaN.
> If x is +0, the result is +0.
> If x is ?0, the result is ?0.
> If x is +∞, the result is +∞.
> If x is ?∞, the result is ?∞.
> If x is greater than 0 but less than 1, the result is +0.
0582Name_Not_Found
垢版 |
2019/06/21(金) 11:02:48.23ID:???
Numberは倍精度浮動小数点なんだから、別にdoubleでもいいじゃん
つーか、その程度の突込みの為にわざわざ仕様だらだらコピペするなよ
0583Name_Not_Found
垢版 |
2019/06/21(金) 12:21:03.55ID:???
マウント取りたいんだろ
0584Name_Not_Found
垢版 |
2019/06/21(金) 19:14:28.40ID:???
>>580
趣旨は「仕様を参照」なんだが
初めから仕様を出してくれたなら、何もいわなかった
0585Name_Not_Found
垢版 |
2019/06/21(金) 21:40:30.71ID:???
間もなくES2019(ES10)が勧告されるってときにES6の仕様をリンク紹介してるやつ何なの?
もう丸4年も経ってるってことにそろそろ気付こうや
きっと中身があんまり変わってないと思ってるんだろうけど
特にここ2年くらいで冗長さを減らして読みやすくする試みがされてきてるから
ES6の仕様書にリンクする価値は全く無い

リンクする時は未来永劫残したい時は最新版、書き捨てで良い時はLS版
0586Name_Not_Found
垢版 |
2019/06/21(金) 21:44:05.17ID:???
ES6→10?
次の次の勧告いつになるんだろうね
0587Name_Not_Found
垢版 |
2019/06/21(金) 21:54:17.61ID:???
毎年あっただろ忘れたのか
0588Name_Not_Found
垢版 |
2019/06/21(金) 21:59:36.16ID:???
12月に追加機能を決めて6月に勧告という流れで毎年出る
したがって次のES2019は数日後
次の次のES2020は2020年6月勧告予定
もうLS版は2020になってる
0589Name_Not_Found
垢版 |
2019/06/22(土) 07:49:09.53ID:???
Math.floor が返すのは integer なのに
0590Name_Not_Found
垢版 |
2019/06/22(土) 12:40:53.83ID:???
Math.floor(Infinity) → Infinity
0591Name_Not_Found
垢版 |
2019/06/22(土) 12:59:17.77ID:???
>>581で言うintegerは整数という意味で型とは関係ないのにね
0592Name_Not_Found
垢版 |
2019/06/22(土) 14:40:31.00ID:???
我が名はインフィニティ、無限のメモリーなり。
0593Name_Not_Found
垢版 |
2019/06/22(土) 16:54:46.84ID:CEwL9SKA
tamper monkyで音をならしたい
以前書いたスクリプト↓でできるとおもうんだが、音声ファイルをどう呼び出せばいいのかわからない。
PC内のファイルにはアクセスできないよね?
フォントみたいにWeb上からよみだせないのかな?

function playSound() {
var audioElement = document.createElement("audio");
audioElement.src="pico2.mp3";
document.body.appendChild(audioElement);
audioElement.play();
} // ---
0594Name_Not_Found
垢版 |
2019/06/22(土) 16:56:13.49ID:CEwL9SKA
あ、tamper monkyってのは、ブラウザ上でユーザスクリプトを実行するためのchrome 拡張機能です
0596Name_Not_Found
垢版 |
2019/06/22(土) 18:22:02.07ID:???
>>593
base64にエンコードしてjsコード内に埋め込んでから>>595するって手もあるぞ
0597Name_Not_Found
垢版 |
2019/06/22(土) 18:42:50.39ID:???
特に制限かかってないサイトで使いたいのであれば
サーバー上にあるものなら普通に絶対URLで指定すればok
ローカルにあるものはDataURIに変換してスクリプトに直に書く

twitter並の制限がかかってるサイトの場合は
DataURIでデータを用意してDataURI to Blob等で検索して出てくる変換かけてURL.createObjectURLでURLを生成

github並にガチガチに制限かかってる場合はTampermonkeyではなくViolentmonkey独自の
@inject-into content
使わないと無理かも
0598Name_Not_Found
垢版 |
2019/06/22(土) 19:08:34.42ID:CEwL9SKA
ダウンロード用のURL指定したら↓でできました

一秒ごとに音鳴らしたいのだけど↓のplaySound()をグローバルで定義してsetInterval()でループしたらループするごとに音源のサイトにアクセスするのだろうか??
audioElement.src = は グローバルに直接書いたほうがいいのだろうか?
DataURIとbase64も興味あるけど難しそう

function playSound() {
var audioElement = document.createElement("audio");
audioElement.src="https://soundeffect-lab.info/sound/button/mp3/decision1.mp3";;
document.body.appendChild(audioElement);
audioElement.play();
} // ---
0599Name_Not_Found
垢版 |
2019/06/22(土) 19:25:58.80ID:???
サーバー側の設定がおかしくなければキャッシュされるはずだけど
そのplaySoundを毎秒呼び出したら毎回appendChildして無駄にメモリ消費し続けるよ
audioElementは外で定義してsetIntervalでやるのはaudioElement.play();だけでいい
0600Name_Not_Found
垢版 |
2019/06/22(土) 21:57:04.84ID:???
1秒ごとに音鳴らしたいなら、再生時間1秒の音声データを
ループ再生させりゃいいだけだろ
なにめんどくさいことやろうとしてんだ
0601Name_Not_Found
垢版 |
2019/06/23(日) 08:42:54.50ID:???
その方法やsetIntervalだと誤差が積み重なるでしょ
setTimeoutで誤差の蓄積を最小限に留めるのが次点で
WebAudioAPIを使ってスケジューリングするのがベスト
0603Name_Not_Found
垢版 |
2019/06/23(日) 10:00:33.67ID:???
漏れは、Ruby で、selenium-webdriver, nokogiri を使って、
ローカルPC 内の画像を、ブラウザで見てる

<img src="C:/Users/ユーザー名/Pictures/a.jpg">

これで見れる

URL なら、前に、file:/// を付けて、こうとか

file:///C:/Users/ユーザー名/Documents/index.html
0604Name_Not_Found
垢版 |
2019/06/23(日) 13:23:05.21ID:???
画像見るだったらブラウザの標準ファインダで見ていけばいいんじゃないの?
0606Name_Not_Found
垢版 |
2019/06/24(月) 01:16:03.06ID:???
>>605
> React.js and Vue.js are both the most loved and most wanted web frameworks by developers, while Drupal and jQuery are most dreaded.
0608Name_Not_Found
垢版 |
2019/06/24(月) 01:31:33.58ID:???
Wanted jQuery5.0%からして、jQueryシェアは既存シェアが残っているだけで、新規に増やしたくない様子が伺えるな
0610Name_Not_Found
垢版 |
2019/06/24(月) 01:38:37.05ID:???
増やしたくないと思うのと増えるかどうかは別の話で、
Reactの方が良いと思っても、現実にはReact使うまでもないことばかりってことなんだろうね
0611Name_Not_Found
垢版 |
2019/06/24(月) 03:13:22.04ID:???
>>605
vueをやり始めた俺が
これを見ても折れないハートの強さはどこでクローン出来ますか?
0613Name_Not_Found
垢版 |
2019/06/24(月) 07:24:24.86ID:???
Bootstrap は、jQuery で作られているから、

Bootstrapを使うと、jQueryの利用率は上がっていく!
0614Name_Not_Found
垢版 |
2019/06/24(月) 07:31:40.12ID:???
Angular, React.js は、ゼロとみなしてよい

Ruby on Rails では、jQuery 必須。
Vue.js を使う人もいるかも

Junichi Ito (伊藤淳一)の動画

Rails 5.1で作るVue.jsアプリケーション 〜Herokuデプロイからシステムテストまで〜
https://www.youtube.com/watch?v=ycOeM2umXkY
0616Name_Not_Found
垢版 |
2019/06/24(月) 07:58:56.57ID:???
laravelとvueの組み合わせの勉強に週末を費やした僕にも
なんか優しい言葉ください!
0617Name_Not_Found
垢版 |
2019/06/24(月) 08:11:21.75ID:???
>>616
シェアが全てではないよ
自分が必要と思う技術を身につけることが大事
0618Name_Not_Found
垢版 |
2019/06/24(月) 08:11:57.46ID:???
たとえ無駄になるとしても
0619Name_Not_Found
垢版 |
2019/06/24(月) 08:19:40.22ID:???
無駄にはならないから安心しなさい
0621Name_Not_Found
垢版 |
2019/06/24(月) 11:56:23.45ID:???
Ruby で、Sinatra, Rails フレームワークを学ぶと、CakePHP も出来るようになる。
なぜなら、CakePHP は、Rails のコピーだから!

実は、JavaScript のNode.js, jQuery, Lodash も、Rubyに似てる!

Kotlin も、Rubyに似てる
0624Name_Not_Found
垢版 |
2019/06/25(火) 11:15:53.14ID:LGUvJXJu
>>598です。みなさんありがとうございました。
>>599さんの方法でやりました。
>>600さんの方法についてですが、
Webページ上の数値を一秒ごとに読み取ってある数値以下になると音を鳴らし続けたいのですが、コードの書き方がよくわからないです。
そっちのほうがいいかもしれませんが、setInterval()で繰り返し音を鳴らす方法に特に大きな問題ないようでしたら、今のままでやりたいと思います。
0625Name_Not_Found
垢版 |
2019/06/25(火) 12:27:27.96ID:???
再取得の可能性を無くしたいのなら
blobで取るか、abでとってaudiobufferにするか SWを使うか
色々ある
0626Name_Not_Found
垢版 |
2019/06/26(水) 11:40:22.88ID:7Fqxnpy/
localStorageに表形式のデータを格納するならどのような構造にするのがよいですか?
検索は頻繁にしますが、過去データの改変はあまりする予定は余りありません。
重複登録を削除するために直前のデータを削除するぐらいです。

例えば
名前 性別
太郎 男
花子 女
二郎 男
みたいなデータです。

var data = {
"name": ["太郎", "花子", "二郎"];
"gender": ["male", "female", "male"]
}

↑のようなかんじですが
列ごとにJSONにいれて列の各要素を配列にするのを考えています。
JSONはJSON.parseでlocalStorageを出し入れ
配列は、デリミタでストリング化←→配列化して出し入れ
にしようかと。
何かもっと良い方法ありますか?

JSから結構離れていてJSONへのデータの出し入れの仕方もよくおぼえてないのですが…
0627Name_Not_Found
垢版 |
2019/06/26(水) 11:54:42.77ID:7Fqxnpy/
データの新規登録も頻繁に行います
データは常に上の表で言えば行単位で追加します。

配列の中に↓のような配列入れるパターンも考えています。
[ ["taro", "male], ["hanako","female"]] # 行単位で配列の入れ子にするパターン
[ ["taro", "hanako"], ["male", female]] # 列単位で配列の入れ子にするパターン

統計処理する場合は、列単位でまとめたほうがいいですよね?
0628Name_Not_Found
垢版 |
2019/06/26(水) 11:59:03.64ID:???
俺ならこうするな

var data = [
{ name: '太郎', gender: 'male' },
{ name: '花子', gender: 'female' },
{ name: '二郎', gender: 'male' },
]
0629Name_Not_Found
垢版 |
2019/06/26(水) 12:24:41.18ID:???
表形式にこだわらず
プログラムで使いやすいかたちのままぶっこんじゃう意識低い系です
0630Name_Not_Found
垢版 |
2019/06/26(水) 14:24:24.90ID:7Fqxnpy/
配列のほうがメソッドが充実してて扱いやすいきがするんですがどうですか?
JSONだとデータ処理どうなんでしょう?

例えば、太郎という名前の人の身長だけ取り出して、平均を求めるとかそういうふうに、
統計処理をヘビーにやりたいのですが。
0631Name_Not_Found
垢版 |
2019/06/26(水) 14:37:37.31ID:???
JSONてのはあくまでファイルやlocalStorage等に出し入れする時のフォーマットでしょ?
628みたいに配列の中に連想配列を入れる方法一度だと思うけど
0633Name_Not_Found
垢版 |
2019/06/26(水) 14:49:00.52ID:???
結構斬新な研究をしてるな
俺はミカという女はキツイ性格をしてると思う
0634Name_Not_Found
垢版 |
2019/06/26(水) 14:52:53.96ID:???
JSONをlocalStorageに出し入れするよりも、
俺のアンダーバーをミカというキツイ性格をしてる女に出し入れしたい。
0635Name_Not_Found
垢版 |
2019/06/26(水) 15:35:39.31ID:???
>>630
データは>>628のようにして、太郎の身長の平均を求めるなら

function averageHeight(name) {
 const target = data.filter(e => e.name === name)
 return target.reduce((acc,cur) => acc + cur.height, 0) / target.length
}
console.log(averageHeight('太郎'))

みたいに書ける
0636Name_Not_Found
垢版 |
2019/06/26(水) 16:20:46.96ID:???
var data = [
 { name: '太郎', gender: 'male', height: 180 },
 { name: '花子', gender: 'female', height: 160 },
 { name: '太郎', gender: 'male', height: 170 },
];

lodashを使えば、平均を求める関数が用意されてるから
更にわかりやすくかける。統計処理をヘビーにやりたいなら便利

console.log(_.meanBy(_.filter(data, {name: '太郎'}), 'height'));
0637Name_Not_Found
垢版 |
2019/06/26(水) 16:28:19.99ID:???
単一の値を返す場合はこっちのほうがシンプルかな?

console.log(_(data).filter({name: '太郎'}).meanBy('height'));
0640Name_Not_Found
垢版 |
2019/06/27(木) 00:24:12.06ID:???
インスコされても古いIEが残ってる限りなんにも変わんないよ
古いIEが急に使えなくなったら役所や準役所相当企業の
化石HPも1年位かけてアップデートされるだろうけどさ
0641Name_Not_Found
垢版 |
2019/06/27(木) 07:30:16.85ID:???
>>626
名前が、唯一(ユニーク)のものなら、普通は辞書を使う。
名前が重複ありなら、id みたいなユニークな列を用意する

基本的には、データベース設計と同じ

>>636
みたいに、オブジェクトを使うこともできる
0642Name_Not_Found
垢版 |
2019/06/27(木) 19:23:05.78ID:???
行末のセミコロンって無くても良いの?
0643Name_Not_Found
垢版 |
2019/06/27(木) 19:46:41.90ID:???
>>642
好き勝手に付けたり付けなかったりしたら思わぬところで意図しない動作をすることがあるのでセミコロン付けたくないならJavaScript Standard Styleというそれなりに人気のあるスタイルガイドに従うといい。
https://qiita.com/munieru_jp/items/ca16cbfa859468137d2e
まあ一番人気のスタイルガイドはセミコロン強制だけどね。
0644Name_Not_Found
垢版 |
2019/06/27(木) 20:29:58.50ID:???
一番人気とか何で平気で嘘つくの?
0645Name_Not_Found
垢版 |
2019/06/27(木) 21:08:07.14ID:???
>>644
>>643を読んでJavaScriptスタンダードスタイルガイドが一番人気だと言ってると思ったの?小学校の国語からやり直した方がよいのでは?w
0646Name_Not_Found
垢版 |
2019/06/27(木) 21:33:11.02ID:???
不必要なセミコロンを付けないように心がけている人は付け間違えてもすぐにミスに気が付く
必ず付けないと気が済まない人はつけ間違いやreturnなどで過度に付けていても気が付かない
0647Name_Not_Found
垢版 |
2019/06/27(木) 21:45:05.26ID:???
セミコロンのつけ間違いとかreturnに過度につけるって実害あるの?
セミコロンなしの実害はreturn+改行で間違いなくあるけど
0648Name_Not_Found
垢版 |
2019/06/27(木) 21:50:30.30ID:???
>>647
セミコロンなしの実害はreturn+改行ではない
return+改行の問題はセミコロン付ける派が、セミコロンを付けなければ継続するという勘違いによるもの
0649Name_Not_Found
垢版 |
2019/06/27(木) 21:59:36.50ID:???
>>648
てめえの犯したバグになんで人の流儀が関係あるんだよボケ
イスラム教徒が過ちを犯すのはキリスト教徒の教えのせいだっていうのと同じだぞ
0650Name_Not_Found
垢版 |
2019/06/27(木) 22:10:34.63ID:???
ちなみに一番人気の
Airbnb JavaScript スタイルガイドでは?

セミコロンは付けるべきですか?
もちろん。
なぜ? JavaScriptはセミコロンなしで改行を検出すると、自動セミコロン挿入(Automatic Semicolon Insertion)と呼ばれる一連の規則を使用して、
その改行をステートメントの終わりと見なし、(名前が示すとおり)改行の前にセミコロンを入れなければその行が壊れると考えた場所に、セミコロンを配置するかどうかを決定します。
ただし、ASIにはいくつかの風変わりな動作が含まれており、JavaScriptが改行を誤って解釈した場合、コードは壊れます。
新機能がJavaScriptの一部になるにつれて、これらのルールはより複雑になります。
ステートメントを明示的に終了し、不足しているセミコロンを検知するようにリンターを構成すると、問題に遭遇するのを防ぐのに役立ちます。

https://github.com/mitsuruog/javascript-style-guide/blob/master/README.md#semicolons
0651Name_Not_Found
垢版 |
2019/06/27(木) 22:49:37.71ID:???
>>650
でもさ、Rubyは逆にセミコロン省くんだよな。
セミコロン省いたために変な挙動をすることがあるのは同じなのに
0652Name_Not_Found
垢版 |
2019/06/27(木) 22:58:54.34ID:???
>>646
で、つけ間違いやreturnなどで過度に付けることの実害は?
純粋にケースを知りたいんだが
0653Name_Not_Found
垢版 |
2019/06/27(木) 23:09:47.61ID:???
あいつらはバカだから。
浅薄な考えで関数呼び出しのカッコ省略できるようにしたせいで高階関数でdef定義の関数渡したり返したり出来なくなってprocやらlambdaやら.callでの呼び出しやらでムッチャクッチャのグッチャグチャになった。
0655Name_Not_Found
垢版 |
2019/06/27(木) 23:55:46.70ID:???
仕様でセミコロン必須にしとけばよかったのにな
こんなつまらんことでもめなくて済んだのに
0656Name_Not_Found
垢版 |
2019/06/28(金) 00:21:44.75ID:gH7SBzbG
あいう
かきく

と云うようなテキストがある時
コレをそのまま
var text = " あいう
かきく";

みたいにそのまま代入できないのでしょうか?
何行もあると↓みたいに書き直すのがすごくめんどくさいのです。
text = "あいう\nかきく"
text ="あいう" +
"かきく"
0657Name_Not_Found
垢版 |
2019/06/28(金) 00:26:48.18ID:???
>>656
バッククォートで囲む

var text = `あいう
かきく`;
0658Name_Not_Found
垢版 |
2019/06/28(金) 06:20:00.25ID:???
>>649
頭大丈夫?
セミコロンを意図的に省いたが自動挿入によって思わぬ結果を招くのは
論理的に考えてどちらかといえばセミコロン必須派の問題でしょ
省略派は常に自動挿入されることを意図してコードを書いてるのだから
自動挿入されると思っててされてなかったというのなら省略派の問題だけど
0659Name_Not_Found
垢版 |
2019/06/28(金) 06:49:38.03ID:???
セミコロンなしの副作用ってそんなに無いんだよね
例で関数式の直後に括弧があるとくっついちゃうとか、returnのやつとかあるけどさ
普段そんなコード書かないもんな
必要な時だけ書くけどね
0660Name_Not_Found
垢版 |
2019/06/28(金) 07:14:14.43ID:???
この二つだけでOK
・return の後は改行しない
・括弧で始まる文の先頭には ; をつける
0661Name_Not_Found
垢版 |
2019/06/28(金) 07:35:04.45ID:???
>>660

function f1() {
 return
  1;
}

function f2() {
 return
  2
}

console.log(f1()) // undefined
console.log(f2()) // undefined
0662Name_Not_Found
垢版 |
2019/06/28(金) 07:35:47.63ID:???
甘いなぁ。
その程度の理解なら大火傷が目に見えてる。
セミコロン付けたくないならおとなしくjs standard styleに従え。
従っていればセミコロンなしでも問題ないように知見入れ込まれてるんだから。
0663Name_Not_Found
垢版 |
2019/06/28(金) 07:45:36.29ID:???
セミコロンなしのメリットって何?
どっちみちプログラマが気を付けることには変わらないよね
0664Name_Not_Found
垢版 |
2019/06/28(金) 07:47:45.40ID:???
>>659
誰も意図して書こうとはしないだろう
誤って書いてしまう場合があるからダメなのだよ
所詮人のやることと思わなきゃ
0666Name_Not_Found
垢版 |
2019/06/28(金) 08:47:57.58ID:???
>>663
「タイプ数が減る」しか思いつかないな
「文法を知っている必要がある」という点ではどちらも同じ
0667Name_Not_Found
垢版 |
2019/06/28(金) 11:52:30.05ID:???
なんか癖になってるからセミコロンつけないのはソワソワする
ご飯の後にご馳走さま言わない感じに近い
0668Name_Not_Found
垢版 |
2019/06/28(金) 12:35:49.70ID:???
極力セミコロンを付けないと気が済まないって
極力constを使わないと気が済まないとか
極力型チェックをしないと気が済まないとか
みたいでヒステリックで嫌いだな
0669Name_Not_Found
垢版 |
2019/06/28(金) 13:06:32.31ID:???
逆だね。可能な限りセミコロンを書かずに済ますにはASIの摩訶不思議挙動を完璧に把握している必要がある。
セミコロン省略派のほうがconst厨に性質が近い。
0670Name_Not_Found
垢版 |
2019/06/28(金) 13:10:00.41ID:gH7SBzbG
javascriptでスクレイピングしたいのだけど
リンクをクリックして読み込んだら実行みたいなのはどうすればいいの?
0672Name_Not_Found
垢版 |
2019/06/28(金) 13:34:10.16ID:???
>>670
fetch(url)で

IE対応したいなら
ポリフィル読むか、ライブラリ使うか、XMLHttpRequestで
0673Name_Not_Found
垢版 |
2019/06/28(金) 13:46:15.67ID:???
実行できないんですが?
0674Name_Not_Found
垢版 |
2019/06/28(金) 14:19:17.92ID:gH7SBzbG
テーブルデータが複数ページにまたがってるサイトがあるとします。
そこでテーブル内の各データを取得して←実行
次ページに移る
以降繰り返しクロムのデブツールのコンソールで行いたいと思っています
0675Name_Not_Found
垢版 |
2019/06/28(金) 14:35:02.73ID:???
実行、という言葉がここでは通じてないオレオレワードだよ
や借りように説明してくれ
0677Name_Not_Found
垢版 |
2019/06/28(金) 15:32:12.10ID:???
すまん誤記
わかるように説明してくれ
HTMLは実行するものじゃない
0678Name_Not_Found
垢版 |
2019/06/28(金) 16:00:42.10ID:EEeoBsxu
テーブルのデータが静的なデータならfetch/XMLHttpRequestで取得したページのデータを解析してテーブル内の各データを抽出する
テーブルデータがjavascript等を使って動的に作成されるならselenium webdriverあたりを使ってスクレイピングする
0679Name_Not_Found
垢版 |
2019/06/28(金) 17:16:58.59ID:???
ブラウザ上で行わないとダメな理由が良く分からん
取得した情報を何へ流し込んで、その後どう利用したいのかしらん
0680Name_Not_Found
垢版 |
2019/06/28(金) 17:27:02.68ID:???
>>674
その取得したテーブルデータをどうしたいんだ?
データベースに保存したいの?
0683Name_Not_Found
垢版 |
2019/06/28(金) 19:00:06.42ID:???
無職じゃないよ設備屋兼投資家してる
でも厨房からやってて一番経験長いのがWeb
0684Name_Not_Found
垢版 |
2019/06/28(金) 19:05:58.76ID:???
Cから派生した言語はほとんどセミコロンいるからな
無いと気持ち悪いんだろうよ
0685Name_Not_Found
垢版 |
2019/06/28(金) 19:12:37.04ID:???
セミコロンなし強要したいんなら他の言語行ってくれとしか
jsの歴史と現状見るに害悪というか混乱の元
0686Name_Not_Found
垢版 |
2019/06/28(金) 19:14:40.31ID:???
> 「文法を知っている必要がある」という点ではどちらも同じ

これに尽きる
理解していれば、どちらも同じ
0687Name_Not_Found
垢版 |
2019/06/28(金) 19:17:44.24ID:???
なんやセミコロン要らんかったんか!www
これから全部省いたろ!めんどくせーしwww

var a = []
(function(a){
console.log(a)
})(1)

//=> [] is not a function

あ、あれ?(´;ω;`)
0688Name_Not_Found
垢版 |
2019/06/28(金) 19:21:04.77ID:???
var a = []
;(function(a){
console.log(a)
})(1)

// 1
0689Name_Not_Found
垢版 |
2019/06/28(金) 19:21:52.23ID:???
JavaScriptは仕様を変えてセミコロンなしで
動くようにしたほうが良いんじゃないだろうか?
0690Name_Not_Found
垢版 |
2019/06/28(金) 19:22:03.33ID:???
var b = 64
var regexp = 4
var ig = {exec: function(){return 8}}
var a = b
/regexp/ig.exec("str")
console.log(a)
//=> 2

???????
0693Name_Not_Found
垢版 |
2019/06/28(金) 19:28:23.56ID:???
>>690
var b = 64
var regexp = 4
var ig = {exec: function(){return 8}}
var a = b
;/regexp/ig.exec("str")
console.log(a)

// 64
0694Name_Not_Found
垢版 |
2019/06/28(金) 19:29:11.69ID:???
>>689
今でもセミコロン無しで動くでしょ
次の行との結合が発生する場合があるというだけでかといって
セミコロンが要らない代わりに1文1行制限が入っても野暮ったいし
今がちょうどいいバランスだと思うよ
0695Name_Not_Found
垢版 |
2019/06/28(金) 19:29:24.72ID:???
いまさらだが>>658が意味不明だな
セミコロン必須派は意図的にセミコロンを省略すること自体がありえねんだよバーカ
なにが論理的に考えてだよ
0696Name_Not_Found
垢版 |
2019/06/28(金) 19:31:35.29ID:???
このように、「いつもセミコロンを省略できる」わけではなく、「どうしてもセミコロンを付けなければいけないところ」があり、それを「覚えなければ」なりません。
大した量ではありませんが、普通にセミコロン付けていくならば「本来覚えなくてもよかった」、「本質と関係ないクソ知識」です。
0697Name_Not_Found
垢版 |
2019/06/28(金) 19:33:11.54ID:???
>>660
括弧と演算子だな
あとreturnのやつはいらない
0698Name_Not_Found
垢版 |
2019/06/28(金) 19:33:43.28ID:???
>>692
出来ない人がクイズを出してるつもりなのか、
セミコロン省略のbadケースを紹介してるつもりなのか、
知らんが、迷惑行為には違いない
0699Name_Not_Found
垢版 |
2019/06/28(金) 19:34:11.21ID:???
要らないものを省こうとするのは自然な考えだと思うけどな

そういえばクラス構文では以下のようにセミコロン付ける事もできるけど
class C {
method(){};
}
セミコロン必要派の人は付けるんだろうか
付ける・付けないとしてそれは何を思ってのことなんだろうか
0700Name_Not_Found
垢版 |
2019/06/28(金) 19:36:53.18ID:???
ぼく「よし、文の終わりにはセミコロンっと」
バカ「プーッ! なにムダなセミコロン付けてんの?www 付けなくても動くのにwwww」
ぼく「・・・」

−−−

バカ「あ、あれ意図通り動かない……」エラーになっちゃう……」
(3時間後)
バカ「あっ、そうか! ここセミコロン要るところだった! さすが俺、華麗に解決できたぜ!ww」
ぼく「・・・」
0701Name_Not_Found
垢版 |
2019/06/28(金) 19:38:16.47ID:???
とりあえず、セミコロン付けとけ勢が

function foo(){};

と書いてるのを見かけることがある
0703Name_Not_Found
垢版 |
2019/06/28(金) 19:40:39.54ID:???
セミコロンはつけすぎても問題は起こらないが(例えば2個連続の;;)
「省いた場合に問題が起こりうるということ」が問題だということが、
なぜ未だにわからないんだろうか。
0704Name_Not_Found
垢版 |
2019/06/28(金) 19:41:17.99ID:???
>>695
セミコロン必須派は文の終わりにセミコロンを付けようとする
毎行セミコロンを付けようとするバカは居ない
当然複数行に渡る文を書くこともあるし、その際には必須派でもセミコロンを付けない
そういうときに思わぬ自動挿入が起きて嵌まるというのはどちらかというと
自動挿入を利用している省略派ではなく必須派の問題
論理的に考えたらわかる
0705Name_Not_Found
垢版 |
2019/06/28(金) 19:43:20.10ID:???
>>699
セミコロン要らない派はなぜそこで要らないか、なぜそこで要るのか、全然分かってないんだねwww
functionの時点で関数式ならセミコロン付ける、関数宣言ならセミコロン付けない、だバーカw
セミコロン付ける派は関数宣言の終わり、
function foo() {};←ここにセミコロンなんて付けねーよww
function foo() {}←ここまでで関数宣言、
;つけたらただそのあとに空文追加してるだけじゃんwww
関数式と関数宣言の違いすら分からんのかこれだから脳死セミコロン付けない派はwwwww
0706Name_Not_Found
垢版 |
2019/06/28(金) 19:44:27.05ID:???
>>703
今までの流れ見てきて分かるようにセミコロン省略派必須派に限らず
ASIの挙動を抑えておかないと嵌まる可能性が残る
暗黙の型変更のようにJSerは無視できないこと
ならばそのJSらしい性質をJSを書く上で活用しようというのは自然
0707Name_Not_Found
垢版 |
2019/06/28(金) 19:44:56.48ID:???
>>704
それはつける派つけない派の違いじゃなくて文法を知っている知っていないの違いでしかない
まさかセミコロンつけない派のほうが文法を知ってると言いたいのかな?
0708Name_Not_Found
垢版 |
2019/06/28(金) 19:46:05.20ID:???
>>702
成立しないよ。
付けなければいけないところ、付けなくてもよいところ、そのどちらでも、何個もセミコロン置いても余分なものは単に空文になるだけだから。
逆に省いてはいけないところを省いちゃうととんでもないことになる。
セミコロン省略は仕様書も読まないバカにはお勧めできない。
0709Name_Not_Found
垢版 |
2019/06/28(金) 19:46:51.93ID:???
>>705
自分はクラス構文について話してるんだけど?
クラス構文中のセミコロンは空文ができるわけでなく
構文の柔軟性の一部でスペースのようなオプショナルな存在
それをセミコロンを付けようと意識してる人はどう考えるのかを教えて欲しかっただけだよ
0710Name_Not_Found
垢版 |
2019/06/28(金) 19:48:12.84ID:???
宗教はこうして戦争の火種になっていくんだな
宗教コワヒw
0711Name_Not_Found
垢版 |
2019/06/28(金) 19:49:23.18ID:???
そもそもクラス構文は使わない。聳え立つクソだあれは。
0712Name_Not_Found
垢版 |
2019/06/28(金) 19:50:36.70ID:???
>>707
勿論付けない派の方が文法を知っていると言う
文法を知っているのにわざわざ付けるっていうのは完全に好みの話になるし
文法を知らないのに大胆にも付けないっていうのは論外なこだわり

だからあくまで文法に詳しくなく安全側に倒して付けようとしてる派と
文法を良く知って不要なものは減らそうという派という対比で当然話してる
君はそうじゃない意味がない対比がしたいのかもしれないけど俺は巻き込まないでくれよな
0713Name_Not_Found
垢版 |
2019/06/28(金) 19:50:51.65ID:???
>>704
つかそもそも複数行の文の途中ってそれASI自体起こらなくね?
0714Name_Not_Found
垢版 |
2019/06/28(金) 19:53:21.46ID:???
もともとセミコロンをバグなく極限まで省略するにはASI含め高い文法知識が要るという話だっただろ。
それに初心者でも脳死でセミコロン省略できるって噛みついてきたんじゃないか。いい加減にしろよ。
0715Name_Not_Found
垢版 |
2019/06/28(金) 19:53:25.22ID:???
>>707
> それはつける派つけない派の違いじゃなくて文法を知っている知っていないの違いでしかない

>704ではないが、それが最重要ポイントだと思うぞ
セミコロン必須/省略は大した問題ではない
0717Name_Not_Found
垢版 |
2019/06/28(金) 19:55:37.22ID:???
>>716
俺は>704に賛同してるわけではないから
0718Name_Not_Found
垢版 |
2019/06/28(金) 19:56:13.54ID:???
>>713
文法を完全に分かっているのなら当然どんなスタイルでも問題は起こらない
だがそうではないので意図しない問題が起きやすい弱点がそれぞれにある
セミコロンを付ける派も、return文など意図しない形で文が区切られて問題になることもあるという話

これは何十スレも前から度々話題になっているので詳細は割愛するが
==の代わりに積極的に===を使うようになればむしろ嵌まりやすくなるのと同じ
0719Name_Not_Found
垢版 |
2019/06/28(金) 19:59:12.65ID:???
>>714
意味がわからない
脳死でプログラミングはできない
プログラミングというものは難しい

だけど入門者がセミコロン省略スタイルで学ぶのは
それはそれでその癖が付くだけだから何か問題があるとは思わないな

セミコロンを付けたほうが安全と思ってるかもしれないけど、
案外そうでもないよということでしょう
0720Name_Not_Found
垢版 |
2019/06/28(金) 20:01:54.86ID:???
セミコロンあり派
if (x) return; ←あ、戻り値がないんだな
a();
セミコロンなし派
if (x) return
a() ←ん、これ戻り値のつもりかな、それともif文の外?
0721Name_Not_Found
垢版 |
2019/06/28(金) 20:02:06.93ID:???
そっかー分からないかー
0722Name_Not_Found
垢版 |
2019/06/28(金) 20:03:46.24ID:???
>>719
セミコロン取った方が安全なの?
どうなの?
どっちが安全なの?
0723Name_Not_Found
垢版 |
2019/06/28(金) 20:04:33.51ID:???
>>720
派閥に関わらず、文法を理解して適切に使え、という考えがなぜ理解できないんだろう?
0724Name_Not_Found
垢版 |
2019/06/28(金) 20:04:59.53ID:???
一番人気のスタイルガイド、Airbnb JavaScriptスタイルガイド曰く、

セミコロンは付けるべきですか?
もちろん。
なぜ?
JavaScriptはセミコロンなしで改行を検出すると、自動セミコロン挿入(Automatic Semicolon Insertion)と呼ばれる一連の規則を使用して、
その改行をステートメントの終わりと見なし、(名前が示すとおり)改行の前にセミコロンを入れなければその行が壊れると考えた場所に、セミコロンを配置するかどうかを決定します。
ただし、ASIにはいくつかの風変わりな動作が含まれており、JavaScriptが改行を誤って解釈した場合、コードは壊れます。
新機能がJavaScriptの一部になるにつれて、これらのルールはより複雑になります。
ステートメントを明示的に終了し、不足しているセミコロンを検知するようにリンターを構成すると、問題に遭遇するのを防ぐのに役立ちます。

https://github.com/mitsuruog/javascript-style-guide/blob/master/README.md#semicolons
0725Name_Not_Found
垢版 |
2019/06/28(金) 20:09:35.88ID:???
何でそうまでして省きたいのか個人的にはサッパリ分からないが、どうしてもセミコロンを省きたい、かつ仕様の深い理解なんてしたくないという人は、
Airbnb JavaScriptスタイルガイドに比べ全く人気のないJavaScript Standard Styleというスタイルガイドにメクラで従うといい。
https://qiita.com/munieru_jp/items/ca16cbfa859468137d2e
0726Name_Not_Found
垢版 |
2019/06/28(金) 20:13:11.43ID:???
>>723
どれだけ文法を理解して適切に使おうとしても、人がすることだからミスはある
それならミスが少ないほうを使え、という考えがなぜ理解できないんだろう?
0727Name_Not_Found
垢版 |
2019/06/28(金) 20:15:03.46ID:???
>>722
実はどちらも危険でも安全でもない

毎歩杖を付きながら歩けば安全か?
足元がおぼつかず見通せない状況ならそうだが
杖が原因で危険が起こることもあるし
大衆にとっては付こうが付かまいが安全になったり危険になったりしない

杖を付いても付かなくても躓くことはしょっちゅうあるし
躓いたところで大ゴケすることなんて滅多にないし
躓くことを一々恐れて何か対策をしたりはしない
0728Name_Not_Found
垢版 |
2019/06/28(金) 20:16:53.63ID:???
なんかつけない派は詭弁が多くない?
採用する理由だって今風だからとか、かっこいいから、とかしかないでしょ?
他に何かあるのメリット
0729Name_Not_Found
垢版 |
2019/06/28(金) 20:17:30.13ID:???
>>725
何でそうまでして要らないものを省こうとしないのか個人的にはサッパリ分からない。
スペースと違って見にくくなるだけの余分な記号を何故わざわざ付ける?
0730Name_Not_Found
垢版 |
2019/06/28(金) 20:19:08.59ID:???
>>727
ヘルメット付けてても必ず助かるわけじゃないという当たり前の事実は、
ヘルメット非着用を推進する理由にはならない。
0731Name_Not_Found
垢版 |
2019/06/28(金) 20:20:36.12ID:???
>>729
JavaScriptはセミコロンなしで改行を検出すると、自動セミコロン挿入(Automatic Semicolon Insertion)と呼ばれる一連の規則を使用して、
その改行をステートメントの終わりと見なし、(名前が示すとおり)改行の前にセミコロンを入れなければその行が壊れると考えた場所に、セミコロンを配置するかどうかを決定します。
ただし、ASIにはいくつかの風変わりな動作が含まれており、JavaScriptが改行を誤って解釈した場合、コードは壊れます。
新機能がJavaScriptの一部になるにつれて、これらのルールはより複雑になります。
ステートメントを明示的に終了し、不足しているセミコロンを検知するようにリンターを構成すると、問題に遭遇するのを防ぐのに役立ちます。
0732Name_Not_Found
垢版 |
2019/06/28(金) 20:22:05.49ID:???
ぼく「よし、文の終わりにはセミコロンっと」
バカ「プーッ! なにムダなセミコロン付けてんの?www 付けなくても動くのにwwww」
ぼく「・・・」

−−−

バカ「あ、あれ? 意図通り動かない…… エラーになっちゃう……」
(3時間後)
バカ「あっ、そうか! ここセミコロン要るところだった! さすが俺、華麗に解決できたぜ!ww」
ぼく「・・・」
0733Name_Not_Found
垢版 |
2019/06/28(金) 20:22:11.21ID:???
>>728
JSって色んな書き方ができて
ああいう書き方もある、こういう書き方もある
色々試して色々発見して自分のスタイルとJS知識を研磨していった先で到達するものであって
採用するとかいう話ではないと思うよ

Array()の代わりに[]を使うのと同じく
そちらの方が洗練されていると感じるから使う
Array()の方が分かりやすいと言えば勿論そうかも知れないけどね
0734Name_Not_Found
垢版 |
2019/06/28(金) 20:22:16.67ID:???
見にくくなるだけの記号って・・・
世にあふれるJavaScriptのコードをどういう気持ちで見てるんだろう
俺の思い通りにならないムキーってか?
0735Name_Not_Found
垢版 |
2019/06/28(金) 20:25:48.68ID:???
>>730
だから君は24時間風呂はいるときも寝るときも付けろというんでしょ
でも俺はポイントポイントで必要性があるときだけ付ければいいと思う

俺は常にヘルメットを被って生活してる君に対して違和感を感じてる
今ヘルメットを被らないで良いかどうかも分からない可愛そうな子にしか見えない
0737Name_Not_Found
垢版 |
2019/06/28(金) 20:27:01.66ID:???
>>734
俺は[]の代わりにArray()を使ってもいいと思うし、
セミコロンをわざわざ付けて見にくくするのもいいと思ってるよ
0738Name_Not_Found
垢版 |
2019/06/28(金) 20:40:32.38ID:???
>>737
新しい配列を構築するためにArrayコンストラクターを使用することは、単一引数の落とし穴と、Arrayグローバルが再定義される可能性があるため、通常、配列リテラル表記を使用することをお勧めします。
例外は、Arrayコンストラクタを使用して、コンストラクタに単一の数値引数を与えることによって、意図的に指定サイズのスパース配列を作成する場合です。
0739Name_Not_Found
垢版 |
2019/06/28(金) 20:43:04.60ID:???
>>735
いや?
お前が工事現場で「ヘルメットを付けても必ず助かるわけじゃない」と言ってヘルメット着用の看板を剥がして回るキチガイだというだけだぞ。
0740Name_Not_Found
垢版 |
2019/06/28(金) 20:49:27.42ID:???
>>726
ミスがあるなら、正しい文法を覚えればいいだけの話
覚える気がないなら、セミコロン必須でも省略でもミスは起こる
0741Name_Not_Found
垢版 |
2019/06/28(金) 20:49:53.30ID:???
A「セミコロン省いたらエラーになることがあるよ」
B「文法を学んで気を付ければいいよ」
A「それならセミコロン省かないほうが安全じゃない?」
B「邪魔な記号だからいいんだよ!俺が気に食わないの!」
0742Name_Not_Found
垢版 |
2019/06/28(金) 20:51:51.60ID:???
>>737
よーし配列リテラルなんてうっちゃらかしてArrayコンストラクタで配列作るぜ!
var arr = Array(1, 2, 3);
console.log(arr);
//=> [1, 2, 3]
絶好調だぜ!配列リテラルなんて使ってられるか!要素1の配列も作るぜ!
var arr = Array(1);
console.log(arr);
//=> [undefined]

あ、あれ…? (´;ω;`)
0743Name_Not_Found
垢版 |
2019/06/28(金) 20:55:19.37ID:???
スタイルガイドのシェア率が分かるやつある?
0744Name_Not_Found
垢版 |
2019/06/28(金) 20:55:57.91ID:???
>>740
お前ミスしたことないの?
正しい文法を覚えててもミスはするの
覚える気があってもミスはするの
省略したほうがミスの可能性が高いの
わかる?
0745740
垢版 |
2019/06/28(金) 20:57:15.45ID:lh1CUoFS
>>741
マウント取りたいだけなら好きにやればいいが、俺は省略も必須も文法さえ守れば好きにやればいいと思うぞ
「文法さえ守れば」どちらでも問題はない
0746Name_Not_Found
垢版 |
2019/06/28(金) 20:58:37.51ID:lh1CUoFS
>>744
分からん
ミスをするのは「知らないから」
それ以外に原因はない
0747Name_Not_Found
垢版 |
2019/06/28(金) 21:00:00.56ID:???
>>743
思い付くのはgithubスター数と、babel-presetの週間ダウンロード数だな。
0748Name_Not_Found
垢版 |
2019/06/28(金) 21:04:14.30ID:???
>>746
その知らないことによるミスを事前に減らしましょうって言ってんの
それがわからん?
0749Name_Not_Found
垢版 |
2019/06/28(金) 21:04:54.68ID:???
私、失敗しないのでwww
ドラマ化決定!wwwww
0750Name_Not_Found
垢版 |
2019/06/28(金) 21:07:34.74ID:???
仕事で書くときはプロジェクトのスタイルに合わせるんだし
個人の趣味で書いてるのは好きにすればいいじゃん
0752Name_Not_Found
垢版 |
2019/06/28(金) 21:13:18.94ID:???
・文の末尾にはセミコロンを付ける
・returnで値を返すときは直後に改行を入れない
結局これが素人にもプロにも最強
0753Name_Not_Found
垢版 |
2019/06/28(金) 21:40:56.00ID:lh1CUoFS
>>748
君は「何か良くわからないけど、セミコロンを付ければエラーがなくなるみたいです」と覚えるのかね?
0754Name_Not_Found
垢版 |
2019/06/28(金) 21:43:47.65ID:???
>>753
少なくとも「俺はすべて知ってるからセミコロン省くぜ、あ、あれ?」よりはまし
0755Name_Not_Found
垢版 |
2019/06/28(金) 21:48:01.18ID:lh1CUoFS
>>754
答えになっていないようだが
0756Name_Not_Found
垢版 |
2019/06/28(金) 21:48:54.13ID:???
「何か良くわからないけど、セミコロンなんか付けなくてもエラー出ないみたいです。だから付けません」
0757Name_Not_Found
垢版 |
2019/06/28(金) 21:50:17.03ID:???
>>755
文法を守った気になっている奴がASIによる余計なバグを追っている時間を
他のバグ潰しに使えるってこと
0758Name_Not_Found
垢版 |
2019/06/28(金) 21:50:55.41ID:???
いずれにしても、「何か良くわからないけど」と考える奴がミスを犯すのは確かだな
0760Name_Not_Found
垢版 |
2019/06/28(金) 21:54:47.23ID:???
>>759
どこがマウント?
事実を言っただけだが
反論をどうぞ
0761Name_Not_Found
垢版 |
2019/06/28(金) 21:56:18.31ID:???
文法を守れ
→文法を守った気になってる奴が云々
→????
0762Name_Not_Found
垢版 |
2019/06/28(金) 21:56:52.81ID:???
>>760
答えになってないじゃん
煽ってるだけじゃん
0763Name_Not_Found
垢版 |
2019/06/28(金) 21:58:52.68ID:???
内容に反論できなくて悔しくてマウントマウント言い出しただけだろww
0764Name_Not_Found
垢版 |
2019/06/28(金) 21:59:55.21ID:???
相手がいってもいない虚像を勝手に作り上げて論破している気になってる奴はホント消えてほしい
0765Name_Not_Found
垢版 |
2019/06/28(金) 22:00:41.18ID:???
>>761
守ろうとすることと(能力的に)守れるかどうかは別問題
ここまで言わなきゃわからない?
0766Name_Not_Found
垢版 |
2019/06/28(金) 22:01:13.64ID:lh1CUoFS
まさか、>>757が答えになっていると本気で信じているのか...
0768Name_Not_Found
垢版 |
2019/06/28(金) 22:02:50.82ID:lh1CUoFS
>>767
君は「何か良くわからないけど、セミコロンを付ければエラーがなくなるみたいです」と覚えるのかね?
0769Name_Not_Found
垢版 |
2019/06/28(金) 22:04:55.96ID:???
>>768
君は「何か良くわからないけど、セミコロンなんか付けなくてもエラー出ないみたいです」と覚えるのかね?
0770Name_Not_Found
垢版 |
2019/06/28(金) 22:05:42.64ID:lh1CUoFS
>>769
No
で、君の答えは?
0771Name_Not_Found
垢版 |
2019/06/28(金) 22:05:47.33ID:???
一番人気のスタイルガイド、Airbnb JavaScriptスタイルガイド曰く、

セミコロンは付けるべきですか?
もちろん。
なぜ?
JavaScriptはセミコロンなしで改行を検出すると、自動セミコロン挿入(Automatic Semicolon Insertion)と呼ばれる一連の規則を使用して、
その改行をステートメントの終わりと見なし、(名前が示すとおり)改行の前にセミコロンを入れなければその行が壊れると考えた場所に、セミコロンを配置するかどうかを決定します。
ただし、ASIにはいくつかの風変わりな動作が含まれており、JavaScriptが改行を誤って解釈した場合、コードは壊れます。
新機能がJavaScriptの一部になるにつれて、これらのルールはより複雑になります。
ステートメントを明示的に終了し、不足しているセミコロンを検知するようにリンターを構成すると、問題に遭遇するのを防ぐのに役立ちます。

https://github.com/mitsuruog/javascript-style-guide/blob/master/README.md#semicolons
0772Name_Not_Found
垢版 |
2019/06/28(金) 22:08:05.31ID:???
何が何でも答えないという鉄の意思を感じるわ
0773Name_Not_Found
垢版 |
2019/06/28(金) 22:10:16.11ID:???
>>767
だから、
「何か良くわからないけど、セミコロンを付ければエラーがなくなるみたいです」
のほうが
「俺はすべて知ってるからセミコロン省くぜ、あ、あれ?ここ省いちゃダメだった」
よりも、
ASIによる余計なバグを追っている時間を他のバグ潰しに使える分ましだと言っている
0774Name_Not_Found
垢版 |
2019/06/28(金) 22:11:42.56ID:???
>>773
つまり、Yesってことか
はっきりいえよ
歪曲表現を好む日本人かよw
0777Name_Not_Found
垢版 |
2019/06/28(金) 22:14:17.43ID:???
var a = []
(function(a){
console.log(a)
})(1)
//=> [] is not a function
0778Name_Not_Found
垢版 |
2019/06/28(金) 22:15:15.57ID:???
やっぱりセミコロンなし派って詭弁でごまかすよね
メリットも語れないし草生やすだけ
0779Name_Not_Found
垢版 |
2019/06/28(金) 22:16:13.81ID:lh1CUoFS
>>773
君は知らないからセミコロン省略でミスをする
セミコロン省略派は知らなければ使えないので理解しようとする
ミスをすれば、さらに深く理解しようとする

理解すればミスはしない
理解しなければミスをする
それだけの話
0780Name_Not_Found
垢版 |
2019/06/28(金) 22:17:03.00ID:???
var a = [];
(function(a){
console.log(a);
})(1);
は美しくなく、
var a = []
;(function(a){
console.log(a)
})(1)
は美しい?ww
省略派のゲテモノセンスはよく分からんww
0781Name_Not_Found
垢版 |
2019/06/28(金) 22:17:12.25ID:???
>>746
ミスする奴は必ずいる
そういうやつはどうすればいいの?教えてプロ
0782Name_Not_Found
垢版 |
2019/06/28(金) 22:18:33.22ID:???
もともとセミコロンをバグなく極限まで省略するにはASI含め高い文法知識が要るという話だっただろ。
それに初心者でも脳死でセミコロン省略できるって噛みついてきたんじゃないか。いい加減にしろよ。
0783Name_Not_Found
垢版 |
2019/06/28(金) 22:19:33.06ID:???
>>779
世の中にセミコロン必須にしているスタイルガイドがあるのは何故だと思う?
0784Name_Not_Found
垢版 |
2019/06/28(金) 22:20:58.42ID:???
>>783
世の中にセミコロン不要としているスタイルガイドがあるのは何故だと思う?
0785Name_Not_Found
垢版 |
2019/06/28(金) 22:21:38.53ID:lh1CUoFS
>>781
ミスの原因、原理を突き詰める事だ

>>783
知らない事を良しとしているのだろう
0786Name_Not_Found
垢版 |
2019/06/28(金) 22:21:49.34ID:???
>>784
ごめん、わからない
俺はセミコロン付ける派なので
てかたまには答えたら?答えられないの?
0787Name_Not_Found
垢版 |
2019/06/28(金) 22:23:49.07ID:???
中出ししたけど妊娠しなかったよ?
コンドームなど不要!
0788Name_Not_Found
垢版 |
2019/06/28(金) 22:25:12.11ID:lh1CUoFS
>>783
すまん、読み間違えた
セミコロン省略しても良いケースを熟知しているのだろう
0789Name_Not_Found
垢版 |
2019/06/28(金) 22:25:26.81ID:???
この議論総括するとセミコロンを付けない方の勝ちだな
付ける方は付けないやり方も長く試したけど、実際こういう問題が起きた
とは自分の実力がないと言ってるようで主張しにくいもの
周りの付けない人を何十人も見てきたけど統計的にそのグループは
こういう間違いを犯しやすいという事実もないしさ

一方付けない方は付けるのも試してる上で付けなくても問題はないと
nは小さいけど実体験を語ってるわけで
付ける方が詭弁連呼や失礼な根拠要求しかできないのに比べると圧倒的に強いね
客観的に見て議論は付けない方の勝ち
ただし自分は付け続けるし人にも付けることを強く進める

以上、終わり
0790Name_Not_Found
垢版 |
2019/06/28(金) 22:26:33.04ID:lh1CUoFS
あ、レスアンカー先が違ったのか
下記が正しい

>>783
知らない事を良しとしているのだろう

>>784
セミコロン省略しても良いケースを熟知しているのだろう
0791Name_Not_Found
垢版 |
2019/06/28(金) 22:26:41.17ID:???
>>787
コンドームは必要なときにつけるもの
彼女も居ないのに24時間付けてないと気が済まない性癖を偉そうに主張されてもね
0792Name_Not_Found
垢版 |
2019/06/28(金) 22:26:46.00ID:???
一番客観的じゃない意見乙w
0793Name_Not_Found
垢版 |
2019/06/28(金) 22:28:51.36ID:???
セミコロンつけないやつは全員仕様を理解している奴という超理論を
覆すことはできんなw
0794Name_Not_Found
垢版 |
2019/06/28(金) 22:36:14.01ID:???
結局付けない派が詭弁で逃げ切ったな。
0795Name_Not_Found
垢版 |
2019/06/28(金) 22:36:27.40ID:???
;(function () {}) ←これがキモイんだよなー
0796Name_Not_Found
垢版 |
2019/06/28(金) 22:36:38.16ID:???
一番人気のスタイルガイド、Airbnb JavaScriptスタイルガイド曰く、

セミコロンは付けるべきですか?
もちろん。
なぜ?
JavaScriptはセミコロンなしで改行を検出すると、自動セミコロン挿入(Automatic Semicolon Insertion)と呼ばれる一連の規則を使用して、
その改行をステートメントの終わりと見なし、(名前が示すとおり)改行の前にセミコロンを入れなければその行が壊れると考えた場所に、セミコロンを配置するかどうかを決定します。
ただし、ASIにはいくつかの風変わりな動作が含まれており、JavaScriptが改行を誤って解釈した場合、コードは壊れます。
新機能がJavaScriptの一部になるにつれて、これらのルールはより複雑になります。
ステートメントを明示的に終了し、不足しているセミコロンを検知するようにリンターを構成すると、問題に遭遇するのを防ぐのに役立ちます。

https://github.com/mitsuruog/javascript-style-guide/blob/master/README.md#semicolons
0797Name_Not_Found
垢版 |
2019/06/28(金) 22:37:12.18ID:lh1CUoFS
セミコロン省略派と誤解されている気がするが、俺の意見は>>745
0798Name_Not_Found
垢版 |
2019/06/28(金) 22:37:49.58ID:???
>>795
笑えるのが付けない派がこれを書くってことだよなwww
心の中で地の涙を流してるのだろうかw
0802Name_Not_Found
垢版 |
2019/06/28(金) 22:40:37.87ID:???
>>801
どうすんの?
var a = []
(function(a){
console.log(a)
})(1)
//=> [] is not a function
0803Name_Not_Found
垢版 |
2019/06/28(金) 22:40:42.08ID:???
>>800
何が面白いんだか
連投すれば、誰でも迷惑に感じることぐらい理解しろよ
0805Name_Not_Found
垢版 |
2019/06/28(金) 22:41:47.58ID:???
>>803
イライラしてんなww
当たんなよwwww
0807Name_Not_Found
垢版 |
2019/06/28(金) 22:43:35.17ID:???
草生やしてるやつはスルーでいいよ
0808Name_Not_Found
垢版 |
2019/06/28(金) 22:44:03.48ID:???
ID:lh1CUoFSは理解すればミスは起こらないと言っている
俺は理解してもミスは起こると言っている
ここが永遠に埋まらない溝
0810Name_Not_Found
垢版 |
2019/06/28(金) 22:53:53.17ID:???
>>806
君はセミコロン省略派をやり込めたと思っているようだね
何事にも例外はあるということをいちいちいわないと理解できないタイプ
0811Name_Not_Found
垢版 |
2019/06/28(金) 22:54:45.52ID:???
>>808
> 俺は理解してもミスは起こると言っている
論理的に根拠を説明してくれるよな?
0812Name_Not_Found
垢版 |
2019/06/28(金) 23:02:31.95ID:???
例外が多いのはセミコロン省略の方だよね。
結局全部省略できないで「こういう場合は付けないといけません」アホかと。
0813Name_Not_Found
垢版 |
2019/06/28(金) 23:03:51.35ID:???
ちょっと違うな。
「こういう場合付けないといけません。さもないとバグります」
0814Name_Not_Found
垢版 |
2019/06/28(金) 23:04:03.50ID:???
>>812
アホな理由が分からん
理解して使う分には全然かまわないぞ、俺は
0815Name_Not_Found
垢版 |
2019/06/28(金) 23:04:36.80ID:???
もともとセミコロンをバグなく極限まで省略するにはASI含め高い文法知識が要るという話だっただろ。
それに初心者でも脳死でセミコロン省略できるって噛みついてきたんじゃないか。いい加減にしろよ。
0816Name_Not_Found
垢版 |
2019/06/28(金) 23:06:34.76ID:???
>>811
ならお前も逆論を論理的に説明しろ
ID:lh1CUoFSは説明しているが、お前は何一つ説明してないだろ
お前がしたなら説明してやる
0817Name_Not_Found
垢版 |
2019/06/28(金) 23:06:38.02ID:???
知らんがな
全員が同一人物に見える病気なら、通院しろ
0818Name_Not_Found
垢版 |
2019/06/28(金) 23:06:55.53ID:???
;「私のために争わないで!」
0819Name_Not_Found
垢版 |
2019/06/28(金) 23:08:01.85ID:???
>>816
え…、「理解してないものはバグる」って説明しないと理解できないものなのか?
0820Name_Not_Found
垢版 |
2019/06/28(金) 23:10:18.62ID:???
>>819
>>808を読めないのか?
「理解してないものはバグる」じゃない、「理解したらミスらない」だ
この2つは全然違うぞ
0821Name_Not_Found
垢版 |
2019/06/28(金) 23:13:23.25ID:???
>>820
すまんね
「理解したらミスらない」が真なら、「理解してなければミスる」も真
以上
0822Name_Not_Found
垢版 |
2019/06/28(金) 23:14:08.22ID:???
あと理解してないものは必ずバグるわけじゃないぞ
うまくいく場合もある
0824Name_Not_Found
垢版 |
2019/06/28(金) 23:17:02.98ID:???
>>821
だから「理解したらミスらない」が真だと思わないって言ってるの
「理解したらミスらない」が真である根拠を論理的に説明よろ
0825Name_Not_Found
垢版 |
2019/06/28(金) 23:17:20.67ID:???
>>823
複数バージョンを取り上げるその心は?
0826Name_Not_Found
垢版 |
2019/06/28(金) 23:20:04.02ID:???
>>824
原理を100%理解したら、100%期待通りに動くように書けるだろ
お前の言ってることはまるで分らん
0827Name_Not_Found
垢版 |
2019/06/28(金) 23:22:30.59ID:???
絶対ミスらないなら全部ハンドアセンブリで書いてりゃいいんじゃね?
絶対ミスらないクセにやることがJavaScriptのセミコロンの省略w
0828Name_Not_Found
垢版 |
2019/06/28(金) 23:24:19.05ID:???
>>826
お前の理想の世界ではな
現実には
・タイプミス
・修正忘れ
・minifyによる圧縮
などにより仮に全員が完全に理解していてもミスやバグは起こるんだよ
0829Name_Not_Found
垢版 |
2019/06/28(金) 23:25:57.16ID:???
もう一度言うけど、
仕様を理解していることと、それを完璧にコードに反映できることは別なの
0830Name_Not_Found
垢版 |
2019/06/28(金) 23:26:47.45ID:???
>>828
その作業工程を十分に「理解」してなかったからだろ
0831Name_Not_Found
垢版 |
2019/06/28(金) 23:28:59.32ID:???
立証責任を放棄して、先に反証責任を負わせる>>808に驚愕した
0832Name_Not_Found
垢版 |
2019/06/28(金) 23:30:20.20ID:???
>>830
だから理解した「つもり」になっている奴が現実にいるという話だよ
ID:lh1CUoFSもそうでないとは言い切れんだろ?
それなら最初からミスする前提でミスの少ないセミコロン付けをしましょうね
と最初に戻るわけだ
0833Name_Not_Found
垢版 |
2019/06/28(金) 23:32:18.15ID:???
>>832
なんのこっちゃ
作業自体を理解してない奴に触らせるのが正しいのか?
0834Name_Not_Found
垢版 |
2019/06/28(金) 23:36:21.50ID:???
>>685
tc39見てると一体いくつのステキな提案がASIハザードのせいで沈んでいったか……
0835Name_Not_Found
垢版 |
2019/06/28(金) 23:37:12.35ID:???
俺の結論は>>796のコピペのとおり↓これ
>問題に遭遇するのを防ぐのに役立ちます。

>>833はこんなのくそくらえだって言うんだろ?
0836Name_Not_Found
垢版 |
2019/06/28(金) 23:38:40.60ID:???
絶対にミスらないならそもそも問題に遭遇しないからな
0837Name_Not_Found
垢版 |
2019/06/28(金) 23:40:38.37ID:???
絶対にミスしないんならwasmをwatで手書きしてれば?
0838Name_Not_Found
垢版 |
2019/06/28(金) 23:40:49.75ID:???
>>779 理解すればミスはしない
>>808 俺は理解してもミスは起こると言っている
>>832 だから理解した「つもり」になっている奴が現実にいるという話だよ

相手の主張に「つもり」を付けて反証した「つもり」になっているのが「永遠に埋まらない溝」ですね
0839Name_Not_Found
垢版 |
2019/06/28(金) 23:41:13.69ID:???
>>825
Examples of Automatic Semicolon Insertion の内容は、過去のも最新ドラフトのも同一だが
Rules of Automatic Semicolon Insertion は若干変化がある、と
0840Name_Not_Found
垢版 |
2019/06/28(金) 23:43:50.53ID:???
>>838
俺は「仮に全員が完全に理解していても」と前提を言ったのに
>>830が「十分に「理解」してなかったから」とかわけわからんこと言い出したのに付き合って
>>832で合わせただけだよ
もちろん本人が意図しないミスだってあるよ
0841Name_Not_Found
垢版 |
2019/06/28(金) 23:47:21.42ID:???
省略しない派 → (´;ω;`)
省略する派  → (´ω`)
0842Name_Not_Found
垢版 |
2019/06/28(金) 23:49:24.76ID:???
>>840
>>830は真っ当な意見だと思うがね
君が勝手に「理解」の範囲をECMAScriptに限定していただけ
0843Name_Not_Found
垢版 |
2019/06/28(金) 23:51:39.01ID:???
>>842
まあ最初の流れでは仕様を理解すると言っていたからね
そうやって文脈をすり替えるのは結構だけど俺の結論はこう
「作業工程も仕様も理解していてもミスるからセミコロンはつけよう」
0844Name_Not_Found
垢版 |
2019/06/28(金) 23:53:27.47ID:???
>>843
>「作業工程も仕様も理解していてもミスるからセミコロンはつけよう」
それを理解していたら、>>828をミスる理由がなくなる
0845Name_Not_Found
垢版 |
2019/06/28(金) 23:55:10.66ID:???
>>828
理解しててもしてなくても発生率が有意に変わるとは思えん

「理解していれば防げた」はずの分だけ、ミスやらバグやら減るんじゃね
0846Name_Not_Found
垢版 |
2019/06/28(金) 23:56:02.50ID:???
頑固だね〜
タイプミスも修正忘れもしないってか?大した自信だね
0847Name_Not_Found
垢版 |
2019/06/28(金) 23:56:08.28ID:???
もう「良くわからないけど、ミスるからセミコロンを付けよう」でいいんじゃない?
>>808から段々、文脈を変えてきてるし、都合よく論理を改変されてる気がしてならないよ
0848Name_Not_Found
垢版 |
2019/06/28(金) 23:57:01.35ID:???
ミスしないなら変数に分かりやすい名前付ける意味もないね。aとかbとかで十分。むしろそれが望ましい。
ミスしないならキレイにインデントする必要もないね。むしろ詰めるべき。必要なところだけワンスペース。
0849Name_Not_Found
垢版 |
2019/06/28(金) 23:58:24.57ID:???
>>846
それはもうセミコロン省略が関係なくなってる事に気が付いてる?
0850Name_Not_Found
垢版 |
2019/06/28(金) 23:58:29.71ID:???
「ミスってセミコロンをつけ忘れました」
「だからセミコロンを付けろと言っただろ」
「・・・」
0851Name_Not_Found
垢版 |
2019/06/28(金) 23:59:45.90ID:???
>>845
そのとおり
理解しててもしてなくても、セミコロン付けると発生率が下がるのよ
0852Name_Not_Found
垢版 |
2019/06/29(土) 00:00:58.88ID:???
結論:
 絶対にミスしないウソつき以外にはセミコロン省略は使えない
0853Name_Not_Found
垢版 |
2019/06/29(土) 00:02:10.45ID:???
>>851
セミコロン必須にすると、タイプミスや修正漏れが減る根拠を教えて下さい!
0855Name_Not_Found
垢版 |
2019/06/29(土) 00:04:32.18ID:???
>>849
関係あるよ
var a = []
(function () {})() ←タイプミス
0856Name_Not_Found
垢版 |
2019/06/29(土) 00:05:33.37ID:???
セミコロン関係ない、「ミスをしないからミスしにくい手法など気にする必要はない」理論に持っていったのはセミコロン省略おじさんのほう
0857Name_Not_Found
垢版 |
2019/06/29(土) 00:07:26.78ID:???
下手なminifierだとASIを認識しなくてバグるよ
0859Name_Not_Found
垢版 |
2019/06/29(土) 00:19:17.58ID:???
>>853
ごめん発生率はASIによるバグの発生率だったわw
0860Name_Not_Found
垢版 |
2019/06/29(土) 00:20:42.89ID:???
セミコロン必須派の意見がgdgd過ぎ
0861Name_Not_Found
垢版 |
2019/06/29(土) 00:22:22.05ID:???
対してセミコロン省略派の詭弁テクはなかなかのものがある。
いつも屁理屈言い訳ばかりしてるから上達したのだろう。
0862Name_Not_Found
垢版 |
2019/06/29(土) 00:23:13.25ID:???
セミコロン付けときゃ余計なバグの心配もないのに
なんでそんな拘るかね┐(´-`)┌ヤレヤレ
0863Name_Not_Found
垢版 |
2019/06/29(土) 00:24:19.09ID:???
必須派の根拠が弱すぎるからだろうね
0864Name_Not_Found
垢版 |
2019/06/29(土) 00:26:29.40ID:???
総括すると、こういうことらしい

理解した「つもり」になってる奴はセミコロン必須にしろ
0865Name_Not_Found
垢版 |
2019/06/29(土) 00:27:07.72ID:???
var a = []
(function(a){
console.log(a)
})(1)
//=> [] is not a function
0866Name_Not_Found
垢版 |
2019/06/29(土) 00:27:44.95ID:???
なし派はメリット一つも言わないんだよなー
理解しろ理解しろ理解したらバグは起こらない!
いやそれでメリットは?
0867Name_Not_Found
垢版 |
2019/06/29(土) 00:28:28.72ID:???
>>865
セミコロンなくてスッキリしてていいな!
今度からそう書くわ!
0869Name_Not_Found
垢版 |
2019/06/29(土) 00:35:00.75ID:???
結論
ASIの仕様に詳しくなりたい人は、セミコロンを省略しよう!
理解が浅いとバグっちゃうから、スリル満点だぞ!
0870Name_Not_Found
垢版 |
2019/06/29(土) 00:35:20.57ID:???
文頭セミコロンなんて初めて見た
0871Name_Not_Found
垢版 |
2019/06/29(土) 00:35:27.29ID:???
>>866
>>666
理解しろ派は省略派ではなかったろ
読解力を身に着けた方がいい
0872Name_Not_Found
垢版 |
2019/06/29(土) 00:37:05.61ID:???
セミコロン必須派ってなんでこんなに気持ち悪いんだろ
jQuery房と同質のものを感じるわ
0873Name_Not_Found
垢版 |
2019/06/29(土) 00:38:09.55ID:???
いや理解する必要があるのは省略派だろ
頭沸いてんのか
0874Name_Not_Found
垢版 |
2019/06/29(土) 00:39:32.34ID:???
内容に反論できなくて結局人格否定に走るしかないのねw
哀れみw
0875Name_Not_Found
垢版 |
2019/06/29(土) 00:40:27.71ID:???
めりっと
・ASIの仕様に詳しくなれる
デメリット
・意図しない関数呼び出し
var a = []
(function () {})() //=> [] is not a function
・意図しないreturn文
return
a + b
・ダサいスタイル
;(function () {...})()
![1,2,3].map(...)
0877Name_Not_Found
垢版 |
2019/06/29(土) 00:41:47.53ID:???
ASIの仕様を実践できるのはセミコロン省略派だけ!
君もセミコロン省略派になって、セミコロン省略スタイルでしか役に立たない知識を身に付けよう!
0878Name_Not_Found
垢版 |
2019/06/29(土) 00:42:22.77ID:???
むしろ、セミコロン必須のメリットが突っ込みどころ多すぎた
0879Name_Not_Found
垢版 |
2019/06/29(土) 00:43:41.27ID:???
![1,2,3].map(...)
これ全然直感的じゃないよなw
もうセミコロンさえなければ何でもいいという執念を感じるw
0880Name_Not_Found
垢版 |
2019/06/29(土) 00:44:21.22ID:???
今度はショートコーディングに論点をずらし始めた
0881Name_Not_Found
垢版 |
2019/06/29(土) 00:44:56.49ID:???
つける派のメリット
>>796で書かれているとおり
デメリット
つけない派の根拠0の執拗な攻撃に遭う
0882Name_Not_Found
垢版 |
2019/06/29(土) 00:45:45.42ID:+30BoMTG
>>879
というか、SyntaxErrorだし
0883Name_Not_Found
垢版 |
2019/06/29(土) 00:47:31.38ID:???
借り物の言葉で満足するのが必須派か
0884Name_Not_Found
垢版 |
2019/06/29(土) 00:47:58.88ID:???
「文末にセミコロンなんて付けたくない! 死んでも付けないぞ!」

>>865

「ぶ、文頭ならおk」

なんでや…
0885Name_Not_Found
垢版 |
2019/06/29(土) 00:49:24.86ID:???
>>883
そりゃ俺らの言葉なんかより権威ある出所からのお言葉なら大満足でしょ
0886Name_Not_Found
垢版 |
2019/06/29(土) 00:50:57.45ID:???
☆セミコロン占い☆
セミコロンを省略しちゃうあなたは見た目に騙され本質が見えないタイプ。
プログラミング言語はRubyがお似合いかも!?
0887Name_Not_Found
垢版 |
2019/06/29(土) 00:51:08.15ID:???
>>885
そして、別の権威者が反対の事を言い出したら、意見を100%反転させるのだな
0888Name_Not_Found
垢版 |
2019/06/29(土) 00:52:38.45ID:???
>>887
話そらしてばかりだね。どこに行くの?
0889Name_Not_Found
垢版 |
2019/06/29(土) 00:53:35.71ID:???
今時、コーディング規約を思考停止で守ってる奴は珍しくない
意味を分かってないから、タイプミスや修正漏れは日常茶飯事
0891Name_Not_Found
垢版 |
2019/06/29(土) 00:55:29.80ID:???
必須派ワー必須派ワー
相手にケチつけてばかりで何もメリットを語れない省略派w
大脳新皮質も省略してしまったのだろうか?w
0893Name_Not_Found
垢版 |
2019/06/29(土) 00:57:08.55ID:???
そうか?
必須派もケチつけてばかりじゃあないか
0894Name_Not_Found
垢版 |
2019/06/29(土) 01:05:00.08ID:???
let i = 10
do
console.log(--
i
)
while (i)

こんなのアリなのか
初めて知った
0895Name_Not_Found
垢版 |
2019/06/29(土) 01:09:22.03ID:???
■セミコロン必須派の主張
- 同じ文章を何度もコピペ
- 「つもり」を後付け
- 誤認によるセミコロン省略は「タイプミス」
- 作業工程を理解しても「タイプミス」「修正漏れ」「minifyによる圧縮」のミスは起きる
- セミコロン必須でも「タイプミス」「修正漏れ」「minifyによる圧縮」のミスは減る
- 作業工程も仕様も理解していてもミスるからセミコロンはつけよう
- 立証責任を放棄して相手に説明要求
- 答えを何度もはぐらかす
- ID:lh1CUoFSと省略派の区別がつかない
0896Name_Not_Found
垢版 |
2019/06/29(土) 01:11:11.28ID:???
元々セミコロンがある前提でスタートしたJavaScript
ASIはつけ忘れた時の補完用でしかないとは作者の言葉だ
セミコロンが嫌なら別の言語に行くべきだ
0897Name_Not_Found
垢版 |
2019/06/29(土) 01:18:07.59ID:???
i = 10; do console.log(--i); while (i)
i = 10; do console.log(--i); while (i) i = 10; do console.log(--i); while (i)
はokで
i = 10 do console.log(--i) while (i)
はエラー、なのか
0898Name_Not_Found
垢版 |
2019/06/29(土) 01:22:04.34ID:???
const f1 = function () { console.log(1) } const f2 = function () { console.log(2) }

f1() f2()
もエラー、と
0899Name_Not_Found
垢版 |
2019/06/29(土) 01:29:49.12ID:???
const a = 1
2
console.log(a)
はokで

const a = 1 2
とか
const a = 1
2 console.log(a)
とか
const a = 1 console.log(a)
とかはエラー、か
0900Name_Not_Found
垢版 |
2019/06/29(土) 01:30:31.45ID:???
このようにセミコロンを付けるとこんな気持ち悪い書き方ができます。
0902Name_Not_Found
垢版 |
2019/06/29(土) 01:48:43.84ID:???
minification 絶対にしないことが保証されているなら
セミコロンは省略しまくって良いんだろうね
0903Name_Not_Found
垢版 |
2019/06/29(土) 01:59:53.60ID:???
minificationは関係ない。なりすまし工作乙。
0904Name_Not_Found
垢版 |
2019/06/29(土) 05:29:01.38ID:???
ES6ってみんな使ってる?
0905Name_Not_Found
垢版 |
2019/06/29(土) 06:45:26.25ID:???
実際はセミコロン省略向けLintの設定もあるんだし
省略したからと言ってなにか問題になることはないよね
0906Name_Not_Found
垢版 |
2019/06/29(土) 07:05:49.89ID:???
これもう宗教論争だからね
善悪二元論でやりあってるうちは永遠に決着しないよ
0907Name_Not_Found
垢版 |
2019/06/29(土) 07:10:23.85ID:???
ifとかの{}も省略したらあかんのかな
0908Name_Not_Found
垢版 |
2019/06/29(土) 08:52:35.75ID:???
セミコロンね
もうすぐ暑い夏か
0909Name_Not_Found (ワッチョイ 138f-QRBW)
垢版 |
2019/06/29(土) 09:34:29.64ID:OPCKDJxz0
>>907
if ( condition )
// do something

なら問題ないよー
セミコロンの有無での差は、これから確認してみるね
0910Name_Not_Found
垢版 |
2019/06/29(土) 09:46:42.70ID:???
有名どころだとBootstrapがセミコロン省略派
よって、省略しても大規模プロジェクトできるのは証明済
好きにすりゃいいと思う
0911Name_Not_Found (ワッチョイ 138f-QRBW)
垢版 |
2019/06/29(土) 09:47:01.04ID:OPCKDJxz0
>>905
一部の mifniiier だとエラーになる可能性があったようだけど
今は全然問題ないの?
0912Name_Not_Found
垢版 |
2019/06/29(土) 09:53:47.40ID:???
セミコロンはPrettierがつけるもの
0913Name_Not_Found
垢版 |
2019/06/29(土) 09:57:21.06ID:???
Bootstrapを大規模っていうのはちょっと違うかな?
まあいいや、とにかくminifyも問題ないので
宗教論争してもしょうがないね

自分はセミコロンなんて基本prettierに打ってもらえばいいじゃん派です
0914Name_Not_Found (ワッチョイ 138f-QRBW)
垢版 |
2019/06/29(土) 10:01:51.78ID:OPCKDJxz0


先日の integer 問題ですが
console.log(Number.MAX_SAFE_INTEGER)
とかが参考になって、整数どうしの演算でも相応の範囲で誤差がでないっぽい…?

「拡張倍精度浮動小数点数」とか「四倍精度浮動小数点数」だと話が変わるっぽい…?


正確な所は今から調べるんで、妙なことを書いてたらごめんなさい
0915Name_Not_Found (ワッチョイ 138f-QRBW)
垢版 |
2019/06/29(土) 10:16:21.73ID:OPCKDJxz0
>>904
"ES6" が何を指すかによるんじゃないかなあ…?
「どういう機能を使い、どういうモノは避ける」みたいなのが示されれば、具体的な話も出来るかも

極論 IE11 でも「ES6 の範囲のだけど IE11 で問題ない」モノなら…
0916Name_Not_Found
垢版 |
2019/06/29(土) 11:02:11.44ID:Idr4GD0T
あるテキストをテキストエリアに入力
それを.element1.value で取得して整形
整形したテキストを element2.textContent で別のテキストエリアに出力
てのをやってる。
ここまではうまく出来た。

で、出力用のテキストエリアのテキストを、JSからじゃなくて、キーボードとか普通の方法で一度変更したりすると
その後JSから .textContentを使って出力ができなくなる。

これどうして?回避方法ある?
0918Name_Not_Found
垢版 |
2019/06/29(土) 12:19:05.04ID:Idr4GD0T
>>917
value でできました。
最初 value でやってたけど出来ないからtextContentにしたんだけど
なんでだろう…。
最初はボックス一つでインプットボックスにアウトプットしてたからなのかな?
0919Name_Not_Found
垢版 |
2019/06/29(土) 12:45:07.21ID:???
>>914
JSのNumber基本数値はDoubleなんだから
Doubleで整数が1刻みで表せる値の間に計算結果が収まる限り誤差は出ない
それかNumberの代わりにBignumを使うと良い
0920Name_Not_Found (ワッチョイ 138f-QRBW)
垢版 |
2019/06/29(土) 13:18:53.54ID:OPCKDJxz0
>>919
御返答、ありがとうございます。

Chrome 75 系では
console.log(typeof 1152921504606846976n)
は bigint でした。



MDN では Firefox 68系で BigInt のサポートが始まる予定と書かれていますが
ベータ版で確認してみるのも手…なのでしょうか

なにぶん今 Windows8.1 なので、カナリア EDGE は…他に影響ないなら使ってみても良い…?
0921Name_Not_Found
垢版 |
2019/06/29(土) 18:11:31.50ID:???
必要なら躊躇せず使えばいい
もしくはwith-proxyでも実装は大変だがスマートにかける
それか面倒くさいbigint系ライブラリで妥協するか
0922642
垢版 |
2019/06/29(土) 18:17:03.19ID:???
(*´艸`*)
0923Name_Not_Found
垢版 |
2019/06/29(土) 20:10:44.38ID:Idr4GD0T
ぐぐるとjsfiddleをvimモードで操作できるってかいてるけど
vimなんて選択肢keymapにないけどどういうこと?
0924Name_Not_Found
垢版 |
2019/06/29(土) 20:15:20.16ID:Idr4GD0T
自己解決
vimはなくしたようですね。
0925Name_Not_Found
垢版 |
2019/06/30(日) 18:01:04.75ID:5hpWwe94
DOMSubtreeModifiedが非推奨とのことですがどのように書き換えたら良いでしょうか?

<div contenteditable></div>
<div contenteditable></div>

document.querySelectorAll( "[contenteditable]" ).forEach( function( value ) {
value.addEventListener( "DOMSubtreeModified", function( event ) {
console.log( value.innerText )
});
});
0926Name_Not_Found
垢版 |
2019/06/30(日) 18:13:26.97ID:???
残しといていいんじゃない?
MutationObserver使えるブラウザの時だけ使うようにすれば
0927Name_Not_Found
垢版 |
2019/06/30(日) 18:44:01.25ID:???
document.querySelectorAll("[contenteditable]").forEach(node => {
new MutationObserver(records => {
console.log(node.innerText);
}).observe(node, { childList: true, subtree: true });
});
0929Name_Not_Found
垢版 |
2019/07/02(火) 01:38:44.20ID:???
質問です
同一平面上に散るn個の点の
他の点との距離を全て計算したいんですが
どうすると計算回数少なくなりますかね?
0930Name_Not_Found
垢版 |
2019/07/02(火) 06:01:37.29ID:???
プログラム板のアルゴリズムのスレで、聞けば?
0931Name_Not_Found
垢版 |
2019/07/02(火) 07:12:15.30ID:???
WebGLを利用してマトリックス演算するのが最も速い
0932Name_Not_Found
垢版 |
2019/07/02(火) 09:36:14.53ID:???
誘導されて来ました。
JavascriptでDataTablesが使われているときに
左上のselectをTampermonkeyから自動でselectedにしても
表が更新されません。
どうすればいいのでしょうか。
0933Name_Not_Found
垢版 |
2019/07/02(火) 19:12:57.71ID:???
・特定のイベントを起こす
・スクリプトに介入して関数を実行する
・今ある表は消して自分で表を作る
0934Name_Not_Found
垢版 |
2019/07/03(水) 17:35:35.77ID:???
初心者の質問ですみません
スクリプト側から「今ブラウザが(どの程度)アイドル状態か」を知る方法ってどんな手があるでしょうか?
タブを開いている最中(読み込んでいる最中)だとか、CPU負荷だとか色んな指標がありますが、
少なくとも今時分のタブだけじゃなく、ブラウザ全体での負荷量や作業量が知りたいのですが。
0935Name_Not_Found
垢版 |
2019/07/03(水) 18:03:50.92ID:???
いちサイトのスクリプト風情が、ユーザー様のブラウザのリソース情報をぶっこ抜きたいという話?
0936Name_Not_Found
垢版 |
2019/07/03(水) 18:11:10.87ID:???
>>934
スクリプトからは自分の情報しか見れません。
他の情報は見れたら困る。絶対禁止。
0937Name_Not_Found
垢版 |
2019/07/03(水) 18:45:59.62ID:???
へー、どうやってスクリプトから自分の情報見んだよ。書いてみろよ。
0938Name_Not_Found
垢版 |
2019/07/03(水) 19:43:32.92ID:???
>>934

タブ割当メモリを見る(他のタブにも影響される)
performance.memory (.measureMemory策定中)

CPUの稼働状況を測る
performance.profile()

表示負荷を書けたくない描画は
requestPostAnimationFrame

アイドル中に処理がしたければ
requestIdleCallback

システムがロックされていたり、ユーザーのアイドル状態を検知するには
IdleDetector
0939Name_Not_Found
垢版 |
2019/07/03(水) 20:35:09.81ID:???
>>938
ありがとうございます
まさにrequestIdleCallback が目的のことに使えそうでした
急ぎではない処理を、ブラウザの他の重い作業(他のタブの作業やブラウザアドオン等)の邪魔をせずに始めたい
(そうしないとブラウザが果てしなく重くなり自分にとっても操作が緩慢になるだけなので)という要求があったのですが
こういう機能がついたということは他の人にとってもこれが欲しい状況はあるあるだったのでしょうね。
それにしてもこういう便利な機能を網羅的につらつら読んで知っていける本ってあるのでしょうか
0940Name_Not_Found
垢版 |
2019/07/03(水) 20:58:00.20ID:???
>>939
とりあえずここでも見たら?
https://www.chromestatus.com/features
HTML5ムーブメント時代からの重要点が1500項目くらいにまとまってるので
HTML、HTML5の基本を勉強してこれを全部読み、さらに興味があるものを深掘りするのが良いと思う
0941Name_Not_Found
垢版 |
2019/07/04(木) 12:00:10.54ID:???
質問です(初心者です)

{(ストレージなど)を読み、加工して、書き込む}、という一連の処理部分があるとします、
そこを実行してる時に他の同類の処理が並行して走ると、ストレージの加工の前後関係が崩れてしまうという時に
{}内の動作だけは他の(タブやスレッドの?)処理を止めたい、割り込まれたくない、という時はどうしたらいいんでしょうか?
0942Name_Not_Found
垢版 |
2019/07/04(木) 12:36:44.39ID:???
>>941
一連だけど同期的じゃないんだよね
ほぼ同期的ならIDBでwriteモードで開けば
その間は他はwriteモードで開けない
汎用的にやるならLock APIを使って皆で管理する
0943Name_Not_Found
垢版 |
2019/07/04(木) 16:11:12.75ID:???
DBで制御するという手は打てない?
0944Name_Not_Found
垢版 |
2019/07/05(金) 07:07:43.26ID:???
DBに制御する機能が無いなら
皆でルールを守って使うということになる
0945Name_Not_Found
垢版 |
2019/07/05(金) 13:01:21.41ID:???
ユーザからの入力文字数を一定以内に制限する必要があるのですが、
CSSで使える色名は何文字にするのが良いでしょうか?
rebeccapurpleのようにいきなり色んな理由で長名の色が入る事があるのではないかと危惧しています。
かと言って合理的で最小限の数値としてその数字を選んだ根拠を示さないと行けないので十分余裕を持って50文字とか、ちょっとキリ良く20文字位にする的な決定はできません。
0946Name_Not_Found (ワッチョイ 238f-26dl)
垢版 |
2019/07/05(金) 13:58:08.51ID:yJLLMlRM0
>>945
LineモバイルのID入力欄はこんなかんじ

<input type="text" name="loginAccount" class="md01InputTxt FnRequired FnOneByteAlphabetNumeric FnMin FnAllowEnterToGo"
maxlength="20" minlength="6" placeholder="ログインID" value="" />
0947Name_Not_Found (ワッチョイ 238f-26dl)
垢版 |
2019/07/05(金) 13:59:47.06ID:yJLLMlRM0
>>945
> CSSで使える色名

hex強制で6文字とか
0948Name_Not_Found
垢版 |
2019/07/05(金) 14:00:18.21ID:???
<input type="color">じゃダメなんですか?
0949Name_Not_Found (ワッチョイ 238f-26dl)
垢版 |
2019/07/05(金) 14:01:49.05ID:yJLLMlRM0
hexだと "6" だな
16進数強制で最大6文字(だめか)
0952Name_Not_Found
垢版 |
2019/07/06(土) 10:51:43.78ID:lnUTT+U+
一つのボタンに2つのイベントリスナってつけられますか?
なんとかしてできないでしょうか?
ユーザスクリプトで既存のサイトのボタンにイベントリスナを追加したいのですが。
0953Name_Not_Found
垢版 |
2019/07/06(土) 11:05:47.47ID:lnUTT+U+
あ、addEventListenerでふつうにできるっぽいかな?
0955Name_Not_Found
垢版 |
2019/07/06(土) 20:31:55.54ID:???
複数のイベントリスナをつけるためのaddEventListener
.onclick=とかだと1個しか付けられなかった
0956Name_Not_Found
垢版 |
2019/07/06(土) 20:35:02.46ID:???
チラシの裏ですけれども
はあ、バグが取れない…
半日取り組んで成果なし。
もう疲れたよ…
0958Name_Not_Found
垢版 |
2019/07/07(日) 02:33:24.43ID:???
なんとかドリブン
なんとかファースト
0960Name_Not_Found
垢版 |
2019/07/07(日) 08:28:46.54ID:???
jQuery なら、こういう感じ。
「jquery event 複数」で検索!

$( 'CSS セレクター' ).on('click mouseenter', function() { 処理 } )

$( 'CSS セレクター' ).on({
'mouseenter': function() { 処理 },
'mouseleave': function() { 処理 }
})
0961Name_Not_Found
垢版 |
2019/07/07(日) 12:16:27.93ID:8iiFsdca
objectとarrayの違いってなんだっけ
0962Name_Not_Found
垢版 |
2019/07/07(日) 13:18:07.45ID:???
数字プロパティやlengthプロパティへのアクセスをケアする機能を持ったオブジェクトがarray
0966Name_Not_Found
垢版 |
2019/07/07(日) 16:57:43.29ID:???
>>965
自分で試せば分かる事は自分で試す、基本
0968Name_Not_Found
垢版 |
2019/07/09(火) 03:29:25.21ID:???
ニートだけどhtml cssやってjs jquery勉強中だけど、どれぐらいできるようになったら就職していい?
0970Name_Not_Found
垢版 |
2019/07/09(火) 12:24:08.01ID:???
>>968
知識・技術がいくらあってもそんなにage評価されん
技術・知識がちょっとでも足りないとsage評価されっけど

なので出来ないことが無いように頑張れ
あったら全力で隠して、依頼があってから死ぬ気で身につけよう
0971Name_Not_Found
垢版 |
2019/07/09(火) 14:23:47.67ID:???
>>968
ちまたにある tips とされるもののうち
20個くらい間違ってると発見できたら
そのコード提出した上で職探すよろし

次スレで FAQ として掲げられたページの
カビ臭い部分全部直す、とかね
0972Name_Not_Found
垢版 |
2019/07/09(火) 16:11:16.89ID:???
>>970 >>971
サンクス、時間だけはあるから色んなサイトで一通りやってくるわ
0973Name_Not_Found
垢版 |
2019/07/10(水) 07:14:49.33ID:???
・うるう年判別コードを Date 型をもちいて実装せよ
・ゼロパディング("3" -> "0003") を、if も slice も使わずに実装せよ
・0.1 + 0.1 = 0.2 というふうに誤差が出ないように、小数と小数の和を求めよ

…とか…
0974Name_Not_Found
垢版 |
2019/07/10(水) 08:01:18.59ID:???
それが基礎になるから、

Linux の数十の基本コマンド・シェルスクリプトと、
Ruby で、Sinatra をいじくって、Rails やれば、サーバー側のウェブプログラマー!

Rubyからは飛躍的に世界が広がるから、Kotlin, Go にも行ける
0975Name_Not_Found
垢版 |
2019/07/10(水) 10:14:07.06ID:???
Ruby なんかをやる時間があったら Python をやりましょう
0976Name_Not_Found
垢版 |
2019/07/10(水) 11:55:20.46ID:???
Rubyの世界は飛躍的に狭まってるがなw
0977Name_Not_Found
垢版 |
2019/07/10(水) 12:03:00.06ID:???
Rubyより jQuery の方が優先順位は遥かに高かろう
最初は jQuery なんて「そんな名前のものがあるんだな」程度でガン無視で良い
0978Name_Not_Found
垢版 |
2019/07/12(金) 06:42:10.68ID:???
>>968
今だったらLayoutAPI使ってgrid再現したり
PaintAPIでカスタムボタン要素作ってみたり
Houdini系を巧みに扱えればHTML、CSS、JSの技術と
一連のレンダリングフローの知識があると評価してもらえると思うよ
0979Name_Not_Found
垢版 |
2019/07/27(土) 10:23:40.77ID:???
100点満点中1点ぐらいだろうけどな
(そんなもんやればわかること)
0980Name_Not_Found
垢版 |
2019/07/31(水) 17:30:00.05ID:nbAt67+R
>>72
<br/>は?
0982Name_Not_Found
垢版 |
2019/08/31(土) 01:24:32.98ID:???
スムーズスクロールをJSで書こうとしたけど駄目でした。
難しい・・・・
0988Name_Not_Found
垢版 |
2019/09/06(金) 18:36:52.18ID:???
>>982
頑張れ

でもScrollIntoView()だけで済むようになっちゃうかも…
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 120日 3時間 8分 17秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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