JavaScript 4©2ch.net

2014/12/05(金) 12:19:07.19ID:fmzBASgG
( ^ω^) 初学者・迷子・ロリ幼女はこちらで
  _、_
( ,_ノ` ) プロフェッショナルはECMAScript デス 4へ

【前スレ】
JavaScript 3
http://peace.2ch.net/test/read.cgi/tech/1380177260/

【関連スレ】
ECMAScript デス 4
http://peace.2ch.net/test/read.cgi/tech/1325448978/
+ JavaScript の質問用スレッド vol.117 +
http://peace.2ch.net/test/read.cgi/tech/1404146244/
CoffeeScript
http://peace.2ch.net/test/read.cgi/tech/1320949260/
TypeScript part1
http://peace.2ch.net/test/read.cgi/tech/1349187527/
構造化ウェブプログラミング言語Dart2
http://peace.2ch.net/test/read.cgi/tech/1319388343/
Microsoft SkyDrive API
http://peace.2ch.net/test/read.cgi/tech/1385604796/
【MACRO】Google Apps Script 質問スレ【DRIVE】
http://peace.2ch.net/test/read.cgi/tech/1404007623/
【node.js】サーバサイドjavascript 2【Rhino】
http://peace.2ch.net/test/read.cgi/tech/1358937029/
2015/08/02(日) 20:51:00.19ID:j05l/s8s
変数に型がない言語ではどうしても、
== と === 相当の機能が必要になる。
変数に型がない言語では全て同じ。
2015/08/02(日) 21:47:56.95ID:sI4u8psA
ID:mqZtRy/B は素直に静的な型宣言を必要とするコンパイル言語を使っとけ
263デフォルトの名無しさん
垢版 |
2015/08/02(日) 22:13:12.22ID:dTRZmQiN
CoffeeScriptおすすめですお
2015/08/02(日) 22:15:15.51ID:j05l/s8s
言語としては悪くないが、
将来性として悪い。

BabelなどでES6が使えるようになった今、
CoffeeScriptの役目は終わった。
優位性が無くなったのだから。

CoffeeScriptはES6をつくるための
犠牲になったのだ。
2015/08/02(日) 22:36:51.46ID:+B7/KlLQ
>>259
null == undefinedがありますので
2015/08/02(日) 23:11:50.36ID:Q2JrvHPp
>>260
JSLint使っとけ
267デフォルトの名無しさん
垢版 |
2015/08/03(月) 05:17:31.66ID:M3KvY+a0
>>261
luaならそんなクソ仕様ないけど
2015/08/03(月) 20:20:01.84ID:OzQ4PZKS
>>267
でもこういうクソ仕様はありますね。

2.2.1 - 変換
Luaは文字列と数値を実行時に自動的に変換する。 すべての数学演算は、
文字列に適用されると、一般的な変換ルールに基づいてその文字列を数値に変換しようとする。


ただし、例外があって


2.5.2 - 関係演算子
2.2.1 の変換ルールは等価比較には適用されない。 そのため、"0"==0 は false に評価され、
t[0] と t["0"] は異なったテーブルエントリを示す。


一貫性がない。
2015/08/04(火) 11:19:43.50ID:Wrx2TKJj
NaN !== NaN は他言語でもそうなのかな
これだけは直感的でないと感じてしまう
2015/08/04(火) 20:47:31.71ID:LaebqzUe
>>269
Rubyも同じ
http://docs.ruby-lang.org/ja/search/class:Float/version:2.0.0/query:NAN/
> ただし、NaN 同士の比較では常に false を返します。

Pythonでも同様
http://d.hatena.ne.jp/yosshi71jp/20090920/1253415431
> nanは非数(not a number)、infは無限(infinity)。通常、
> この表示になってしまったら、これにどんな演算を行っても、結果はもう変わらない。

PHPでも
PHP 型の比較表
http://php.net/manual/ja/types.comparisons.php
> この値を、自分自身を含む他の値と比較すると、緩い比較であっても厳しい比較であっても
> 結果は FALSE となります (つまり NAN != NAN であり NAN !== NAN であるということです)。

さらにPerlでも
http://perldoc.jp/docs/perl/5.6.1/perlop.pod
> NaN はどの値に対しても(NaN に対してでさえも) "<", "==", ">", "<=", ">=" の
> いずれも成立しないので、これらは全て偽となります。

SQLでも似た仕様がある。

NULL は NULL と等しくない!?
http://blog.livedoor.jp/i_am_best/archives/7845603.html
2015/08/04(火) 20:48:25.72ID:LaebqzUe
>>269
> NaN !== NaN は他言語でもそうなのかな
> これだけは直感的でないと感じてしまう

直感的じゃないという意見はわからなくもないが、
他言語でも同じなわけで、それを知らないということは、
君の経験不足ってのがよく分かるねw
2015/08/04(火) 20:50:43.13ID:LaebqzUe
ついでに調べた。

C#も同じ
http://d.hatena.ne.jp/tgk/20061109/1163069036

Javaも同じ
http://d.hatena.ne.jp/Kappuccino/20080805/1217905115

C言語でも同じ
http://www.c-tipsref.com/words/not_a_number.html
> NaN を使った算術演算の結果は常に NaN になる
2015/08/04(火) 21:03:34.53ID:SiN2Ipli
a = NaN, b = NaN
aとbを比較しようとしたときにどういう問題が発生するか考えれば納得出来るだろう
2015/08/04(火) 21:18:44.87ID:LaebqzUe
>>273
わかりづらいw

var a = "a";
var b = "b";

parseInt(a) == parseInt(b)

これがtrueだとおかしいだろ?
ぐらいのことを言えよ。
2015/08/04(火) 21:25:12.39ID:MmQrnXHp
は?
NaN という状態の意味を考えろよ?
言語でしか考えてなくてコンピュータで処理するってこと微塵も考えてないだろ?
2015/08/04(火) 21:34:13.30ID:SiN2Ipli
>>274
分かろうとする努力が大切
2015/08/04(火) 21:38:57.14ID:eMvPKlqH
NaNでそーなるのっ!? (ジャンプ)
2015/08/04(火) 21:56:56.46ID:2w4CQfTI
>>271
他言語の経験がないのは認めるけど、煽りとかどうでもいいから
NaN !== NaN が成立する合理的な理由があるなら教えて欲しい
「他言語でもそうだから」という教科書的な答えでは納得できない

>>273-274
その比較はする必要性を全く感じないので、そのコードの目的がわからない
null, undefined は等価なのに NaN だけ特別扱いする理由がわからない
2015/08/04(火) 22:14:51.15ID:SiN2Ipli
>>278
nullやundefinedは演算の結果でなるものではない
2015/08/04(火) 22:56:02.17ID:MmQrnXHp
>>278
null や undefined は言語上で特定の意味を与えられた値にすぎない
NaN はそれとは全く違う
不正な演算によって生じた結果を表す状態で、これは言語ではなくてコンピュータの仕組みから定義されているもの
「不正な値」だと理解してもらっていい
不正な値なので大小比較自体が成立しないのでその結果も不明となる
あとは自分で NaN をググるなり、コンピュータでの数値表現について勉強するなりしてくれ
2015/08/04(火) 23:21:37.01ID:2w4CQfTI
>>279-280
NaN は Number ではない不定値のようなものか
何となくだが、理解した
ありがとう
2015/08/05(水) 00:11:47.63ID:GLQwjMtk
しかし大小比較自体が成立しないんだったら
言語側では例外を投げてもいいような気もするが
IEEE754で演算上の振る舞いも規定されているのか
2015/08/05(水) 07:43:38.95ID:dSgZbAfK
>>281
NaNが何の略か知らないの?
2015/08/05(水) 07:46:27.13ID:PB1eetSA
NaNの略かだって?
2015/08/05(水) 09:03:37.80ID:HdJkl2eK
Number and Number
2015/08/05(水) 11:11:39.52ID:A+1+0YPe
>>283
"Not a Number" だろう?
"Not a Number" からは不定値か固定値かは読み取れないと思うが
2015/08/05(水) 13:37:35.99ID:PzT2XX1y
isNaN
2015/08/05(水) 16:16:26.21ID:xgMUKO3v
現行スレ
+ JavaScript の質問用スレッド vol.125 + [転載禁止]
http://peace.2ch.net/test/read.cgi/hp/1436910657/l50
2015/08/05(水) 18:24:22.43ID:KU6oSpKD
ナンだって?
2015/08/05(水) 19:53:39.57ID:HdJkl2eK
                               / {;;;;;;> _八_ :: :|
                         /)   ..:::::::::::ヽ ( : |
                           , - '   .. '' {.. :::( 丶 _)  |
                          /....    ,.... .. :::     ::: |
                   _/{:::::r‐  ,.::::::::::/   :   :  }
                _ イ   :::::   {:::::::::}. ...   :::  . ´ ^}
            _... , ィ  ... ::   .. ::  , ::::::::::::      .:.  . ,'
             /:::   . ´      ゛   :::::: :: ::::::::) ...:::.::.  }
       .. イ:...::   ´ ,..::::::::::::::. ..::::..        :::"゛.. ::::  ,'
      ,.´  ...  .:. :: ´(::::::::: ゝ .:::::::ノ    ;..  ハ     .. ,′
.     /  {::::::::..  ::: ::::  "" ::  ......  ⌒ヽ  {     {
    /:::.      /  .... -<::  :::::::(:::::::   }  レ:::::::::::... {
.    {ヽ      <  :::   ::   ::     ::::  { :::::::::::: ヽ
    {:: ..       ___{      ,....:.:.:.:.::ヽ ,.    { i::::::::::::   |
    ヾ::::    ´        ,'.:.:.:.:.:.:.:.:.:.   :: .::.  ゛"゛  .,′
     \       y :.:.:.:: ヾ::  ::  :: } .. /:   `,´  /
.        \      ..::.::.::.. `    ::::::ゝ :: ::: ::.     /
           \    ヾ:._.:   ..   ,:.: −       _ン
           \    :::::  ... ..  .  "゛    ,..ィ ~
            ヽ _ ::::     ....:::. ::::::::::_ .ン
                ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
2015/08/05(水) 19:57:24.97ID:HdJkl2eK
                   /                             ヽ
                    /                              ヽ
                    /                     人         ト、 |
                   /   >‐ァ              / _\       ! jノ
               /  / /            /,=彡'⌒  V ,=ミ   \
                 / /  /           r==彡tテ丁>   ∨ /ヽ |   \___,
             //    /        __  /`¨´ ヽ.ゞ'′    リ ノ /     _ノ
               {'    . ′      ⌒≫t示             /    <
                   /          >ヘヽゞイ              ∨      ヽ
             /       ,, ’     ヽ丿              ∨     !
             /  _  ..  ´          `ー  _,. -‐'’       /  \f⌒ヽ. |
             ̄                 ヽ ´           /     \   ヽ!
                                  \       /  !     /`≫‐-
            -‐…‐-                 \     /   !   /`y'´
            // ̄)    `丶                  _ア爪      .'  /`y'
          // /       ‘,             -‐</ノ ヽ   ′/`y'
       // /          L     ,-<     ∨\ ! _, イヽ/
       | し'           丿 |   /    ヽ.    ヽ/ 丁 〉 //
       | r−、         / /  /  .′          ̄  ̄
       | U  `ー― - イ /    /  '
       | U           |      /   !


                    若草物語 ナンとジョー先生
2015/08/05(水) 22:58:19.31ID:Vg22nrpW
これからjavascript一本で生きます
よろしくおねがいしまうー
2015/10/04(日) 11:02:40.14ID:K1qsk9YZ
よくsetTimeoutつかって関数を一定時間繰り返し実行する例を見るけど
メモリリーク(スタックオーバーフロー)しそうな気がしてならねえ
function viewTime()
{
var date = new Date();//これはスタックに貯まるのか?
console.log("date = " + date);
setTimeout(viewTime,1000);
}
2015/10/04(日) 11:03:55.39ID:K1qsk9YZ
ああ違う、非同期だからsetTimeoutが終わった時点で消滅するのか
納得
2015/10/05(月) 02:42:12.90ID:uvbnrVeH
割り込みとかイベントハンドラとかそういう概念
2015/10/05(月) 06:12:57.62ID:cBREl52D
ローカル変数なんだから関数終了で破棄されるだろ
非同期とか割り込みとか関係無い
2015/10/05(月) 06:40:12.29ID:sGblq84u
>>296
わからんやつだな
setTimeout が 指定時間後に実行する関数を設定しているだけでそこで呼び出してるわけじゃない
ってすぐに理解できてないと

viewTime()
 setTimeout()
  viewTime()
   setTimeout()
    viewTime()
     ...

みたいに再帰呼び出ししてるように錯覚しちゃうってことだろうよ
再帰呼び出しなら呼び元は終了してないからやばいよね

次の段階として、非同期で呼ばれるとなんとなく理解はしていても
別のコンテキストで実行されるってのがわかってないと this とか使ってあれえ?ってなことになる
2015/10/05(月) 09:58:01.89ID:YN/6GJzS
>>297
それは仮想的なコードだと思うけど、クロージャじゃないんだから一回毎に viewTime 内のメモリはGCが解放してくれないとおかしいんじゃない?
そうでなければ、ブラウザのバグだと思うけど
2015/10/05(月) 14:17:26.26ID:zntwOtDH
エスケープ解析!
2015/10/26(月) 04:16:59.02ID:AGaCWwZd
はい現行スレ
http://peace.2ch.net/test/read.cgi/hp/1444186237/l50
301610
垢版 |
2015/11/05(木) 21:03:50.50ID:O9StB1rc
じゃあここでいいぞ。

一応俺のスタンスを言っておくと、俺はお前みたいな奴が嫌いじゃない。
お前はあのスレの中で唯一積極的にコードを書き、IDを付けて議論に持ち込み、論理的に解決しようとする。この点はいい。
ただなあ、技術的に余りにも稚拙すぎるから、色々空回りしている。
だからやる気があるのなら少しはサポートしてやるよ。上達したいかどうかはお前が決めろ。

ちなみにマジでウザイから無駄に吠えるのは止めろ。お前が大したことがないのは事実なんだよ。
今のお前ではあのベンチマークがどれだけ間抜けなことになっているのか分からないのだろうが、
上達した後から読み返せば今のお前の痛さは発狂レベルだぞ。
まあ、今のお前には俺が嘘を言っているとしか思えないのだろうけども。

とはいえ、あのスレの中の初心者で上達する可能性があるのはお前だけだ。
他の馬鹿共はお前と同様にあのベンチの問題が分からないにもかかわらず、煽ることしかできない無能共だ。
そもそも俺はお前みたいに「自分でやる」タイプじゃないとプログラミングには向かないと思っているので、
一から教えてくださいとか言われても死ねとしか思わない。
だからあのスレにたむろしている馬鹿共が何であそこにいるのかも謎なんだが。

もしやるのなら、こちらのスレの内容は向こうには投稿しないように。ゴミ共が増えるだけだから。
ベンチマークの結果がデタラメすぎるので訂正したくなると思うが、その必要もない。
心配せずともJavaScriptの個人的Web情報はデタラメばかりだし、
馬鹿は馬鹿のままでいればいいし、強制的に教育する方法もないんだよ。
今のお前のように、自分で馬鹿を止めますと決心させるしかないんだ。
そして自分で学ぼうとする心がある奴は、あの経緯ならこちらを見ている。だから、転載する必要は全くない。
マジであのスレ終わっているぞ。いろんな意味で。

まあとにかく、どうするかはお前が決めろ。
2015/11/05(木) 21:49:27.17ID:VallSrWs
お前が一番終わってる
2015/11/06(金) 18:35:45.77ID:F7EIvq3A
どこで拾ったコピペ?
2015/11/11(水) 10:08:35.38ID:M5AnRRSD
>>301の輝かしい功績

+ JavaScript の質問用スレッド vol.126 +
http://peace.2ch.net/test/read.cgi/hp/1439005423/
+ JavaScript の質問用スレッド vol.125 + [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/hp/1436400138/
+ JavaScript の質問用スレッド vol.124 + [転載禁止©2ch.net
http://peace.2ch.net/test/read.cgi/hp/1427008867/l50
+ JavaScript の質問用スレッド vol.123 + [転載禁止©2ch.net
http://peace.2ch.net/test/read.cgi/hp/1422084185/l50
+ JavaScript の質問用スレッド vol.123 + [転載禁止©2ch.net
http://peace.2ch.net/test/read.cgi/hp/1423910471/l50
+ JavaScript の質問用スレッド vol.122 + [転載禁止©2ch.net
http://peace.2ch.net/test/read.cgi/hp/1418395948/l50
+ JavaScript の質問用スレッド vol.121 +
http://peace.2ch.net/test/read.cgi/hp/1410603104/l50
2015/11/28(土) 21:50:08.90ID:u/RqRVR/
立てました。よろしく。

JavaScript情報交換所(プログラミング既習者専用)
http://peace.2ch.net/test/read.cgi/tech/1448714123/
2015/12/06(日) 22:19:33.92ID:NQ6kkq7S
Microsoft、「Edge」のJavaScriptエンジン「Chakra」をオープンソース化へ
http://www.itmedia.co.jp/news/articles/1512/06/news012.html
2015/12/07(月) 00:52:50.11ID:D3MoacxB
チャクラとか
あっちにアジアかぶれがいるのかな
2015/12/07(月) 08:33:58.70ID:d0GjWYYK
MSの今のCEOってインド系だったような
2015/12/07(月) 15:57:54.79ID:KuRdWB2c
小川美潮
2016/03/20(日) 12:13:50.50ID:k733Y0LD
保守
311デフォルトの名無しさん
垢版 |
2016/03/26(土) 00:52:55.36ID:VGHlAznE
with(this){してその中でプロパティ読むのってアリ?}
2016/04/01(金) 09:32:53.04ID:WD++Qk2m
withはjavascriptの汚点。今すぐ脳内から消去しろ。
313デフォルトの名無しさん
垢版 |
2016/05/01(日) 15:21:38.46ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
2016/06/09(木) 17:18:01.82ID:dpBG783z
たまにwithあったらなって思うことはあるな
例えばWebpackがモジュールに引数で渡す挙動とか
2016/06/29(水) 13:17:10.60ID:+ZYTNDiN
http://www.cybersyndrome.net/
ここの検索結果画面、例えば
http://www.cybersyndrome.net/search.cgi?q=&;a=&f=&s=&n=
からプロキシ一覧を取得しようとしてXMLHttpRequestを使ってresponseTextを見てるんだけど
どうもscriptを動かさないとプロキシが表示されないみたい
そんなわけでresponseTextの中の3番目のスクリプトを動かしてプロキシ一覧を表示させたいんだけど
どうするのが良策ですか?ちなみにChrome
2016/06/29(水) 13:24:53.48ID:oESip30m
Node.js
2016/06/29(水) 13:52:20.39ID:+ZYTNDiN
scriptを取り出してevalで行けました
2016/10/26(水) 10:00:03.07ID:LA3y7fsO
java挫折したんでこっちにきました
だいぶとっつきやすい・・・気がする
2016/10/26(水) 13:13:36.39ID:6SHMskVi
そりゃまったく別物だからな
2018/02/16(金) 06:29:27.57ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
2018/02/25(日) 23:50:49.29ID:2698yb5F
javascriptで配列の要素それぞれに関数を作用させて要素を作るってできますか?
var a = [1,2,3];
function f(x){return x+1;}
var b = f(a);// b = [2,3,4];
みたいな
2018/02/26(月) 00:26:00.52ID:368iDdw7
Arrayのmap()
2018/02/26(月) 00:26:46.50ID:rSDo4ycn
>>322
ググります、ありがとう
2018/03/04(日) 23:55:48.77ID:fY1aJvVU
javascriptの正規表現で
A/B/C(http://hoge.com/fuga)/X/Y
このような文字列を/で分割したいが、()の中の/は分割の対象にしない
ということはどのようにすればいいでしょうか?
2018/03/05(月) 00:28:19.92ID:1eWHTsKF
>>324
括弧がネストしてなければnegative lookahead”(?!)”で
ネストしてたら知らん
https://regex101.com/r/j03SqS/2/
2018/03/05(月) 00:58:40.26ID:1SNP3/tO
ありがとうございます
ネストしてないのでこれで事足りそうです
2018/03/10(土) 21:38:04.28ID:LJUwa8tD
XMLHttpRequestを使って取得したページのスクリプトを実行させようとしているのですが
できません
取得したページを構成
var doc =document.implementation.createHTMLDocument("");
doc.body.innerHTML =req.responseText;
このdocの中のscriptタグを取り出し
新たにscript elementをdoc.createElement("script")で作りコピーし
更にappendChildでスクリプトを追加し直せば実行されるかと思いましたがされませんでした(Chrome)
なにかいい知恵はないでしょうか
2018/03/10(土) 21:52:05.17ID:LJUwa8tD
今ふと思ったのですが
作っているものがChromeの拡張機能なのでセキュリティ設定で外部のスクリプトができないようになってるだけかもしれません
ちょっと見直してきます
2018/03/10(土) 21:58:41.22ID:32LTkPVU
>>327
何でそんなことしたいのかわからないがセキュリティ的に問題あるよ
https://developer.chrome.com/extensions/xhr#security-considerations
2018/03/10(土) 23:06:06.97ID:LJUwa8tD
なるほど
とりあえず目的に対して別の方法を思いついたのでスクリプトの再実行はやめておきます
331デフォルトの名無しさん
垢版 |
2018/05/23(水) 22:22:52.48ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

9O7AM
332デフォルトの名無しさん
垢版 |
2018/07/04(水) 23:42:45.95ID:gFgZc5FG
C4H
2018/08/15(水) 08:39:41.98ID:tlm7UXZ5
"abcde?fgh".match("e?f")
これが
["f", index: 6, input: "abcde?fgh", groups: undefined]
になるんですが(chromeブラウザのコンソールで確認)
文字列の中の?ってどういう扱いなんでしたっけ?
2018/08/15(水) 15:22:13.30ID:2DBKebDY
文字列中じゃねーよ正規表現中の?の意味を調べろ
2018/08/15(水) 18:38:51.76ID:tlm7UXZ5
match("e?f")の"e?f"は文字列リテラルじゃなくて正規表現/e?f/と解釈されるということですか?
2019/07/05(金) 21:42:57.25ID:efC0bxMu
javascriptのオブジェクトの書き方で
{hoge:hoge}とかこうとして{hoge,hoge}と書いてエラーにならなかったんですが
これって有効なんですかね?
2019/07/07(日) 04:01:24.27ID:3hjPphCG
単に同じキーが2回設定されるだけだな
2019/07/07(日) 07:36:01.32ID:vLazMOH7
>>337
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Strict_mode
2019/07/07(日) 10:14:41.57ID:3ySSrzHj
あーわかりました
var a = 2;

var x = {a};
とすると
var x = {a:2};
と同じになるんですね

>>338
勉強になります
2019/07/13(土) 23:14:14.21ID:57lWPs8z
https://mevius.5ch.net/test/read.cgi/tech/1489511075/862 で質問した者なのだけど、
String.matchとRegExp.execの挙動の細かい違いについて分かる人居る?

仕様書はMDNから飛べるけど一応以下。
https://tc39.es/ecma262/#sec-string.prototype.match
https://tc39.es/ecma262/#sec-regexp.prototype.exec
正直俺はよく分からない。

問題になるのは質問した内容で、再掲すると、
'@time;prop1:style1;prop2:style2'.match(/(^|[@;])[^@;]*/g); // 結果 ["", ";prop1:style1", ";prop2:style2"] 、俺の想定 ["", "@time",";prop1:style1", ";prop2:style2"]
'@time;prop1:style1;prop2:style2'.match(/(^.|[@;])[^@;]*/g); // 結果 ["@time", ";prop1:style1", ";prop2:style2"] 、これは納得
の前者の挙動が謎だったのだが、

var re = /(^|[@;])[^@;]*/g;
var str = '@time;prop1:style1;prop2:style2';
re.exec(str); // 結果 ["", ""]
console.log(re.lastIndex);

でちまちま調べる限り、lastIndexは0のまま固定されており、俺の『正規表現の』理解は間違いではないことは分かった。
当然これだとMDNのexecにあるような while ((myArray = myRe.exec(str)) !== null) みたいなことをすると無限ループする。
だから String.match はそうならないように何かしら対策がしてあって、結果、頭のマッチが取れないようだ。
なのだが、仕様書を見ても違うのは分かるが何がどうなのかよく分からない。
String.matchでは (^| の条件は駄目で、 (^.| のように、「文頭」ではなく「文頭の文字」に当たるようにしないといけない、ということなのか?
2019/07/13(土) 23:28:56.86ID:57lWPs8z
すいません分かりました。

String.match は RegExp[@@match] を読んでて、その中で RegExp.exec を呼んでいる。
RegExp.exec は当然そのまま RegExp.exec を呼んでいる。
だからそのままだと当然挙動は同じになるのだけど、String.matchの場合、
> 4. If matchStr is the empty String, then
> a. Let thisIndex be ? ToLength(? Get(rx, "lastIndex")).
> b. Let nextIndex be AdvanceStringIndex(S, thisIndex, fullUnicode).
> c. Perform ? Set(rx, "lastIndex", nextIndex, true).
https://tc39.es/ecma262/#sec-regexpbuiltinexec
って書いてあったわ。
つまりマッチ結果が空文字だと必ず一文字進めるようになっており、「文頭マッチのフラグを落とす」仕様にはなってない。
この仕様でいいのか?という気もするが、とにかくそうなっているようだ。
お騒がせしました。
2019/07/16(火) 20:12:13.23ID:hMJFhr7R
というかこれはMDNに注意書きがいる案件だ。
勿論君の手柄にしてくれていいから、誰かやっておいてくれ。
追記は取り敢えず4ヶ所(3文案)か?

1. String.match に、
「空文字にマッチした場合、その空文字の次の文字にはマッチしません。
このため、空文字マッチを含む正規表現(オブジェクト)を与えた場合、全てのマッチ文字列が結果に含まれないことがあります。」

2. String.replaceに、
「空文字にマッチした場合、その空文字の次の文字にはマッチしません。
このため、空文字マッチを含む正規表現(オブジェクト)を与えた場合、全てのマッチ文字列が置換されないことがあります。」

3. RegExp.exexとRegExp.testに、
「空文字にマッチした場合、lastIndexが更新されません。(+1されません)
このため、空文字マッチを含む正規表現(オブジェクト)を与えた場合、
ループ内でマッチ結果の空文字判定を行わないと、無限ループします。」

問題となるケースは、空文字マッチを含む正規表現+空文字マッチ直後にマッチ文字列が来る場合。
具体的には>>341
searchはgマッチ関係ないからセーフ、
splitに関係するケースがあるかは分からない。(ぱっとは思いつかない)
matchAllは知らん。

ちなみに以前 test について文句を言った者だ。これについて対応してくれた人はありがとう。
今回も頼むわ。
なお今確認すると、
> 注目すべきは、別な文字列で検索しても lastIndex がリセットされないことです。
> https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test
とモロに書いてあって素晴らしい。ただこれはもっと赤字とか目立つように書くべきだが。

俺はWeb板は無視しているが、これについてだけは告知貼っておく。
いずれにしてもMDNの更新誰かよろしく。
2019/07/16(火) 20:29:14.99ID:hMJFhr7R
告知は貼った。
https://mevius.5ch.net/test/read.cgi/hp/1562318008/

何かあればここでよろしく。
2019/07/17(水) 21:02:39.27ID:5jOSOtas
言い出しっぺの法則
2019/07/17(水) 22:42:05.96ID:GQbqPuk7
言い出しっぺの法則は死んだ
2019/07/17(水) 23:31:18.95ID:2/Bgill9
俺は全世界の問題を一人で背負い込むほど若者ではないんだよ。
MDNの決定プロセスなんて知らんし、
それ以前に他人が噛むことにより「承認」の手続きがなされ、よりましな方向になると信じてる。
バグを見つけるのも十分な貢献だし、それをMDNに記載するのも同様だ。
だから一人でやる必要も意味もないし、それ以前に一人でやるべきではないと思ってるんだよ。

お前らが「こんなのMDNに記載する必要なし」と思うのなら放置でよし、
「こんな落とし穴があるのなら共有すべきだ」と思うのなら、
俺はテストパターンを提供したのだから、お前らはMDNを書き直すことによってcontributeしろ、ということ。
2019/07/18(木) 15:10:58.24ID:dK9bdFCv
一般的にはメンテナに投げるものだが
MDNはアカウント登録さえすれば修正できるものなのか
2019/07/20(土) 00:35:46.99ID:YQUBknV3
>>348
多分そう。おそらくwikiと同じシステム。
ただ内容は英語版の翻訳でしかないので、おそらく翻訳以外の提案は英語版に出さないといけないのではないかな?と勝手に推測。
いずれにしても、経験者がいるのならそいつに頼むのが確実、といったところ。

JavaScript界隈はWebに間違った情報が垂れ流されてるケースが多く、
それは要するに「背伸びして書くから」だ。
大して経験もないのにさも熟練者のように振る舞うとか、
会社にしたって「技術力の宣伝になる」と考えて精一杯背伸びして書いてる。
だからオイオイ?みたいなのも散見されるだろ。

しかしこれも使いようだ。言い方を変えればやる気はあるのだから、そういう奴らにはやらせればいいのだ。
問題は、そういった「背伸び」状態で書く内容はゴミな事が多いので、そうではなく、
ちゃんとした内容をこちらが提供してやろう、というわけ。
そしてMDN等にコミットして箔をつけたがっている奴にやらせ、
こちらは手間を省け、win-winだ。

というわけで誰か頼む。
2019/07/20(土) 16:44:20.23ID:xD7F1fq1
駄文書く手間暇は惜しまないのに
2019/07/20(土) 17:17:10.12ID:YQUBknV3
だから既に言ったろ。
俺はこれは単独でやるよりも誰かにやらせる方が妥当だと考えてるんだよ。
それは、俺が間違っている可能性もあるから。

最低限、誰かが追試し、また、誰かが内容に賛同することを待つのは重要なことなんだ。
これによって暴走を防げる。
そしてMDNに書くこと自体は本来は大した作業量ではないが、
こういうのって往々にして政治的だから、場合によっては無駄に嵌ることになるんだよ。
実際、wikiだって編集合戦したり、その上で色々ルール決めたりしてるだろ。
MDNだって色々ある筈なんだよ。
だからそういうのを知ってる奴が出てきてどうするか話し合えるとしたらそれもありなんだよ。
日本みたいな根回し文化はないはずだとは思うけど、それも実際どうなのかは分からないし。
ただ、そこら辺を知ってる奴が本当にいたとして、
いちいちグダグダ説明するよりは自身で書き換えた方が早い、と判断すれば、勝手に書き換えてくれる。
前回も(ここに書いたのが反映されたかは確実ではないけど)「俺が書く」みたいな宣言もなく書き替わっていたし。
ROMな人が書き換えるのもありなんだよ。

いちいちグダグダ言ってくるのは若くてそれなりに正義感があるのだと思うが、
本件は1ヶ月後にきっちり書き替わってれば問題ないんだから、そんなにスピード感は要らないんだよ。
若くて元気があって、今後もJavaScriptに関わる気があるのなら、お前がやってくれたっていいんだぜ。
経験不足を自覚していて辞退するのなら、その点は俺が補ってやる、というわけでさ。

コミュニティは一人で回したり改善するものではないんだ。
各自がそれぞれ持ち寄って改善していくものなんだよ。
参加する気がある奴は出てこい、というわけ。(勿論黙って勝手にやってくれてても助かるが)
2019/07/21(日) 07:40:42.79ID:LnfTVLsY
サンプルコードだけ書いて

Hi!

(sample & result)

plz help me
Thanks.


で良い
2019/07/22(月) 20:36:34.20ID:dN38X5eV
>>352
お前はプログラマを止めた方がいい。


今からのプログラマはその程度の英語能力では生きていけない。JavaScriptも当然該当する。
ネタならウザイだけだから止めろ。
今時の若者プログラマはお前以上に英語は出来るから、全く面白くもないしウザイ。

「英語」が最大の問題だとお前が勝手に捉えたのは、お前自身が英語が全く出来ないからだ。
問題はそこではない。
そして仮にお前のように「英語」が最大の問題なら、英語が出来る奴と協力すればいいだけだ。
それもせずに、カタコト以下の英語で結論すら書かないのは邪魔であり、スパムでしかない。

英語が出来ないお前みたいな馬鹿が何かMDN等にcoutributeしたいのなら、
お前が英語が出来ないことを認めて、誰か最低限の英語が出来る奴を募ることだ。
俺が今やっているような方法でもいい。
だから仮に、お前が俺の英語能力を心配してくれたというのなら、
当然お前の投稿は普通の日本人よりも圧倒的に上手い英語で書かれていないと話にならない。
明らかにそうではないのだから、お前は本当にウザイ。

ただな、日本人は最低限度の英語は書ける。
相手と対面して話しているわけではないのだから、時間は無限にあるし、ゆっくり考えて書けばいい。
上手い英語である必要はない。ただし伝わる必要はあるが、
細かい文法(三単現のsとか)なんて間違ったところで伝わるから全く問題ない。
だから書けばいいだけだ。
お前みたいな、英語が出来もしないのに出来る気取りの馬鹿は何もしないから上達出来ずそのままなんだよ。
2019/07/22(月) 22:42:25.55ID:l3HgfDB5
>>352
ひとつだけ注文
レスアンカーはしっかりと合わせてくれないかな?
2019/07/22(月) 22:46:00.86ID:l3HgfDB5
あと、できれば上から目線じゃなくて仲間として話をして欲しい
2019/07/22(月) 23:27:25.55ID:dN38X5eV
>>353
何のことだ?と思って確認したが、
俺のJaneでは2に「ここ壊れてます」という投稿があって、一つずれているようだ。
F12で確認したところ、現在のデータにはないようなので、これは俺が合わせよう。


>>354
ゴミクズを丁寧に扱うのは断る。
ゴミクズが調子に乗るだけで、何の利益もないのはもう何度も経験している。
俺はゴミをゴミとして扱うだけであって、まともな奴にはまともに返事をしているつもりだ。
気に入らないなら無視でいい。お前が俺をゴミ扱いするのもお前の自由だ。

それ以前に、何でもかんでも「上から目線ガー」も死ねばいいと思っている。
お前のことだ。
俺がクズだとしても、それをMDNに書くかどうかは全く関係ないことだ。
クズからもたらされた情報であれ、正しければ、それなりに対処すればいいだけだ。
お前は何がしたいんだ?
俺はお前と群れようなんて1mmも思ってない。

俺は>>351をゴミだと判断した。だから叩きを行った。これで正しいと思っている。
これに文句をつけるお前は「丁寧な態度」なら間違いであれMDNに書き、
「粗暴な態度」なら情報が正しくてもMDNには書かない、と推測されるわけだが、
それは俺から見たらコミュニティの破壊者でしかない。
去れ。俺がお前を仲間として認めることはない。

仲間として扱って欲しいのなら、最低限、その価値がある投稿をするべきだ。
ここは匿名掲示板であり、お前がリアルでどんな地位にいたとしても、知ったことではない。
ここでは各自の書き込みで各自を証明するしかない。
「内容」よりも「態度」を重視するお前は俺からすると十分ゴミだ。

何度も言っているが、俺はこの件をMDNに反映することに賛同し、汗をかこう、という奴を募っているだけだ。
汗をかく気もなく、ただ乗りだけ目指している奴なんてコミュニティには要らない。死ね。
2019/07/23(火) 01:46:23.76ID:QdrKAPEt
会話できない人暴れるの図かな
2019/07/23(火) 23:14:48.71ID:2rFxEmo/
それで構わんぞ。

俺はゆとり----なにかにつけて「態度ガー」「上から目線ガー」「ぼくにやさしくしてくれなきゃいや」な連中----とは
価値観を共有出来ないし、したいとも思わない。
それ以前にゆとり的ポルポト型共産主義----「知識を持っていても持っていなくてもみんな平等」----も
間違っていると思っている。知らないよりは知ってる方が偉い、という価値観だ。
ただそれで異常に威張り散らす、例えば昔の仕様書廚みたいな奴を正当化することにはならんが。奴は異常だ。

俺が要求しているのは簡単なことだ。
・MDNに俺が書く、という奴を募っている。
・或いはこれに準じ、実際にMDNに書いたことのある奴からのノウハウの提供も待っている。
・また、「文案が悪い」等の修正も勿論歓迎だ。
 そもそも俺は仕様書を読み慣れておらず、最初から間違っている可能性すらある。
 だからこの場合は反論とそれを証明するテストパターンを出してもらえれば素晴らしい。

というわけだ。
それをお前らゆとりは技術案件全無視で「態度ガー」しか言えないんだろ。
逆に言えば、「やさしくしてくれるひとならいうことをきく」という価値観な訳だが、
それは幼稚園児----お菓子をくれるから付いていく----と同レベルでしかない。
俺は幼稚園児とつるみたいなんて思ってない。
2019/07/23(火) 23:15:20.18ID:2rFxEmo/
ただ、Web板久しぶりに見たが、前よりましになっているのに驚いた。
ゆとりというモンスター出現に右往左往している前世代より、
ゆとりがいる世界で育ったゆとり後期/さとりの方がゆとりの扱い方が上手いらしい。
実はこれは他の場所でも同傾向が散見されていたりする。

5-6年前:JavaScriptのスレは他言語に比べて異常にレベルが低かった
1-2年前:他言語にもゆとりが流入したらしく、他言語も著しく酷くなった
最近:JavaScriptのスレに復活の兆し? <-- new!
2-3年後:他言語スレも復活か?

みたいな感じになってる。
JavaScripterは俺が思うに年齢層が他言語と比べて若い。だから先行指標になってる。
俺達がどうにも出来なかった荒らし共をWeb板の連中がどうやって追い払ったのかは分からないが、
いずれにしてもこの点についてはWeb板の連中の方が上だという事実は見えたので、俺は引き続き静観する。
(というより俺が余計なことをするとおそらく悪化するだけなので何もやらないし、読まない)

ネットはゆとり撲滅運動をやるべきだ。
ゆとりは「ゆとりに対する人格否定は絶対に許さないが、気に入らない奴はとりあえず人格否定」な訳だろ。
今やってるように。
だから俺みたいに、「人格否定?やりたきゃやれよ。ゆとりみたいなクズに人格を認められる意味なんてそもそもない」
とされると対処出来ず、ひたすら人格攻撃連呼だろ。今みたいに。
全くお前らは勘違いしてる。クズからは否定された方がクズが寄ってこずに助かるものだ。
だから俺はそれをやってる。
2019/07/23(火) 23:16:43.88ID:2rFxEmo/
ゆとりは本当に根本的に勘違いしてる。
俺にマウント取りたければ、仕様書をよく読んで俺の間違いを探せばいいだけだ。
俺に間違いがないのなら、俺が偉そうな態度を取ったところで『何も問題ない』だろ。正しいんだから。
ゆとりの「丁寧であれば間違ってても許される」って価値観が根本的に間違いだ。
まず「正しいかどうか」であって、態度がどうこうは二の次だ。人格攻撃でマウント取ろうってのがおかしい。
そしてこういう俺を気に入らないのなら最初から無視すればいいだけ。これも最初から言ってる。
おれはゆとりと会話したいなんて思ってない。相手するだけ時間の無駄だからだ。
ただ、これにさとりは気づき初めて対処出来ている。結果的に俺達はさとりに学ぶべき事があるのだとは思う。

ちなみに俺とゆとりとの差異は、典型的には>>351を俺は「荒らし」だと見なしていることだ。
理由は「話が前に進まず、むしろ退行するから」だ。
これをゆとりは(俺の理解では)
・態度が偉そうではないから荒らしではない、むしろ偉そうなお前(俺のこと)が荒らし
・ゆとりは馬鹿だから英語が出来ない、だからみんな自分と同じで英語が出来ないと思っているし、思いたい
・そして英語が出来ないことも悪いなんて微塵も思ってない、むしろみんな違ってみんなイイ!
・それをガーガー喚き散らすお前(俺のこと)なんて大嫌い!それ!人格否定攻撃!
な幼稚園児レベルの価値観だ。だからゆとりが混ざるとコミュニティは崩壊していく。
いやゆとりにとってはそれが居心地がいいのだろうが、それ以前の世代にとっては大迷惑でしかない。
2019/07/23(火) 23:17:26.54ID:2rFxEmo/
ところがさとりはゆとりに対応する何かを持っているようだ。これはちょっと確認する必要があるな、という感じ。
今俺がグダグダこのメタ案件を書いているのもそのため。
ゆとりは>>351みたいな糞投稿をしなければよかった、なんて反省は絶対せずに、
ひたすら「お前(俺のこと)が悪い!」と人格攻撃の連呼だ。俺はそれがゆとりの本当に駄目なところだと思っている。
そして俺は既に書いたがゆとりは殲滅対象だから、当然こういう機会が与えられたら「ゆとり死ね」とし、
「ゆとりが何故死ななければならないか」をきちんと説明するわけだ。今やっているように。
そうやって、少しでもネット全体がゆとり撲滅に動く助けになれば、と思っている。
これがコミュニティ(つまりネット全体)に対する俺流の貢献だ。

それに対してゆとりがゆとりに敵対する人(つまり俺)を攻撃して「ゆとり的居心地が良いコミュニティ」を維持するのは構わない。
ただそれなら俺達、或いは俺が所属しているコミュニティにちょっかい出さないでくれ。
ゆとりはゆとりだけの、俺達旧世代は俺達旧世代だけでそれぞれコミュニティを維持すればいい。
そしてどちらのコミュニティが生産的かで競えばいいだけだ。

本来ゆとりはネット接続率100%でそれなりの人数がいるのだから、
ゆとりだけの(ゆとりにとっては)居心地のよいSNSが出来ても何ら不思議でないし、
逆に、ない方が不自然なわけだが、ない。
これは、ゆとりがお子ちゃま過ぎてコミュニティの維持も出来ないし発展もしないからだ。

俺は最初から「ゆとり的価値観ではない」と明確に分かるように書いてるつもりだが、
それが読みとれなかったというのなら、それは俺の落ち度でもあるから、もっと分かりやすく書く。
本件については俺は今後必ず「ゆとり死ね」と入れるから、これでゆとり馬鹿にも分かるか?

ゆとり死ね
2019/07/24(水) 04:04:40.59ID:k7RQM5em
前立ってた質問スレに常駐してヘイト撒き散らしてた荒らしかな
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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