beanshell后置處理器的作用與用法?
BeanShell是一個小型的嵌入式Java源代碼解釋器,具有對象腳本語言的特性,可以動態執行標準的JAVA語法,并通過使用Javascript和P
如何才能通俗易懂的解釋javascript里面的‘閉包’?
寫一個最簡單的閉包函數:
ltscriptgt
函數fn1(){
varx10
函數fn2(){
警報(x)
}
返回fn2//返回fn2的地址。
}
varfnfnfn1()//相當于fn指向fn2的地址。
Fn()//執行fn2函數。
lt/scriptgt
說明:執行VARFNFNfn1()后,fn1()會進行函數調用,執行fn1的函數體。執行后會返回fn1函數對象中內部函數fn2函數對象的地址。按理說應該釋放fn1函數中的局部變量X,但是因為fn2函數中alert(x)使用了局部變量X,那么js引擎就可以此時t垃圾回收fn1函數對象,因為如果fn1函數對象被垃圾回收,意味著X變量被釋放,fn2函數對象怎么會使用X變量呢?而varfnfnfn1()實際上相當于fn變量指向fn2函數對象的地址。由于是函數地址,所以可以調用fn()函數,fn2函數對象在fn1函數內部,也就是說fn1函數對象不能垃圾回收,也就是說外部可以訪問函數內部的局部變量。
關閉的功能:
1.您可以訪問函數的內部變量。
2.使這個局部變量占用的內存不被釋放。