提及js中的with關鍵字,不少小夥伴們的第一印象可能就是with關鍵字的做用在於改變做用域,而後最關鍵的一點是不推薦使用with關鍵字。聽到不推薦with關鍵字後,咱們不少人都會忽略掉with關鍵字,認爲不要去管它用它就能夠了, 但仍是會常常碰到。javascript
1、基本說明java
在js高級程序設計中是這樣描述with關鍵字的:with語句的做用是將代碼的做用域設置到一個特定的做用域中,基本語法以下:express
with (expression) statement;
使用with關鍵字的目的是爲了簡化屢次編寫訪問同一對象的工做,好比下面的例子:性能
var qs = location.search.substring(1); var hostName = location.hostname; var url = location.href;
這幾行代碼都是訪問location對象中的屬性,若是使用with關鍵字的話,能夠簡化代碼以下:url
with (location){ var qs = search.substring(1); var hostName = hostname; var url = href; }
在這段代碼中,使用了with語句關聯了location對象,這就覺得着在with代碼塊內部,每一個變量首先被認爲是一個局部變量,若是局部變量與location對象的某個屬性同名,則這個局部變量會指向location對象屬性。
注意:在嚴格模式下不能使用with語句。設計
2、with關鍵字的弊端調試
前面的基本說明中,咱們能夠看到with的做用之一是簡化代碼。可是爲何不推薦使用呢?下面咱們來講說with的缺點:code
一、性能問題
二、語義不明,調試困難對象
..ip