多くのコードで%
が見られました。私にその目的またはそれが何を説明することができますか?JavaScriptのパーセント(%)は何ですか?
P .: %
は、Google検索では無視されているため、Googleで検索できませんでした。
編集:私は数学のオペランドを知っています13 % 10 = 3
しかし、私が見たものはreturn %foo
です。
多くのコードで%
が見られました。私にその目的またはそれが何を説明することができますか?JavaScriptのパーセント(%)は何ですか?
P .: %
は、Google検索では無視されているため、Googleで検索できませんでした。
編集:私は数学のオペランドを知っています13 % 10 = 3
しかし、私が見たものはreturn %foo
です。
コメントに記載されたリンクに基づいて、%
文字が、JavaScriptソースの解析中に実行されるC++ランタイムのメソッドを示すために、V8 JavaScript engineソースコードの一部として使用されているようです。例えば
、string.jsの行:
return %StringBuilderConcat(parts, len + 1, "");
パーサが遭遇する場合、StringBuilderConcat
方法が実行されます。のV8 JavaScriptファイルで使用できるランタイムメソッドのリストを見つけることができます(C++での経験はありませんので、StringBuilderConcat
メソッドとは何の関係もないことがわかっているので、string.js私は)それは同じことだと思う:
#define RUNTIME_FUNCTION_LIST_ALWAYS_1(F) \
/* Property access */ \
F(GetProperty, 2, 1) \
F(KeyedGetProperty, 2, 1) \
/* ... */
F(StringBuilderConcat, 3, 1) \
/* ... */
すでにreturn %foo
はJavaScriptでにSyntaxErrorを投げるだろう、述べてきたように。
マイナーな訂正:パーサーは実際にはコード自体を_execute_しません(引数が変数でない場合は解析エラーを引き起こす '%IS_VAR'を除きます)。パーサーはCallRuntime ASTノードを作成します(https://github.com/v8/v8/blob/master/src/parser.cc#L4720-4763)。コンパイラは、対応するランタイム関数(https://github.com/v8/v8/blob/master/src/ia32/full-codegen-ia32.cc#L3797-3834)への呼び出しを発行するか、ifそれはinlinableです(例 '%_IsSmi':https://github.com/v8/v8/blob/master/src/ia32/full-codegen-ia32.cc#L2518-2536)。 –
さて、あなたは 'パーセント記号javascript'を探してみることができます。それはモジュラス演算子であることをあなたに導きます。 – bezmax
'return%foo'?より完全な例がありますか?私はそれが何であるかは分かりません。 –
@dystroy http://stackoverflow.com/a/7299040/1365010例文 – user1365010