JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-6のテンプレを読んだ上で質問してください。次スレは>>950が>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください
■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の質問は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
※前スレ
JavaScript の質問用スレッド vol.122
http://echo.2ch.net/test/read.cgi/tech/1472426483/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
JavaScript の質問用スレッド vol.123 [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 73c8-oPzN)
2017/04/03(月) 00:31:25.68ID:82yaJsi70898デフォルトの名無しさん (ワッチョイ 57d8-KuRC)
2017/07/12(水) 09:46:28.42ID:JRRJcnxl0899デフォルトの名無しさん (ワッチョイ b70b-kLC1)
2017/07/12(水) 10:33:07.51ID:Xbh+81Re0 いや、var付きかどうかには違いがあるけど、
グローバルオブジェクトのプロパティとグローバル変数は同じものだよ
スコープにはオブジェクト型ってあって、with文のスコープとグローバルスコープはそうなってるから
グローバルオブジェクトのプロパティとグローバル変数は同じものだよ
スコープにはオブジェクト型ってあって、with文のスコープとグローバルスコープはそうなってるから
900デフォルトの名無しさん (ワッチョイ 57d8-KuRC)
2017/07/12(水) 11:12:26.90ID:JRRJcnxl0901デフォルトの名無しさん (スププ Sdbf-HUZE)
2017/07/12(水) 12:40:32.42ID:MU+9qUhDd だからそれはvarの効果であって、グローバルスコープは
グローバルオブジェクトのオブジェクト型スコープだから
そこに対する参照は全てグローバルオブジェクトへの参照へリダイレクトされるんだよ
つまりグローバル変数とグローバルオブジェクトのプロパティは同じもの
varで宣言すれば属性が変わるが存在するのは同じ場所
グローバルオブジェクトのオブジェクト型スコープだから
そこに対する参照は全てグローバルオブジェクトへの参照へリダイレクトされるんだよ
つまりグローバル変数とグローバルオブジェクトのプロパティは同じもの
varで宣言すれば属性が変わるが存在するのは同じ場所
902デフォルトの名無しさん (ワッチョイ 57d8-KuRC)
2017/07/12(水) 13:31:19.76ID:JRRJcnxl0 じゃあ他人のコードをレビューする時、
deleteは無視しても挙動は変わらないんだな?
deleteは無視しても挙動は変わらないんだな?
903デフォルトの名無しさん (ワッチョイ 57d8-KuRC)
2017/07/12(水) 13:52:48.55ID:JRRJcnxl0 やめたやめた、絡むだけ時間の損だわ。
904デフォルトの名無しさん (ワッチョイ 57d8-hKQV)
2017/07/12(水) 14:42:40.12ID:JRRJcnxl0905デフォルトの名無しさん (JP 0H4f-rvkC)
2017/07/12(水) 15:11:57.05ID:LVxqEvY9H お前の書き込みが俺をイライラさせる件についてはどう思うんだ
906デフォルトの名無しさん (ワッチョイ b70b-kLC1)
2017/07/12(水) 15:53:52.86ID:Xbh+81Re0 >>904
おれがいつそんな細かいことを気にせずテキトーでいいと言った?
俺はここの住人の中でもっとも細かいことが気になる人間だぞ?
だからむしろ、お前はスコープと変数の扱いの仕様レベルのことが分かっていないんだから、
言い回しに気をつけろと超細かいことを言ってるんだよ
いいか、グローバル変数とグローバルプロパティに差なんてない、両者は同じもの
ただvarで宣言するとconfigurableがfalseになるからdeleteできない、それだけなんだよ
おれがいつそんな細かいことを気にせずテキトーでいいと言った?
俺はここの住人の中でもっとも細かいことが気になる人間だぞ?
だからむしろ、お前はスコープと変数の扱いの仕様レベルのことが分かっていないんだから、
言い回しに気をつけろと超細かいことを言ってるんだよ
いいか、グローバル変数とグローバルプロパティに差なんてない、両者は同じもの
ただvarで宣言するとconfigurableがfalseになるからdeleteできない、それだけなんだよ
907デフォルトの名無しさん (ワッチョイ ffaa-PX3H)
2017/07/12(水) 16:13:36.51ID:HQm2gXhD0 グローバルオブジェクトは、唯一無二のシングルトン
グローバル変数は、グローバルな変数
グローバルプロパティは、グローバルなプロパティだから、delete で削除できる
これら、3つは別のもの
グローバル変数は、グローバルな変数
グローバルプロパティは、グローバルなプロパティだから、delete で削除できる
これら、3つは別のもの
908デフォルトの名無しさん (ワントンキン MM7f-gJC/)
2017/07/12(水) 17:33:04.93ID:VV5TEq59M 要するに、普通のオブジェクトでのルールをグローバルオブジェクトにも適用して例外をなくしたからぱっと見で意味が分からない仕様になってるんだろうなぁ
全てがグローバルオブジェクトの中の出来事と思えばさほどおかしい仕様ではないが他言語からは理解しがたい不思議な世界かもしれない
全てがグローバルオブジェクトの中の出来事と思えばさほどおかしい仕様ではないが他言語からは理解しがたい不思議な世界かもしれない
909デフォルトの名無しさん (ワントンキン MM7f-gJC/)
2017/07/12(水) 17:35:19.86ID:VV5TEq59M 仮にグローバルオブジェクトの外からそれらを見ることがあるなら、グローバルプロパティと変数の差はもっとわかり安いだろう
910デフォルトの名無しさん (ワントンキン MM7f-gJC/)
2017/07/12(水) 18:06:03.89ID:VV5TEq59M とにかく開発時には、verもしくはthis(orなにかしらのオブジェクト)にドットで繋いで変数宣言しないとだめって事だな
それ以外の宣言だとぱっと見だと判断のつかない所属の変数になってしまう事がある
それはJSとしては正しい挙動だが、わざわざそんな事を狙ってやるやつは居ない
大抵はミスでそうなるケース
それ以外の宣言だとぱっと見だと判断のつかない所属の変数になってしまう事がある
それはJSとしては正しい挙動だが、わざわざそんな事を狙ってやるやつは居ない
大抵はミスでそうなるケース
911デフォルトの名無しさん (ワッチョイ ffaa-PX3H)
2017/07/12(水) 18:07:07.39ID:HQm2gXhD0 JSが難しい理由は、var, new の有無で、意味が変わってくる所。
ちょっとした書き間違いで、動作が異なる
しかも、コンパイルエラーにならないで、
しばらくしてから違う箇所で、実行時エラーになる
実装者向けの機能が、むき出しで、一般のプログラマーまで、
それを習得しないといけなくなってる
すごく、インタープリター内部の話まで、しなければならない。
それで、Ruby よりも、かなり難しい
ちょっとした書き間違いで、動作が異なる
しかも、コンパイルエラーにならないで、
しばらくしてから違う箇所で、実行時エラーになる
実装者向けの機能が、むき出しで、一般のプログラマーまで、
それを習得しないといけなくなってる
すごく、インタープリター内部の話まで、しなければならない。
それで、Ruby よりも、かなり難しい
912デフォルトの名無しさん (ワントンキン MM7f-gJC/)
2017/07/12(水) 18:24:56.67ID:VV5TEq59M JSはフリーダムすぎるんだよね
誰も使わないような自由があちらこちらにあって、それがケアレスミス時の落とし穴になるという
いろいろ作ってて理解不能なエラー挙動に直面して、ウォッチで追って行って「そんな仕様だったのかよ。。。」とあとから気づくことも多かった
誰も使わないような自由があちらこちらにあって、それがケアレスミス時の落とし穴になるという
いろいろ作ってて理解不能なエラー挙動に直面して、ウォッチで追って行って「そんな仕様だったのかよ。。。」とあとから気づくことも多かった
913デフォルトの名無しさん (ワッチョイ b70b-kLC1)
2017/07/12(水) 19:23:00.20ID:Xbh+81Re0 まあnew演算子の挙動は理解しとかないといけないだろうな
旧クラスシステムは、関数にデフォでprototypeメソッドが生えることを除くと
完全にnew演算子の力だけで成り立ってることを一旦理解すれば
newの有無で〜とか言う発言はなくなる
だってそもそもnewは演算子なんだから、そりゃどんな演算子でも飛ばせば動作が変わって来るのは当然だし
旧クラスシステムは、関数にデフォでprototypeメソッドが生えることを除くと
完全にnew演算子の力だけで成り立ってることを一旦理解すれば
newの有無で〜とか言う発言はなくなる
だってそもそもnewは演算子なんだから、そりゃどんな演算子でも飛ばせば動作が変わって来るのは当然だし
914デフォルトの名無しさん (ワッチョイ f7a9-aOiv)
2017/07/12(水) 19:32:20.46ID:46U9BX050 ここにいる人たちってeslintとか使ってないんか
915デフォルトの名無しさん (ワッチョイ 7f23-ZuCk)
2017/07/12(水) 19:49:51.64ID:svcC79vd0 勉強にはなったと思う
しかしグローバルプロパティを
deleteしようとすることは
俺の仕事内容的にはまずないだろうな……
しかしグローバルプロパティを
deleteしようとすることは
俺の仕事内容的にはまずないだろうな……
916デフォルトの名無しさん (ワッチョイ ffaa-PX3H)
2017/07/12(水) 20:12:49.78ID:HQm2gXhD0 new Number()
Number()
new を付けると、オブジェクトで、
無しだと、プリミティブになるとか、
ちょっとした変化を付けているから、困る。
ちょっとした書き方の変化で、色々と出来るようにしているから、ややこしい
Number()
new を付けると、オブジェクトで、
無しだと、プリミティブになるとか、
ちょっとした変化を付けているから、困る。
ちょっとした書き方の変化で、色々と出来るようにしているから、ややこしい
917デフォルトの名無しさん (ワッチョイ b70b-kLC1)
2017/07/12(水) 20:39:54.78ID:Xbh+81Re0 取り敢えずクラスはクラス構文で書けばいい
そうすればnew無しでは呼べない
そうすればnew無しでは呼べない
918デフォルトの名無しさん (スププ Sd70-wcQn)
2017/07/13(木) 03:17:56.06ID:UhYYQlFzd >>907
違う違う、いい加減仕様読みなって
グローバルに変数作ろうとするとグローバルオブジェクトのプロパティを作成することになるの
その時var宣言付きだとconfigurableがfalseになるからdeleteできない
ただそれだけでグローバル変数とグローバルプロパティに区別はない
違う違う、いい加減仕様読みなって
グローバルに変数作ろうとするとグローバルオブジェクトのプロパティを作成することになるの
その時var宣言付きだとconfigurableがfalseになるからdeleteできない
ただそれだけでグローバル変数とグローバルプロパティに区別はない
919デフォルトの名無しさん (ワントンキン MM1a-cSUh)
2017/07/13(木) 06:48:46.09ID:1ML2Rzf1M >>918
自分で言ってて矛盾してると思わないの?
自分で言ってて矛盾してると思わないの?
920デフォルトの名無しさん (ワッチョイ 4d0b-kuRt)
2017/07/13(木) 07:01:17.86ID:qKiU4eWA0 何も矛盾していない
矛盾してると思うのは君の前提知識が誤ってるから
そしてそろそろ仕様を読め、この順で
わからないところがあったら説明してやるから
https://tc39.github.io/ecma262/#sec-globaldeclarationinstantiation
https://tc39.github.io/ecma262/#sec-createglobalvarbinding
https://tc39.github.io/ecma262/#sec-global-environment-records
https://tc39.github.io/ecma262/#sec-object-environment-records
矛盾してると思うのは君の前提知識が誤ってるから
そしてそろそろ仕様を読め、この順で
わからないところがあったら説明してやるから
https://tc39.github.io/ecma262/#sec-globaldeclarationinstantiation
https://tc39.github.io/ecma262/#sec-createglobalvarbinding
https://tc39.github.io/ecma262/#sec-global-environment-records
https://tc39.github.io/ecma262/#sec-object-environment-records
921デフォルトの名無しさん (ワントンキン MM1a-cSUh)
2017/07/13(木) 08:33:49.98ID:1ML2Rzf1M >>920
なぜ変数とプロパティの違いすら分からないの?
両者は全然ちがうだろ
グローバルだけはスコープチェーンの最終地点だから使用する際の挙動に違いがほとんど無いだけ
これはたまたまそうなってるだけであり、「区別がない」なんて無知にもほどがあるだろ
なぜ変数とプロパティの違いすら分からないの?
両者は全然ちがうだろ
グローバルだけはスコープチェーンの最終地点だから使用する際の挙動に違いがほとんど無いだけ
これはたまたまそうなってるだけであり、「区別がない」なんて無知にもほどがあるだろ
922デフォルトの名無しさん (フリッテル MM5e-R3UR)
2017/07/13(木) 13:51:12.12ID:oJKwR9xkM >>907
つまり、こういう事か?
- delete演算子で削除できるものが「グローバルプロパティ」
- var 宣言したものは「グローバル変数」
オレオレ定義にしか思えんのだが、該当する仕様のURLを教えてくれ。
つまり、こういう事か?
- delete演算子で削除できるものが「グローバルプロパティ」
- var 宣言したものは「グローバル変数」
オレオレ定義にしか思えんのだが、該当する仕様のURLを教えてくれ。
923デフォルトの名無しさん (フリッテル MM5e-knux)
2017/07/13(木) 14:05:18.85ID:oJKwR9xkM >>921
var宣言してもグローバルオブジェクトのプロパティになるからでは?
<script>
var a = 1; // グローバル変数
console.log(this.a); // グローバルオブジェクトのプロパティ
</script>
だから、これは「グローバル変数でもグローバルオブジェクトのプロパティでもある」という認識が正しい。
彼が指摘しているように、仕様を読んだ方がいい。
var宣言してもグローバルオブジェクトのプロパティになるからでは?
<script>
var a = 1; // グローバル変数
console.log(this.a); // グローバルオブジェクトのプロパティ
</script>
だから、これは「グローバル変数でもグローバルオブジェクトのプロパティでもある」という認識が正しい。
彼が指摘しているように、仕様を読んだ方がいい。
924デフォルトの名無しさん (ワッチョイ df6f-qBah)
2017/07/13(木) 20:28:17.30ID:fMgp1qch0 トップレベルでObject.getOwmPropertyDescriptor(this, 'v')
すりゃ>>918が正しい事が確認できる
すりゃ>>918が正しい事が確認できる
925デフォルトの名無しさん (ワッチョイ 4d8e-N0vF)
2017/07/13(木) 21:06:35.19ID:+QqE9gTA0 スレ違いだったらすみません。
JSの勉強として既存のスクリプトを読んだりしているのですが、どうしても理解できない点がありまして、
よろしければご教示お願いできないかと思い書き込ませていただきました。
読んでいるのは以下のプロジェクトの /lib/marked.js となります。
JSの勉強に加えて、似たような処理をするスクリプトを組む参考にもなると思い選びました。
https://github.com/chjj/marked
当該スクリプトの下部で定義されている replace という関数に含まれている以下の文が、何を目的として存在しているのかが分かりません。
val = val.replace(/(^|[^\[])\^/g, '$1');
もしお時間ありましたら、どなたか解説お願いしても構わないでしょうか?
JSの勉強として既存のスクリプトを読んだりしているのですが、どうしても理解できない点がありまして、
よろしければご教示お願いできないかと思い書き込ませていただきました。
読んでいるのは以下のプロジェクトの /lib/marked.js となります。
JSの勉強に加えて、似たような処理をするスクリプトを組む参考にもなると思い選びました。
https://github.com/chjj/marked
当該スクリプトの下部で定義されている replace という関数に含まれている以下の文が、何を目的として存在しているのかが分かりません。
val = val.replace(/(^|[^\[])\^/g, '$1');
もしお時間ありましたら、どなたか解説お願いしても構わないでしょうか?
926デフォルトの名無しさん (アウアウカー Sa11-7i7E)
2017/07/13(木) 21:15:07.43ID:OmneFwIKa 性器表現
927デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/13(木) 21:42:50.08ID:7UlgIumN0 他人のソースコードを読んでも、作者にしか分からないから、
時間が掛かるだけで、何にもならない。
自分で作った事だけが、自分を成長させる
それに、どうせ読むなら、John Resig 作の jQuery、
Jeremy Ashkenas 作の Underscore.js など、すごいライブラリを読みなよ
正規表現 - MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions
時間が掛かるだけで、何にもならない。
自分で作った事だけが、自分を成長させる
それに、どうせ読むなら、John Resig 作の jQuery、
Jeremy Ashkenas 作の Underscore.js など、すごいライブラリを読みなよ
正規表現 - MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions
928デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/13(木) 22:41:06.52ID:7UlgIumN0 var str3 = str.replace(/(^|[^\[])\^/g, '$1');
g フラグは、一致するだけ、複数にマッチする
$n は、( )で囲んだ部分に、一致した部分。
$1 は、1つ目の( )、$2 なら、2つ目の( )
^ は、文字列の先頭に一致する。^A なら、先頭がA。
ただし、[ ]の先頭にあると、否定の意味になる
[abc][a-c]は、a, b, c のどれかの1文字に一致するが、
[^abc]は、a, b, c のどれかの1文字に一致しない文字を表す
\ は、特殊文字をエスケープする。
特殊文字の意味をなくして、通常の文字として扱う。
\^ なら、^ の特殊な意味をなくして、単に、^ 文字を表す
\[ なら、[ 。
[ ] の中で、[ を使えないから、\[ と書いている。
つまり、[^\[] は外側の、[ ] を外すと、^\[ となり、[ 以外の文字
| は、どちらかの文字を表す。A|B なら、A か、B
(^|[^\[])\^ は、1文字目が、^ または、[ 以外の文字で、
2文字目が、^ にマッチする。
$1 で、( )内は、1文字目だけを取り出す
g フラグは、一致するだけ、複数にマッチする
$n は、( )で囲んだ部分に、一致した部分。
$1 は、1つ目の( )、$2 なら、2つ目の( )
^ は、文字列の先頭に一致する。^A なら、先頭がA。
ただし、[ ]の先頭にあると、否定の意味になる
[abc][a-c]は、a, b, c のどれかの1文字に一致するが、
[^abc]は、a, b, c のどれかの1文字に一致しない文字を表す
\ は、特殊文字をエスケープする。
特殊文字の意味をなくして、通常の文字として扱う。
\^ なら、^ の特殊な意味をなくして、単に、^ 文字を表す
\[ なら、[ 。
[ ] の中で、[ を使えないから、\[ と書いている。
つまり、[^\[] は外側の、[ ] を外すと、^\[ となり、[ 以外の文字
| は、どちらかの文字を表す。A|B なら、A か、B
(^|[^\[])\^ は、1文字目が、^ または、[ 以外の文字で、
2文字目が、^ にマッチする。
$1 で、( )内は、1文字目だけを取り出す
929デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/13(木) 22:41:29.60ID:7UlgIumN0 var str = "a^^b";
var str2 = str.match(/(^|[^\[])\^/g);
var str3 = str.replace(/(^|[^\[])\^/g, '$1');
console.log(str2, '\n', str3);
str2は、a^ で、$1 は、( )内だから、a だけを表す。
replaceでは、a^ を、a で置換するから、str3は、a^b となる
var str2 = str.match(/(^|[^\[])\^/g);
var str3 = str.replace(/(^|[^\[])\^/g, '$1');
console.log(str2, '\n', str3);
str2は、a^ で、$1 は、( )内だから、a だけを表す。
replaceでは、a^ を、a で置換するから、str3は、a^b となる
930デフォルトの名無しさん (ワッチョイ 4d0b-kuRt)
2017/07/13(木) 22:53:39.59ID:qKiU4eWA0 >>921
順を追って書いていくからどこで引っかかるか教えてくれ
変数はEnvironment Recordという構造体に保存される
Environment RecordにはObject型があって、そこでは変数はオブジェクトのプロパティとして保存される
グローバルスコープのEnvironment RecordはグローバルオブジェクトをベースとしたObject型だ
グローバル変数はグローバルオブジェクトのプロパティとして保存される
順を追って書いていくからどこで引っかかるか教えてくれ
変数はEnvironment Recordという構造体に保存される
Environment RecordにはObject型があって、そこでは変数はオブジェクトのプロパティとして保存される
グローバルスコープのEnvironment RecordはグローバルオブジェクトをベースとしたObject型だ
グローバル変数はグローバルオブジェクトのプロパティとして保存される
931デフォルトの名無しさん (ワッチョイ 8bf3-z+eH)
2017/07/13(木) 23:24:43.34ID:2zl2aPWN0 >>925が超初心者と想定した説明を。
例えば入力された電話番号をチェックしたい場合、有効な電話番号を10桁の数字とすると、
if (phoneNumber == "0000000000" || phoneNumber == "0000000001" || ......)
と書いていては現実的に不可能です。
正規表現は文字列の法則を示したもので、replace関数の親戚のmatch関数で、
if (phoneNumber.match(/[0123456789]{10}/))
と書けば、"0000000000"〜"9999999999"までをカバー出来ます。
[0123456789]はより単純に[0-9]と書くこともでき、この部分は0〜9の数字1文字を示しています。
その後に続く{10}はそれを10回繰り返したものという意味です。
実はこれでは不完全で、この正規表現では10桁の数字さえあればよく、
例えば11桁以上の数字や、"0123456789A"や"A01234567890"みたいな文字も通ってしまいます。
そこで先頭に^をつけることによって、数字から始まることを示し、
最後に$をつけることによって、10桁で終了することを示せば、期待通りになります。
if (phoneNumber.match(/^[0-9]{10}$/))
さて本題ですが、上のmatch関数もそうですが、replace関数の1番目の引数は""で囲っていなく//で囲っています。
これは文字列ではなく、正規表現オブジェクトを渡していて、matchやreplace関数ではそうするもんだと思って下さい。
文字列変数valにある、(^|[^\[])\^という正規表現で示される部分を、(2番目の引数の)$1に置き換えるという意味です。
$1というのは、正規表現の後方参照と呼ばれるもので、正規表現の1番目の丸括弧()の中を指しています。
(^|[^\[])\^という正規表現なので、(^|[^\[])の部分が$1になります。
(^|[^\[])\^を(^|[^\[])に置き換える。つまり、丸括弧の外にある\^の部分を削りたいわけです。
/(^|[^\[])\^/gと書いてますが、このgというのは、正規表現のフラグの1つで、一致したもの全てを置き換えるという意味です。
もしgがない場合、一致した最初の1つしか置き換えられません。
大文字小文字を区別しないフラグなど、フラグは他にもいくつかあります。
初心者に正規表現は難しいので、(^|[^\[])\^がどういう意味なのかは時間をかけて勉強してみて下さい。
例えば入力された電話番号をチェックしたい場合、有効な電話番号を10桁の数字とすると、
if (phoneNumber == "0000000000" || phoneNumber == "0000000001" || ......)
と書いていては現実的に不可能です。
正規表現は文字列の法則を示したもので、replace関数の親戚のmatch関数で、
if (phoneNumber.match(/[0123456789]{10}/))
と書けば、"0000000000"〜"9999999999"までをカバー出来ます。
[0123456789]はより単純に[0-9]と書くこともでき、この部分は0〜9の数字1文字を示しています。
その後に続く{10}はそれを10回繰り返したものという意味です。
実はこれでは不完全で、この正規表現では10桁の数字さえあればよく、
例えば11桁以上の数字や、"0123456789A"や"A01234567890"みたいな文字も通ってしまいます。
そこで先頭に^をつけることによって、数字から始まることを示し、
最後に$をつけることによって、10桁で終了することを示せば、期待通りになります。
if (phoneNumber.match(/^[0-9]{10}$/))
さて本題ですが、上のmatch関数もそうですが、replace関数の1番目の引数は""で囲っていなく//で囲っています。
これは文字列ではなく、正規表現オブジェクトを渡していて、matchやreplace関数ではそうするもんだと思って下さい。
文字列変数valにある、(^|[^\[])\^という正規表現で示される部分を、(2番目の引数の)$1に置き換えるという意味です。
$1というのは、正規表現の後方参照と呼ばれるもので、正規表現の1番目の丸括弧()の中を指しています。
(^|[^\[])\^という正規表現なので、(^|[^\[])の部分が$1になります。
(^|[^\[])\^を(^|[^\[])に置き換える。つまり、丸括弧の外にある\^の部分を削りたいわけです。
/(^|[^\[])\^/gと書いてますが、このgというのは、正規表現のフラグの1つで、一致したもの全てを置き換えるという意味です。
もしgがない場合、一致した最初の1つしか置き換えられません。
大文字小文字を区別しないフラグなど、フラグは他にもいくつかあります。
初心者に正規表現は難しいので、(^|[^\[])\^がどういう意味なのかは時間をかけて勉強してみて下さい。
932デフォルトの名無しさん (ワッチョイ 0123-z+eH)
2017/07/13(木) 23:38:29.43ID:ZRvPs5t50 >>928
というかその正規表現はおかしいだろ。
JavaScriptではエラーにならないし、
よくあるサイト上でのチェックでも実際のJavaScriptで動作させているから動いてしまうが。
チェッカーを探したがいいのが無いね。
> (^|[^\[])\^ は、1文字目が、^ または、[ 以外の文字で、
意味的におかしいだろ。^ は [ 以外の文字なんですがそれは?
君が勘違いしているのは下記か?
/(\^|[^\[])\^/
が、まあ、これが意味ないのは上記の通り。意味があるようにするとしたら以下か?
/(^\^|[^\[])\^/
韓国人死ね
というかその正規表現はおかしいだろ。
JavaScriptではエラーにならないし、
よくあるサイト上でのチェックでも実際のJavaScriptで動作させているから動いてしまうが。
チェッカーを探したがいいのが無いね。
> (^|[^\[])\^ は、1文字目が、^ または、[ 以外の文字で、
意味的におかしいだろ。^ は [ 以外の文字なんですがそれは?
君が勘違いしているのは下記か?
/(\^|[^\[])\^/
が、まあ、これが意味ないのは上記の通り。意味があるようにするとしたら以下か?
/(^\^|[^\[])\^/
韓国人死ね
933あ (スフッ Sd94-HJuN)
2017/07/13(木) 23:54:34.87ID:gzfFo6hjd934デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/14(金) 00:09:24.28ID:jwaA4OPc0 そもそも、この正規表現は正しいのか?
935デフォルトの名無しさん (ワッチョイ 0123-z+eH)
2017/07/14(金) 00:24:01.50ID:jsZNOhnp0 >>933
え?それってありなん?
まあ俺は正規表現のプロではないが。
そして試してみた結果、確かにそのようだが、ものすごく気持ち悪い。
'^'.replace(/(^|[^\[])\^/g,'$1'); // ''
これってマジでありなん?しかもカッコ内じゃないのに置換されてるし。
韓国人死ね
え?それってありなん?
まあ俺は正規表現のプロではないが。
そして試してみた結果、確かにそのようだが、ものすごく気持ち悪い。
'^'.replace(/(^|[^\[])\^/g,'$1'); // ''
これってマジでありなん?しかもカッコ内じゃないのに置換されてるし。
韓国人死ね
936デフォルトの名無しさん (ワッチョイ df6f-qBah)
2017/07/14(金) 00:36:41.22ID:i0uGqEt60 ^が行頭を表すなんて朝鮮人以外はみんな知ってる
937デフォルトの名無しさん (ワッチョイ 2e20-z+eH)
2017/07/14(金) 01:07:53.54ID:+/3l0vud0 さわんじゃね
938デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/14(金) 01:18:47.21ID:jwaA4OPc0 var str = "xabc";
var str2 = str.match(/(^|a)b/g);
console.log(str2);
ab と一致する。
^ これどういう意味?
行頭または?
はあ?
間違いか?
var str2 = str.match(/(^|a)b/g);
console.log(str2);
ab と一致する。
^ これどういう意味?
行頭または?
はあ?
間違いか?
939デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/14(金) 01:26:37.87ID:jwaA4OPc0 var str = "xabc";
var str2 = str.match(/(^|a)b/g);
console.log(str2); // ab
str = "bc";
str2 = str.match(/(^|a)b/g);
console.log(str2); // b
行頭が、b または、
ab
var str2 = str.match(/(^|a)b/g);
console.log(str2); // ab
str = "bc";
str2 = str.match(/(^|a)b/g);
console.log(str2); // b
行頭が、b または、
ab
940デフォルトの名無しさん (ワッチョイ 0123-z+eH)
2017/07/14(金) 01:41:53.20ID:jsZNOhnp0 すまん、935のカッコ内云々は俺の勘違いだった。
ただ、行頭をキャプチャして置換に使うってのがなあ。これって合法なん?
韓国人死ね
ただ、行頭をキャプチャして置換に使うってのがなあ。これって合法なん?
韓国人死ね
941デフォルトの名無しさん (ワッチョイ df6f-qBah)
2017/07/14(金) 02:14:57.74ID:i0uGqEt60942デフォルトの名無しさん (ワッチョイ 0123-z+eH)
2017/07/14(金) 02:51:48.36ID:jsZNOhnp0 >>941
確かに以下を見る限り合法のようだ。
https://abicky.net/2010/05/30/135112/
やりたかったことは replace(/(?<!\[)\^/g,'') なんだろうけど、
JavaScriptでは否定後読みは使えないからああなったという感じか。
Perl使いがキモイ正規表現を使うとは聞いていたが、遭遇したことは無かったのだが、これか。
あくまでマッチ+バッファであり、型の感覚が無いから、プログラマからするとキモイわけだ。
とはいえこれに関してはPerl使いのほうが正しいのだろう。
韓国人死ね
確かに以下を見る限り合法のようだ。
https://abicky.net/2010/05/30/135112/
やりたかったことは replace(/(?<!\[)\^/g,'') なんだろうけど、
JavaScriptでは否定後読みは使えないからああなったという感じか。
Perl使いがキモイ正規表現を使うとは聞いていたが、遭遇したことは無かったのだが、これか。
あくまでマッチ+バッファであり、型の感覚が無いから、プログラマからするとキモイわけだ。
とはいえこれに関してはPerl使いのほうが正しいのだろう。
韓国人死ね
943デフォルトの名無しさん (ワッチョイ 6e0b-kuRt)
2017/07/14(金) 03:09:55.88ID:IlK8Z/pQ0 後読みはES2018で入るだろう
944デフォルトの名無しさん (ワッチョイ 4d8e-N0vF)
2017/07/14(金) 05:11:48.47ID:3/uFIGY50 925に対して回答ありがとうございます。
わざわざ詳細な説明いただき助かりました。
申し訳ありませんが、その上で何点か再確認よろしいでしょうか?
まず $1 だとマッチした内容に置換されるが、当該のコードは '$1' なので単なる文字列と見なしてよろしいでしょうか?
ならびに [^\[] は行頭文字ともマッチするので記述が冗長だと思うのですが、いかがでしょうか?
当該の一文が出てくるのは小さな関数なのですが、何のためにこのような処理をされているのかが全文を読んでもさっぱり見えてきません。
何を目的としてこのように書かれているのか、どなたか分かりますでしょうか?
わざわざ詳細な説明いただき助かりました。
申し訳ありませんが、その上で何点か再確認よろしいでしょうか?
まず $1 だとマッチした内容に置換されるが、当該のコードは '$1' なので単なる文字列と見なしてよろしいでしょうか?
ならびに [^\[] は行頭文字ともマッチするので記述が冗長だと思うのですが、いかがでしょうか?
当該の一文が出てくるのは小さな関数なのですが、何のためにこのような処理をされているのかが全文を読んでもさっぱり見えてきません。
何を目的としてこのように書かれているのか、どなたか分かりますでしょうか?
945デフォルトの名無しさん (フリッテル MM5e-R3UR)
2017/07/14(金) 08:34:30.97ID:HpYhyMQyM >>944
$1は一つ目のキャプチャ文字列。
[^\[] は行頭にマッチしない。
リファレンスを読めば解決する問題なので熟読しろ。
もしくは、テストコードを作って検証しろ。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/replace
目的「"^" を削除する。ただし、"[^" は削除しない。」
これ以上はコード全体を読まないと解釈しようがない。
(中途半端な文法規則を作っている感はあるが)
$1は一つ目のキャプチャ文字列。
[^\[] は行頭にマッチしない。
リファレンスを読めば解決する問題なので熟読しろ。
もしくは、テストコードを作って検証しろ。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/replace
目的「"^" を削除する。ただし、"[^" は削除しない。」
これ以上はコード全体を読まないと解釈しようがない。
(中途半端な文法規則を作っている感はあるが)
946あ (スフッ Sd94-HJuN)
2017/07/14(金) 08:36:08.67ID:vN8eqjVVd >>944
行頭か、[以外で始まる^でしょ?
^abcde //マッチする
[^abcde //マッチしない
abc^defg //マッチする
abc[^defg //マッチしない
行頭とマッチするかは/m次第だろうけどマッチするのは、改行文字かと。
行頭か、[以外で始まる^でしょ?
^abcde //マッチする
[^abcde //マッチしない
abc^defg //マッチする
abc[^defg //マッチしない
行頭とマッチするかは/m次第だろうけどマッチするのは、改行文字かと。
947デフォルトの名無しさん (ワッチョイ df6f-qBah)
2017/07/14(金) 08:43:14.00ID:i0uGqEt60948デフォルトの名無しさん (ワッチョイ 4d8e-N0vF)
2017/07/14(金) 09:07:40.64ID:3/uFIGY50949デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/14(金) 09:21:57.72ID:jwaA4OPc0950デフォルトの名無しさん (ワッチョイ 6e0b-kuRt)
2017/07/14(金) 09:41:11.04ID:IlK8Z/pQ0 文字へのマッチとは別に、位置へのマッチがあることが分かれば難しいものではない
951デフォルトの名無しさん (ワッチョイ 6ef3-9pdu)
2017/07/14(金) 12:04:36.19ID:+NhBdlJT0 質問お願いします。
要素にクラスを追加する場合、id指定だと下記のようにするとできるのですが、
var e = document.getElementById("abc");
e.classList.add("xyz");
クラスにクラスを追加する場合、どのようにすればいいのでしょうか?
var e = document.getElementsByClassName("abc");
e.classList.add("xyz");
これだとエラーになってしまします。
よろしくお願いします。
要素にクラスを追加する場合、id指定だと下記のようにするとできるのですが、
var e = document.getElementById("abc");
e.classList.add("xyz");
クラスにクラスを追加する場合、どのようにすればいいのでしょうか?
var e = document.getElementsByClassName("abc");
e.classList.add("xyz");
これだとエラーになってしまします。
よろしくお願いします。
952デフォルトの名無しさん (ワッチョイ df6f-qBah)
2017/07/14(金) 12:34:22.15ID:i0uGqEt60 getElementとgetElementsの違いを理解しよう
中学校(最近は小学校?)で習ったはずだぞ
中学校(最近は小学校?)で習ったはずだぞ
953デフォルトの名無しさん (ワッチョイ 8bf3-z+eH)
2017/07/14(金) 12:54:26.06ID:yf7LD5Sw0 idは一意で、同じidはないはずなので(あった場合それは正しいドキュメントではない)、
getElementByIdは指定idの要素オブジェクトを1つだけ返すのに対して、
classはそういう制限はなく、同じclassが何個も出てくるのを想定しているので、
getElementsByClassNameは指定classのイテレータブルなコレクションを返します。
すなわち、e[0]、もしくはe.item(0)のようにアクセスするのが正しいです。
getElementByIdは指定idの要素オブジェクトを1つだけ返すのに対して、
classはそういう制限はなく、同じclassが何個も出てくるのを想定しているので、
getElementsByClassNameは指定classのイテレータブルなコレクションを返します。
すなわち、e[0]、もしくはe.item(0)のようにアクセスするのが正しいです。
954デフォルトの名無しさん (ワッチョイ 15a5-S4qQ)
2017/07/14(金) 13:27:58.97ID:14PnxSlX0 ID == identification
955951 (ワッチョイ 6ef3-9pdu)
2017/07/14(金) 14:04:28.62ID:+NhBdlJT0956デフォルトの名無しさん (フリッテル MM5e-R3UR)
2017/07/14(金) 14:05:49.80ID:HpYhyMQyM >>953
> getElementsByClassNameは指定classのイテレータブルなコレクションを返します。
getElementsByClassName の返り値は HTMLCollection だが、HTMLCollection は iterable ではない。
https://triple-underscore.github.io/DOM4-ja.html#interface-document
https://triple-underscore.github.io/DOM4-ja.html#interface-htmlcollection
> getElementsByClassNameは指定classのイテレータブルなコレクションを返します。
getElementsByClassName の返り値は HTMLCollection だが、HTMLCollection は iterable ではない。
https://triple-underscore.github.io/DOM4-ja.html#interface-document
https://triple-underscore.github.io/DOM4-ja.html#interface-htmlcollection
957デフォルトの名無しさん (ワッチョイ 6e0b-EdWd)
2017/07/14(金) 17:21:23.89ID:IlK8Z/pQ0 △イテレータブル ○イテラブル ということは置いといて
何をもってイテラブルと言ってるのかによるだろう
HTMLCollectionは
ESで言うイテラブルは通常@@iterableを持つということなのでそれとは違う
DOMで言うイテラブルは通常NodeIteratorなどのことなのでそれとも違う
ただ「列挙可能」という意味で言ってるなら問題はない
何をもってイテラブルと言ってるのかによるだろう
HTMLCollectionは
ESで言うイテラブルは通常@@iterableを持つということなのでそれとは違う
DOMで言うイテラブルは通常NodeIteratorなどのことなのでそれとも違う
ただ「列挙可能」という意味で言ってるなら問題はない
958デフォルトの名無しさん (JP 0H37-S4qQ)
2017/07/14(金) 18:29:09.93ID:vv2qH35gH それなら普通に配列って言えばいいだけでは
959デフォルトの名無しさん (フリッテル MM5e-R3UR)
2017/07/14(金) 18:44:26.77ID:HpYhyMQyM >>957
> ESで言うイテラブルは通常@@iterableを持つということなのでそれとは違う
ES7 には @@iterable が存在しないが、ソースは?
ES7では @@iterator を持つオブジェクトが for-of で「列挙可能」
iterable な NodeList は for-of で列挙可能だが、iterable ではない HTMLCollection は不可能。
http://www.ecma-international.org/ecma-262/7.0/#sec-well-known-symbols
> ESで言うイテラブルは通常@@iterableを持つということなのでそれとは違う
ES7 には @@iterable が存在しないが、ソースは?
ES7では @@iterator を持つオブジェクトが for-of で「列挙可能」
iterable な NodeList は for-of で列挙可能だが、iterable ではない HTMLCollection は不可能。
http://www.ecma-international.org/ecma-262/7.0/#sec-well-known-symbols
960デフォルトの名無しさん (ワッチョイ 6e0b-EdWd)
2017/07/14(金) 19:27:51.05ID:IlK8Z/pQ0 @@iteratorの間違いだよ それくらい察して
それにイテラブルだなんて汎用的な言葉とも取れるし、そんな突っつくことでもないと思うよ
それにイテラブルだなんて汎用的な言葉とも取れるし、そんな突っつくことでもないと思うよ
961デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/15(土) 00:32:27.99ID:5uf8kOgL0 // テストデータ
var dataAry = ["xabc", "bc", "ac"];
var re = /(^|a)b/g;
function testFunc(elem, index, array) {
var myArray = elem.match(re);
console.log(elem, '\n', myArray, '\n');
}
dataAry.forEach(testFunc);
結果は、ab, b, null
つまり、
1. 行頭がb
2. ab を含む文字列
var dataAry = ["xabc", "bc", "ac"];
var re = /(^|a)b/g;
function testFunc(elem, index, array) {
var myArray = elem.match(re);
console.log(elem, '\n', myArray, '\n');
}
dataAry.forEach(testFunc);
結果は、ab, b, null
つまり、
1. 行頭がb
2. ab を含む文字列
962961 (ワッチョイ 0aaa-32Qs)
2017/07/15(土) 01:02:35.33ID:5uf8kOgL0 このテストデータで実行してみ
var dataAry = ["xabc", "bc", "ac", "cb", "^b"];
結果は、ab, b, null, null, null
var dataAry = ["xabc", "bc", "ac", "cb", "^b"];
結果は、ab, b, null, null, null
963デフォルトの名無しさん (ワッチョイ fca6-N0vF)
2017/07/15(土) 12:44:42.91ID:IP8gokNa0 JSの質問か際どいんだけど誰か良い案あればおしえてほしい
番組表のようなものを作りたくて、縦軸で時系列、横軸でチャンネル区切りを表したい
テーブルタグを用いるのが良いかと思っていて、複数の時間帯をまたぐものはrowcolを指定することでいい感じにできないかと考えてる
肝心の番組情報だが、常に何かの番組があるわけではないのでところどころに抜けのあるjson形式のデータが返ってきててそれを使う想定
こういう感じなんだけど各番組が複数のセルをまたいだり空白の時間があったりでいい感じにテーブルを動的に構築するのが面倒くさいなと思うんだけど良い案ないだろうか
フレームワークとかはなんでもいいけどVueを使おうかなと思ってる
番組表のようなものを作りたくて、縦軸で時系列、横軸でチャンネル区切りを表したい
テーブルタグを用いるのが良いかと思っていて、複数の時間帯をまたぐものはrowcolを指定することでいい感じにできないかと考えてる
肝心の番組情報だが、常に何かの番組があるわけではないのでところどころに抜けのあるjson形式のデータが返ってきててそれを使う想定
こういう感じなんだけど各番組が複数のセルをまたいだり空白の時間があったりでいい感じにテーブルを動的に構築するのが面倒くさいなと思うんだけど良い案ないだろうか
フレームワークとかはなんでもいいけどVueを使おうかなと思ってる
964デフォルトの名無しさん (ワッチョイ beea-GxvA)
2017/07/15(土) 13:01:10.25ID:jjpJygJ80 そこを丸投げしてしまったら貴様のやる事は何も無いではないか
965あ (スフッ Sd94-HJuN)
2017/07/15(土) 15:28:58.61ID:l4jBJff8d >>963
いい感じにテーブルも何も、最初から3分毎くらいにテーブル切っといて、やってる時間分rowspanかけるか、
それか透明テーブルにoverflow:visibleで放送時間分の高さ持ったdivタグおいといたら楽では?
いい感じにテーブルも何も、最初から3分毎くらいにテーブル切っといて、やってる時間分rowspanかけるか、
それか透明テーブルにoverflow:visibleで放送時間分の高さ持ったdivタグおいといたら楽では?
966デフォルトの名無しさん (スププ Sd94-wcQn)
2017/07/15(土) 16:08:23.39ID:DMIdUVsAd CSSレイアウトの方がいいかもな
967デフォルトの名無しさん (ワッチョイ 706f-qBah)
2017/07/15(土) 16:46:23.11ID:mnMcO+Xt0 radikoの番組表の動作パクって自作した
968デフォルトの名無しさん (ワッチョイ fca6-N0vF)
2017/07/15(土) 16:56:01.66ID:IP8gokNa0 >>965
後者のほうが楽そうな印象はあるけどどうも構造的には前者のほうがきれいに感じる
前者のテーブルって最初に数分ごとに区切られた空のテーブルを作っておいて、JSONを取得したタイミングでテーブルに書き込む関数を呼ぶみたいなアプローチでいいんだろうか
後者のほうが楽そうな印象はあるけどどうも構造的には前者のほうがきれいに感じる
前者のテーブルって最初に数分ごとに区切られた空のテーブルを作っておいて、JSONを取得したタイミングでテーブルに書き込む関数を呼ぶみたいなアプローチでいいんだろうか
969デフォルトの名無しさん (ワッチョイ d430-S4qQ)
2017/07/15(土) 17:13:37.66ID:N0flRzpM0 もう一分ごとに区切れば?
所詮1440×チャンネル数分のテーブルでしょ?
エクセルに比べれば楽勝w
所詮1440×チャンネル数分のテーブルでしょ?
エクセルに比べれば楽勝w
970デフォルトの名無しさん (ワッチョイ fca6-N0vF)
2017/07/15(土) 17:21:12.42ID:IP8gokNa0 >>969
すまん、区切りをどうするかってのは特に問題じゃないんだ
すまん、区切りをどうするかってのは特に問題じゃないんだ
971デフォルトの名無しさん (ワッチョイ d430-S4qQ)
2017/07/15(土) 17:25:50.69ID:N0flRzpM0972デフォルトの名無しさん (ワッチョイ fca6-N0vF)
2017/07/15(土) 17:48:01.92ID:IP8gokNa0 >>971
得られる番組の開始終了時刻が5分区切りなんだけどそれでも1分区切りのが簡単になるの?
得られる番組の開始終了時刻が5分区切りなんだけどそれでも1分区切りのが簡単になるの?
973あ (スフッ Sd94-HJuN)
2017/07/15(土) 18:28:36.04ID:l4jBJff8d >>968
前者でch×3分なり、5分毎のテーブル作って、
そのセルにoverflowを表示するdivタグで1セル(5分)の高さのワク作って、
そこに放送時間分の高さの番組情報のdiv入れれば良いのでは?
前者でch×3分なり、5分毎のテーブル作って、
そのセルにoverflowを表示するdivタグで1セル(5分)の高さのワク作って、
そこに放送時間分の高さの番組情報のdiv入れれば良いのでは?
974デフォルトの名無しさん (ワッチョイ fca6-N0vF)
2017/07/15(土) 18:31:08.80ID:IP8gokNa0975デフォルトの名無しさん (フリッテル MM5e-R3UR)
2017/07/15(土) 18:41:00.51ID:t2Xo9ohCM >>960
「汎用的な言葉」とは?
俺の感覚では「列挙可能」はdefinePropertyで指定する {enumerable: true} の方で iterableとは別概念だが。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
>>957の後半3行も根拠があなたの中にしかなくて意味不明だった。
状況的には「iterable === @@iteratorを持つ」で通じる事は>>959で示した通りだが、別の解釈があるなら教えて欲しい。
「汎用的な言葉」とは?
俺の感覚では「列挙可能」はdefinePropertyで指定する {enumerable: true} の方で iterableとは別概念だが。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
>>957の後半3行も根拠があなたの中にしかなくて意味不明だった。
状況的には「iterable === @@iteratorを持つ」で通じる事は>>959で示した通りだが、別の解釈があるなら教えて欲しい。
976デフォルトの名無しさん (フリッテル MM5e-R3UR)
2017/07/15(土) 18:51:47.13ID:t2Xo9ohCM977あ (アウアウエー Sa66-HJuN)
2017/07/15(土) 19:10:25.30ID:OBAajcvKa >>974
まあ、表では無いからな。
divをabsoluteで配置して、インラインスタイルでtopを放送開始時間、bottomを放送終了時間にして、チャンネルのクラスつけて、
チャンネルのクラスはleftとwidth持ってりゃわりと綺麗かな。
まあ、表では無いからな。
divをabsoluteで配置して、インラインスタイルでtopを放送開始時間、bottomを放送終了時間にして、チャンネルのクラスつけて、
チャンネルのクラスはleftとwidth持ってりゃわりと綺麗かな。
978デフォルトの名無しさん (ワッチョイ fca6-N0vF)
2017/07/15(土) 21:04:26.61ID:IP8gokNa0979デフォルトの名無しさん (ワッチョイ 6e0b-qs1f)
2017/07/15(土) 21:37:06.43ID:r3inW3v40 >>975
列挙可能とは、反復処理にかけて次の要素、次の要素、次の要素、と取り出していける事を言う
enumerableは「要素が列挙される」ことが可能かどうか
ここで言ってるのは「要素を列挙する」ことが可能かどうか、つまり@@iteratorを持つのと同分類
HTMLCollectionはlengthとitem()を備えるので要素を列挙していくことが可能
よって広義にイテラブルと呼ぶことは可能
原文でもコレクションがイテラブルだと言っている
つまりitemなどを備えるコレクションだということを強調するために使われているので問題はない
列挙可能とは、反復処理にかけて次の要素、次の要素、次の要素、と取り出していける事を言う
enumerableは「要素が列挙される」ことが可能かどうか
ここで言ってるのは「要素を列挙する」ことが可能かどうか、つまり@@iteratorを持つのと同分類
HTMLCollectionはlengthとitem()を備えるので要素を列挙していくことが可能
よって広義にイテラブルと呼ぶことは可能
原文でもコレクションがイテラブルだと言っている
つまりitemなどを備えるコレクションだということを強調するために使われているので問題はない
980デフォルトの名無しさん (フリッテル MM5e-Xm5V)
2017/07/16(日) 10:43:52.50ID:OnshtUopM >>979
> enumerableは「要素が列挙される」ことが可能かどうか
「列挙されることが可能」と「列挙可能」は同義ではないのか?
MDNでは列挙可能/列挙不可能と説明されているようだが。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/for...in
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
ちなみに、必ずしも列挙不可能なわけではない。
Object.getOwnPropertyNames() によって {enumerable: false} なプロパティも列挙できる。
{enumerable: false} は一部の機能(for-in, Object.keys)で列挙を禁止するフラグに過ぎない。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames
> ここで言ってるのは「要素を列挙する」ことが可能かどうか、つまり@@iteratorを持つのと同分類
> HTMLCollectionはlengthとitem()を備えるので要素を列挙していくことが可能
1文目と2文目は等価ではない。
1文目は俺が主張している内容と同義で「for-ofで列挙できるか」
MDN では「iterableになるために、オブジェクトは@@iteratorメソッドを実装する必要があります」と説明されている。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Iteration_protocols#iterable
2文目は「for-ofに限らず要素を列挙する手段があるかどうか」
2文目になるとほとんどのオブジェクトが列挙可能となる。
Object.values, Object.keys 等があるから、{a:1,b:2}でさえ、「列挙可能」だ。
列挙不可能なのは WeakMap ぐらいか。
> enumerableは「要素が列挙される」ことが可能かどうか
「列挙されることが可能」と「列挙可能」は同義ではないのか?
MDNでは列挙可能/列挙不可能と説明されているようだが。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/for...in
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
ちなみに、必ずしも列挙不可能なわけではない。
Object.getOwnPropertyNames() によって {enumerable: false} なプロパティも列挙できる。
{enumerable: false} は一部の機能(for-in, Object.keys)で列挙を禁止するフラグに過ぎない。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames
> ここで言ってるのは「要素を列挙する」ことが可能かどうか、つまり@@iteratorを持つのと同分類
> HTMLCollectionはlengthとitem()を備えるので要素を列挙していくことが可能
1文目と2文目は等価ではない。
1文目は俺が主張している内容と同義で「for-ofで列挙できるか」
MDN では「iterableになるために、オブジェクトは@@iteratorメソッドを実装する必要があります」と説明されている。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Iteration_protocols#iterable
2文目は「for-ofに限らず要素を列挙する手段があるかどうか」
2文目になるとほとんどのオブジェクトが列挙可能となる。
Object.values, Object.keys 等があるから、{a:1,b:2}でさえ、「列挙可能」だ。
列挙不可能なのは WeakMap ぐらいか。
981デフォルトの名無しさん (アウアウウー Sa08-Xm5V)
2017/07/16(日) 11:06:23.15ID:QZhQxoRLa 汎用的な言語定義を説くなら、英和辞典を引くべき。
https://www.google.co.jp/search?num=30&q=%E8%8B%B1%E5%92%8C+iterable
日本語訳するなら、反復可能(iterable)と列挙可能(enumerable)が一般的。
https://www.google.co.jp/search?q=%E5%8F%8D%E5%BE%A9%E5%8F%AF%E8%83%BD+iterable
https://www.google.co.jp/search?q=%E5%88%97%E6%8C%99%E5%8F%AF%E8%83%BD+enumerable
「列挙されることが可能(emurable)」と「列挙可能(iterable)」では違いが分からない。
そもそも、日本語では「受動態」と「能動態」の差異しかないのに、英語では単語が変わっている。あり得ない。
https://www.google.co.jp/search?num=30&q=%E5%88%97%E6%8C%99%E3%81%95%E3%82%8C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E5%8F%AF%E8%83%BD+emurable
本題に戻るが、JavaScriptでiterableが持ち込まれたのはES6からだから、MDNの解釈が正しいと思う。
https://www.google.co.jp/search?num=30&q=%E8%8B%B1%E5%92%8C+iterable
日本語訳するなら、反復可能(iterable)と列挙可能(enumerable)が一般的。
https://www.google.co.jp/search?q=%E5%8F%8D%E5%BE%A9%E5%8F%AF%E8%83%BD+iterable
https://www.google.co.jp/search?q=%E5%88%97%E6%8C%99%E5%8F%AF%E8%83%BD+enumerable
「列挙されることが可能(emurable)」と「列挙可能(iterable)」では違いが分からない。
そもそも、日本語では「受動態」と「能動態」の差異しかないのに、英語では単語が変わっている。あり得ない。
https://www.google.co.jp/search?num=30&q=%E5%88%97%E6%8C%99%E3%81%95%E3%82%8C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E5%8F%AF%E8%83%BD+emurable
本題に戻るが、JavaScriptでiterableが持ち込まれたのはES6からだから、MDNの解釈が正しいと思う。
982デフォルトの名無しさん (アウアウウー Sa08-Xm5V)
2017/07/16(日) 11:27:22.43ID:QZhQxoRLa >>957
> DOMで言うイテラブルは通常NodeIteratorなどのことなのでそれとも違う
どういう意味だろう?
NodeIterator は createNodeIterator() で生成するオブジェクトの Interface だが、指定可能なノードはルートノードだけ。
iterable な NodeList に出来て、iterable ではない HTMLCollection に出来ない事があるとは思えない。
そもそも、NodeList を対象に取る機能ではないような。
https://dom.spec.whatwg.org/#interface-nodelist
https://dom.spec.whatwg.org/#interface-htmlcollection
> DOMで言うイテラブルは通常NodeIteratorなどのことなのでそれとも違う
どういう意味だろう?
NodeIterator は createNodeIterator() で生成するオブジェクトの Interface だが、指定可能なノードはルートノードだけ。
iterable な NodeList に出来て、iterable ではない HTMLCollection に出来ない事があるとは思えない。
そもそも、NodeList を対象に取る機能ではないような。
https://dom.spec.whatwg.org/#interface-nodelist
https://dom.spec.whatwg.org/#interface-htmlcollection
983デフォルトの名無しさん (スププ Sd70-wcQn)
2017/07/16(日) 11:27:34.90ID:jDkpuj83d 話を戻すけど、俺は最も自然に感じる意味がそうだと言うことに異論は唱えていないよ
ただ@@iteratorを持つものしか「イテラブル」と呼べないというのには異論がある
俺は彼の用語の使い方が超えちゃいけないラインを逸脱しているとまでは思わないし、
そのニュアンスを捉えないで字面だけ見て揚げ足を取ろうとする行為の方が問題だと感じる
それは言語仕様として「class」が無かった頃、形態としての「クラス」という表現まで弄ってたおかしな人と同じだよ
ただ@@iteratorを持つものしか「イテラブル」と呼べないというのには異論がある
俺は彼の用語の使い方が超えちゃいけないラインを逸脱しているとまでは思わないし、
そのニュアンスを捉えないで字面だけ見て揚げ足を取ろうとする行為の方が問題だと感じる
それは言語仕様として「class」が無かった頃、形態としての「クラス」という表現まで弄ってたおかしな人と同じだよ
984デフォルトの名無しさん (フリッテル MM5e-R3UR)
2017/07/16(日) 12:19:12.13ID:OnshtUopM >>983
まず、あなたの投稿はどれだ?
俺がレスした相手に (スププ Sd70-wcQn) は存在しないのだが。
> 953 デフォルトの名無しさん (ワッチョイ 8bf3-z+eH) sage 2017/07/14(金) 12:54:26.06 ID:yf7LD5Sw0
> 957 デフォルトの名無しさん (ワッチョイ 6e0b-EdWd) sage 2017/07/14(金) 17:21:23.89 ID:IlK8Z/pQ0
まず、あなたの投稿はどれだ?
俺がレスした相手に (スププ Sd70-wcQn) は存在しないのだが。
> 953 デフォルトの名無しさん (ワッチョイ 8bf3-z+eH) sage 2017/07/14(金) 12:54:26.06 ID:yf7LD5Sw0
> 957 デフォルトの名無しさん (ワッチョイ 6e0b-EdWd) sage 2017/07/14(金) 17:21:23.89 ID:IlK8Z/pQ0
985デフォルトの名無しさん (ワッチョイ 8bf3-z+eH)
2017/07/16(日) 13:41:18.87ID:r696m46c0 国語の話とか収集つかないので静観してたけど、なんか荒らしちゃったようで申し訳ない。
反復することが出来る(ループ文を使う)という意味で言ったので、そんな深い意味はありません。
反復という言葉がとっさに思いつかなかったので英語で言ったのですが、イテレータブルも日本語でしたね。
反復することが出来る(ループ文を使う)という意味で言ったので、そんな深い意味はありません。
反復という言葉がとっさに思いつかなかったので英語で言ったのですが、イテレータブルも日本語でしたね。
986デフォルトの名無しさん (スププ Sd70-wcQn)
2017/07/16(日) 14:28:11.42ID:jDkpuj83d987デフォルトの名無しさん (フリッテル MM5e-R3UR)
2017/07/16(日) 17:15:26.87ID:OnshtUopM >>953,985
あなたがそういうスタンスならそれはそれで良いと思う。
俺が危惧したのは「仕様にある用語(iterable)」と解釈されかねない書き方になっていたこと。
それが仕様上のiterableとは別意の「便宜上の言葉」である事が明確になっていたなら問題はなかった。
あなたがそういうスタンスならそれはそれで良いと思う。
俺が危惧したのは「仕様にある用語(iterable)」と解釈されかねない書き方になっていたこと。
それが仕様上のiterableとは別意の「便宜上の言葉」である事が明確になっていたなら問題はなかった。
988デフォルトの名無しさん (フリッテル MM5e-R3UR)
2017/07/16(日) 17:48:27.95ID:OnshtUopM >>957,983,986
あなたは初め、仕様に言及した書き方をしていた。
>>957,979がそれだが、主張している内容が矛盾だらけだった。
>>980-982に対してもレスは未だない。
> 原文でもコレクションがイテラブルだと言っている
原文でiterableと書いてあるのは4回だけ。
NodeList と DOMTokenList しか iterable なものはなく、HTMLCollection は該当しない。
https://dom.spec.whatwg.org/#interface-htmlcollection
> それは言語仕様として「class」が無かった頃、形態としての「クラス」という表現まで弄ってたおかしな人と同じだよ
ES5時代のクラスは説明の道具として有用だった。
ただし、iterableは仕様に存在する単語であり、それが「仕様としてのiterable」と解釈されてしまうと誤解が生じる。
簡単に書けば、「誤解が生じかねないオレオレ用語は使うな」
>953の後に>>985が出てきたのなら、文意が誰にでも分かるので良いと思う。
が、あなたはiterableで問題ないと何度も主張しているので、そのままでは誤解が広まってしまう。
あなたは初め、仕様に言及した書き方をしていた。
>>957,979がそれだが、主張している内容が矛盾だらけだった。
>>980-982に対してもレスは未だない。
> 原文でもコレクションがイテラブルだと言っている
原文でiterableと書いてあるのは4回だけ。
NodeList と DOMTokenList しか iterable なものはなく、HTMLCollection は該当しない。
https://dom.spec.whatwg.org/#interface-htmlcollection
> それは言語仕様として「class」が無かった頃、形態としての「クラス」という表現まで弄ってたおかしな人と同じだよ
ES5時代のクラスは説明の道具として有用だった。
ただし、iterableは仕様に存在する単語であり、それが「仕様としてのiterable」と解釈されてしまうと誤解が生じる。
簡単に書けば、「誤解が生じかねないオレオレ用語は使うな」
>953の後に>>985が出てきたのなら、文意が誰にでも分かるので良いと思う。
が、あなたはiterableで問題ないと何度も主張しているので、そのままでは誤解が広まってしまう。
989デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/17(月) 03:58:47.70ID:Uy8niamL0 一般用語のコンテナ・入れ物で良い。
複数のオブジェクト・要素を入れる、複合物
コンテナは、反復可能
複数のオブジェクト・要素を入れる、複合物
コンテナは、反復可能
990デフォルトの名無しさん (ワッチョイ d430-S4qQ)
2017/07/17(月) 04:17:35.87ID:H+ZLTTJY0 その反復可能を英語でいったらどうなるのさ?
日本人だから英語は技術用語とできるかもしれんが
英語圏の人にとっては英語で説明するんだぞ
日本人だから英語は技術用語とできるかもしれんが
英語圏の人にとっては英語で説明するんだぞ
991デフォルトの名無しさん (ワッチョイ 6e0b-qs1f)
2017/07/17(月) 05:39:00.74ID:FkU7igMp0 >>988
よく読め、俺は最初から仕様としての言葉としてはふさわしくないが、
汎用的な言葉としては有りというスタンスしか取っていない
現にカタカナの「イテラブル」としか言っていない
そして原文とは『彼のレス』のこと
あとそんな誤解をわざわざするのは君くらいだ
別に大した意味で使われていないことくらい分かる
君はね、俺のレスも、彼のレスも、全然きちんと読んでなさすぎじゃないか?
それで誤解だ何だ言われてもね
ただいちゃもん付けるためにあら捜ししたいだけじゃん
よく読め、俺は最初から仕様としての言葉としてはふさわしくないが、
汎用的な言葉としては有りというスタンスしか取っていない
現にカタカナの「イテラブル」としか言っていない
そして原文とは『彼のレス』のこと
あとそんな誤解をわざわざするのは君くらいだ
別に大した意味で使われていないことくらい分かる
君はね、俺のレスも、彼のレスも、全然きちんと読んでなさすぎじゃないか?
それで誤解だ何だ言われてもね
ただいちゃもん付けるためにあら捜ししたいだけじゃん
992デフォルトの名無しさん (ワントンキン MM1a-cSUh)
2017/07/17(月) 12:16:00.13ID:wQITi39ZM この手の基地外は相手しないほうがいいよ
993デフォルトの名無しさん (ワッチョイ d430-S4qQ)
2017/07/17(月) 12:37:43.01ID:H+ZLTTJY0 > 現にカタカナの「イテラブル」としか言っていない
それ何の違いがあるの?
それ何の違いがあるの?
994デフォルトの名無しさん (ブーイモ MMfd-U/oA)
2017/07/17(月) 13:04:25.24ID:gEy1UlAAM あぁ無情
995デフォルトの名無しさん (ワッチョイ 6e0b-qs1f)
2017/07/17(月) 22:00:34.56ID:FkU7igMp0 prototypeとプロトタイプは違いがあるわな
996996 (ワッチョイ e285-X5vM)
2017/07/18(火) 22:58:23.00ID:ojkSKdtb0 すみません。質問です。if文どちらの結果もでません。
どなたか教えてください。
<form action="" id="weightform" name="weightform">
<input type="text" id="weightvalue" name="weightvalue">
<input type="button" value="Here we go">
</form>
<script type="text/javascript">
function onButtonClick(){
document.write(weightform.weightvalue);
var num1=parseInt(document.weightform.weightvalue.value);
if(num1>99){
document.write("<h2>あなたはヘビー級です</h2>");
}
else{
document.write("<h2>あなたはジュニアヘビー級です</h2>");
}
どなたか教えてください。
<form action="" id="weightform" name="weightform">
<input type="text" id="weightvalue" name="weightvalue">
<input type="button" value="Here we go">
</form>
<script type="text/javascript">
function onButtonClick(){
document.write(weightform.weightvalue);
var num1=parseInt(document.weightform.weightvalue.value);
if(num1>99){
document.write("<h2>あなたはヘビー級です</h2>");
}
else{
document.write("<h2>あなたはジュニアヘビー級です</h2>");
}
997デフォルトの名無しさん (ワッチョイ 0aaa-32Qs)
2017/07/18(火) 23:20:09.08ID:6DbTRi2A0 ブラウザのF12開発者ツールを起動して、デバッグすれば?
onButtonClick という関数が呼ばれないだろ
それに、document.write は使うな。
HTML全部を書き換えてしまうから
こういう質問は、web制作管理板の方に書き込んで。
向こうの方が、答える人が多いから
onButtonClick という関数が呼ばれないだろ
それに、document.write は使うな。
HTML全部を書き換えてしまうから
こういう質問は、web制作管理板の方に書き込んで。
向こうの方が、答える人が多いから
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 毒親「働かないでいつもゴロゴロして!」俺「…」毒親「あっ近隣に熊が出たって!」俺「ふぅ」毒親「どこ行くんだ」
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 生活保護の受給額ってなんでこんなに安いの?
- お前らは“スカイマイルタワー”建設計画を知っているか?
- これ誰か分かるか?
- 支払い詰まってインターネット止まった
