編譯過程:分詞/詞法分析;解析/語法分析;**生成
詞法作用域:定義在詞法階段的作用域
作用域:是一套規則,定義了引擎如何在作用域中通過識別符號名稱對變數進行查詢
作用域工作模型:詞法作用域、動態作用域
詞法化:編譯器工作的第一階段,即對**中的字元進行檢查。如果是有狀態的解析還會賦予單詞語義
1.效能問題:
①.js引擎會在編譯階段進行效能優化,其中部分優化依賴於對詞法作用域的靜態分析;
②.eval函式和with關鍵字會欺騙詞法作用域(eval動態修改,with憑空建立新的),從而導致詞法作用域中變數和函式的定義位置無法事先確定;
③.js引擎發現**中的eval和with後,會判別無法事先做優化,故直接放棄
2.嚴格模式下不允許使用:"use strict"
3.網路安全問題:
eval()會將接收的字串解析為js**,容易被惡意植入
(詳情不作展開,暫不了解)
盡量不要使用FindWindow
盡量不用 findwindow 最近發現 se6和 se5程序共存時視窗名稱一樣引起的 bug。原因是我們經常使用 findwindow 來獲得視窗控制代碼,然後進行訊息通訊,這樣呼叫簡單,但增加了不同模組之間的依賴性,比如同時有兩個程序時,就可能會找錯視窗。而如果靠人去維護這個視窗名稱,在程式工程...
oracle為什麼盡量不要使用外來鍵的最好理解
對於死鎖問題相信大家都是很頭疼的,為什麼不要使用外來鍵呢?最簡單的回答就是太容易產生死鎖了。經過個人的測試,我發現外來鍵刪除的時候,是按照表會話的順序執行的,也就是說如果只有乙個事務,只要子表刪掉外來鍵表的項,外來鍵表就可以刪除,但是如果同時有多個事務,這就難說了,具體舉例子如下 首先我們建立表並建...
盡量不要使用可變引數
在某些情況下我們希望函式引數的個數可以根據實際需要來確定,所以c語言中就提供了一種長度不確定的引數,形如 c 語言也繼承了這一語言特性。在採用ansi標準形式時,引數個數可變的函式的原型是 typefuncname typepara1,typepara2,這種形式至少需要乙個普通的形式引數,後面的省...