javascript中with語句的用法


JavaScript 有個 with 關鍵字, with 語句的原本用意是為逐級的對象訪問提供命名空間式的速寫方式。也就是在指定的代碼區域, 直接通過節點名稱調用對象。

我們已經知道,用變量的作用域和作用域鏈(即一個按順序檢索的對象列表)來進行變量名解析,而with 語句就是用於暫修改作用域鏈的,其語法為:

with(object)
statement

該語句可以有效地將object添加到作用域鏈的頭部,然后執行statement,再把作用域鏈恢復到原始狀態。

 

例如:

1 with(frames[1].document.forms[0]){
2     //此處直接訪問表單元素。例如:
3     name.value = ‘小小子’;
4     address.value = ‘http://www.xiaoxiaozi.com/’;
5     email.value =’yufulong@gmail.com’;
6 }

 

表單屬性名前的前綴——frames[1].document.forms[0] 就不用重復寫。

 

這個對象不過是作用域鏈的一個臨時部分,當JavaScript需要解析像 address這樣的標識符時就會自動搜索它。

 

但是with語句有個很大的缺陷:

使用with語句的JavaScript代碼很難優化,因此它的運算速度比不使用with語句的等價代碼要慢得多。

而且,在with語句中的函數定義和變量初始化可能會產生令人驚訝的、相抵觸的行為。(雖然作者沒有舉例,不過這話可夠嚇人的)。

因此我們避免使用with語句。 

所以應該避免使用with語句。

而對於with語句實現的語句簡化,我們完全可以使用變量來實現。

例如:

1 var form = frames[1].document.forms[0];
2 form.name.value = ‘小小子’;
3 form.address.value = ‘http://www.xiaoxiaozi.com/’;
4 form.email.value = ‘yufulong@gmail.com’;

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM