JavaScript を自ら学ぶ人のための質問スレッドです。
■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
前スレ
+ JavaScript の質問用スレッド vol.125 +
https://mevius.5ch.net/test/read.cgi/tech/1518940081/
(ライブラリ禁止条項は、多数の意見によって廃止されました。ライブラリの質問もOKです)
+ JavaScript の質問用スレッド vol.126 +
レス数が1000を超えています。これ以上書き込みはできません。
2018/06/02(土) 14:31:23.04ID:B1JKBGEy
908デフォルトの名無しさん
2019/01/21(月) 08:30:56.83ID:8RTHI8s9 >>899
UIだけなら、CSSでボタンライクではないようにも変更できるわけでdiv要素を使う理由はない
UIだけなら、CSSでボタンライクではないようにも変更できるわけでdiv要素を使う理由はない
909デフォルトの名無しさん
2019/01/21(月) 09:28:46.72ID:63p0KSKR >>907
Enterキー押下時のclickイベント拾わない話じゃねーかとエスパーしてみる
それは他のブラウザでも同じなので、keydownイベント拾ってEnterキーだけ抽出してclickイベント時と同じ挙動をさせるしかないよね
shift/alt/meta/ctrlキー同時押しはもちろん排除するとしてさ
Enterキー押下時のclickイベント拾わない話じゃねーかとエスパーしてみる
それは他のブラウザでも同じなので、keydownイベント拾ってEnterキーだけ抽出してclickイベント時と同じ挙動をさせるしかないよね
shift/alt/meta/ctrlキー同時押しはもちろん排除するとしてさ
910デフォルトの名無しさん
2019/01/21(月) 12:48:28.69ID:DT8npDQe911デフォルトの名無しさん
2019/01/21(月) 14:19:25.15ID:PNnv4t9U javascriptでreplaceを用いた特定の文字の置換ができないです。
// サーバーからデータを受信したとき
function onReceive(data) {
let json = JSON.parse(data);
let messages = document.getElementById('chat');
let li = document.createElement('li');
if(json.text == 'おい'){
json.text = 'オイオイオイ'
}
// JSONから必要なデータを取り出して、テキストにする
li.innerHTML = json.count + ":" + "<span style='color:green'><big><b>ななしさん</b></big></span>" + "ID:" + socket.id + "<BR>" + json.text;
// 画面に要素を追加する
messages.appendChild(li);
}
これがソースコードの一部です。
このソースコードで、「おい」と打ったら「オイオイオイ」と返ってくるのですが、
「あいうおいえお」と打ったら「あいうおいえお」と返ってきます。
本当は「あいうオイオイオイえお」と返ってきてほしいです。
// サーバーからデータを受信したとき
function onReceive(data) {
let json = JSON.parse(data);
let messages = document.getElementById('chat');
let li = document.createElement('li');
if(json.text == 'おい'){
json.text = 'オイオイオイ'
}
// JSONから必要なデータを取り出して、テキストにする
li.innerHTML = json.count + ":" + "<span style='color:green'><big><b>ななしさん</b></big></span>" + "ID:" + socket.id + "<BR>" + json.text;
// 画面に要素を追加する
messages.appendChild(li);
}
これがソースコードの一部です。
このソースコードで、「おい」と打ったら「オイオイオイ」と返ってくるのですが、
「あいうおいえお」と打ったら「あいうおいえお」と返ってきます。
本当は「あいうオイオイオイえお」と返ってきてほしいです。
912デフォルトの名無しさん
2019/01/21(月) 14:23:43.50ID:DqxQvGU+ replace使ってないから
913デフォルトの名無しさん
2019/01/21(月) 14:27:21.86ID:PNnv4t9U if(json.text == 'おい'){
json.text = 'オイオイオイ'
}
上記の部分を
json.text.replace('おい','オイオイオイ')
にしたら何も表示されなくなってしまいました。
json.text = 'オイオイオイ'
}
上記の部分を
json.text.replace('おい','オイオイオイ')
にしたら何も表示されなくなってしまいました。
914デフォルトの名無しさん
2019/01/21(月) 14:31:42.02ID:DqxQvGU+915デフォルトの名無しさん
2019/01/21(月) 14:39:13.61ID:PNnv4t9U916デフォルトの名無しさん
2019/01/21(月) 14:40:34.76ID:PNnv4t9U917デフォルトの名無しさん
2019/01/21(月) 14:45:16.85ID:DqxQvGU+ replaceってヒントを貰ってるんだから、replaceについて調べればいいだけ
918デフォルトの名無しさん
2019/01/21(月) 16:01:51.07ID:PNnv4t9U919デフォルトの名無しさん
2019/01/21(月) 16:05:59.24ID:DqxQvGU+ 無能ってすぐ人に答えを求めるよな
https://medaka.5ch.net/test/read.cgi/prog/1540885252/
やっぱり俺って有能なんだなあ
すぐ人に答えを求めたりしないしな
https://medaka.5ch.net/test/read.cgi/prog/1540885252/
やっぱり俺って有能なんだなあ
すぐ人に答えを求めたりしないしな
920デフォルトの名無しさん
2019/01/21(月) 17:34:06.91ID:UEk4ntQa # 詳しい人、知恵を貸してくれ。
div1 = document.createElement("div")、document.body.appendChild(div1)
として、div1 の style の position を absolute や fixed として、
style.top, style.left に座標を指定しても、以下のような affiliate がある場合、
newBox の margin の 100px と全く同じだけ、div1 の位置が下に下がってしまう。
仕様上は、position:absolute は、親要素であるところの body 要素の左上の点からの
相対位置で指定されるはずなのに、なぜだろう?
自分の理解では、以下の affiliate は、div1 などのもっとも年上の兄弟として
追加されるだけだから、div1 の位置には影響を与えないと思うんだが。
var func = function(){
var parent = document.getElementsByTagName("body")[0];
var newBox = document.createElement("div");
newBox.setAttribute('id', 'vdbanner');
newBox.setAttribute("style","display:block!important;position:relative!important;top:0!important;left:0!important;margin:100px 0 !important;padding:0!important;text-align:center!important;");
newBox.innerHTML = "広告内容";
parent.insertBefore(newBox, parent.firstChild);
}
try {
window.addEventListener("load", func, false);
}
catch(e) {
window.attachEvent("onload", func);
}
div1 = document.createElement("div")、document.body.appendChild(div1)
として、div1 の style の position を absolute や fixed として、
style.top, style.left に座標を指定しても、以下のような affiliate がある場合、
newBox の margin の 100px と全く同じだけ、div1 の位置が下に下がってしまう。
仕様上は、position:absolute は、親要素であるところの body 要素の左上の点からの
相対位置で指定されるはずなのに、なぜだろう?
自分の理解では、以下の affiliate は、div1 などのもっとも年上の兄弟として
追加されるだけだから、div1 の位置には影響を与えないと思うんだが。
var func = function(){
var parent = document.getElementsByTagName("body")[0];
var newBox = document.createElement("div");
newBox.setAttribute('id', 'vdbanner');
newBox.setAttribute("style","display:block!important;position:relative!important;top:0!important;left:0!important;margin:100px 0 !important;padding:0!important;text-align:center!important;");
newBox.innerHTML = "広告内容";
parent.insertBefore(newBox, parent.firstChild);
}
try {
window.addEventListener("load", func, false);
}
catch(e) {
window.attachEvent("onload", func);
}
921デフォルトの名無しさん
2019/01/21(月) 17:53:37.90ID:DqxQvGU+ 長ったらしいので翻訳。まずimportant;は使うな
#vdbanner {
display: block !important;
position: relative !important;
top: 0 !important;
left: 0 !important;
margin: 100px 0 !important;
padding: 0 !important;
text-align: center !important;
}
$(function() {
$("<div/>", {id: 'vdbanner', text: '広告内容'}).prependTo('body');
});
#vdbanner {
display: block !important;
position: relative !important;
top: 0 !important;
left: 0 !important;
margin: 100px 0 !important;
padding: 0 !important;
text-align: center !important;
}
$(function() {
$("<div/>", {id: 'vdbanner', text: '広告内容'}).prependTo('body');
});
922デフォルトの名無しさん
2019/01/21(月) 17:59:05.34ID:PNnv4t9U できたぞ、質問に答えられないバカ
var result = json.text
for(var i=0;i<json.text.length;i++){
if(json.text[i] == 'お' && json.text[i+1]=='い'){
var tagetString = json.text;
var reString = /おい/gi; // 複数を置換する時は"g"を、
// 大文字/小文字の区別をしない場合には"i"を指定します。
var repStrung = "オイオイオイ";
result = tagetString.replace(reString, repStrung);
}
}
じゃあな無能
var result = json.text
for(var i=0;i<json.text.length;i++){
if(json.text[i] == 'お' && json.text[i+1]=='い'){
var tagetString = json.text;
var reString = /おい/gi; // 複数を置換する時は"g"を、
// 大文字/小文字の区別をしない場合には"i"を指定します。
var repStrung = "オイオイオイ";
result = tagetString.replace(reString, repStrung);
}
}
じゃあな無能
923デフォルトの名無しさん
2019/01/21(月) 18:04:30.32ID:DqxQvGU+ 一行で書けるけど、じゃあなって言われたな。じゃあなwwww
924デフォルトの名無しさん
2019/01/21(月) 18:29:08.32ID:mEBdwP2z >>899
ボタン部分だけのクリックじゃなくて、
もう少し範囲を広くして、ボタンを含む、div で、クリックイベントを動作させたいのかね?
ボタン部分だけだと、範囲が狭くて、うまく押せない人がいるから
それと投稿者は、次に投稿する際に、名前欄に最初の投稿のレス番号を入れてくれ
ボタン部分だけのクリックじゃなくて、
もう少し範囲を広くして、ボタンを含む、div で、クリックイベントを動作させたいのかね?
ボタン部分だけだと、範囲が狭くて、うまく押せない人がいるから
それと投稿者は、次に投稿する際に、名前欄に最初の投稿のレス番号を入れてくれ
925デフォルトの名無しさん
2019/01/21(月) 18:34:04.07ID:mEBdwP2z926デフォルトの名無しさん
2019/01/21(月) 18:36:35.58ID:mEBdwP2z >>920
web の質問は、こちらの板ではなく、web制作管理板の方へ書き込んでください!
web の質問は、こちらの板ではなく、web制作管理板の方へ書き込んでください!
927デフォルトの名無しさん
2019/01/21(月) 18:37:59.67ID:/g0A2C06 >>922 は酷いコードだなあ
928デフォルトの名無しさん
2019/01/21(月) 18:53:53.44ID:UEk4ntQa929デフォルトの名無しさん
2019/01/21(月) 18:59:45.68ID:x6DE2oRu930デフォルトの名無しさん
2019/01/21(月) 19:03:58.42ID:UOzXXkDM >>922
var result = json.text.replace('おい', 'オイオイオイ')
var result = json.text.replace('おい', 'オイオイオイ')
931デフォルトの名無しさん
2019/01/21(月) 22:12:37.48ID:XPYcyOEd >>930
それを複数個作るとエラーが出るんです。
それを複数個作るとエラーが出るんです。
932デフォルトの名無しさん
2019/01/21(月) 22:20:46.95ID:UOzXXkDM >>931
var result = json.text.replace(/おい/g, 'オイオイオイ')
var result = json.text.replace(/おい/g, 'オイオイオイ')
933デフォルトの名無しさん
2019/01/21(月) 23:50:10.62ID:30QJt/vt ES6で新たに導入された式や文は
ES5.1の構文糖衣と考えて良いの?
ES5.1の構文糖衣と考えて良いの?
934デフォルトの名無しさん
2019/01/21(月) 23:51:40.65ID:DqxQvGU+ 「ES5.1の構文糖衣」という表現がおかしい
935デフォルトの名無しさん
2019/01/22(火) 06:53:00.52ID:dHPHLM6Z Class構文は再現できないので糖衣構文ではない
936デフォルトの名無しさん
2019/01/22(火) 09:26:06.80ID:QhWv4dIw >>935
> ECMAScript 2015 で導入された JavaScript クラスは、
> JavaScript にすでにあるプロトタイプベース継承の糖衣構文です。
> クラス構文は、新しいオブジェクト指向継承モデルを JavaScript に導入しているわけではありません。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Classes
> ECMAScript 2015 で導入された JavaScript クラスは、
> JavaScript にすでにあるプロトタイプベース継承の糖衣構文です。
> クラス構文は、新しいオブジェクト指向継承モデルを JavaScript に導入しているわけではありません。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Classes
937デフォルトの名無しさん
2019/01/22(火) 09:32:15.42ID:zKxMKaTe クラス構文だと関数で呼べないから違うものを導入してるよね
938デフォルトの名無しさん
2019/01/22(火) 10:20:50.82ID:SJtsjRub 糖衣構文かどうかにこだわるのってなんでだろう?
マウント取りたいだけな気がする
マウント取りたいだけな気がする
939デフォルトの名無しさん
2019/01/22(火) 12:50:28.60ID:RZTSN9tm940デフォルトの名無しさん
2019/01/22(火) 14:53:55.47ID:SJtsjRub なんかそもそも糖衣構文という言葉をわかってないやつがいるみたいだ
糖衣構文の条件
× ECMAScript 2015で書いたのと同等のことを、ES5で(複雑に)書けること
○ ES5で書いたのと同等のことを、ECMAScript 2015で(シンプルに)書けること
>>939
お前変換の向きが逆
糖衣構文の条件
× ECMAScript 2015で書いたのと同等のことを、ES5で(複雑に)書けること
○ ES5で書いたのと同等のことを、ECMAScript 2015で(シンプルに)書けること
>>939
お前変換の向きが逆
941デフォルトの名無しさん
2019/01/22(火) 15:28:28.10ID:RZTSN9tm それは絶対に違うね
新しい構文というのは問題を新しく解決する為に入れられるわけで
古いコードで書いてたコードがシンプルに書けるようになるものでない方が珍しい
そんな事を語っても仕方がない
古いコードで再現できるかどうかの方が意味がある
新しい構文というのは問題を新しく解決する為に入れられるわけで
古いコードで書いてたコードがシンプルに書けるようになるものでない方が珍しい
そんな事を語っても仕方がない
古いコードで再現できるかどうかの方が意味がある
942デフォルトの名無しさん
2019/01/22(火) 16:20:43.54ID:SJtsjRub また意味不明な
新しい構文の中で従来では複雑な書き方だったものを
シンプルに書けるようにしたものを特別に糖衣構文とよぶんだろ
誰が新しい構文はすべて糖衣構文って言ったんだ?
誰も言ってないだろ
新しい構文の中で従来では複雑な書き方だったものを
シンプルに書けるようにしたものを特別に糖衣構文とよぶんだろ
誰が新しい構文はすべて糖衣構文って言ったんだ?
誰も言ってないだろ
943デフォルトの名無しさん
2019/01/22(火) 18:15:41.76ID:ADfWWjFL シンタックスシュガーがあるならシンタックスヌガーとかシンタックスハニーがあってもおかしくないよね
944デフォルトの名無しさん
2019/01/22(火) 18:31:09.00ID:bOf9tfZi シンタクティックシュガーな。
945デフォルトの名無しさん
2019/01/22(火) 19:07:04.65ID:dHPHLM6Z >>942
度合いの問題だ
「ほぼシンプルに書けるようにすることが目的で導入されたもの」を糖衣構文と呼ぶのは分かる
ほかの要素を無視できるという意味での「ほぼ」だ
そうするとそのほぼというのは例えば感覚で8割〜9割としよう
しかしClass構文でのその目的、重要度はせいぜい6〜7割だということを言ってる
Class構文は従来__proto__を使わないとできなかったスタティックとプロトタイプメソッド両方の継承ということができる
これが俺にとって重要度・構文価値の〜1/10
さらにnewTargetの存在によりビルトインクラスの継承ができるようになった
これが俺にとって重要度・構文価値の〜3/10
少なくともこういう要素はClass構文を語る上で無視できる存在ではないだろう?
そうすると一般にClass構文は糖衣構文ということはできないというのが俺の主張だ
なのでそう言いたいのならコンテキストを絞った上で言わなければいけない
今回の場合も、もし「ES6で新たに導入された式や文は ES5.1の構文糖衣と考えて良い」と答えると
そういうClass構文などの無視できない重要なポイントを気にしていない、
下手すると気にしなくていいという発言になってしまうだろう?
君はそこを取るに足らないポイントだと考えるから、そう言えるんだろうが、
俺は>>933にそこももっと知っておいてほしい、説明したいと思うんだよ
そういう違いさ
度合いの問題だ
「ほぼシンプルに書けるようにすることが目的で導入されたもの」を糖衣構文と呼ぶのは分かる
ほかの要素を無視できるという意味での「ほぼ」だ
そうするとそのほぼというのは例えば感覚で8割〜9割としよう
しかしClass構文でのその目的、重要度はせいぜい6〜7割だということを言ってる
Class構文は従来__proto__を使わないとできなかったスタティックとプロトタイプメソッド両方の継承ということができる
これが俺にとって重要度・構文価値の〜1/10
さらにnewTargetの存在によりビルトインクラスの継承ができるようになった
これが俺にとって重要度・構文価値の〜3/10
少なくともこういう要素はClass構文を語る上で無視できる存在ではないだろう?
そうすると一般にClass構文は糖衣構文ということはできないというのが俺の主張だ
なのでそう言いたいのならコンテキストを絞った上で言わなければいけない
今回の場合も、もし「ES6で新たに導入された式や文は ES5.1の構文糖衣と考えて良い」と答えると
そういうClass構文などの無視できない重要なポイントを気にしていない、
下手すると気にしなくていいという発言になってしまうだろう?
君はそこを取るに足らないポイントだと考えるから、そう言えるんだろうが、
俺は>>933にそこももっと知っておいてほしい、説明したいと思うんだよ
そういう違いさ
946デフォルトの名無しさん
2019/01/22(火) 19:14:29.74ID:yOIcAU/3947デフォルトの名無しさん
2019/01/22(火) 19:19:26.12ID:yOIcAU/3 そして+αの部分がclassでしか使えないのかといえばそうではなく
classを使わなくても、+αの機能は使えるから
やっぱりclassは糖衣構文
classを使わなくても、+αの機能は使えるから
やっぱりclassは糖衣構文
948デフォルトの名無しさん
2019/01/22(火) 19:33:50.03ID:dHPHLM6Z >>947
Class構文のES5で代替不可能な機能はES6の他のより基本的な機能で代替可能だから、
ES6も入れたら糖衣構文と言ってもいいよ
でも今回はそうじゃないから
ES6の機能が、従来のES5の機能の糖衣構文と言えるかという話だから
その辺り俺は言葉に慎重だが、君は適当
そういう違いさ
Class構文のES5で代替不可能な機能はES6の他のより基本的な機能で代替可能だから、
ES6も入れたら糖衣構文と言ってもいいよ
でも今回はそうじゃないから
ES6の機能が、従来のES5の機能の糖衣構文と言えるかという話だから
その辺り俺は言葉に慎重だが、君は適当
そういう違いさ
949デフォルトの名無しさん
2019/01/22(火) 19:34:52.68ID:hY3Lw6Bc 糖衣構文の反対はキムチ構文って呼ぶってことで
この話題終わりにしませんか?
この話題終わりにしませんか?
950デフォルトの名無しさん
2019/01/22(火) 19:38:42.19ID:dHPHLM6Z951デフォルトの名無しさん
2019/01/22(火) 19:41:39.36ID:ClMLgqLU 言葉に慎重なら糖衣構文っていう和訳も微妙
952デフォルトの名無しさん
2019/01/22(火) 19:54:31.00ID:bOf9tfZi 構文的砂糖
953デフォルトの名無しさん
2019/01/22(火) 20:06:22.32ID:YQBTnTrr954デフォルトの名無しさん
2019/01/22(火) 20:16:41.69ID:YQBTnTrr955デフォルトの名無しさん
2019/01/22(火) 22:05:19.77ID:4TOwjU0o 話変わるけどジェネレーターは糖衣構文じゃないよねさすがに。
956デフォルトの名無しさん
2019/01/22(火) 22:38:28.82ID:dHPHLM6Z >>953,954
意味不明なのはあんただ
俺は0.999だからNoとか0.001だからYesとか言うのは嫌いだし
そういう0か1かで糖衣構文「であるのかどうか」を話す気はない
たとえちょっと変な表現であろうと、今回の話の流れの上で糖衣構文「と呼んだほうが良いか」を
アナログ的に考えて、俺なりの想いを持って方が良い、悪いと話している
また俺はClass限定の話を始めたわけではない
わかりやすい一例としてまずClassでの事実を1つ挙げただけ
そこから質問者が食いつけばClass構文が入ることによる新たな可能性を話すつもりだったのに
変におかしな流れに誘導したのは君の方だよ
少なくとも俺は>>933を俺なりに解釈して話を始めた
そこで君が横から言葉の使い方がどうのこうのヤンヤン言って来ても知らんがなって感じ
君の脳内パーサではエラーが出たんだろうが、それをエラーですエラーですエラーですよって、うるさい目覚まし時計かって感じ
俺のゆるゆるパーサでは通ったんだから俺は話を進める、君は固まっとく、でいいじゃないか
俺までどうにかして止めようとする必要はない、俺はそういうのは嫌いだね
JSでも値をチェックして例外を吐くとかね
値をできるだけ加工したり用意の仕方を工夫して無効な値を極力作らないようにする方が俺は好きだ
ともかく君の定義ではそもそも話がおかしいのはおっしゃる通り
だからこそ俺はその定義は今回はそぐわないとしてるところに、わざわざその破綻する定義を持ってきて
ギーギーガーガーおかしいおかしい言われても しつこいポンコツ機械かよって感じ
まあそんな感じ
意味不明なのはあんただ
俺は0.999だからNoとか0.001だからYesとか言うのは嫌いだし
そういう0か1かで糖衣構文「であるのかどうか」を話す気はない
たとえちょっと変な表現であろうと、今回の話の流れの上で糖衣構文「と呼んだほうが良いか」を
アナログ的に考えて、俺なりの想いを持って方が良い、悪いと話している
また俺はClass限定の話を始めたわけではない
わかりやすい一例としてまずClassでの事実を1つ挙げただけ
そこから質問者が食いつけばClass構文が入ることによる新たな可能性を話すつもりだったのに
変におかしな流れに誘導したのは君の方だよ
少なくとも俺は>>933を俺なりに解釈して話を始めた
そこで君が横から言葉の使い方がどうのこうのヤンヤン言って来ても知らんがなって感じ
君の脳内パーサではエラーが出たんだろうが、それをエラーですエラーですエラーですよって、うるさい目覚まし時計かって感じ
俺のゆるゆるパーサでは通ったんだから俺は話を進める、君は固まっとく、でいいじゃないか
俺までどうにかして止めようとする必要はない、俺はそういうのは嫌いだね
JSでも値をチェックして例外を吐くとかね
値をできるだけ加工したり用意の仕方を工夫して無効な値を極力作らないようにする方が俺は好きだ
ともかく君の定義ではそもそも話がおかしいのはおっしゃる通り
だからこそ俺はその定義は今回はそぐわないとしてるところに、わざわざその破綻する定義を持ってきて
ギーギーガーガーおかしいおかしい言われても しつこいポンコツ機械かよって感じ
まあそんな感じ
957デフォルトの名無しさん
2019/01/22(火) 23:13:06.23ID:YQBTnTrr958デフォルトの名無しさん
2019/01/22(火) 23:13:38.81ID:XoIF472X 頭イカれてるエンジニアによくある回答
959デフォルトの名無しさん
2019/01/22(火) 23:25:49.01ID:k+Ga/jCN 糖衣構文+αじゃなくて、完璧に糖衣構文でしょ
糖衣構文+αだったら糖衣構文とは言わないよ
糖衣構文+αだったら糖衣構文とは言わないよ
960デフォルトの名無しさん
2019/01/22(火) 23:28:26.41ID:IcipLgKo 糖衣構文か否かの議論の果てにどんな結論があるんだろ
961デフォルトの名無しさん
2019/01/22(火) 23:30:12.08ID:Rn6qecVY >>959
同意
同意
962デフォルトの名無しさん
2019/01/22(火) 23:46:44.98ID:5TeSwszl var flagA = false && true || true;
変数flagAがtrueとなるのは、
false && trueがfalseになって、
false || true
true
となるからだと思うのですが、
ひとつ目がfalseなのに何故ショートサーキット評価されないのでしょうか。
最初に末尾まで見てて、&&の後ろがひとつの論理式である時だけショートサーキット評価されるってことですか。
あと、
var flagB = true || false && false;
flagBがtrueになるのは何故ですか。
true || falseがtrueになって、
true && false
false
になると思うんですが。
変数flagAがtrueとなるのは、
false && trueがfalseになって、
false || true
true
となるからだと思うのですが、
ひとつ目がfalseなのに何故ショートサーキット評価されないのでしょうか。
最初に末尾まで見てて、&&の後ろがひとつの論理式である時だけショートサーキット評価されるってことですか。
あと、
var flagB = true || false && false;
flagBがtrueになるのは何故ですか。
true || falseがtrueになって、
true && false
false
になると思うんですが。
963デフォルトの名無しさん
2019/01/23(水) 00:10:25.21ID:djVGMpuO >>959
いうだろ?
ES5で書いたものをclassで完璧に書けるんだぜ?
追加効果があったとしても関係ないだろ
それにそもそも糖衣構文って完全に同じものを
実現しなくてはいけないなんて制限はないんだが?
ほぼすべての糖衣構文はある機能に特化することでより便利にしているが
その反面あるきのう以外のことができなくなってる
他のどんなものが糖衣構文と呼ばれてるか考えてみなよ
糖衣構文という言葉に惑わされてるだけだろ
いうだろ?
ES5で書いたものをclassで完璧に書けるんだぜ?
追加効果があったとしても関係ないだろ
それにそもそも糖衣構文って完全に同じものを
実現しなくてはいけないなんて制限はないんだが?
ほぼすべての糖衣構文はある機能に特化することでより便利にしているが
その反面あるきのう以外のことができなくなってる
他のどんなものが糖衣構文と呼ばれてるか考えてみなよ
糖衣構文という言葉に惑わされてるだけだろ
964デフォルトの名無しさん
2019/01/23(水) 00:11:52.34ID:djVGMpuO965デフォルトの名無しさん
2019/01/23(水) 00:18:30.88ID:eDsfqelL >>962
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
論理積と論理和では論理積の方が優先度が高く、短絡評価は論理積と論理和それぞれの評価について行われる
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
論理積と論理和では論理積の方が優先度が高く、短絡評価は論理積と論理和それぞれの評価について行われる
966デフォルトの名無しさん
2019/01/23(水) 00:18:39.97ID:djVGMpuO 一つ例を出してやる
C言語でswitch〜caseはifの糖衣構文と呼ばれているが、
ifでやれることのすべてをswitch〜caseでやれるわけじゃない
switch(a) ← 変数aとの比較限定になっている
この点においてswitchはifの制限版
また逆にswitch〜caseのfall throughはifでは実現できない
この点において、switchは糖衣構文+αの機能を持っていると言える
C言語でswitch〜caseはifの糖衣構文と呼ばれているが、
ifでやれることのすべてをswitch〜caseでやれるわけじゃない
switch(a) ← 変数aとの比較限定になっている
この点においてswitchはifの制限版
また逆にswitch〜caseのfall throughはifでは実現できない
この点において、switchは糖衣構文+αの機能を持っていると言える
967デフォルトの名無しさん
2019/01/23(水) 00:20:16.03ID:NPxQuWhQ >>962
ショートサーキットしてる
false && true || trueの二番目のtrueは評価されない
それと後者の答えは優先順位が違うから
&& は||より先に評価される
四則演算でいうと||が足し算で&&はかけ算
ショートサーキットしてる
false && true || trueの二番目のtrueは評価されない
それと後者の答えは優先順位が違うから
&& は||より先に評価される
四則演算でいうと||が足し算で&&はかけ算
969デフォルトの名無しさん
2019/01/23(水) 00:59:58.12ID:GUcVvLjn QZは馬鹿だから無視でおk
「車は右側を走れるか」みたいな話は余計脱線するだけ
「車は右側を走れるか」みたいな話は余計脱線するだけ
970デフォルトの名無しさん
2019/01/23(水) 01:06:50.82ID:djVGMpuO ふむ。まあ要するにES6の機能をES5で実現できれば糖衣構文。
実現できなければ糖衣構文ではない。という定義は
完全に間違っているってことだな
実現できなければ糖衣構文ではない。という定義は
完全に間違っているってことだな
971デフォルトの名無しさん
2019/01/23(水) 01:08:18.69ID:GUcVvLjn972デフォルトの名無しさん
2019/01/23(水) 13:27:42.36ID:1r6euYxZ せっかちなのは君の好きにすればいいけど
勝手に思い込んで突っ走って人に迷惑かけて……
もうクズの見本みたいな振る舞いしてる事に気が付いたほうがいいよ
勿体ないよ
勝手に思い込んで突っ走って人に迷惑かけて……
もうクズの見本みたいな振る舞いしてる事に気が付いたほうがいいよ
勿体ないよ
973デフォルトの名無しさん
2019/01/23(水) 19:36:29.61ID:djVGMpuO 特に言い返すことは無いようで
974デフォルトの名無しさん
2019/01/24(木) 20:07:28.47ID:iWJQcTkX const foo = [1, 3, 5, 7, 9];
const bar = [3];
console.log(foo[bar]); // 7
このコードの意味がよくわかりません
状況からしてbar[0]の3を自動で取り出してfooの添え字にしてるように見えますが、そんな意味不明な動きしますか?
Cでいう*barみたいに配列の先頭アドレスから値を取り出してる??
const bar = [3];
console.log(foo[bar]); // 7
このコードの意味がよくわかりません
状況からしてbar[0]の3を自動で取り出してfooの添え字にしてるように見えますが、そんな意味不明な動きしますか?
Cでいう*barみたいに配列の先頭アドレスから値を取り出してる??
975デフォルトの名無しさん
2019/01/24(木) 20:18:20.31ID:x2HCgLhu976デフォルトの名無しさん
2019/01/24(木) 20:28:18.18ID:iWJQcTkX >>975
すみません、業務で見たコードで、実際にはfoo相当の配列はオブジェクトの配列でした
先のコードは自分で実験用に動かしたコードです
なるほど、添え字に配列変数を指定すると、toStringメソッドが走る
配列変数のtoStringメソッドは角括弧なしで中身の要素をカンマつなぎする
なので要素が数字かつ1つしかなければ、その数字を添字にしたのと同じことになる、ということでしょうか
すみません、業務で見たコードで、実際にはfoo相当の配列はオブジェクトの配列でした
先のコードは自分で実験用に動かしたコードです
なるほど、添え字に配列変数を指定すると、toStringメソッドが走る
配列変数のtoStringメソッドは角括弧なしで中身の要素をカンマつなぎする
なので要素が数字かつ1つしかなければ、その数字を添字にしたのと同じことになる、ということでしょうか
977デフォルトの名無しさん
2019/01/24(木) 20:43:27.11ID:x2HCgLhu >>976
概ねその通りだが、俺は
> 配列変数のtoStringメソッドは角括弧なしで中身の要素をカンマつなぎする
これが仕様なのか環境依存なのかは知らんよ。
いずれにしても、「配列を添字として使う」事自体があり得ないだろ。
糞コードだし、修正すべきだよ。
動いているからバグとして検出されず、結果的に修正漏れになっている、ということかな。
なおその手の詳細な挙動を知りたければ、仕様書を読むしかない。
JavaScriptの仕様書は他言語で言う仕様書ではなく、実装指示書(詳細設計書)といった方が正しい。
だからオグジェクトの配列のアクセスの仕方(セマンティクス)がいちいち細かく書いてある。
その中で原則的には全てtoStringされていたはずなので、結果的にはそういう挙動になる。
つまり、
× > 添え字に配列変数を指定すると、toStringメソッドが走る
○ 添え字は何であれ全てtoStringされる
だったはず。気になるなら仕様書を確認して。
概ねその通りだが、俺は
> 配列変数のtoStringメソッドは角括弧なしで中身の要素をカンマつなぎする
これが仕様なのか環境依存なのかは知らんよ。
いずれにしても、「配列を添字として使う」事自体があり得ないだろ。
糞コードだし、修正すべきだよ。
動いているからバグとして検出されず、結果的に修正漏れになっている、ということかな。
なおその手の詳細な挙動を知りたければ、仕様書を読むしかない。
JavaScriptの仕様書は他言語で言う仕様書ではなく、実装指示書(詳細設計書)といった方が正しい。
だからオグジェクトの配列のアクセスの仕方(セマンティクス)がいちいち細かく書いてある。
その中で原則的には全てtoStringされていたはずなので、結果的にはそういう挙動になる。
つまり、
× > 添え字に配列変数を指定すると、toStringメソッドが走る
○ 添え字は何であれ全てtoStringされる
だったはず。気になるなら仕様書を確認して。
978デフォルトの名無しさん
2019/01/24(木) 20:48:20.57ID:x2HCgLhu × オグジェクトの配列の
○ オグジェクトや配列の
読める範囲ではあるが、若干混乱するかもしれないので念のため。
○ オグジェクトや配列の
読める範囲ではあるが、若干混乱するかもしれないので念のため。
979デフォルトの名無しさん
2019/01/24(木) 20:48:26.62ID:iWJQcTkX980デフォルトの名無しさん
2019/01/24(木) 21:44:28.43ID:iDh5zyV0 オグジェクトを訂正するのかと思った
981デフォルトの名無しさん
2019/01/25(金) 06:27:54.21ID:i+3XWQgy 別にこの程度非難轟々するほどのコードじゃないだろう
暗黙の型変換がたった1回働いてるだけでしかないのだし
添字は必ずシンボルか文字列として評価されるってことも常識として知っておかないといけないこと
この程度にそんなに目くじらを立ててたらJSが読み書きしにくくなるというか
JSは避けてRustで書いてWasmにするとかした方が良いと思う
暗黙の型変換がたった1回働いてるだけでしかないのだし
添字は必ずシンボルか文字列として評価されるってことも常識として知っておかないといけないこと
この程度にそんなに目くじらを立ててたらJSが読み書きしにくくなるというか
JSは避けてRustで書いてWasmにするとかした方が良いと思う
982デフォルトの名無しさん
2019/01/25(金) 11:52:33.10ID:t0q3jFj9 普通にボロカスに言われるコードだと思う
983デフォルトの名無しさん
2019/01/25(金) 13:15:39.10ID:cZ2z9LwS でも文字列を引数にとる既存の関数をタグ付きテンプレートとして呼び出せるのって['foo']が'foo'に変換される仕様のお陰なんだよなぁ
'hogefugapiyo'.split('fuga').join('hage');
↓
'hogefugapiyo'.split`fuga`.join`hage`
意味のないコードだけどあくまで例として。
'hogefugapiyo'.split('fuga').join('hage');
↓
'hogefugapiyo'.split`fuga`.join`hage`
意味のないコードだけどあくまで例として。
984デフォルトの名無しさん
2019/01/25(金) 13:52:06.04ID:dvigx+iy foo = [ 1, 3, 5, 7, 9 ];
bar = [ 3 ];
p foo[ bar ]
Ruby では、エラーになる。
配列から整数への、暗黙の型変換はできない
やっぱり、JS は、バグる。
怖い
bar = [ 3 ];
p foo[ bar ]
Ruby では、エラーになる。
配列から整数への、暗黙の型変換はできない
やっぱり、JS は、バグる。
怖い
985デフォルトの名無しさん
2019/01/25(金) 14:53:54.07ID:UUOT6d+j javascriptでいう関数ひとつ取ってもる〜ピぃは
def
ブロック
Proc.new
proc
lambda
->
用途に合わせてどれが使えどれが使えないのか、使える場合変換は必要かどうか、変換なしで使える場合も挙動がどう異なるのか(同じように使える場合もすこしづつ挙動が異なるからw)あっちとこっちは相互にどういう変換方法があったか、等しっかり考えて作るもんなww
さすがるっピ!www
def
ブロック
Proc.new
proc
lambda
->
用途に合わせてどれが使えどれが使えないのか、使える場合変換は必要かどうか、変換なしで使える場合も挙動がどう異なるのか(同じように使える場合もすこしづつ挙動が異なるからw)あっちとこっちは相互にどういう変換方法があったか、等しっかり考えて作るもんなww
さすがるっピ!www
986デフォルトの名無しさん
2019/01/25(金) 19:30:27.27ID:a/PpKsi/ >>981みたいな奴が普通に居るのがJavaScriptコミュニティが腐ってる証拠な。
プログラミングを知らない癖に出来ると勘違いした馬鹿が間違ったことを吹聴しすぎてて、
馬鹿が再生産されまくっている。
とはいえ問題点は981以外には分かっているようだし、この話はもういいが。
他言語出身者なら、当初参考にするのはMDNだけにして、
個人が俺ツエーしてるだけのブログ等は全部無視した方がいい。
他言語ではあり得ない確率で間違ってるから、無駄にはまることになる。
emscripten/WebAssemblyが本格稼働するかどうか俺は懐疑的ではあるが、
実際にそうなったときに馬鹿JSerが一斉粛清されるかどうかは見物ではある。
「動けばいい」という基準で書いている限り、「動けばいい」程度のコードしか書けるようにはならない。
しかしこれがJSerの大半なのもまた事実だ。
一般的に「良いコード」とされる物を書けるかどうかはプログラマの技量のみに依存し、
JavaScriptだからといって書けない事はない。
ただ、どちらかというとJSはC寄りで、どんな糞コードでも書けてしまう。
ただこれは、単にJSerの技量が足りないだけであって、推奨されているわけではないので注意のこと。
>>979は今後色々と実感することになるとは思う。
プログラミングを知らない癖に出来ると勘違いした馬鹿が間違ったことを吹聴しすぎてて、
馬鹿が再生産されまくっている。
とはいえ問題点は981以外には分かっているようだし、この話はもういいが。
他言語出身者なら、当初参考にするのはMDNだけにして、
個人が俺ツエーしてるだけのブログ等は全部無視した方がいい。
他言語ではあり得ない確率で間違ってるから、無駄にはまることになる。
emscripten/WebAssemblyが本格稼働するかどうか俺は懐疑的ではあるが、
実際にそうなったときに馬鹿JSerが一斉粛清されるかどうかは見物ではある。
「動けばいい」という基準で書いている限り、「動けばいい」程度のコードしか書けるようにはならない。
しかしこれがJSerの大半なのもまた事実だ。
一般的に「良いコード」とされる物を書けるかどうかはプログラマの技量のみに依存し、
JavaScriptだからといって書けない事はない。
ただ、どちらかというとJSはC寄りで、どんな糞コードでも書けてしまう。
ただこれは、単にJSerの技量が足りないだけであって、推奨されているわけではないので注意のこと。
>>979は今後色々と実感することになるとは思う。
987デフォルトの名無しさん
2019/01/25(金) 19:32:46.97ID:tmiziBOT 今はもうtypescriptで書くのが普通
988デフォルトの名無しさん
2019/01/25(金) 20:14:43.16ID:fW+xzaQf TypeScript使うのはReact使ってるときぐらいだろ?
989デフォルトの名無しさん
2019/01/25(金) 20:18:01.23ID:tmiziBOT 冗談きつい
990デフォルトの名無しさん
2019/01/25(金) 20:31:44.04ID:fW+xzaQf >>989
あ、すまん。ReactじゃなくてAngularだね
あ、すまん。ReactじゃなくてAngularだね
991デフォルトの名無しさん
2019/01/25(金) 20:37:08.43ID:tmiziBOT そうじゃなくて、もう普通にみんな使ってるから
992デフォルトの名無しさん
2019/01/25(金) 21:42:00.59ID:lgKiVxcF c#に似せるならもっとc#にすればよかったのに
あの型の定義の仕方が嫌だ
あの型の定義の仕方が嫌だ
993デフォルトの名無しさん
2019/01/25(金) 22:24:46.13ID:fW+xzaQf994デフォルトの名無しさん
2019/01/25(金) 22:31:45.82ID:NHrDct4H こんなのあった。TypeScript圧倒的。
https://twitter.com/__sakito__/status/1071307378950266882
https://twitter.com/5chan_nel (5ch newer account)
https://twitter.com/__sakito__/status/1071307378950266882
https://twitter.com/5chan_nel (5ch newer account)
995デフォルトの名無しさん
2019/01/25(金) 22:50:09.67ID:7NAKvkXa >>994
どこが?www
Google Search Trends 2014–2018 JavaScript (Red) vs TypeScript (blue) Topic Interest
https://i.imgur.com/cmYy3rw.png
GitHub Top Languages by Repositories Created: TypeScript is Not in the Top 5.
https://github.blog/2018-11-15-state-of-the-octoverse-top-programming-languages/
https://i.imgur.com/pZcCdjw.png
どこが?www
Google Search Trends 2014–2018 JavaScript (Red) vs TypeScript (blue) Topic Interest
https://i.imgur.com/cmYy3rw.png
GitHub Top Languages by Repositories Created: TypeScript is Not in the Top 5.
https://github.blog/2018-11-15-state-of-the-octoverse-top-programming-languages/
https://i.imgur.com/pZcCdjw.png
996デフォルトの名無しさん
2019/01/25(金) 23:35:19.53ID:tmiziBOT 今時型定義も入れずにnpmモジュール作ってるやつとか、白い目で見られるぞ
997デフォルトの名無しさん
2019/01/26(土) 00:03:22.84ID:Ve68vOks >>996
ごく少数から?www
Google Search Trends 2014–2018 JavaScript (Red) vs TypeScript (blue) Topic Interest
https://i.imgur.com/cmYy3rw.png
GitHub Top Languages by Repositories Created: TypeScript is Not in the Top 5.
https://github.blog/2018-11-15-state-of-the-octoverse-top-programming-languages/
https://i.imgur.com/pZcCdjw.png
ごく少数から?www
Google Search Trends 2014–2018 JavaScript (Red) vs TypeScript (blue) Topic Interest
https://i.imgur.com/cmYy3rw.png
GitHub Top Languages by Repositories Created: TypeScript is Not in the Top 5.
https://github.blog/2018-11-15-state-of-the-octoverse-top-programming-languages/
https://i.imgur.com/pZcCdjw.png
998デフォルトの名無しさん
2019/01/26(土) 00:10:36.62ID:yLgVaINv >>997
下のページのtypescriptの伸びは見ないふりしてるの?
下のページのtypescriptの伸びは見ないふりしてるの?
999デフォルトの名無しさん
2019/01/26(土) 00:31:22.48ID:Ve68vOks >>998
延びた結果がこの差なんだよねwww
Google Search Trends 2014–2018 JavaScript (Red) vs TypeScript (blue) Topic Interest
https://i.imgur.com/cmYy3rw.png
延びた結果がこの差なんだよねwww
Google Search Trends 2014–2018 JavaScript (Red) vs TypeScript (blue) Topic Interest
https://i.imgur.com/cmYy3rw.png
1000デフォルトの名無しさん
2019/01/26(土) 00:32:01.77ID:qvEagMOI javascript最高!
rupyキチガイ死ね!
rupyキチガイ死ね!
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 237日 10時間 0分 38秒
新しいスレッドを立ててください。
life time: 237日 10時間 0分 38秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 「日本はドイツと違い反省せず」…中国外相、独外相に対日批判 台湾問題で理解求める [少考さん★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」 [ぐれ★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★6 [七波羅探題★]
- 【警視庁】走行中の電車で女性に露出した下半身押しつけたか 無職の男(46)逮捕「チャンスがあればいつでもやる」 [nita★]
- 【苺ましまろ】立民衆院議員、人気漫画の水着少女画像を「醜悪」タイ人少女の性搾取事件と関連付け…党内で反発 [少考さん★]
- 「残業キャンセル界隈」若者が増加?「職務放棄」との批判も…“定時退社の権利”どこまで通用するか [七波羅探題★]
- 【悲報】ネトウヨゆたぼん、事故の見舞金を乞食したついでに今でもパパの自作自演操り人形なことがバレ終わるwwwwwwwwwww [802034645]
- 【高市悲報】中国軍「公海で空母の発着訓練するって事前通告したのになんで自衛隊機は急接近してきたんだ…?」中国軍困惑 [931948549]
- 30過ぎた大人おじさんが大学生(昔)のままのファッションをする「おじさんキッズコーデ」、炎上して問題視される。 [153490809]
- 現役ドラフト発表WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
- 俺はきっと"全部"嫌いなんだ。息づく全てが俺を苛つかせるんだ。
- 【速報】中国人の凶悪犯罪が急増!害国人の変遷、韓国→ベトナム→中国へ🏡
