約 2,059,531 件
https://w.atwiki.jp/fieds_labo1/pages/16.html
javascript クッキー 1.クッキー 書き込み setDay = new Date(); setDay.setTime(setDay.getTime()+(theDay*1000*60*60*24)); expDay = setDay.toGMTString(); document.cookie = theName + "="+escape(theValue)+";expires="+expDay+";path=/"; 読み込み theCookie = document.cookie+";"; start = theCookie.indexOf(theName); if (start != -1){ end = theCookie.indexOf(";",start); theData = unescape(theCookie.substring(start+theName.length,end)); } 削除 document.cookie = theName + "=;expires=Thu,01-Jan-70 00 00 01 GMT;path=/"; 2.GET location.search; 現在のURLの?以降を返す。?を含む。 unescape(value); で?name=valueのvalue値をアンエスケープ。 3.クッキーについて ブラウザのURL欄に javascript document.cookie; と入れると現在のクッキーの状態が見える。 クッキーの最後にPATH指定をする。PATHがスコープ範囲になる。共用型レンタルサーバ時注意。 IE6とFFOX1.5、OPERA8の違いは、クッキーのパス指定が無い場合、IEはルート扱いになり、FFOXとOPERAは当該パスになる。 1ドメイン環境では、PATH=/を指定すること。 1サイト(1ドメイン)クッキー数20個。;で区切り。(名前=値の組合わせで20個) 各クッキーは最大4K。 ただし、OPERAで複数クッキー使用時に、各クッキーの保存最大長が少なくなる現象が確認されているため、保存データは短い方が良い。 クッキーはちゃんと削除する。期限まかせにしない。 グーグル解析はクッキーを7個も使用する。 クッキー情報のエンコードに標準のescape()を使用しているため、ブラウザならびに一定環境において文字化けが発生するケースがある。 複数の情報をクッキーに保存する時はまとめて1個のクッキーしたほうがいいかも。 例:list=a|b|c d|e|f g|h|i; 上記例はブロック区切り 、項目区切り|にしてクッキーとしては1個。 4.iframeとcookieとsecurity jqueryでLightBoxにiframeを埋め込もうと思った iframeからクッキー保存してるのに、全然保存されない なんで~と思ったらセキュリティの問題でそういう仕様になっているみたい Internet Explorer 6.0 で FRAMESET を使用するとセッション変数が失われる IEでiframe内の別ドメインのCookieを有効にする方法 Cookieフィルタリングの実験 IE6 で起こった P3P 対応の弊害(解決 iframeで同じドメインのコンテンツを複数埋め込んだ場合のセッション iframe中のCookieは引き継がれるか実験 P3Pコンパクトポリシーをコピペするのが流行らないことを祈る 別ドメインじゃないんだけど? ローカルPCだからだめなのかしら? サーバにアップしても出来ないです。何か指定の仕方が違うとか? あぁーもう面倒くさいわね@@ iframeは使わない方向で作りなおす~><; (手抜き失敗。。。) あ、もしかして、サブディレクトリだから? あ、動いたwww
https://w.atwiki.jp/fxext/pages/14.html
XULのローカライズ JavaScriptのローカライズXULを仲介する JavaScriptコードモジュールを使用 XPCOMを直接使う XULのローカライズ localeフォルダにsample.dtdファイルを作成し、実体宣言を行う。 !ENTITY sample.label "サンプル" !ENTITY sample.key "S" contentフォルダのsample.xulに、dtdファイルの読み込み宣言と実体参照を記述する。 !DOCTYPE window SYSTEM "chrome //sample/locale/sample.dtd" menuitem label=" sample.label;" accesskey=" sample.key;"/ Localization - XUL Tutorial | MDN 実体が無いと例外エラーを吐くので注意 JavaScriptのローカライズ まず、localeフォルダにsample.propertiesファイルを用意する。 SAMPLE = サンプル SAMPLE_REPLACE_1 = 数字%Sと数字%S SAMPLE_REPLACE_2 = 数字%2$Sと数字%1$S で、この後だが、XUL、JSM、XPCOM の3つの方法がある。 XULを仲介する XULに以下のように記述。 stringbundleset id="stringbundleset" stringbundle id="strings_sample" src="chrome //sample/locale/sample.properties"/ /stringbundleset あとはJavaScript内で以下のように使える。 var strings = document.getElementById("strings_sample"); var text1 = strings.getString("SAMPLE"); // → サンプル var num1 = 5; var num2 = 10; var text2 = strings.getFormattedString("SAMPLE_REPLACE_1", [num1, num2]); // → 数字5と数字10 var text3 = strings.getFormattedString("SAMPLE_REPLACE_2", [num1, num2]); // → 数字10と数字5 ローカライズ文字列を取得できないと例外エラーを吐くので注意 Property Files - XUL Tutorial | MDN stringbundle - XUL | MDN JavaScriptコードモジュールを使用 sample.propertiesを用意した後は以下のように使う。 Components.utils.import("resource //gre/modules/services-common/stringbundle.js"); var strings = new StringBundle("chrome //sample/locale/sample.properties"); var text1 = strings.get("SAMPLE"); // → サンプル var num1 = 5; var num2 = 10; var text2 = strings.get("SAMPLE_REPLACE_1", [num1, num2]); // → 数字5と数字10 var text3 = strings.get("SAMPLE_REPLACE_2", [num1, num2]); // → 数字10と数字5 XULを仲介するより楽な気がする… getStringやgetFormattedStringも使える。 Labs/JS Modules - MozillaWiki XPCOMを直接使う Components.utils.import("resource //gre/modules/Services.jsm"); var strings = Services.strings.createBundle("chrome //sample/locale/sample.properties"); var text1 = strings.GetStringFromName("SAMPLE"); // → サンプル nsIStringBundleService - XPCOM Interface Reference | MDN nsIStringBundle - XPCOM Interface Reference | MDN
https://w.atwiki.jp/waseda2bun/pages/95.html
p46.ff DGP・・・[intercept]や[intercept+trend] 金利 none 1.ランダムウォーク仮定 Null Hypothesis REAL_SA_GDP has a unit root Exogenous None Lag Length 3 (Automatic based on AIC, MAXLAG=12) t-Statistic Prob.* Augmented Dickey-Fuller test statistic 1.960363 0.9879 Test critical values 1% level -2.584707 5% level -1.943563 10% level -1.614927 *MacKinnon (1996) one-sided p-values. Augmented Dickey-Fuller Test Equation Dependent Variable D(REAL_SA_GDP) Method Least Squares Date 10/07/10 Time 12 17 Sample (adjusted) 5 122 Included observations 118 after adjustments Variable Coefficient Std. Error t-Statistic Prob. REAL_SA_GDP(-1) 0.002178 0.001111 1.960363 0.0524 D(REAL_SA_GDP(-1)) 0.157492 0.091866 1.714363 0.0892 D(REAL_SA_GDP(-2)) 0.097112 0.092569 1.049078 0.2964 D(REAL_SA_GDP(-3)) 0.193401 0.091677 2.109599 0.0371 R-squared 0.059947 Mean dependent var 2105.353 Adjusted R-squared 0.035208 S.D. dependent var 4945.929 S.E. of regression 4858.079 Akaike info criterion 19.84798 Sum squared resid 2.69E+09 Schwarz criterion 19.94191 Log likelihood -1167.031 Hannan-Quinn criter. 19.88612 Durbin-Watson stat 1.953478 2.ドリフト項のある場合 Null Hypothesis REAL_SA_GDP has a unit root Exogenous Constant Lag Length 0 (Automatic based on AIC, MAXLAG=12) t-Statistic Prob.* Augmented Dickey-Fuller test statistic -2.784519 0.0635 Test critical values 1% level -3.485115 5% level -2.885450 10% level -2.579598 *MacKinnon (1996) one-sided p-values. Augmented Dickey-Fuller Test Equation Dependent Variable D(REAL_SA_GDP) Method Least Squares Date 10/07/10 Time 12 06 Sample (adjusted) 2 122 Included observations 121 after adjustments Variable Coefficient Std. Error t-Statistic Prob. REAL_SA_GDP(-1) -0.014618 0.005250 -2.784519 0.0062 C 8731.218 2405.837 3.629180 0.0004 R-squared 0.061170 Mean dependent var 2142.744 Adjusted R-squared 0.053281 S.D. dependent var 4922.469 S.E. of regression 4789.538 Akaike info criterion 19.80265 Sum squared resid 2.73E+09 Schwarz criterion 19.84886 Log likelihood -1196.060 Hannan-Quinn criter. 19.82141 F-statistic 7.753546 Durbin-Watson stat 1.720145 Prob(F-statistic) 0.006239 3.ドリフト項+トレンドのある場合 Null Hypothesis REAL_SA_GDP has a unit root Exogenous Constant, Linear Trend Lag Length 1 (Automatic based on AIC, MAXLAG=12) t-Statistic Prob.* Augmented Dickey-Fuller test statistic -0.996994 0.9398 Test critical values 1% level -4.036310 5% level -3.447699 10% level -3.148946 *MacKinnon (1996) one-sided p-values. Augmented Dickey-Fuller Test Equation Dependent Variable D(REAL_SA_GDP) Method Least Squares Date 10/07/10 Time 12 15 Sample (adjusted) 3 122 Included observations 120 after adjustments Variable Coefficient Std. Error t-Statistic Prob. REAL_SA_GDP(-1) -0.017219 0.017271 -0.996994 0.3208 D(REAL_SA_GDP(-1)) 0.135880 0.092077 1.475715 0.1427 C 9229.379 5458.452 1.690842 0.0936 @TREND(1) 7.116690 41.28741 0.172369 0.8634 R-squared 0.087603 Mean dependent var 2172.944 Adjusted R-squared 0.064006 S.D. dependent var 4931.839 S.E. of regression 4771.395 Akaike info criterion 19.81143 Sum squared resid 2.64E+09 Schwarz criterion 19.90435 Log likelihood -1184.686 Hannan-Quinn criter. 19.84916 F-statistic 3.712540 Durbin-Watson stat 2.008991 Prob(F-statistic) 0.013587
https://w.atwiki.jp/m_shige1979/pages/1442.html
equireで分割 概要 実行ファイルとサーバの起動ファイル2つに分割 サンプル index.js var server = require("./server"); server.start(); server.js var http = require("http"); function start() { function onRequest(request, response) { console.log("Request received."); response.writeHead(200, {"Content-Type" "text/plain"}); response.write("Hello World"); response.end(); } http.createServer(onRequest).listen(8888); console.log("Server has started."); } exports.start = start; 実行 コマンド D \Tools\Works\nodejs_test\sample03 node index.js Server has started. Request received. Request received. 画面
https://w.atwiki.jp/wowtips/pages/13.html
ThreatとAggro threatはaggroとは異なります。threatとはmobが誰を攻撃するかを決定するための数値であり、aggroとはmobが攻撃している対象です。
https://w.atwiki.jp/0x0b/pages/39.html
型 8 型 (Types) 値は実体であり、9 つの型のうちの 1 つを取る。型は 9 つ (Undefined, Null, Boolean, String, Number, Object, Reference, List, Completion) ある。Reference 型, List 型, Completion 型の値は式評価の中間結果としてのみ使われ、オブジェクトのプロパティに蓄積はできない。 8.1 Undefined 型 (Undefined Type) Undefined 型は、undefined と呼ばれる厳密には一つの値を持つ。値を代入されていない任意の変数は undefined 値を持つ。 8.2 Null 型 (Null Type) Null 型は、null と呼ばれる厳密には一つの値を持つ。 8.3 Boolean 型 (Boolean Type) Boolean 型は、true と false と呼ばれる二値を持つ論理的実体をあらわす。 8.4 String 型 (String Type) String 型は、0 または 16 ビット符号なし整数値("要素")の、すべての有限な序列のあるシーケンスの組である。ECMAScript プログラムの実行時、String 型は一般にテキストデータの表現に使われる。その中で、文字列内の各要素はコードポイント値(セクション 6 参照) として扱われる。シーケンス内で各要素は位置の占有とみなされる。これらの位置は正の整数でインデックス付けられる。最初の要素が位置 0 で、次の要素は位置 1 であり、以下同様である。文字列の長さは、その中にある要素の数である。空文字列は要素を持たず、長さは 0 である。 文字列が実際のテキストデータを含むとき、各要素は1個の UTF-16 単位として考えられる。これが実際に蓄積された String の形式かどうかに関係なく、String 内部の文字は UTF-16 であらわされたかのように番号付けられる。String 上の全操作は、それらを区別しない 16 ビット符号無し整数の列として扱う; それらは結果の文字列が正規化形式であることを保証しないし、language-sensitive な結果であることも保証しない。 NOTE これらの決定の理論的解釈は単純さとしての文字列と可能性としての高パフォーマンス性の実装を保持することであった。外部から実行環境に入るテキストデータ (ユーザの入力、ファイルやネットワークからの受信などからのテキスト読み込み等) が、実行プログラムがそれを見る前に Unicode 正規化形式 C (Unicode Normarized Form C) に変換されることを意図する。通例これは、入ってくるテキストが元の文字エンコーディングから Unicode に変換されることを同時に発生させる。ECMAScript ソースコードが正規化形式 C であることが勧められるので、それらが Unicode エスケープシーケンスを含んでいない限り、文字列リテラルは正規化されていること(ソーステキストが正規化されることを保証される場合)を保証される。 8.5 Number 型 (Number Type) Number 型は、ちょうど 18437736874454810627 (即ち 264-253+3) 個の値を持ち、二進法浮動小数点数点演算のための IEEE 標準に定められる倍精度64ビットのフォーマットIEEE 754 の値を表わす。ただし IEEE 標準の 9007199254740990 (すなわち 253-2) 個の区別される "Not-a-Number" 値は ECMAScript においては単独の特殊な NaN 値として表されることを除く。(プログラム実行によりグローバルに定義された変数 NaN が変更されていないと仮定して、NaN 値がプログラム式 NaN によって生成されることに注意。) 外部コードが様々な Non-a-Number 間の違いを判定できる実装もあるだろうが、その振舞いは実装依存である; ECMAScriptコードでは、NaN 値はすべて互いと判別不能である。 他に特別な値が 2 つある。それは正の無限 (positive Infinity) 、および負の無限 (negative Infinity) と呼ばれる。簡単に、解説ではシンボル +∞ と -∞ によってもこれらの値をそれぞれ参照する。(グローバルに定義された変数 Infinity がプログラム実行によって変更されてないと仮定して、これら 2 つの無限数値がプログラム式 +Infinity (あるいは単に Infinity) および -Infinity によって生成されることに注意しなさい。) 残りの 18437736874454810624 (すなわち 264-253) 個の値は有限数と呼ばれる。これらの半分は正の数、半分は負の数である; 有限の正の数のそれぞれについて、同じ大きさを持つ対応する負の数がある。 正の 0 と負の 0 の双方があることに注意。簡単に、解説ではシンボル +0 及び -0 によってもこれらの値をそれぞれ参照する。(これら 2 つの 0 数値はプログラム式 +0 (または単に 0) および -0 によって提示される。) 18437736874454810622 (つまり 264-253-2) 個の 0 でない有限の値は 2 種類ある それらのうち 18428729675200069632 (つまり 264-254) 個は次の形式で正規化される。 s × m × 2e s は +1 または -1 、 m は 252 以上 253 未満の正の整数、e は -1074 以上 971 以下の範囲の整数である。 残りの 9007199254740990 (つまり 253-2) 個の値は次の形式で非正規化 (denormalised) される。 s × m × 2e s は +1 または -1 、 m は 252 未満の正の整数、e は -1074 である。 大きさが 253 以下の正負の整数全ては Number 型で表現できることに注意(実に、整数 0 は 2 つの表現 +0 と -0 を持つ)。 有限数はそれが 0 でなく (上の 2 つのどちらかの式で) 使われた整数 m が奇数のとき、有効数字は奇数である。そうでなければ、有効数字は偶数である。 本仕様において、正確な 0 以外の実際の数学的な量(それはさらに π のような無理数かもしれない) を x と表わすとき、句 " x の数値" は、次の方法で選ばれた数値を意味する。Number 型のすべての有限の値の集合を考える。 -0 を除外し、 Number 型では表現不能な 2 つの値、すなわち 21024(即ち +1 × 253 × 2971) 及び -21024(即ち -1 × 253 × 2971) を追加する。この集合から x の値に最も近いものを選ぶ。最も近いものが集合内の 2 個ある場合、有効数字が偶数であるもの選ばれる; この用途について、拡張した 2 つの値 21024、そして-21024 は有効数字が偶数とみなす。最後に、21024 が選ばれた場合、それを +∞ に置換する; -21024 が選ばれた場合、それを -∞ に置換する; +0 が選ばれた場合、 x が 0 未満である場合のみそれを -0 に置換する; 他の値が選ばれたら変更はない。この結果が x の数値である。(この過程は、 IEEE 754 "round to nearest" モードの振舞いに正確に該当する。) 231 以上 231-1 以下、また 0 以上 232-1 以下の範囲の整数のみを扱う ECMAScript 演算子もある。これらの演算子は任意の Number 型の値を受け付けるが、まず最初に 232 個の整数値の一つに変換を行う。それぞれセクション 9.5, 9.6 にある ToInt32 及び ToUint32 演算子の解説を参照。 8.6 Object 型 (Object type) Object とはプロパティの序列のない集合体である。各プロパティは名前と値、そして属性の組で構成される。 8.6.1 プロパティ属性 プロパティは次の組から0個以上の属性を持つことができる 属性説明 ReadOnly 属性このプロパティは読出し専用のプロパティである。 ECMAScript コードによるこのプロパティの書きこみ試行は無視される。 (注意 実装によって行われるアクションのために ReadOnly 属性のプロパティの値が変更されるケースもありうる; "ReadOnly" であることは "定数で変更されない" ということではない) DontEnum 属性このプロパティは for-in ループ (12.6.3) では列挙されない。 DontDelete 属性このプロパティの削除を試行しても無視される。 delete 演算子の説明(11.4.1) を参照。 Internal 属性内部プロパティは名前を持たず、プロパティアクセス演算子経由で直にアクセスできない。 これらのプロパティへのアクセス方法は実装依存である。 言語仕様毎に、使われ方やタイミングによって特定されるプロパティもある。 8.6.2 内部プロパティとメソッド 内部プロパティとメソッドは言語内には露出しない。この文書の目的のために、 ここでは二重角括弧 で囲ってその名前をあらわす。 アルゴリズムがオブジェクトの内部プロパティを使用していて、 指示された内部プロパティをオブジェクトが実装していないとき、ランタイムエラーが発生する。 露出するプロパティのアクセスには 2 種類ある get と put、取得と設定に相当する。 Native ECMAScript オブジェクトは Prototype と呼ばれる内部プロパティを持つ。 このプロパティの値は null や オブジェクトであり、継承の実装に使用される。 Prototype オブジェクトのプロパティは、 子オブジェクトのプロパティの取得には露出するが、設定には露出しない。 次の表はこの仕様で使われる内部プロパティの概要である。 説明は Native ECMAScript オブジェクトのためのそれらの挙動を示す。 Host オブジェクトはこれらの内部メソッドを任意の実装依存の挙動に実装してもよく、また Host オブジェクトは内部メソッドの一部のみを実装して他を実装しなくてもよい。 プロパティパラメータ説明 Prototype無しこのオブジェクトのプロトタイプ。 Class無しこのオブジェクトの種類。 Value無しこのオブジェクトに関する内部状態の情報。 Get(プロパティ名)プロパティの値を返す。 Put(プロパティ名, 値)指定されたプロパティに値を設定する。 CanPut(プロパティ名)指定されたプロパティ名の Put 操作が成功するかどうかを示す boolean 値を返す。 HasProperty(プロパティ名)オブジェクトがすでに与えられた名前のメンバを持っているかを示す boolean 値を返す。 Delete(プロパティ名)オブジェクトから指定されたプロパティを取り除く。 DefaultValue(ヒント)オブジェクトのデフォルト値を返すが それは primitive 値でなければならず、オブジェクトや参照であってはならない。 Construct呼出側が提供する引数値のリストオブジェクトを生成する。new 演算子によって呼出される。 この内部メソッドを実装するオブジェクトはコンストラクタ (constructor) と呼ばれる。 Call呼出側が提供する引数値のリストオブジェクトに関連するコードを実行する。 関数呼出の式 (expression) を経由して呼出される。 この内部メソッドを実装するオブジェクトは関数 (function) と呼ばれる。 HasInstance(値)値がこのオブジェクトに振る舞いを委任しているかどうかを示す Boolean 値を返す。 Native ECMAScript オブジェクトでは、Function オブジェクトだけが Hasinstance を実装している。 Scope無しその中で Function オブジェクトが実行される環境を定義するスコープ連鎖。 Match(文字列, インデックス)正規表現マッチを試行し、 MatchResult 値を返す(15.10.2.1 参照)。 各オブジェクトは Class プロパティと、Get, Put, HasProperty, Delete, DefaultValue メソッドを実装しなければならない。Host オブジェクトであっても同様である。(注意 とはいえ、DefaultValue メソッドは、単にランタイムエラーを生成してもよい。 Prototype プロパティの値はオブジェクトか null でなければならず、 各 Prototype 連鎖の長さは有限でなければならない(つまり、任意のオブジェクトから始まる Prototype プロパティの再帰的アクセスは、結果的に null 値に導かれる)。 Native オブジェクトが Host オブジェクトを Prototype として持つかどうかは実装に依存する。 各種組込み オブジェクトの Class プロパティの値はこの仕様で定義される。 Host オブジェクトの Class プロパティの値は任意の値でよく、組込み オブジェクトからその Class プロパティのために使用される値でも例外ではない。 この仕様はプログラムに Class プロパティの値へのアクセスを意味するものは何も提供しないことに注意; これは組込み オブジェクトの種類の違いの区別に内部的に使用される。 各 Native オブジェクトは、セクション 8.6.2.1, 8.6.2.2, 8.6.2.3, 8.6.2.4, 8.6.2.5 で述べられる Get, Put, CanPut, HasProperty, Delete メソッドをそれぞれ実装する。但し Array オブジェクトの Put メソッドの実装はわずかに異なる(15.4.5.1)。 Host オブジェクトは任意の方法でこれらのメソッドを実装してよい; 例えば、特殊な Host オブジェクトの Get 及び Put が、プロパティに値を格納するが HasProperty は常に false を生成する可能性がある。 次のアルゴリズム説明において、 O を Native ECMAScript オブジェクト、P を文字列と仮定する。 8.6.2.1 Get (P) O の Get メソッドがプロパティ名 P で呼出されると、次のステップがとられる O が P という名前のプロパティを持っていなければ、ステップ 4 へ進む。 そのプロパティの値を取得する。 Result(2) を返す。 O の Prototype が null ならば、undefined を返す。 Prototype の Get メソッドを、プロパティ名 P で呼び出す。 Result(5) を返す。 8.6.2.2 Put (P, V) O の Put メソッドがプロパティ P と値 V で呼び出された場合、次のステップがとられる O の CanPut メソッドを、名前 P で呼び出す。 Result(1) が false なら戻る。 O が名前 P のプロパティを持っていなければ、ステップ 6 へ進む。 そのプロパティの値に V を設定する。プロパティの属性は変更されない。 戻る。 名前 P のプロパティを生成し、その値に V を設定し、空の属性を与える。 戻る。 しかし、O が Array オブジェクトである場合、より入念な Put メソッド (セクション 15.4.5.1) を持つ。 8.6.2.3 CanPut (P) CanPut メソッドは Put メソッドによってのみ使用される。O の CanPut メソッドがプロパティ P で呼出されると、次のステップが取られる O が名前 P のプロパティを持っていなければ、ステップ 4 へ進む。 プロパティが ReadOnly 属性を持っていれば、 false を返す。 true を返す。 O の Prototype が null ならば、true を返す。 O の Prototype の Canput メソッドを、プロパティ名 P で呼出す。 Result(5) を返す。 8.6.2.4 HasProperty (P) O の HasProperty メソッド がプロパティ名 P で呼出されると、次のステップが取られる O が名前 P のプロパティを持っていれば、 true を返す。 O の Prototype が null ならば、 false を返す。 Prototype の HasProperty メソッドをプロパティ名 P で呼出す。 Result(3) を返す。 8.6.2.5 Delete (P) O の Delete メソッドがプロパティ名 P で呼出されると、次のステップが取られる O が名前 P のプロパティを持たなければ、 true を返す。 そのプロパティが DontDelete 属性であれば、 false を返す。 O から名前 P のプロパティを取り除く。 true を返す。 8.6.2.6 DefaultValue (hint) O の DefaultValue メソッドがヒント String で呼出されると、次のステップが取られる O の Get メソッドを、引数 "toString" で呼出す。 Result(1) がオブジェクトでなければ、ステップ 5 へ。 Result(1) の Call メソッドを、this 値 O と空の引数のリストで呼出す。 Result(3) がプリミティブ値であれば、Result(3) を返す。 O の Get メソッドを、引数 "valueOf" で呼出す。 Result(5) がオブジェクトでなければ、ステップ 9 へ。 Result(5) の Call メソッドを、this 値 O と空の引数のリストで呼出す。 Result(7) がプリミティブ値であれば、 Result(7) を返す。 例外 TypeError を投げる。 O の DefaultValue メソッドがヒント Number で呼出されると、次のステップが取られる O の Get メソッドを、引数 "valueOf" で呼出す。 Result(1) がオブジェクトでなければ、ステップ 5 へ。 Result(1) の Call メソッドを、this 値 O と空の引数のリストで呼出す。 Result(3) がプリミティブ値であれば、Result(3) を返す。 O の Get メソッドを、引数 "toString" で呼出す。 Result(5) がオブジェクトでなければ、ステップ 9 へ。 Result(5) の Call メソッドを、this 値 O と空の引数のリストで呼出す。 Result(7) がプリミティブ値であれば、 Result(7) を返す。 例外 TypeError を投げる。 O の DefaultValue メソッドがヒント無しで呼出されると、ヒントが Number であるかのように振舞う。O が Date オブジェクト (セクション 15.9) の場合は、ヒントが String であるかのように振舞う。 Native オブジェクトのための上記 DefaultValue 仕様はプリミティブな値のみを返す。Host オブジェクトがそれ自身の DefaultValue メソッドを実装するならば、その DefaultValue メソッドはプリミティブな値のみを返すことを保証しなければならない。 8.7 Reference 型 (Reference Type) 内部 Reference 型は言語のデータ型ではない。 純粋に解説上の目的で本仕様に定義される。 ECMAScript 実装は、ここに述べるように、リファレンス上にそれが生成し演算したかのように振舞わなければならない。しかしながら、Reference 型の値は、式評価の中間結果としてのみ用いられ、変数あるいはプロパティの値として格納することはできない。 Reference 型は、delete, typeof のような演算子、そして代入演算子の振舞いの説明に使用される。例えば、代入の左オペランドはリファレンスの生成が期待される。代入の振舞いは、代わりに、代入演算子の左オペランドの構文形式上のケース解析の点から完全に説明される、ある難点が無ければ 関数呼び出しはリファレンスを返すことを許される。純粋に Host オブジェクトにこの可能性が認められる。本仕様で定義される組込み ECMAScript 関数はリファレンスを返さず、リファレンスを返すようなユーザ定義関数に提供するものは無い。(構文的ケース解析を使用しないもう一つの理由は、冗長で扱いにくく仕様の多くの部分に影響するだろうということだ。) Reference 型のもう一つの利用は、関数呼出しの this 値の決定の説明である。 Reference は、オブジェクトのプロパティへの参照である。Reference は基準オブジェクト(base object) とプロパティ名の 2 つの成分から構成される。 Reference の成分にアクセスするために、本仕様において次の抽象的演算が使用される GetBase(V). リファレンス V の基準オブジェクト成分を返す。 GetPropertyName(V). リファレンス V のプロパティ名成分を返す。 リファレンス上の演算において、本仕様では次の抽象的演算が使用される 8.7.1 GetValue (V) Type(V) が Reference でなければ、 V を返す。 GetBase(V) を呼出す。 Result(2) が null ならば、例外 ReferenceError を投げる。 Result(2) の Get メソッドを呼び、プロパティ名に GetPropertyName(V) を渡す。 Result(4) を返す。 8.7.2 PutValue (V, W) Type(V) が Reference でなければ、例外 ReferenceError を投げる。 GetBase(V) を呼出す。 Result(2) が null ならば、ステップ 6 へ。 Result(2) の Put メソッドを呼び、プロパティ名に GetPropertyValue(V)、値に W を渡す。 戻る。 Global オブジェクトの Put メソッドを呼び、プロパティ名に GetPropertyValue(V)、値に W を渡す。 戻る。 8.8 List 型 内部 List 型は言語のデータ型ではない。純粋に解説上の目的で本仕様に定義される。ここに記述された方法で List 値上で提示し演算したかのように、ECMAScript 実装は振舞わなければならない。しかしながら、Reference 型の値は、式評価の中間結果としてのみ用いられ、変数あるいはプロパティの値として格納することはできない。 List 型は、new 式 (new expressions) および関数呼び出し (function call) において、引数リストの評価を説明するのに使用される。List 型の値は、単純な順序のある値のシーケンスである。シーケンスは任意の長さでよい。 8.9 Completion 型 (Completion Type) 内部 Completion 型は言語のデータ型ではない。純粋に説明を目的として本仕様に定義される。ここに記述された方法で Completion 値上で提示し演算したかのように、ECMAScript 実装は振舞わなければならない。とはいえ、Completion 型の値は、文(statment) 評価の中間結果として利用されるのみであり、変数やプロパティの値として蓄積することはできない。 Completion 型は制御の非ローカル転送を実行する文(statement; break, continue, return, throw) の挙動の説明に使用される。Completion 型の値は形式 (type, value, target) の 3 成分であり、type は normal, break, continue, return, throw のうちの一つ、value は任意の ECMAScript 値または empty、target は任意の ECMAScript 識別子または empty である。 用語 "中途完了 (abrupt completion)" は type が normal 以外である任意の completion を参照する。 型変換 (Type Conversion) ECMAScript ランタイムシステムは、必要時に自動型変換を行う。一定の構成物の意味論を計画にするため、変換演算子のセットの定義が有用である。これらの演算子は言語の一部ではない; ここでは、言語の意味論の仕様を助けるためにこれらを定義する。変換演算子は多様的である; つまり、標準的な型を受け入れることはできるが、 Reference, List, Completion (内部的型) を受け入れることはできない。 9.1 ToPrimitive ToPrimitive 演算子は引数 Value と選択的な引数 PreferredType をとる。 ToPrimitive 演算子はその引数の値を非 Object 型に変換する。オブジェクトが一つ以上のプリミティブ型に変換可能である場合、選択的な PreferredType ヒントをそのタイプに選んでよい。変換は次の表にしたがって発生する 入力型結果 Undefined結果は入力引数と等しい。(無変換) Null結果は入力引数と等しい。(無変換) Boolean結果は入力引数と等しい。(無変換) Number結果は入力引数と等しい。(無変換) String結果は入力引数と等しい。(無変換) ObjectObject のデフォルトの値を返す。オブジェクトのデフォルトの値は、オブジェクトの内部メソッド DefaultValue に選択的ヒント PreferredType を渡して取得される。DefalutValue メソッドの挙動は、全ての ECMAScript オブジェクトの仕様によって定義される。(セクション 8.6.2.6) 9.2 ToBoolean ToBoolean 演算子は、次の表にしたがって引数を Boolean 型の値に変換する。 入力型結果 Undefinedfalse Nullfalse Boolean結果は入力引数と等しい。(無変換) Number引数が +0, -0, NaN ならば結果は false; そうでなければ true String引数が空文字列 (長さ 0) ならば結果は false; そうでなければ true Objecttrue 9.3 ToNumber ToNumber 演算子は、次の表にしたがって引数を Number 型の値に変換する。 入力型結果 UndefinedNaN Null+0 Boolean引数が true ならば結果は 1.false ならば +0。 Number結果は入力引数と等しい。(無変換) String下の文法と注意を参照。 Object次のステップを適用 1. ToPrimitive(input argument, hint Number) を呼出す。 2. ToNumber(Result(1)) を呼出す。 3. Result(2) を返す。 9.3.1 String 型に適用される ToNumber (ToNumber Applied to the String Type) 文字列に適用される ToNumber は、入力文字列に 次の文法を適用する。文法が文字列を StringNumericLiteral として解釈不能ならば、 ToNumber の結果は NaN である。 StringNumericLiteral StrWhiteSpaceopt StrWhiteSpaceopt StrNumericLiteral StrWhiteSpaceopt StrWhiteSpace StrWhiteSpaceChar StrWhiteSpaceopt StrWhiteSpaceChar TAB SP NBSP FF VT CR LF LS PS USP StrNumericLiteral StrDecimalLiteral HexIntegerLiteral StrDecimalLiteral StrUnsignedDecimalLiteral StrUnsignedDecimalLiteral StrUnsignedDecimalLiteral StrUnsignedDecimalLiteral Infinity DecimalDigits . DecimalDigitsopt ExponentPartopt . DecimalDigits ExponentPartopt DecimalDigits ExponentPartopt DecimalDigits DecimalDigit DecimalDigits DecimalDigit DecimalDigit one of 0 1 2 3 4 5 6 7 8 9 ExponentPart ExponentIndicator SignedInteger ExponentIndicator one of e E SignedInteger DecimalDigits DecimalDigits DecimalDigits HexIntegerLiteral 0x HexDigit 0X HexDigit HexIntegerLiteral HexDigit HexDigit one of 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F StringNumericLiteral と NumericLiteral の構文間にいくつか注目すべき相違点がある (セクション 7.8.3) StringNumericLiteral には、空白または行終端子が、先行また後続してよい。 10 進数である StringNumericLiteral は may have any number of leading 0 digits. 10 進数である StringNumericLiteral は、符号を示す + または - が先行してよい。 空や空白である StringNumericLiteral は +0 に変換される。 文字列の数値への変換は、全体に数値リテラルの数値の決定と似ている (セクション 7.8.3) が、いくつかの点で異なり、従って string numeric literal の Number 型の値への変換処理はここに全て与えられる。この値は 2 ステップで決定される まず、数学値 (MV) が string numeric literal から派生する; 次に、この数学値が次のように丸められる。 StringNumericLiteral [empty] の数学値は、 0 である。 StringNumericLiteral StrWhiteSpace の数学値は、 0 である。 StringNumericLiteral StrWhiteSpaceopt StrNumericLiteral StrWhiteSpaceopt の数学値は、空白が存在するかどうかにかかわらず、 StrNumericLiteral の数学値である。 StrNumericLiteral StrDecimalLiteral の数学値は、 StrDecimalLiteral の数学値である。 StrNumericLiteral HexIntegerLiteral の数学値は、 HexIntegerLiteral の数学値である。 StrDecimalLiteral StrUnsignedDecimalLiteral の数学値は、 StrUnsignedDecimalLiteral の数学値である。 StrDecimalLiteral + StrUnsignedDecimalLiteral の数学値は、 StrUnsignedDecimalLiteral の数学値である。 StrDecimalLiteral - StrUnsignedDecimalLiteral の数学値は、 負の StrUnsignedDecimalLiteral の数学値である。 (StrUnsignedDecimalLiteral の数学値が 0 ならば、負の数学値も 0 であることに注意。下に述べる丸め規則は handles the conversion of this sign less mathematical zero to a floating-point +0 or -0 as appropriate ) StrUnsignedDecimalLiteral Infinity の数学値は、 1010000 (a value so large that it will round to +∞) である。 StrUnsignedDecimalLiteral DecimalDigits. の数学値は、 DecimalDigits の数学値である。 StrUnsignedDecimalLiteral DecimalDigits. DecimalDigits の数学値は、 n を 2 つ目の DecimalDigits の文字数として、 1 つ目の DecimalDigits の数学値に (2 つ目の DecimalDigits の数学値 × 10-n) を足す。 StrUnsignedDecimalLiteral DecimalDigits. ExponentPart の数学値は、 e を ExponentPart の数学値として、 DecimalDigits の数学値 × 10e である。 StrUnsignedDecimalLiteral DecimalDigits. DecimalDigits ExponentPart の数学値は、 n を 2 つ目の DecimalDigits の文字数、 e を ExponentPart の数学値として、 (1 つ目の DecimalDigits の数学値 + (2 つ目の DecimalDigits の数学値 × 10n) ) × 10e である。 StrUnsignedDecimalLiteral . DecimalDigits の数学値は、 n を DecimalDigits の文字数として、 DecimalDigits の数学値 × 10n である。 StrUnsignedDecimalLiteral . DecimalDigits ExponentPart の数学値は、n を DecimalDigits の文字数、 e を ExponentPart の数学値として、 DecimalDigits の数学値 × 10e-n である。 StrUnsignedDecimalLiteral DecimalDigits の数学値は、 DecimalDigits の数学値である。 StrUnsignedDecimalLiteral DecimalDigits ExponentPart の数学値は、e を ExponentPart の数学値として、 DecimalDigits の数学値 × 10e である。 DecimalDigits DecimalDigit の数学値は、 DecimalDigit の数学値である。 DecimalDigits DecimalDigits DecimalDigit の数学値は、 (DecimalDigits の数学値 × 10) + DecimalDigit の数学値 である。 ExponentPart ExponentIndicator SignedInteger の数学値は、 SignedInteger の数学値である。 SignedInteger DecimalDigits の数学値は、 DecimalDigits の数学値である。 SignedInteger + DecimalDigits の数学値は、 DecimalDigits の数学値である。 SignedInteger - DecimalDigits の数学値は、負の DecimalDigits の数学値である。 DecimalDigit 0 または HexDigit 0 の数学値は、 0 である。 DecimalDigit 1 または HexDigit 1 の数学値は、 1 である。 DecimalDigit 2 または HexDigit 2 の数学値は、 2 である。 DecimalDigit 3 または HexDigit 3 の数学値は、 3 である。 DecimalDigit 4 または HexDigit 4 の数学値は、 4 である。 DecimalDigit 5 または HexDigit 5 の数学値は、 5 である。 DecimalDigit 6 または HexDigit 6 の数学値は、 6 である。 DecimalDigit 7 または HexDigit 7 の数学値は、 7 である。 DecimalDigit 8 または HexDigit 8 の数学値は、 8 である。 DecimalDigit 9 または HexDigit 9 の数学値は、 9 である。 HexDigit a または HexDigit A の数学値は、 10 である。 HexDigit b または HexDigit B の数学値は、 11 である。 HexDigit c または HexDigit C の数学値は、 12 である。 HexDigit d または HexDigit D の数学値は、 13 である。 HexDigit e または HexDigit E の数学値は、 14 である。 HexDigit f または HexDigit F の数学値は、 15 である。 HexIntegerLiteral 0x HexDigit の数学値は、 HexDigit の数学値である。 HexIntegerLiteral 0X HexDigit の数学値は、 HexDigit の数学値である。 HexIntegerLiteral HexIntegerLiteral HexDigit の数学値は、 (HexIntegerLiteral の数学値 × 16) + HexDigit の数学値 である。 一旦数値文字列リテラルの厳密な数学値が決定されたら、 Number 型の値に丸められる。数学値が 0 ならば、丸められる値は、数値文字列リテラル内の最初の非空白文字が - でなければ +0 であり、 - ならば -0 である。 そうではなく、リテラルが StrUnsignedDecimalLiteral を含まず、そのリテラルが 20 を超える有効数字数\でなければ、数値が 20 番目以降の各有効数字を数字 0 で置換して生成されるリテラルの数学値の数値、または 20 番目以降の各有効数字を数字 0 で置換して生成されるリテラルの数学値の数値、そして 20 番目の数字の位置でリテラルを増加のどちらかでありえる場合、丸められる値は (セクション 8.5 で定義される意味の) 数学値の数値でなければならない。数字はそれが ExponentPart の一部\でなく次の二点のどちらかあれば有効数字 (significant) である。 0 でない。 その左側が 0 以外の数字でその右側が 0 以外の数字で ExponentPart 内でない。 9.4 ToInteger ToInteger 演算子は引数を整数値に変換する。この演算子は次のように機能する 入力引数に ToNumber を呼出す。 Result(1) が NaN ならば、 +0 を返す。 Result(1) が +0, -0, +∞, -∞ ならば、 Result(1) を返す。 sign( Result(1)) * floor(abs(Result(1)) ) を算出する。 Result(4) を返す。 9.5 ToInt32 (Signed 32 Bit Integer) ToInt32 演算子は、引数を -231 から 231-1 を含めた範囲内で、 232 個の整数値の一つに変換する。 この演算子は次のように機能する 入力引数に ToNumber を呼出す。 Result(1) が NaN, +0, -0, +∞, or -∞ ならば、 +0 を返す。 sign(Result(1)) * floor(abs(Result(1))) を算出する。 Result(3) modulo 232 を算出する; すなわち、 Result(3) との数学的な差が数学的に 232 の整数倍であるような、大きさ 232 未満の正符号付き Number 型の 有限整数値 k である。 Result(4) が 231 以上ならば、 Result(4) - 232 を返す。そうでなければ Result(4) を返す。 NOTE 上記の ToInt32 の定義を与える ToInt32 演算は idempotent である 生成された結果に適用するならば、2 回目の適用は値を変更せずに残す。 x の全ての値にとって、ToInt32(ToUint32(x)) は ToInt32(x) 等価である。 (+∞ と -∞ は +0 にマップされるのは後者のプロパティの保存である。) ToInt32 は -0 を +0 にマップする。 9.6 ToUint32 (Unsigned 32 Bit Integer) ToUint32 演算子は引数を、 0 から 232-1 を含む範囲の 232 個の整数値の一つに変換する。個の演算子は次のように機能する 入力引数に ToNumber を呼出す。 Result(1) が NaN, +0, -0, +∞, -∞ ならば、 +0 を返す。 sign(Result(1)) * floor(abs(Result(1))) を算出する。 Result(3) modulo 232 を算出する; すなわち、 Result(3) と k との数学的な差が数学的に 232 の整数倍であるような、大きさ 232 未満の正符号付き Number 型の有限整数値 k である。 Result(4) を返す。 NOTE 上記の ToUInt32 の定義を与える ステップ 5 は ToUint32 と ToInt32 との間の違いである。 ToUint32 演算は idempotent である 生成された結果に適用するならば、2 回目の適用は値を変更せずに残す。 x の全ての値にとって、ToUint32(ToInt32(x)) は ToUint32(x) 等価である。 (+∞ と -∞ は +0 にマップされるのは後者のプロパティの保存である。) ToUint32 は -0 を +0 にマップする。 9.7 ToUint16 (Unsigned 16 Bit Integer) ToUint16 演算子は、引数を 0 から 216-1 までの範囲の 216 個の整数値のうちの一つに変換する。この演算は次のように機能する 入力引数に ToNumber を呼出す。 Result(1) が NaN, +0, -0, +∞, -∞ ならば、 +0 を返す。 sign(Result(1)) * floor(abs(Result(1))) を算出する。 Result(3) modulo 216 を算出する; すなわち、 Result(3) と k との数学的な差が数学的に 216 の整数倍であるような、大きさ 216 未満の正符号付き Number 型の有限整数値 k である。 Result(4) を返す。 NOTE 上記の ToUint16 の定義を与える ToUint32 と ToUint16 との間の違いは、ステップ 4 にて 232 に 216 を代用しているだけである。 ToUint16 は -0 を +0 にマップする。 9.8 ToString ToString 演算子は、次の表に従って引数を String 型の値に変換する。 入力型結果 Undefined"undefined" Null"null" Boolean引数が true ならば、結果は "true" 。引数が false ならば、結果は "false" 。 Number下のノートを参照。 String入力引数を返す。 (無変換) Object次のステップを適用 ToPrimitive(入力引数, hint String) を呼出す。 ToString(Result(1)) を呼出す。 Result(2) を返す。 9.8.1 Number 型に適用される ToString (ToString Applied to the Number Type) ToString 演算子は、次のように数 m を文字列形式に変換する m が NaN ならば、文字列 "NaN" を返す。 m が +0 または -0 ならば、文字列 "0" を返す。 m が 0 未満ならば、文字 "-" と ToString(-m) を連結した文字列を返す。 m が無限数ならば文字列 "Infinity" を返す。 そうでないならば、 n, k, s を、 k ≥ 1, 10k-1 ≤ s 10k, s × 10n-k の数値が m, 可能な限り小さい k であるような整数とする。 k は s の 10 進表記の字数であること、 s は 10 で割りきれないこと、 s の最小桁数字はこれらの基準によって必ずしも一意に決定されないことに注意。 k ≤ n ≤ 21 ならば、 n-k 個の文字 0 の出現の続く、 s の 10 進表記である k 個の数字 (0 は先行しない) で構成する文字列を返す。 0 n ≤ 21 ならば、最大桁 s の 10 進表記の n 個の数字, 小数点 . , s の 10 進表記の残りの k-n 個の数字の続く文字列を返す。 6 n ≤ 0 ならば、文字 0 , 小数点 . , -n 個の文字 0 , s の 10 進表記である k の続く文字列を返す。 そうでなければ、 k = 1 ならば、 s の単一の数字, 小文字 e , n-1 の正負に従う正符号 + または負符号 - , 整数 abs(n-1) の 10 進表記 (0 は先行しない) の続く文字列を返す。 s の 10 進表記の最大桁の数字, 小数点 . , s の 10 進表記の残り k-1 個の数字, 小文字 e , n-1 の正負に従う正符号 + または負符号 - , 整数 abs(n-1) の 10 進表記 (0 は先行しない) の続く文字列を返す。 NOTE 次の観察は実装ガイドラインとして有用かもしれないが、この標準の標準必須条件の一部ではない。 x が -0 以外の任意の数値ならば、 ToNumber(ToString(x)) は厳密に x と同じ数値である。 s の最小桁数字は、ステップ 5 に挙げた要求によって常に一意に決定されるとは限らない。 上記の規則によって要求されるよりも拠り正確な規定を提供する実装には、次のステップ 5 の代替バージョンをガイドラインとして使用することが奨められる そうでないならば、 n, k, s を k ≧ 1, 10k-1 ≦ s 10k, s × 10n-k の数値を m, k はできるだけ小さいような整数値とする。 s が複数存在しうるならば、 s × 10n-k が値で m に最も近くなるような s を選択する。 s として可能な値が 2 つあれば、偶数である方をを選ぶ。 k は s の 10 進表記の数字の数で、 s は 10 で割り切れないことに注意。 ECMAScript 実装者は、浮動小数点数の 2 進数から 10 進数への変換のために David M. Gay による役に立つペーパー及びコードを検索できる Gay, David M. Correctly Rounded Binary-Decimal and Decimal-Binary Conversions. Numerical Analysis Manuscript 90-10. AT T Bell Laboratories (Murray Hill, New Jersey). November 30, 1990. http //cm.bell-labs.com/cm/cs/doc/90/4-10.ps.gz で利用可能。関連コードが http //cm.bell-labs.com/netlib/fp/dtoa.c.gz 及び http //cm.bell-labs.com/netlib/fp/g_fmt.c.gz で利用可能。様々な netlib ミラーサイトでも検索できる。 9.9 ToObject ToObject 演算子は次の表に従って引数をオブジェクト型の値に変換する 入力型結果 Undefined例外 TypeError を投げる。 Null例外 TypeError を投げる。 Booleanvalue プロパティがそのブーリアンである Boolean オブジェクトを新しく作成する。 セクション 15.6 Boolean オブジェクトの説明を参照。 Numbervalue プロパティがその数値である Number オブジェクトを新しく作成する。 セクション 15.7 Number オブジェクトの説明を参照。 Stringvalue プロパティがその文字列である String オブジェクトを新しく作成する。 セクション 15.5 String オブジェクトの説明を参照。 Object結果は入力引数である (変換しない)。
https://w.atwiki.jp/fpswoman/pages/52.html
Ashree(アシュリー) プロフィール オンラインID:Ashree 性別:♂ 特徴:チンパン、豚野郎 アカウントの由来は Ashree「なあ、PS3のアカウント何にしよう?」 弟「じゃあアシュリーで。」 Ashree「わかったわ。」 24団に入ってからパチスロに目覚め、毎度毎度お金を吸い取られてはゲームに戻ってきているとかいないとか。 リアフレであるharapeko_とmissan_missanとはとても仲良く阿呆なことを言っている。
https://w.atwiki.jp/0x0b/pages/95.html
mozilla JavaScriptの続き 式(Expressions)演算子(Operators) 代入演算子(Assignment Operators) 比較演算子(Comparison Operators) 算術演算子(Arithmetic Operators) ビット演算子(Bitwise Operators) 論理演算子(Logical Operators) 文字列演算子(String Operators) 特殊演算子(Special Operators) 式(Expressions) リテラル、変数、演算子、そして単一の値に評価する式からなる有効なセットです この値には数値、文字列、論理値が使用できます 概念的に、式は 2 つの種類 ある値を変数に代入するものと、単純にある値を持つもの 例えば、x = 7 という式は x に 7 という値を代入する式です。この式自体の評価結果は 7 です。このような式では代入演算子を用います。一方、3 + 4 という式では単純に評価結果が 7 になります。この式は代入を行いません。このような式で用いられる演算子は単に演算子と呼ばれます。 JavaScript には以下の種類の式があります。 算術式:数値に評価する。例えば 3.14159。(一般に 算術演算子 を使用) 文字列式:文字列に評価する。例えば "Fred" や "234"。(一般に 文字列演算子 を使用) 論理式:true または false に評価する。(よく 論理演算子 を用いる) オブジェクト式:オブジェクトに評価する。(オブジェクトに評価するさまざまな例については 特殊演算子 を参照) 演算子(Operators) JavaScript は以下の種類の演算子を使うことができます。このセクションでは演算子について説明します。また、演算子の優先順位にも触れます。 代入演算子 比較演算子 算術演算子 ビット演算子 論理演算子 文字列演算子 特殊演算子 JavaScript には単項演算子も 2 項演算子もあります。さらには唯一の特殊な 3 項演算子である条件演算子があります。2 項演算子では、演算子の前後に 1 つずつ、計 2 つのオペランドが必要です。 operand1 operator operand2 例えば 3+4 や x*y。 単項演算子では、演算子の前か後ろどちらかに 1 つのオペランドが必要です。 operator operand または operand operator 例えば x++ や ++x。 演算子の優先順位 演算子の優先順位が高い順 |は| 演算子の種類 個々の演算子 メンバ . [] インスタンスの呼び出し/作成 () new 否定/インクリメント ! ~ - + ++ -- typeof void delete 乗算/除算 * / % 加算/減算 + - ビットシフト 関係 = = in instanceof 等価 == != === !== ビットごとのand ビットごとのxor ^ ビットごとの or | 論理積 論理和 || 条件 ? 代入 = += -= *= /= %= = = = = ^= |= コンマ , 代入演算子(Assignment Operators) 代入演算子は、右のオペランドの値に基づいた値を左のオペランドに代入します。基本的な代入演算子はイコール (=) ですが、これは右のオペランドの値を左のオペランドに代入します。すなわち、x = y では y の値を x に代入します。 他の代入演算子は標準的な演算をするための短縮表記があります。次の表でそれを示します。 短縮表記した演算子意味 x += y x = x + y x -= y x = x - y x *= y x = x * y x /= y x = x / y x %= y x = x % y x = y x = x y x = y x = x y x = y x = x y x = y x = x y x ^= y x = x ^ y x |= y x = x|y 比較演算子(Comparison Operators) 比較演算子は、オペランドを比較し、比較結果に基づいた論理値を返します。オペランドには数値、文字列、論理値、オブジェクトが使用できます。文字列は、Unicode 値を用いて標準的な辞書順に基づいて比較されます。ほとんどの場合、2 つのオペランドが異なる型ならば JavaScript はそのオペランドを比較に適した型に変換しようとします(このルールの唯一の例外は === および !== であり、これらは厳密に等値か否かを判断し、等値性をチェックする前にオペランドを適合する型に変換するということはありません)。これは一般に数値の比較が実行されることになります。次の表では比較演算子について説明します。次のコードで考えます。 var var1 = 3, var2 = 4; 演算子 説明 true を返す例 等しい (==) オペランドが等しい場合に true を返す 3 == var1"3" == var13 == '3' 等しくない (!=) オペランドが等しくない場合に true を返す var1 != 4var2 != "3" 厳密に等しい (===) オペランドが等しく、かつ同じ型である場合に true を返す 3 === var1 厳密には等しくない (!==) オペランドが等しくなく、かつ/または同じ型でない場合に true を返す var1 !== "3"3 !== '3' より大きい ( ) 左のオペランドが右のオペランドよりも大きい場合に true を返す var2 var1"12" 2 以上 ( =) 左のオペランドが右のオペランド以上である場合に true を返す var2 = var1var1 = 3 より小さい ( ) 左のオペランドが右のオペランドよりも小さい場合に true を返す var1 var2"12" "2" 以下 ( =)|左のオペランドが右のオペランド以下である場合に true を返す|var1 = var2var2 = 5| 算術演算子(Arithmetic Operators) 算術演算子は、そのオペランドに数値(リテラルか変数)をとり、1 つの数値を返します。標準的な算術演算子は、加算 (+)、減算 (-)、乗算 (*)、除算 (/) です。これらの演算子は他のほとんどのプログラミング言語と同じように機能しますが、そのときの数値は、浮動小数点数として扱われます(0 で除算した結果は、NaN になることにも注意してください)。 1 / 2 // JavaScript では 0.5 を返す 1 / 2 // Java では 0 を返す(どちらの数も浮動小数点数として明記されていない) 1.0 / 2.0 // JavaScript でも Java でも 0.5 を返す さらに、JavaScript では以下の表で示された算術演算子も使用できます。 演算子 説明 例 %(モジュロ) 2 項演算子。2 つのオペランドで除算したときの整数の余りを返す 12 % 5 は 2 を返す。 ++(インクリメント) 単項演算子。オペランドに 1 を加える。前置演算子 (++x) を使った場合、オペランドに 1 を加えた後にその値を返す。後置演算子 (x++) を使った場合、オペランドに 1 を加える前にその値を返す。 x が 3 のとき、++x は x に 4 をセットし、4 を返す。一方、x++ は x に 4 をセットし、3 を返す。 --(デクリメント) 単項演算子。オペランドから 1 を引く。戻り値はインクリメント演算子のものと同様。 x が 3 のとき、--x は x に 2 をセットし、2 を返す。一方、x-- は x に 2 をセットし、3 を返す。 -(符号反転) 単項演算子。オペランドの符号を反転してその値を返す x が 3 のとき、-x は -3 を返す ビット演算子(Bitwise Operators) ビット演算子ではそのオペランドを 10 進数や 16 進数や 8 進数ではなく、32 ビットの集合(0 と 1)として扱います。例えば、10 進数の 9 の 2 進表現は 1001 です。ビット演算子はこのように 2 進表現にした上で演算を行いますが、標準の JavaScript の数値を返します。 次の表で JavaScript のビット演算子について説明します。 演算子 使用法 説明 ビットごとの AND a b オペランドの対応するビットがともに 1 である各ビットについて 1 を返す ビットごとの OR a|b オペランドの対応するビットがどちらかまたはともに 1 である各ビットについて 1 を返す ビットごとの XOR a ^ b オペランドの対応するビットがどちらか一方のみ 1 である各ビットについて 1 を返す ビットごとの NOT ~ a オペランドの各ビットを反転する 左シフト a b 2 進表現の a を b ビット分だけ左にシフトする。右から 0 を詰める 符号を維持した右シフト a b 2 進表現の a を b ビット分だけ右にシフトする。溢れたビットは破棄する 0 埋め右シフト a b 2 進表現の a を b ビット分だけ右にシフトする。溢れたビットは破棄し、左から 0 を詰める ビットごとの論理演算子 概念的にビットごとの論理演算子は以下のように機能します。 オペランドは 32 ビット整数に変換され、ビット列(0 と 1)として表現される。 第 1 のオペランドの各ビットは第 2 のオペランドの対応するビットと対にされる。第 1 ビットと第 1 ビット、第 2 ビットと第 2 ビット、というように対にされる。 演算子は各ビットのペアに適用され、結果はビットごとに組み立てられる。 例えば、9 の 2 進表現は 1001 で、15 の 2 進表現は 1111 です。ここで、ビット演算子がこれらの値に対して適用されたときの結果は以下のようになります。 15 9 の結果は 9 (1111 1001 = 1001) 15 | 9 の結果は 15 (1111 | 1001 = 1111) 15 ^ 9 の結果は 6 (1111 ^ 1001 = 0110) ビットシフト演算子 ビットシフト演算子は 2 つのオペランドをとります。第 1 のオペランドはシフトされる数を指定し、第 2 のオペランドは、第 1 のオペランドをシフトさせるビット数を指定します。シフト演算の方向は使用する演算子によって決まります。 シフト演算子はそのオペランドを 32 ビット整数に変換し、左のオペランドと同じ型の結果を返します。 シフト演算子は次の表のとおりです 演算子 説明 例 (左シフト) 第 1 オペランドを指定したビット数分だけ左にシフトする。左に溢れたビットは破棄される。0 のビットを右から詰める 9 2 の結果は 36 となる。1001 を 2 ビット左にシフトすると 100100 となり、これは 36 であるため (符号を維持した右シフト) 第 1 オペランドを指定したビット数分だけ右にシフトする。右に溢れたビットは破棄される。左端のビットのコピーを左から詰める 9 2 の結果は 2 となる。1001 を 2 ビット右にシフトすると 10 となり、これは 2 であるため。同様に、-9 2 の結果は符号が維持されるために -3 となる (0 埋め右シフト) 第 1 オペランドを指定したビット数分だけ右にシフトする。右に溢れたビットは破棄される。0 のビットを左から詰める 19 2 の結果は 4 となる。10011 を 2 ビット右にシフトすると 100 になり、これは 4 であるため。非負数では 0 埋め右シフトと符号を維持した右シフトは同じ結果になる 論理演算子(Logical Operators) 論理演算子では基本的に真偽(論理)値を用います。そのような値があると真偽値を返します。しかし、 および || 演算子は実際には指定されたオペランドの一方の値を返します。そのため、非真偽値とともに論理演算子が使われると非真偽値を返します。論理演算子について次の表で説明します。 演算子 使用法 説明 expr1 expr2 (論理 AND)expr1 を false と見ることができる場合は expr1 を返す。そうでない場合は expr2 を返す。したがって、真偽値が使われた場合、両オペランドが true の場合は は true を返し、そうでない場合は false を返す || expr1||expr2 (論理 OR)expr1 を true と見ることができる場合は expr1 を返す。そうでない場合は expr2 を返す。したがって、真偽値が使われた場合、どちらかのオペランドが true の場合は||は true を返し、両方とも false の場合は false を返す ! !expr (論理 NOT)オペランドを true と見ることができる場合は false を返す。そうでない場合は true を返す false と見ることができる式とは、null、0、空文字列 ("")、または undefined に評価される式のことです。 以下のコードで (論理 AND)演算子の例を示します。 a1=true true // t t は true を返す a2=true false // t f は false を返す a3=false true // f t は false を返す a4=false (3 == 4) // f f は false を返す a5="Cat" "Dog" // t t は Dog を返す a6=false "Cat" // f t は false を返す a7="Cat" false // t f は false を返す 以下のコードで ||(論理 OR)演算子の例を示します。 o1=true || true // t || t は true を返す o2=false || true // f || t は true を返す o3=true || false // t || f は true を返す o4=false || (3 == 4) // f || f は false を返す o5="Cat" || "Dog" // t || t は Cat を返す o6=false || "Cat" // f || t は Cat を返す o7="Cat" || false // t || f は Cat を返す 以下のコードで !(論理 NOT)演算子の例を示します。 n1=!true // !t は false を返す n2=!false // !f は true を返す n3=!"Cat" // !t は false を返す ショートサーキット評価 論理式は左から右に評価されるため、以下のルールを用いることで「ショートサーキット」評価ができるようになっています。 false anything は false にショートサーキット評価する。 true || anything は true ショートサーキット評価する。 論理のルールはこれらの評価が常に正確であることを保証しています。上記の式の anything の部分は評価されないため、何らかの副作用が生じないように注意してください 文字列演算子(String Operators) 比較演算子は文字列に使用できますが、これに加えて 2 つの文字列を結合する結合演算子 (+) も使用できます。これは 2 つのオペランドの文字列を結合した文字列を返します。例えば、"my " + "string" は "my string" という文字列を返します。 短縮表記した代入演算子 += も文字列の結合に使用できます。例えば、変数 mystring に "alpha" という値が格納されているとき、式 mystring += "bet" の評価結果は "alphabet" となり、この値を mystring に代入します。 特殊演算子(Special Operators) JavaScript は以下の特殊演算子があります。 条件演算子 コンマ演算子 delete in instanceof new this typeof void 条件演算子 条件演算子は JavaScript では唯一の 3 つのオペランドをとる演算子です。演算子は条件に基づいて 2 つの値のうち、1 つを選択します。構文は次のとおりです。 condition ? val1 val2 condition が true の場合、演算子は val1 の値を選択します。そうでない場合は val2 の値を選択します。標準的な演算子が使用できる場所でならどこででも条件演算子を使用することができます。 例えば、 status = (age = 18) ? "adult" "minor" この文では、age が 18 以上の場合 "adult" という値を変数 status に代入します。そうでない場合は "minor" という値を status に代入します。 コンマ演算子 コンマ演算子 (,) は単に両方のオペランドを評価し、第 2 のオペランドの値を返します。この演算子は主に for ループ内で使用されます。このことでループのたびに複数の変数を更新できるようになります。 例えば、a が一辺が 10 要素の 2 次元配列のとき、以下のコードではコンマ演算子を用いることで 2 変数を同時にインクリメントしています。このコードでは配列の対角成分の値を出力します。 for (var i=0, j=9; i = 9; i++, j--) document.writeln("a["+i+"]["+j+"]= " + a[i][j]) delete delete 演算子はオブジェクトやオブジェクトのプロパティ、配列の指定されたインデックスの要素を削除します。構文は以下のとおりです。 delete objectName delete objectName.property delete objectName[index] delete property // with 文内でのみ有効 ここで、objectName はオブジェクトの名前を、property は既存のプロパティを、index は配列の要素の位置を表す整数をそれぞれ表しています。 4 番目の形式は with 文内でのみ有効で、これはあるオブジェクトからプロパティを削除します。 delete 演算子を使うことで暗黙的に宣言された変数を削除することができますが、var 文を用いて宣言された変数は削除できません。 delete 演算子が成功すると、そのプロパティや要素には undefined がセットされます。また、演算が可能な場合は delete 演算子は true を返します。演算が不可能な場合は false を返します。 x=42 var y= 43 myobj=new Number() myobj.h=4 // プロパティ h を作成 delete x // true を返す(暗黙的に宣言されているならば削除可能) delete y // false を返す(var 付きで宣言されているなら削除不可能) delete Math.PI // false を返す(定義済みプロパティは削除不可能) delete myobj.h // true を返す(ユーザ定義プロパティは削除可能) delete myobj // true を返す(暗黙的に宣言されているならば削除可能) 配列要素の削除 配列要素を削除したとき、配列の長さには影響を及ぼしません。例えば a[3] を削除したとき、a[4] は依然 a[4] のままで、a[3] は undefined になります。 delete 演算子で配列要素を除去すると、もうその要素はその配列からなくなります。次の例では tree[3] は delete によって除去されます。 trees=new Array("redwood","bay","cedar","oak","maple") delete trees[3] if (3 in trees) { // ここは実行されない } 配列要素は存在させたいが、値は未定義にしたいという場合は、delete 演算子の代わりに undefined キーワードを使用してください。次の例では trees[3] には undefined という値が代入されますが、その配列要素は存在したままになります。 trees=new Array("redwood","bay","cedar","oak","maple") trees[3]=undefined if (3 in trees) { // ここは実行される } in in 演算子は、指定されたプロパティが指定されたオブジェクトにある場合に true を返します。構文は以下のとおりです。 propNameOrNumber in objectName ここで、propNameOrNumber はプロパティ名か配列のインデックスを表す文字列式または数値式を、objectName はオブジェクトの名前をそれぞれ表しています。 次の例では in 演算子の使用法を示します。 // 配列 trees=new Array("redwood","bay","cedar","oak","maple") 0 in trees // true を返す 3 in trees // true を返す 6 in trees // false を返す "bay" in trees // false を返す(インデックスの指す値ではなく、 // インデックスの数字を指定しなければならない) "length" in trees // true を返す(length は Array のプロパティ) // 定義済みオブジェクト "PI" in Math // true を返す myString=new String("coral") "length" in myString // true を返す // ユーザ定義オブジェクト mycar = {make "Honda",model "Accord",year 1998} "make" in mycar // true を返す "model" in mycar // true を返す instanceof instanceof 演算子は、指定されたオブジェクトが指定されたオブジェクトの種類である場合に true を返します。構文は次のとおりです。 objectName instanceof objectType ここで、objectName は objectType と比較するオブジェクトの名前を、objectType は Date や Array のようなオブジェクトの種類をそれぞれ表しています。 実行時にオブジェクトの種類を確認する必要があるときは instanceof を使用してください。例えば、例外を受け取るとき、投げられた例外の種類によって別々の例外を扱うコードに分岐させることができます。 例えば、次のコードでは instanceof を使用することで theDay が Date オブジェクトであるかどうかを決定しています。theDay は Date オブジェクトなので if 文の中の文は実行されます。 theDay=new Date(1995, 12, 17) if (theDay instanceof Date) { // 実行される文 } new new 演算子は、ユーザ定義オブジェクトや、Array、Boolean、Date、Function、Image、Number、Object、Option、RegExp、String といった定義済みオブジェクトのインスタンスを作成するのに使用します。サーバでは DbPool、Lock、File、SendMail といったオブジェクトも使用できます。new の使用法は以下のとおりです。 objectName = new objectType ( param1 [,param2] ...[,paramN] ) オブジェクト初期化子を使用してもオブジェクトを作成することができます。オブジェクト初期化子の使用 にて説明しています。 詳しくはコア JavaScript リファレンスの new 演算子 のページを参照してください。 this this キーワードを使うことでカレントオブジェクトを参照することができます。一般に this はあるメソッド内でそのメソッドを呼び出したオブジェクトを参照します。使用法は以下のとおりです。 this[.propertyName] 例 1 あるオブジェクトの value プロパティの妥当性を確認する validate という関数を想定します。関数にはそのオブジェクトと、上限および下限の値を渡します。 function validate(obj, lowval, hival) { if ((obj.value lowval) || (obj.value hival)) alert("Invalid Value!") } 各フォーム要素の onChange イベントハンドラにおいて validate を呼び出します。this を使うことでフォーム要素を渡すことができます。次の例をご覧ください。 B Enter a number between 18 and 99 /B INPUT TYPE = "text" NAME = "age" SIZE = 3 onChange="validate(this, 18, 99)" 例 2 form プロパティと組み合わせると this でカレントオブジェクトの親のフォームを参照できます。次の例では、myForm というフォームに Text オブジェクトとボタンが格納されています。ユーザがボタンをクリックすると、Text オブジェクトの値にフォーム名がセットされます。ボタンの onClick イベントハンドラは this.form を利用して親のフォームである myForm を参照します。 FORM NAME="myForm" Form name INPUT TYPE="text" NAME="text1" VALUE="Beluga" P INPUT NAME="button1" TYPE="button" VALUE="Show Form Name" onClick="this.form.text1.value=this.form.name" /FORM typeof typeof 演算子は次の方法のうち、どちらかの方法で使用します。 1. typeof operand 2. typeof (operand) typeof 演算子は、未評価のオペランドの型を指す文字列を返します。operand は返される型を調べる対象となる文字列、変数、キーワード、オブジェクトです。括弧はあってもなくてもかまいません。 以下の変数を定義することを想定します。 var myFun = new Function("5+2") var shape="round" var size=1 var today=new Date() typeof 演算子はこれらの変数に対して以下の結果を返します。 typeof myFun is function typeof shape is string typeof size is number typeof today is object typeof dontExist is undefined true や null というキーワードに対して、typeof 演算子は以下の結果を返します。 typeof true is boolean typeof null is object 数値や文字列に対して、typeof 演算子は以下の結果を返します。 typeof 62 is number typeof 'Hello world' is string プロパティ値に対して、typeof 演算子はプロパティ値の型を返します。 typeof document.lastModified is string typeof window.length is number typeof Math.LN2 is number メソッドや関数に対して、typeof 演算子は以下の結果を返します。 typeof blur is function typeof eval is function typeof parseInt is function typeof shape.split is function 定義済みオブジェクトに対して、typeof 演算子は以下の結果を返します。 typeof Date is function typeof Function is function typeof Math is function typeof Option is function typeof String is function void void 演算子は次の方法のうち、どちらかの方法で使用します。 1. void (expression) 2. void expression void 演算子は値を返さずに評価する式を指定します。expression は評価する JavaScript の式です。式の周りの括弧はあってもなくてもかまいませんが、使用したほうが見た目はいいです。 void 演算子を使用することで式をハイパーテキストリンクとして指定することができます。式は評価されますが、開いている文書の代わりに読み込まれるということはありません。 以下のコードはユーザがクリックしても何も起こらないハイパーテキストリンクを作成します。ユーザがリンクをクリックすると void(0) は undefined に評価され、JavaScript としては影響を及ぼしません。 A HREF="javascript void(0)" Click here to do nothing /A 以下のコードはユーザがクリックするとフォームが送信されるハイパーテキストリンクを作成します。 A HREF="javascript void(document.form.submit())" Click here to submit /A
https://w.atwiki.jp/aopbookpgt/pages/32.html
Copyright © 2009 aopbookpgt@wiki All Rights Reserved
https://w.atwiki.jp/warhammer555/pages/36.html
-------------------------------------------------------------------------- Three s a Crew ① 44000-60000 でNPCと会話。 Three s a Crew ② 57000-47000 でNPCと会話。 Three s a Crew ③ 61000-43000 でNPCと会話。 Three s a Crew ④ 61000-43000 で”Blackhide Troll”を5匹KILL。 Three s a Crew ⑤ 44000-60000 で”Flame Cannon”を調べる。 -------------------------------------------------------------------------- Securing the Stone 58000-62000 で”Furiksson s Clan Stone”を調べる。 -------------------------------------------------------------------------- Gurding What s Mine 50000-49000 でオークを10匹KILL。 -------------------------------------------------------------------------- Blasterd Chuffin Greenskins 50000-49000 付近でオークを10匹KILL。 -------------------------------------------------------------------------- Ancient Horror ① 52000-44000 で落ちている本を調べる。 Ancient Horror ② Badlandの32000-12000 でNPCと会話。 -------------------------------------------------------------------------- A Darker Threat ① 54000-49000 でNPCと会話。 A Darker Threat ② 56000-60000 のNPCと会話。 A Darker Threat ③ 58000-63000 で”Defiled Warptail”を5匹 ”Plaguesworn Defiler”を5匹KILL。 64000-56000 で”Chest of Poxes”を調べる。 -------------------------------------------------------------------------- Shaman Shakedown ① 39000-51000 で”Goblin Shaman Pile”を調べる。 Shaman Shakedown ② 35000-24000 でNPCと会話。 -------------------------------------------------------------------------- Solidifying the Alliance 37000-50000 で”Reliquary Chest”を調べる。 -------------------------------------------------------------------------- Keepsake 22000-48000 で”Muguz”をKILL。 -------------------------------------------------------------------------- Welcher 27000-46000 で箱”Packe Crate”を調べる。 -------------------------------------------------------------------------- To Bugman s 26000-17000 を偵察。 -------------------------------------------------------------------------- Faulty Tower 15000-5000 を偵察。 --------------------------------------------------------------------------