国产探花免费观看_亚洲丰满少妇自慰呻吟_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關鍵字,嗯,就是這。。。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 轮台县| 邵阳县| 许昌市| 道孚县| 新兴县| 兴化市| 平泉县| 金湖县| 拉萨市| 广宗县| 阳信县| 乌拉特中旗| 来凤县| 宾川县| 青河县| 石棉县| 青铜峡市| 邢台县| 佛山市| 石楼县| 罗甸县| 即墨市| 苏州市| 阳原县| 涡阳县| 南丹县| 格尔木市| 游戏| 贵南县| 库尔勒市| 疏附县| 普兰县| 文昌市| 额尔古纳市| 福安市| 都昌县| 大关县| 赤峰市| 健康| 晋中市| 玉田县|