国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

JS中的with關鍵字

2024-04-27 15:12:23
字體:
來源:轉載
供稿:網友

之前在看書時也有看到過with關鍵字,可是書上說不推薦使用,就沒有深入了解了,所以對它幾乎沒有啥印象,今天看書時又看到了,心里想著“存在即合理“,所以就深入的學習了一下。


一. with語句的作用:

with語句能夠針對對象來創建程序塊,設置代碼在特定對象中的作用域。

二. 語句的格式:

with(exPRession) statement;

三. 使用with可以簡化代碼: (1)優化前的代碼:

function foo(){ var obj = { name:"luwenjing", age:22, sex:'女' }; console.info(obj.name+" "+obj.age+" "+obj.sex); } foo();

(2)優化后的代碼:

function foo(){ var obj = { name:"luwenjing", age:22, sex:'女' }; with(obj){ console.info(name+" "+age+" "+sex); } } foo();

當代碼中需要多次使用同一個對象時,就可以用with語句,簡化代碼。

四. 設置代碼在特定對象中的作用域:

var obj = { x:10, foo: function() { with(this){ x = 20; y = 30; console.info(y); } } } obj.foo(); //30 console.info(obj.x); //20 console.info(obj.y); //undefined

在上面的代碼中,對象obj只有x和foo另個屬性,由于y屬性并不是obj的直接屬性,它是在foo函數中定義的,相當于臨時變量,調用obj.y就是undefined,只有with塊執行y才被定義賦值。

五. with的弊端: (1)性能問題:比如在上面的代碼中,obj有個x屬性,with中也出現x,js引擎會不明確x是臨時變量,還是obj的屬性,就會放棄對代碼的優化,從而影響代碼的執行效率。 (2)語義不明,容易出現bug:

function foo(obj) { with (obj) { a = 2; } } var o1 = { a: 3 }; var o2 = { b: 3 }; foo(o1); console.info(o1.a); // 2 foo(o2); console.info(a); // 2

在上面的代碼中,出現的結果就和預測結果不一致,本想著打印a的結果應該是undefined的,可是卻是2,這是因為在o2中沒有a屬性,但是執行了with語句,a被修改就成了全局變量,就出錯了。


綜上:with語句在代碼中要避免使用,盡管它會簡化代碼,可是會影響執行效率,更容易出錯,所以這篇博客的作用是什么呢?告訴我在編碼中避免用with關鍵字,嗯,就是這。。。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 康乐县| 新蔡县| 刚察县| 新竹县| 封开县| 黑龙江省| 柳河县| 通榆县| 顺平县| 孝昌县| 镇坪县| 青龙| 巴彦淖尔市| 宜宾市| 昌都县| 建平县| 虹口区| 长阳| 阳春市| 义乌市| 阿勒泰市| 镇坪县| 军事| 汉川市| 温宿县| 老河口市| 托克托县| 威宁| 甘肃省| 兴义市| 清镇市| 平果县| 师宗县| 沙坪坝区| 淳安县| 石家庄市| 扶风县| 大庆市| 石台县| 长宁县| 汉寿县|