のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,484,605人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
251 : Name_Not - 2014/07/11(金) 15:49:27.94 ID:???.net (+3,-29,-24)
間に関数呼び出しの()があるけど、これの優先順位はメンバやnewより順位低くね?
new Date.getTime() だとエラーになるから (new Date).getTime() としなきゃならないしここらへんどうなってんの
252 : Name_Not - 2014/07/11(金) 15:55:39.51 ID:???.net (+63,+28,-10)
newに()を付けない書き方なんて許されてるの?
はじめて見たよ
253 : Name_Not - 2014/07/11(金) 16:06:16.81 ID:???.net (+11,-30,-53)
>>252
http://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/new
> new constructor[([arguments])]
()は関数呼び出しではなくnew演算子の一部で省略可能
254 : Name_Not - 2014/07/11(金) 16:08:55.60 ID:???.net (+97,+29,-1)
そうなんだ
それなら()がない時だけエラーになるのは何か変な感じするね
255 : Name_Not - 2014/07/11(金) 18:05:13.90 ID:???.net (+52,+29,-1)
別に構文エラーじゃないでしょ
256 : Name_Not - 2014/07/11(金) 21:43:41.68 ID:???.net (+7,-28,-14)
>>254
new演算子の対象が違う
257 : Name_Not - 2014/07/11(金) 22:05:20.29 ID:???.net (+82,+28,-4)
なんで対象が変わるんだ?
258 : Name_Not - 2014/07/11(金) 22:20:51.55 ID:???.net (+88,-30,-59)
new Date() と new Date は同じもの返すけど、その右に . とか [] つけたとき
new Date()の場合は、new Date()の結果に . か [] が結合するけど、
new Dateの場合は、Dateだけが . か [] に結合しちゃうね?
259 : Name_Not - 2014/07/11(金) 23:07:23.93 ID:???.net (+70,+24,-4)
>>257
() が省略されたから
>254とエラーコンソールを読めばわかる
260 : Name_Not - 2014/07/11(金) 23:42:03.70 ID:???.net (+70,+29,-80)
>>258
そのりくつはおかしい
new演算子とメンバ演算子の優先順位は同じなんだから、
素直に実行されるならnewされてからメソッドが呼び出されるはず
261 : Name_Not - 2014/07/12(土) 00:16:07.12 ID:???.net (+7,-29,-6)
>>259-259
new Date.getTime() と new Date().getTime()だと前者でエラーになるのは何でなんだよ
262 : Name_Not - 2014/07/12(土) 00:28:22.30 ID:???.net (+57,+29,-30)
()演算子が入らない場合はメンバ演算子が優先される
としか思えないな
263 : Name_Not - 2014/07/12(土) 00:29:02.77 ID:???.net (+6,-29,-41)
>>260
実際にIE/Firefox/GoogleChromeで試すと >>258 の挙動だから何故?って話
264 : Name_Not - 2014/07/12(土) 00:30:26.13 ID:???.net (+52,+29,-16)
メンバ演算子の方が強いから
265 : Name_Not - 2014/07/12(土) 00:46:50.35 ID:???.net (+57,+29,-64)
メンバ演算子は右から左
new演算子は左から右
「右から左」と「左から右」が戦ったら「右から左」が勝つってことじゃないの?
266 : Name_Not - 2014/07/12(土) 00:51:30.95 ID:???.net (+56,+28,-9)
優先順位決定のアルゴリズムをJavaScriptで書いてもらえませんか?
267 : Name_Not - 2014/07/12(土) 01:27:04.64 ID:???.net (+132,-30,-59)
>>260
new 演算子の対象は MemberExpression であって、優先順位は全く関係ない
優先順位で考える前に Syntax で考えるべき
http://es5.github.io/#A.3
268 : Name_Not - 2014/07/12(土) 01:27:32.70 ID:???.net (+163,-30,-171)
この辺が原因かな?

11.2 Left-Hand-Side Expressions
MemberExpression :
 PrimaryExpression
 FunctionExpression
 MemberExpression [ Expression ]
 MemberExpression . IdentifierName
 new MemberExpression Arguments
NewExpression :
 MemberExpression
 new NewExpression

Arguments付きのnewはメンバ演算子と同等だけど、Arguments無しのnewは弱い感じ
269 : Name_Not - 2014/07/12(土) 01:37:13.40 ID:???.net (+3,-30,-70)
そもそも、new Identifier Arguments のように考えるのがおかしい
初めから NewExpression に含まれているのだから
前提となる Syntax を勝手に解釈するから矛盾が生まれる
270 : Name_Not - 2014/07/12(土) 02:12:06.69 ID:???.net (-1,-29,-22)
Left-Hand-Sideって何て訳すの?左手側?
271 : Name_Not - 2014/07/12(土) 02:15:46.00 ID:???.net (+38,+20,+0)
左辺
272 : Name_Not - 2014/07/12(土) 02:27:08.59 ID:???.net (-1,-29,-17)
left-sideでいいじゃん
handいらねー
273 : Name_Not - 2014/07/12(土) 02:33:06.34 ID:???.net (-1,-29,-13)
左方向って意味もあるんじゃないかな
new new Hoge なら右から左方向に計算しないとnewをnewすることになってしまう
274 : Name_Not - 2014/07/12(土) 05:44:25.66 ID:???.net (+110,-30,-119)
>>268の文法が全てだけど

演算子の優先順位 - JavaScript | MDN
http://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

を見ると一目瞭然だよ
new より . [] の方が優先される (結合される方向も違う)

それを念頭におけば↓って解釈出来て>>258と同じになる
new Hoge.hoge[0]() → new ((Hoge.hoge)[0])()
new Hoge().hoge → (new Hoge()).hoge
new Hoge.hoge → new (Hoge.hoge)
275 : Name_Not - 2014/07/12(土) 05:58:38.21 ID:???.net (+0,-29,-67)
>>274
そのMDNの表じゃ、引数つきのnewと引数無しのnewの優先度の違いが説明できないよね?
276 : Name_Not - 2014/07/12(土) 06:11:59.82 ID:???.net (+20,-30,-45)
単純にnewより.が優先されるなら、
new Hoge().hoge → (new Hoge()).hoge じゃなくて、
new Hoge().hoge → new (Hoge().hoge) こうなるべきだよね?でもそうならない
277 : Name_Not - 2014/07/12(土) 06:29:58.21 ID:???.net (+5,-29,-88)
>>276
書いてて気付いたが、new は new Hoge と new Hoge() の2つの書き方(文法)が
あるってだけの問題な気がしてきた

>>276
まず . の右と左に分けると new と () の問題になって new が優先されて
new は () までが構文だから (new Hoge()).hoge じゃないのかな?

緊急地震速報で起こされてから寝れない…
278 : Name_Not - 2014/07/12(土) 08:13:33.88 ID:???.net (+29,-2,-32)
>>274
その表ではメンバ演算子とnew演算子は同じ優先順位1じゃん
279 : Name_Not - 2014/07/12(土) 08:16:05.91 ID:???.net (+0,-29,-10)
>>276
() が付いているから
Hoge()より new Hoge のほうが優先されるのでは
280 : Name_Not - 2014/07/12(土) 08:22:17.53 ID:???.net (+91,+29,-95)
同じ優先順位の左結合性と右結合性が衝突した場合、
右結合性が優先されるんだろう
左右どっちかを優先させないと決定できないから、
ドキュメントのどこかに書いてあるはず
はい論破
281 : Name_Not - 2014/07/12(土) 08:38:18.85 ID:???.net (+76,+29,-138)
難しく考えなくても、>>268の構文規則だけで>>258の挙動になることは十分説明できてるんだよ

あえて優先順位をつけるなら
newには引数付きのコンストラクタをとるものと引数無しのコンストラクタをとるものの2種類存在する
引数付きの場合の優先順位は>>274の表のとおり1番目になる
引数無しの場合の優先順位は>>274の表における2番目になる
こんな感じ
282 : Name_Not - 2014/07/12(土) 09:32:28.59 ID:???.net (+68,+29,-29)
その構文規則が「日本語でOK」なレベルだろ
何を書いてるのか分からん
283 : Name_Not - 2014/07/12(土) 10:22:16.31 ID:???.net (+6,-29,-36)
>>282
優先順位が
()有りのnew > メンバ演算子 > ()無しのnew
って事
284 : Name_Not - 2014/07/12(土) 10:22:30.04 ID:???.net (+9,-30,-30)
>>282
>>267で仕様書リンクが出てるからそちらを読むべき
読み方がわからないなら RFC 2234 を読む
http://www.t-net.ne.jp/~cyfis/rfc/format/rfc2234_ja.html
というか、「分からなくて当然」という態度で構えるなよ
285 : Name_Not - 2014/07/12(土) 10:26:45.28 ID:???.net (+46,+23,-6)
ニュアンスでわかるだろ
286 : Name_Not - 2014/07/12(土) 10:45:09.69 ID:???.net (+54,+26,-43)
つまり優先度以前に構文解析で「new Hoge()」「.hoge」に分割されるって事か
分かってみれば凄いシンプルだった
287 : Name_Not - 2014/07/12(土) 10:50:25.93 ID:???.net (+73,+29,-6)
JavaScriptを書くのにアブンフを分からないといけないのですか?
288 : Name_Not - 2014/07/12(土) 11:01:47.29 ID:???.net (+101,+29,-34)
曲がりなりにも「JavaScript を自ら学ぶ人のための質問スレ」なんだから参考URLを呼んでから判断しようぜ
>>267を読んでない人が多すぎる
289 : Name_Not - 2014/07/12(土) 11:13:25.51 ID:???.net (+65,-6,-11)
>>287
そのぐらい自分で判断しろよ
ABNFを学ばなければECMAScriptを理解できない理屈もわからんのか
290 : Name_Not - 2014/07/12(土) 11:38:23.99 ID:???.net (+89,+29,-13)
>>289
じゃあその理屈を説明してみろよ
アンブフなんて聞いたこともないが普通にJS使ってるしプゲラ
291 : Name_Not - 2014/07/12(土) 11:55:24.55 ID:???.net (+5,-29,-6)
>>267だって読んでないだろ
newの対象はNewExpressionにも成り得る
292 : Name_Not - 2014/07/12(土) 12:21:52.70 ID:???.net (+84,+29,-17)
暗部をしらないだと?
293 : Name_Not - 2014/07/12(土) 13:24:26.59 ID:???.net (+83,+29,-67)
>>288
そうなんだよね

それに最近は自分でゴリゴリ書く人よりもjQuery等のライブラリの質問が多くなった
純粋にJavaScriptのスキルアップや勉強をする人が減ったのかな
それとも今はjQueryを使うのが一般的なのかな(古い人間でゴメン
294 : Name_Not - 2014/07/12(土) 13:38:51.00 ID:???.net (+14,-29,-151)
>>293
JavaScriptは普通に勉強するでしょ?

勉強しなくなったのはブラウザ標準のDOM APIの方。
これはJavaScriptの範囲ではない。

DOM APIを勉強することを、JavaScriptの勉強だと
思ってるのならそれは間違っている。

DOMよりもjQueryの方が優れているのはあきらなかので
(ブラウザ間の互換性の話じゃなくて、機能的に優れている)
今の人は、JavaScript + jQueryを勉強している。
295 : Name_Not - 2014/07/12(土) 13:45:51.05 ID:???.net (+91,+29,-18)
都合とかは関係なく好みの問題だがjqueryは好きになれない
296 : Name_Not - 2014/07/12(土) 13:47:03.99 ID:???.net (+104,+29,-22)
>>295
好みの問題は置いといて、好きになれない理由を
技術的な観点から聞かせて欲しい。
297 : Name_Not - 2014/07/12(土) 13:48:40.26 ID:???.net (+105,+29,-21)
>>296
クライアント側に動かしてもらうコードは、可能な限り極限まで少なく小さくあるべき、という考え
298 : Name_Not - 2014/07/12(土) 13:51:24.88 ID:???.net (+71,+29,-5)
>>297
つまり、開発速度よりも、実行速度を気にしてるってこと?
299 : Name_Not - 2014/07/12(土) 14:01:31.07 ID:???.net (+94,+29,-3)
そんなこと言ってられるのは大したもの作ってないから
300 : Name_Not - 2014/07/12(土) 14:08:48.54 ID:???.net (+47,+29,-3)
この的外れ感
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について