javascript之with

提及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

相關文章
相關標籤/搜索