天天看點

javascript的詞法分析

-.arguments的解釋:

      1.是一個對象,是一個長的很像數組的對象

二.arguments内容是什麼?

     1.arguments是函數運作時的實參清單

    2.arguments收集的“所有”的實參,即使沒有與之相對應的形參,也可以用arguments來擷取任意多個的實參

   3.形參與對應的arguments單元,其實是互相映射的,互相影響

   4.arguments可以擷取函數運作時,收到的實參個數(在多态裡可以用到)

  5.arguments.callee  屬性代表 “目前運作的函數”

三:函數運作期内,關鍵的三個對象

   1.AO---》本函數A上沒有某屬相,則繼續去外層函數的AO上找,直到全局對象  叫做  作用域鍊

   2.anguments---》 每個函數有自己的callee,但不向外層接着找 arguments 的相關屬性,  即不形成鍊

   3.this的意思:

       1.作為普通的函數來調用  this的值指向--》window  準确的說,this為null 解釋成window  在新的标準中this為null 則解釋成undefine

       2.作為對象的方法來調用    this指向方法的調用者,即該對象    作為方法調用時,this指向其調用者,即母體對象

四:js中函數的4種調用狀态:

    1.作為普通函數來調用,    準确的說this 為null,但被解釋成windows    在後來的标準中,如果this為null  則解釋為undefine

    2.作為對象的方法來調用: this指向方法的調用者,即該對象    作為方法調用時,this指向其調用者,即母體對象

    3.函數作為構造函數調用時:   js中沒有類的概念  建立對象是用構造函數來完成,或者直接用json格式{}來寫對象

                                            函數作為構造函數運作時,return 的值是忽略的,還是傳回對象。 

     4.函數通過call,apply 調用:    文法格式:函數.call(對象,參數1,參數2。。。參數N);

                                              fn.call(對象obj,參數1,參數2,。。。參數N);

                                              運作如下:

                                            a):fn函數中的this--指向---》對象obj

                                            b):運作fn(參數1,參數2,。。參數N);

五: var的定義:是函數運作的上下文中,聲明的一個變量。不加var 就是一個指派操作

六:詞法分析的過程:

   0:AO={}

   1:分析參數  AO={greet:undefined}

   2:分析var聲明 (變量) greet變量聲明,AO已經有greet屬性,是以不做任何影響

   3:分析greet函數聲明,AO.greet=function(){},被覆寫成函數

七:函數能使用的局部變量,分析3樣東西

   1.先分析參數

   2.再分析變量聲明

   3.分析函數聲明

八:具體步驟:

   0:函數運作前的1瞬間,生成Active  Object(活動對象),下稱AO

   1:  1.1函數聲明的參數,形成AO的屬性,值全是undefined

         1.2接受實參,形成AO相應額屬相值

  2:分析變量聲明  如var  age

      如果AO上沒有age 屬性,則添加AO屬相,值是undefined

       如果AO上已經有age屬相,則不作任何影響

3:分析函數聲明 ,如 function   foo(){},

    則把函數賦給AO.foo屬性   注:如果以前foo屬性以存在,則被無情的覆寫了

九:function  t1(){}和 t2=function(){}的差別:

     1.這兩種方式,效果不同  

     2. t1是函數聲明,雖然全局内也得到一個t1變量,值是function

     3.而t2隻是一個指派過程-----值是右側的表達式的傳回結果,即函數

     4.是以,t1 t2兩種方式在詞法分析時,有着本質差別    前者  在詞法分析階段,就發揮作用, 後者在運作階段才發揮作用

十:作用域鍊:函數由内到外  所産生的AO