X



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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
垢版 |
2018/06/02(土) 14:31:23.04ID:B1JKBGEy
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です)
0867デフォルトの名無しさん
垢版 |
2019/01/19(土) 03:47:07.72ID:pxg53bXv
list.map(x => new Hoge(x))
これを
list.map(Hoge)
みたいに書きたいんですが出来ませんか?
staticでファクトリーメソッド実装するしかない?
0868デフォルトの名無しさん
垢版 |
2019/01/19(土) 06:14:08.63ID:xhDg2W2P
>>867
const Hoge = class {
constructor(a) {
this.a = a;
}
}

const hogeProxy = new Proxy(Hoge, {
get: (target, key) => key === target.name ? x => new target(x) : target[key],
has: (target, key) => (key in target || key === target.name) ? true : false,
})

with (hogeProxy) {
console.log([1, 2, 3].map(Hoge));
}

//=> [Hoge {a: 1}, Hoge {a: 2}, Hoge {a: 3}]
0871デフォルトの名無しさん
垢版 |
2019/01/19(土) 15:43:36.73ID:wiNfQeeu
Ruby では、: で始まるシンボルで、メソッド名を渡すことで、インスタンスメソッドを呼べる

# 数値に変換してから、配列内のすべての数字を足す

puts numbers.map(&:to_i).inject(:+)
0872デフォルトの名無しさん
垢版 |
2019/01/19(土) 15:58:41.16ID:xhDg2W2P
655 デフォルトの名無しさん sage 2018/10/15(月) 05:44:32.10 ID:5+V16LLD
>>649
メソッドにしておくと select(&::positive?) と書けるという理由だった気がする

657 デフォルトの名無しさん 2018/10/15(月) 09:25:55.90 ID:/ogVl406
>>655
きったねえ文法だなぁw
美しい(笑)
疑似コードがそのまま動く(笑)
&::とかの意味不明な疑似コードがどこにあるってんだよwww

658 デフォルトの名無しさん sage 2018/10/15(月) 10:09:06.69 ID:r7U1tD/N
擬似コードがそのまま動くのはPythonじゃね
関数型言語なら演算子がそのまま第一級関数であることとカリー化を使って data |> select ((>) 0) みたいに書けたりするね
ガチ関数型でなくてもまともなラムダがある言語なら select(x => x > 0) と遥かに見通し良く書ける
Rubyの &:: は極めて驚きが大きく醜悪な機能の一つだね
0873デフォルトの名無しさん
垢版 |
2019/01/19(土) 16:23:10.62ID:NKRnmbDh
>>871
> Ruby では、: で始まるシンボルで、メソッド名を渡すことで、インスタンスメソッドを呼べる

シンボルってただの文字列と変わらないからね
定義しなくて使えるから、タイポしてもエラーになるわけじゃないし
0874デフォルトの名無しさん
垢版 |
2019/01/19(土) 16:34:18.49ID:TO8T1N5e
>>867ですがいろいろとありがとうございます。
list.map(Number)ができるならlist.map(Hoge)もできるんじゃないかと思ったのですが、一筋縄では行かないようですね
おうちゃくせずに素直に仮引数つけます
0875デフォルトの名無しさん
垢版 |
2019/01/19(土) 16:57:46.13ID:TeWxng+0
昔はコンストラクタがただの関数だったから、class構文にしなきゃできるな
es5にトランスパイルすればいける
0877デフォルトの名無しさん
垢版 |
2019/01/19(土) 17:17:55.46ID:SwmccsG2
コンパイラエラー C2872 あいまいなシンボルです。

コンパイルエラーが解消出来ません。
ご教授下さい。

■コンパイルエラー内容
error C2872: 'MarketplaceWebServiceProducts' : あいまいなシンボルです

■やりたいこと
AmazonのAPI「Marketplace Web Service API (MWS)」のHello world

以下ページの右上 オレンジ色の「Download」ボタンから入手できる
「MWSProducts_2011-10-01_v2017-03-22.dll」の使用
https://developer.amazonservices.jp/doc/products/products/v20111001/cSharp.html

■DLLの使用
Visual Studioの対象プロジェクトのプロパティから、
上記DLLの参照を追加しました

■コーディング
using namespace MarketplaceWebServiceProducts;//←ここはコンパイルOK
using namespace MarketplaceWebServiceProducts::Mock;//←★ここで上記コンパイルエラー

■ご質問
上位の「MarketplaceWebServiceProducts」が正常なのに、
下位の「Mock」を付けるとあいまいなシンボルになるのはなぜでしょうか。
解決策をご教授ください。(可能であれば実装をご提供ください)

■環境
Visual Studio
.Net 4.0
C++/Cli
0879デフォルトの名無しさん
垢版 |
2019/01/19(土) 18:28:01.65ID:wiNfQeeu
>本当にありがとうございます!!!!!!!!!!!!
>キモヲタ万歳!!!!!!キモヲタ役に立つ!!!!!!!!

この質問者は、荒らしだから、無視しろ!
0880デフォルトの名無しさん
垢版 |
2019/01/19(土) 19:13:31.85ID:42e10N7I
>>875
いや、できないだろ
普通に読んだらthisがインスタンスとならないのだから
0882デフォルトの名無しさん
垢版 |
2019/01/19(土) 19:30:47.77ID:42e10N7I
Hogeの方で工夫するのならスタティックメソッドを生やすのとえっと変わらんじゃん
もしくはHoge.aryFrom(list) みたいなの用意してもいいんだし
0883デフォルトの名無しさん
垢版 |
2019/01/19(土) 19:33:39.03ID:NKRnmbDh
はは、Rubyじゃあるまいし、カッコつけないと
関数呼び出しにならないのに、どうやって場合分けするっていうんだ
はは
0884デフォルトの名無しさん
垢版 |
2019/01/19(土) 19:39:24.01ID:ZDGn0g7S
関数形式で呼ばれたか、コンストラクタとして呼ばれたかで分けるってことだよ
昔みんなやってたじゃん

>>882
そうだよ。変わらんよ。だからどうしたって話だし
0885870
垢版 |
2019/01/19(土) 21:57:39.95ID:7Q3X+Msh
>>884
そう書いたんだが、全く伝わってなかった
0886デフォルトの名無しさん
垢版 |
2019/01/20(日) 00:27:30.68ID:40HwJ7d/
> list.map(x => new Hoge(x))
> これを
> list.map(Hoge)
> みたいに書きたいんですが出来ませんか?

Hogeのどこが関数なの?
関数っていうのはHoge()ってやらないといけないんだよ?
ほんとうに情けないんわ
0887デフォルトの名無しさん
垢版 |
2019/01/20(日) 00:37:29.30ID:62lK6b9v
const double = n => n * 2;
[1, 2, 3].map(double);
//=> [2, 4, 6]

ワロタwww
>>886によるとこのdoubleは関数じゃないらしいw
double(1)みたいな呼び出しじゃないからだってwwwww
0888デフォルトの名無しさん
垢版 |
2019/01/20(日) 00:42:24.82ID:62lK6b9v
class Hoge { 
constructor(x) {  
this.x = x; 
}
}
console.log(typeof Hoge);
//=> function


> Hogeのどこが関数なの?

wwwww
0889デフォルトの名無しさん
垢版 |
2019/01/20(日) 01:16:35.87ID:U54SgNBZ
>>888

お前はこの意味がわかってないんだな

> 関数形式で呼ばれたか、コンストラクタとして呼ばれたかで分けるってことだよ

list.map(Hoge) のHogeは
関数形式で呼ばれたか、コンストラクタとして呼ばれたか
どっちか言ってみ
0890デフォルトの名無しさん
垢版 |
2019/01/20(日) 01:58:00.54ID:62lK6b9v
そんな雑魚レス見てないし関係ない。

> 関数っていうのはHoge()ってやらないといけないんだよ?

これは恥ずかしい誤りwww
反例
[1, 2, 3].forEach(console.log)
0891デフォルトの名無しさん
垢版 |
2019/01/20(日) 05:48:06.80ID:y/Svh0b0
spanやdivのクリックイベントを、buttonと同じ要素に出来ないでしょうか?

コンソールでイベントを確認すると、currentTargetが
divはHTMLParagraphElementで、buttonはHTMLButtonElementになっています。

CSSでdivタグをボタン風にしていることもあるので、
Javascript上でもボタン扱いしたいのですが、書き方次第で変更できるのでしょうか?
0892デフォルトの名無しさん
垢版 |
2019/01/20(日) 07:49:29.85ID:U54SgNBZ
>>890
なんだ?お前重箱の隅ばかりついて、
関数形式で呼ばれたか、コンストラクタとして呼ばれたかで分けても

元の質問者の希望である
list.map(Hoge) とはかけないってことに
まだ気づいてないのか?
0894デフォルトの名無しさん
垢版 |
2019/01/20(日) 09:12:39.85ID:fBsdchbe
>>891
同じHTMLElementだというのがOOPの考え方
ただしHTMLでは徹底出来てないから要注意だが

とはいえ、実際同じとして扱って書いても問題なく動くはず
やってみてから言え
0895デフォルトの名無しさん
垢版 |
2019/01/20(日) 10:08:42.25ID:U54SgNBZ
>>891
> CSSでdivタグをボタン風にしていることもあるので、
> Javascript上でもボタン扱いしたいのですが、書き方次第で変更できるのでしょうか?

そもそもdivタグをボタンにするのが間違い。
そこにクリックできるボタンがあるのなら、ボタンで作るのが正しい
見た目はCSSで変える。何がほしいか?ボタンがほしいならボタンを使う。それだけのこと
0898デフォルトの名無しさん
垢版 |
2019/01/20(日) 15:35:58.63ID:pkTQkmr2
>divはHTMLParagraphElementで、buttonはHTMLButtonElementになっています
多分どちらも、HTMLElement から派生したクラスじゃないの?

Vue.js では、ルーター用のリンクを、<a> タグ以外にも変えられる

<router-link to="/foo" tag="li">foo</router-link>
<!-- 以下のように描画されます -->
<li>foo</li>

tag="button" で、ボタンにもできる
0899デフォルトの名無しさん
垢版 |
2019/01/20(日) 23:43:12.79ID:y/Svh0b0
>>893-894
そういうことではなく、divをクリックしたら
Javascript的に「これはボタン要素です」って認識させたいんです。

>>895-896
確かにそうなんですが、UIとかボタンじゃないほうが良い場合が多々あるんです。
でもデザイン的にボタン風が良いので、spanやdivで代用します。(よく利用されています

<a href="javascript::void(0);" class="button">ボタン</a>で、a要素をボタンにもできますが、
aは使いにくいんですよね。やっぱりデザイン的に使いたいだけなんで、spanかdivなんです。

>>898
Vue.jsは知りませんが、イメージとしてはそういうことがしたいです。
HTML5とかJavascriptとかjQueryとかで可能なら一番なのですが・・・
0900デフォルトの名無しさん
垢版 |
2019/01/20(日) 23:53:43.09ID:enluc8/B
そもそもJSにdivをbuttonとして誤認識させた後に何をしたいのかがよくわからないけど、どうしてもHTMLButtonElementにしたいってのが目的ならそういうコンバーターなり何なりを作るしかないんじゃないの
0901デフォルトの名無しさん
垢版 |
2019/01/21(月) 00:11:05.42ID:oLr+arIk
>>899
意味不明。初心者が馬鹿やろうとしてるとしか。

JavaScriptも24年の歴史があり、広く使われているのだから、
初心者が思いつくようなところで今更困ることはほぼ無い。
それはやり方を間違えているだけ。
多分CSSについて勉強した方がいい。
0902デフォルトの名無しさん
垢版 |
2019/01/21(月) 00:55:24.42ID:DW5LJSe/
この世にIEという存在がなければそんな変なことは考えないのですが、
IEの利用者がまだいてbuttonのクリックイベントと、divのクリックイベントでは
差異があるので、なんとかしようと考えた次第です。

とりあえず「簡単にはできないし、まず無理」という結論であればそれを受け入れます。
0903デフォルトの名無しさん
垢版 |
2019/01/21(月) 01:12:29.24ID:oLr+arIk
>>902
馬鹿乙

IEなんて大昔からあるだろ。
それが本当に必要なら、誰かが既に開発して、それこそjQueryにでも搭載されてるよ。
無い=要らない、ってことなんだよ。初心者ならやり方を間違ってるだけ。
0905デフォルトの名無しさん
垢版 |
2019/01/21(月) 05:38:32.19ID:VYjLMLtx
またcanvasおじさんが湧いた

>>899
ボタン要素でスタイルシートでお好みのデザインに合わせればいいよ
0906デフォルトの名無しさん
垢版 |
2019/01/21(月) 07:58:41.38ID:vkfJXJ7K
カード型みたいにボックスの中に画像、タイトル、アイコン、とかいろんな要素があって
そのカードがボタンの役割をしているならdivでもいいんじゃないの?

むしろbuttonタグの中にdivやらspanやら、iとかいろいろ要素ぶっ込むものなのかね?
0908デフォルトの名無しさん
垢版 |
2019/01/21(月) 08:30:56.83ID:8RTHI8s9
>>899
UIだけなら、CSSでボタンライクではないようにも変更できるわけでdiv要素を使う理由はない
0909デフォルトの名無しさん
垢版 |
2019/01/21(月) 09:28:46.72ID:63p0KSKR
>>907
Enterキー押下時のclickイベント拾わない話じゃねーかとエスパーしてみる
それは他のブラウザでも同じなので、keydownイベント拾ってEnterキーだけ抽出してclickイベント時と同じ挙動をさせるしかないよね
shift/alt/meta/ctrlキー同時押しはもちろん排除するとしてさ
0910デフォルトの名無しさん
垢版 |
2019/01/21(月) 12:48:28.69ID:DT8npDQe
>>909
それだけなら、tabindex属性付与だけで実装可能ではないか?
ボタンの何をエミュレーションしたいのかがわからん、には同意
0911デフォルトの名無しさん
垢版 |
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);
}

これがソースコードの一部です。
このソースコードで、「おい」と打ったら「オイオイオイ」と返ってくるのですが、
「あいうおいえお」と打ったら「あいうおいえお」と返ってきます。
本当は「あいうオイオイオイえお」と返ってきてほしいです。
0913デフォルトの名無しさん
垢版 |
2019/01/21(月) 14:27:21.86ID:PNnv4t9U
if(json.text == 'おい'){
json.text = 'オイオイオイ'
}

上記の部分を

json.text.replace('おい','オイオイオイ')

にしたら何も表示されなくなってしまいました。
0914デフォルトの名無しさん
垢版 |
2019/01/21(月) 14:31:42.02ID:DqxQvGU+
>>913
だされた課題は自分でやれ

どうせ本当に出された問題は
「以下のコードをreplaceを使って書き直しましょう」
なんだろ?

答えを聞くな
0915デフォルトの名無しさん
垢版 |
2019/01/21(月) 14:39:13.61ID:PNnv4t9U
>>914
違います。
課題は課題なんですけど、
課題内容は「リアルタイム通信を使用してアプリケーションを作ろう」です。
課題の一部がどうしてもわからないので聞いています。
0916デフォルトの名無しさん
垢版 |
2019/01/21(月) 14:40:34.76ID:PNnv4t9U
>>914
的外れな返信でした。
ごめんなさい。
0918デフォルトの名無しさん
垢版 |
2019/01/21(月) 16:01:51.07ID:PNnv4t9U
>>917
おい、おっさん。
こんな時間に即返信するとかなにやってんの?ニート?w
お前は「答えない」じゃなくて「答えられない」だろw
無能のくせにでしゃばるなよww
0920デフォルトの名無しさん
垢版 |
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);
 }
0921デフォルトの名無しさん
垢版 |
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');
});
0922デフォルトの名無しさん
垢版 |
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);
}
}
じゃあな無能
0924デフォルトの名無しさん
垢版 |
2019/01/21(月) 18:29:08.32ID:mEBdwP2z
>>899
ボタン部分だけのクリックじゃなくて、
もう少し範囲を広くして、ボタンを含む、div で、クリックイベントを動作させたいのかね?

ボタン部分だけだと、範囲が狭くて、うまく押せない人がいるから

それと投稿者は、次に投稿する際に、名前欄に最初の投稿のレス番号を入れてくれ
0925デフォルトの名無しさん
垢版 |
2019/01/21(月) 18:34:04.07ID:mEBdwP2z
>>918
>おい、おっさん。
>こんな時間に即返信するとかなにやってんの?ニート?w
>お前は「答えない」じゃなくて「答えられない」だろw
>無能のくせにでしゃばるなよww

>>911
も、同じID。PNnv4t9U

こいつは、いつもの荒らしだから、皆答えないように!
0929デフォルトの名無しさん
垢版 |
2019/01/21(月) 18:59:45.68ID:x6DE2oRu
>>921
それ、無料レンタルサーバー Xrea の Affiliate だよ。

結局、body 要素に、position: fixed; top:0px; を付けたら直った。
0930デフォルトの名無しさん
垢版 |
2019/01/21(月) 19:03:58.42ID:UOzXXkDM
>>922
var result = json.text.replace('おい', 'オイオイオイ')
0931デフォルトの名無しさん
垢版 |
2019/01/21(月) 22:12:37.48ID:XPYcyOEd
>>930
それを複数個作るとエラーが出るんです。
0932デフォルトの名無しさん
垢版 |
2019/01/21(月) 22:20:46.95ID:UOzXXkDM
>>931
var result = json.text.replace(/おい/g, 'オイオイオイ')
0938デフォルトの名無しさん
垢版 |
2019/01/22(火) 10:20:50.82ID:SJtsjRub
糖衣構文かどうかにこだわるのってなんでだろう?
マウント取りたいだけな気がする
0939デフォルトの名無しさん
垢版 |
2019/01/22(火) 12:50:28.60ID:RZTSN9tm
>>936
よく読め
それはモデルとして、つまり抽象度の高い概念としての話であって
実際にES5で書き換えられるわけではない
0940デフォルトの名無しさん
垢版 |
2019/01/22(火) 14:53:55.47ID:SJtsjRub
なんかそもそも糖衣構文という言葉をわかってないやつがいるみたいだ


糖衣構文の条件
× ECMAScript 2015で書いたのと同等のことを、ES5で(複雑に)書けること
○ ES5で書いたのと同等のことを、ECMAScript 2015で(シンプルに)書けること

>>939
お前変換の向きが逆
0941デフォルトの名無しさん
垢版 |
2019/01/22(火) 15:28:28.10ID:RZTSN9tm
それは絶対に違うね
新しい構文というのは問題を新しく解決する為に入れられるわけで
古いコードで書いてたコードがシンプルに書けるようになるものでない方が珍しい
そんな事を語っても仕方がない
古いコードで再現できるかどうかの方が意味がある
0942デフォルトの名無しさん
垢版 |
2019/01/22(火) 16:20:43.54ID:SJtsjRub
また意味不明な

新しい構文の中で従来では複雑な書き方だったものを
シンプルに書けるようにしたものを特別に糖衣構文とよぶんだろ

誰が新しい構文はすべて糖衣構文って言ったんだ?
誰も言ってないだろ
0943デフォルトの名無しさん
垢版 |
2019/01/22(火) 18:15:41.76ID:ADfWWjFL
シンタックスシュガーがあるならシンタックスヌガーとかシンタックスハニーがあってもおかしくないよね
0944デフォルトの名無しさん
垢版 |
2019/01/22(火) 18:31:09.00ID:bOf9tfZi
シンタクティックシュガーな。
0945デフォルトの名無しさん
垢版 |
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にそこももっと知っておいてほしい、説明したいと思うんだよ
そういう違いさ
0946デフォルトの名無しさん
垢版 |
2019/01/22(火) 19:14:29.74ID:yOIcAU/3
>>945
長ったらしくて読む気がしないが
要するにお前が言いたいのは、
class = 糖衣構文+α って言いたいだけやろ?
0947デフォルトの名無しさん
垢版 |
2019/01/22(火) 19:19:26.12ID:yOIcAU/3
そして+αの部分がclassでしか使えないのかといえばそうではなく
classを使わなくても、+αの機能は使えるから
やっぱりclassは糖衣構文
0948デフォルトの名無しさん
垢版 |
2019/01/22(火) 19:33:50.03ID:dHPHLM6Z
>>947
Class構文のES5で代替不可能な機能はES6の他のより基本的な機能で代替可能だから、
ES6も入れたら糖衣構文と言ってもいいよ
でも今回はそうじゃないから
ES6の機能が、従来のES5の機能の糖衣構文と言えるかという話だから
その辺り俺は言葉に慎重だが、君は適当
そういう違いさ
0949デフォルトの名無しさん
垢版 |
2019/01/22(火) 19:34:52.68ID:hY3Lw6Bc
糖衣構文の反対はキムチ構文って呼ぶってことで
この話題終わりにしませんか?
0950デフォルトの名無しさん
垢版 |
2019/01/22(火) 19:38:42.19ID:dHPHLM6Z
>>949
それでも良いよ
俺はどういう機能か説明したい気ならあるが
くだらない言い争いはもう沢山だから
0952デフォルトの名無しさん
垢版 |
2019/01/22(火) 19:54:31.00ID:bOf9tfZi
構文的砂糖
0953デフォルトの名無しさん
垢版 |
2019/01/22(火) 20:06:22.32ID:YQBTnTrr
>>948
もしかして
ES5で今までやっていたことをclass構文で簡潔に書けるようになっても、
ES6で追加された機能をES5で実現できなければ糖衣構文ではないって言ってる?

意味不明なんだけど
0954デフォルトの名無しさん
垢版 |
2019/01/22(火) 20:16:41.69ID:YQBTnTrr
>>934
> 「ES5.1の構文糖衣」という表現がおかしい
とせっかく俺が言ったのに

>>935がclassのことを持ち出すから
おかしくなったって自覚してるのかな?

classは糖衣構文だが、そもそも最初にES6の機能がとかいう言い方はおかしいって指摘した。
マッチポンプかよ。自分がclass限定の話にしておいてclass限定の話はしてないって
0955デフォルトの名無しさん
垢版 |
2019/01/22(火) 22:05:19.77ID:4TOwjU0o
話変わるけどジェネレーターは糖衣構文じゃないよねさすがに。
0956デフォルトの名無しさん
垢版 |
2019/01/22(火) 22:38:28.82ID:dHPHLM6Z
>>953,954
意味不明なのはあんただ
俺は0.999だからNoとか0.001だからYesとか言うのは嫌いだし
そういう0か1かで糖衣構文「であるのかどうか」を話す気はない
たとえちょっと変な表現であろうと、今回の話の流れの上で糖衣構文「と呼んだほうが良いか」を
アナログ的に考えて、俺なりの想いを持って方が良い、悪いと話している

また俺はClass限定の話を始めたわけではない
わかりやすい一例としてまずClassでの事実を1つ挙げただけ
そこから質問者が食いつけばClass構文が入ることによる新たな可能性を話すつもりだったのに
変におかしな流れに誘導したのは君の方だよ

少なくとも俺は>>933を俺なりに解釈して話を始めた
そこで君が横から言葉の使い方がどうのこうのヤンヤン言って来ても知らんがなって感じ
君の脳内パーサではエラーが出たんだろうが、それをエラーですエラーですエラーですよって、うるさい目覚まし時計かって感じ
俺のゆるゆるパーサでは通ったんだから俺は話を進める、君は固まっとく、でいいじゃないか
俺までどうにかして止めようとする必要はない、俺はそういうのは嫌いだね

JSでも値をチェックして例外を吐くとかね
値をできるだけ加工したり用意の仕方を工夫して無効な値を極力作らないようにする方が俺は好きだ

ともかく君の定義ではそもそも話がおかしいのはおっしゃる通り
だからこそ俺はその定義は今回はそぐわないとしてるところに、わざわざその破綻する定義を持ってきて
ギーギーガーガーおかしいおかしい言われても しつこいポンコツ機械かよって感じ
まあそんな感じ
0957デフォルトの名無しさん
垢版 |
2019/01/22(火) 23:13:06.23ID:YQBTnTrr
>>956
俺はclass = 糖衣構文+αなんだから糖衣構文だって言ってるのに、
お前が、完璧じゃないから糖衣構文と言ってはいけないと言ってるんだろ
1じゃなければ0と言ってるのはお前だ
0959デフォルトの名無しさん
垢版 |
2019/01/22(火) 23:25:49.01ID:k+Ga/jCN
糖衣構文+αじゃなくて、完璧に糖衣構文でしょ
糖衣構文+αだったら糖衣構文とは言わないよ
0962デフォルトの名無しさん
垢版 |
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
になると思うんですが。
0963デフォルトの名無しさん
垢版 |
2019/01/23(水) 00:10:25.21ID:djVGMpuO
>>959
いうだろ?
ES5で書いたものをclassで完璧に書けるんだぜ?
追加効果があったとしても関係ないだろ

それにそもそも糖衣構文って完全に同じものを
実現しなくてはいけないなんて制限はないんだが?

ほぼすべての糖衣構文はある機能に特化することでより便利にしているが
その反面あるきのう以外のことができなくなってる

他のどんなものが糖衣構文と呼ばれてるか考えてみなよ
糖衣構文という言葉に惑わされてるだけだろ
レス数が950を超えています。1000を超えると書き込みができなくなります。

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