atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
0x0b
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
0x0b
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
0x0b
ページ検索 メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • 0x0b
  • js_function&program

0x0b

js_function&program

最終更新:2011年08月31日 13:39

0x0b

- view
管理者のみ編集可

関数定義(Function Difinision)

Syntax

FunctionDeclaration :
function Identifier ( FormalParameterListopt ) { FunctionBody }
FunctionExpression :
function Identifieropt ( FormalParameterListopt ) { FunctionBody }
FormalParameterList :
Identifier
FormalParameterList , Identifier
FunctionBody :
SourceElements

Semantics
生成規則 FunctionDeclaration : function Identifier ( FormalParameterListopt ) { FunctionBody } は関数宣言のために次のように処理される:
FormalParameterList で指定されるパラメータと FunctionBody で指定される body を用いて、セクション 13.2 に指定されるように 新しい Function オブジェクトを生成する。処理中の実行コンテキストのスコープ連鎖内を Scope として渡す。
名前 Identifier と Result(1) の値を用いて、(セクション10.1.3 で指定される) 現在の変数オブジェクト(variable object)のプロパティを生成する。
生成規則 FunctionExpression : function ( FormalParameterListopt ) { FunctionBody } は次のように評価される:
FormalParameterList で指定されるパラメータと FunctionBody で指定される body を用いて、セクション 13.2 に指定されるように 新しい Function オブジェクトを生成する。処理中の実行コンテキストのスコープ連鎖内を Scope として渡す。
Result(2) を返す。
生成規則 FunctionExpression : function Identifier ( FormalParameterListopt ) { FunctionBody } は次のように評価される:
式 new Object() によるものであるかのように、新しいオブジェクトを生成する。
スコープ連鎖の前に Result(1) を追加する。
FormalParameterList で指定されるパラメータと FunctionBody で指定される body を用いて、セクション 13.2 に指定されるように 新しい Function オブジェクトを生成する。処理中の実行コンテキストのスコープ連鎖内を Scope として渡す。
オブジェクト Result(1) 内にプロパティを生成する。プロパティ名は Identifier で、値は Result(3)、属性は { DontDelete, ReadOnly } である。
スコープ連鎖の前から Result(1) を除去する。
Result(3) を返す。
NOTE FunctionExpression 内の Identifier は、 FunctionExpression の FunctionBody の内部から参照が可能で、関数にそれ自身の再帰的呼び出しを許可する。しかしながら、 FunctionDeclaration とは異なり、 FunctionExpression 内の Identifier を参照はできず、 FunctionExpression を閉じるスコープに影響しない。
生成規則 FunctionBody : SourceElements は次のように評価される:
関数宣言のために SourceElements を処理する。
SourceElements を評価する。
Result(2) を返す。

定義

関数オブジェクト生成の処理を述べるため、2 つの定義を要する:

等しい文法の生成規則

FunctionBody 文法生成規則を用いる 2 者は、次のうちの一つが真であるとき、等しいものであると定義される:
双方が、同じ ECMAScript プログラムのソーステキスト内の同じロケーションから取得された FunctionBody を用いている。このソーステキストはグローバルコードから構成され、(実行可能コンテキスト 実行可能コードの種類)の定義に従って、あるものはファンクションコードを含む。
双方が、同じ eval 呼び出し(eval (x)) のソーステキスト内の同じロケーションから取得された FunctionBody を用いている。このソーステキストは eval コードから構成され、(実行可能コンテキスト 実行可能コードの種類)の定義に従って、あるものはファンクションコードを含む。
NOTE Function コンストラクタ呼び出し(関数として呼出される Functionコンストラクタ Functionコンストラクタ) から取得される FunctionBody を用いる 2 者は、けして等しいとはみなされない。2 つの異なる eval 呼び出しから取得される FunctionBody を用いる 2 者も、それが同じ引数を渡されていたとしても、等しいとはみなされない。

結合オブジェクト

2 つ以上の Function オブジェクトが結合しているとき、それらは次の特殊な振る舞いを持つ:
オブジェクト O の非内部プロパティが作成または設定される時は、O に結合した全オブジェクトの該当するプロパティが常に直ちに作成され、同じ値および属性を設定される。
オブジェクト O の非内部プロパティが削除される時は、 O に結合した全オブジェクトの該当するプロパティも常に直ちに削除される。
オブジェクト O と P が結合していれば、それらは互いに == および === として比較する。
結合は過渡的で対称である。その結果、オブジェクト O および P が結合し、オブジェクト P および Q が結合する場合、オブジェクト O および Q も自動的に結合する。
NOTE 互いに結合した 2 つ以上のオブジェクトは、それらが異なる内部プロパティを持っているかもしれない点を除いて、事実上判別できない。本仕様において異なってもよいような内部プロパティこそが Scope である。結合されたオブジェクトは、正確な仕様技術用の道具としてこの標準の中で使用される。それは、実際の Function オブジェクトの実装法のガイドラインに使用されることを意図しない。もっと言えば、実際に実装は、2 つ以上の結合された Function オブジェクトの Scope プロパティの差が外部的に観測されず、その場合結合された Function オブジェクトの組を作らずに同じ Function オブジェクトを再使用するという時を検知するかもしれない。この標準は単に ECMAScript プログラムにみられる振る舞いの仕様であるので、これは合法的な最適化である。

Function オブジェクトの生成

FormalParameterList で指定される選択的なパラメータのリスト、FunctionBody で指定される本文、Scope で指定されるスコープ連鎖を与えられ、Function オブジェクトは次のように生成される:
NOTE prototype プロパティは、各関数に自動的に生成され、関数がコンストラクタとして利用される可能性を許可する。
ステップ 1 は実装に、B が A に依存しないところの入れ子の関数 B を持つ関数 A の一般的なケースの最適化を許可する。このケースでは実装は B のために A が呼出される度に毎回新しいものを生成する代わりに同じオブジェクトの再利用を許可される。ステップ 13 はこの最適化を選択的にする; これを実装しないことを選択する実装は、ステップ 2 に進む。
例えば、このコード:
function A() {
 function B(x) {return x*x;}
 return B;
}

function C() {
 return eval("(function (x) {return x*x;})");
}

var b1 = A();
var b2 = A();
function  b3(x) {return x*x;}
function  b4(x) {return x*x;}
var b5 = C();
var b6 = C();
の中で、実装は、b1 と b2 の結合を許可される。だが要求はされない。実際、それらの Scope プロパティ間の違いを検知する方法がないので、b1 と b2 を同じオブジェクトに作成してもよい。一方、実装はソースコードの等しくない(13.1.1) b3 と b4 を結合してはならない。また実装は、2 つの異なる eval 呼び出しで生成されるためにソースコードの等しくない b5 と b6 も結合してはならない。
実際、それは、それらの Scope プロパティ間に違いが見られないことを実装が証明でき、それで 1 つのオブジェクトを再使用できる時にのみ、2 つの Function オブジェクトの結合に生産的だろう。このポリシーに従うことによって、実装は、それ自体に結合しているオブジェクトの空虚なケースに遭遇するだけになる。

Call

Function オブジェクト F の Call プロパティが呼出されるとき、次のステップが取られる:

Construct

Function オブジェクト F の Construct プロパティが呼出されるとき、次のステップが取られる:

Program

Syntax

Program :
SourceElements
SourceElements :
SourceElement
SourceElements SourceElement
SourceElement :
Statement
FunctionDeclaration

Semantics
生成規則 Program : SourceElements は次のように評価される:
関数宣言のために SourceElements を処理する。
SourceElements を評価する。
Result(2) を返す。
生成規則 SourceElements : SourceElement は関数宣言のためには次のように処理される:
関数宣言のための SourceElement を処理する。
生成規則 SourceElements : SourceElement は次のように評価される:
SourceElement を評価する。
Result(1) を返す。
生成規則 SourceElements : SourceElements SourceElement は関数宣言のためには次のように処理される:
関数宣言のために SourceElements を処理する。
関数宣言のために SourceElement を処理する。
生成規則 SourceElements : SourceElements SourceElement は次のように評価される:
SourceElements を評価する。
Result(1) が中途完了ならば、 Result(1) を返す。
SourceElement を評価する。
Result(3) を返す。
生成規則 SourceElement : Statement は関数宣言のためアクション無しで処理される。
生成規則 SourceElement : Statement 次のように評価される:
Statement を評価.
Result(1) を返す。
生成規則 SourceElement : FunctionDeclaration は関数宣言のためには次のように処理される:
関数宣言のために FunctionDeclaration を処理する。(セクション 13 参照)
生成規則 SourceElement : FunctionDeclaration は次のように評価される:
(normal, empty, empty) を返す。
「js_function&program」をウィキ内検索
LINE
シェア
Tweet
0x0b
記事メニュー
  • トップページ

  • JavaScript(ECMAscript)
  • CSS
  • SGML/HTML/XML

テスト用
  • 砂場
見本
  • 使用頻度の高い構文


メモ
_travian
_


ここを編集




延べ - 回
今日 - 回
昨日 - 回



記事メニュー2
2025-09-08 13:40:28 (Mon)

更新履歴

取得中です。



@wikiヘルプメニュー
  • @wiki助け合いコミュニティ
  • wiki(ウィキ)って何?
  • 初心者ガイド
  • ご利用ガイド
  • 良くある質問
  • プラグイン一覧
  • 編集モードの違いについて
  • 不具合や障害を見つけたら
  • 管理・設定マニュアル




ここを編集
最近更新されたページ
  • 4126日前

    トップページ
  • 5093日前

    js_ref
  • 5100日前

    js_about_08
  • 5100日前

    js_about_07
  • 5100日前

    js_about_06
  • 5100日前

    js_about_05
  • 5100日前

    js_about_04
  • 5101日前

    js_about_03
  • 5104日前

    js_about_02
  • 5104日前

    js_about_01
もっと見る
最近更新されたページ
  • 4126日前

    トップページ
  • 5093日前

    js_ref
  • 5100日前

    js_about_08
  • 5100日前

    js_about_07
  • 5100日前

    js_about_06
  • 5100日前

    js_about_05
  • 5100日前

    js_about_04
  • 5101日前

    js_about_03
  • 5104日前

    js_about_02
  • 5104日前

    js_about_01
もっと見る
ウィキ募集バナー
急上昇Wikiランキング

急上昇中のWikiランキングです。今注目を集めている話題をチェックしてみよう!

  1. モンスター烈伝オレカバトル2@wiki
  2. Dance Dance Revolution SP総合wiki
  3. テイルズ オブ ヴェスペリア 2ch まとめ @Wiki
  4. モンスターファーム2@まとめwiki
  5. テイルズ オブ グレイセス f まとめWiki
  6. Dragon Marked For Death攻略Wiki
  7. ポケモン 作品なりきりネタWiki
  8. アサルトリリィ wiki
  9. Abiotic Factor 日本語攻略Wiki
  10. パタポン2 ドンチャカ♪@うぃき
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 初音ミク Wiki
  5. 検索してはいけない言葉 @ ウィキ
  6. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  7. 発車メロディーwiki
  8. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  9. オレカバトル アプリ版 @ ウィキ
  10. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
もっと見る
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. まどドラ攻略wiki
  2. MadTown GTA (Beta) まとめウィキ
  3. シュガードール情報まとめウィキ
  4. SurrounDead 攻略 (非公式wiki)
  5. ちいぽけ攻略
  6. Dark War Survival攻略
  7. シミュグラ2Wiki(Simulation Of Grand2)GTARP
  8. カツドンチャンネル @ Wiki
  9. AviUtl2のWiki
  10. 魔法少女ノ魔女裁判 攻略・考察Wiki
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 参加者一覧 - ストグラ まとめ @ウィキ
  2. サーヴァント/一覧/クラス別 - Fate/Grand Order @wiki 【FGO】
  3. 天羽 まろん - ストグラ まとめ @ウィキ
  4. 天羽 みかげ - ストグラ まとめ @ウィキ
  5. ミッション攻略 - 地球防衛軍6 @ ウィキ
  6. 稼ぎ - 地球防衛軍6 @ ウィキ
  7. ヤソップ(ONE PIECE) - アニヲタWiki(仮)
  8. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  9. 雨宮(amemiya0123) - ダイナマイト野球3D
  10. 千鳥の鬼レンチャン 挑戦者一覧 - 千鳥の鬼レンチャン サビだけカラオケデータベース
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.