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

首頁 > 語言 > JavaScript > 正文

JavaScript的with 語句的使用方法

2024-05-06 15:45:47
字體:
來源:轉載
供稿:網友

我們應該對Java都是很熟悉的,其實它的簡單性和可讀性得到了保證,下面就讓錯新技術頻道小編帶大家一起來學習JavaScript的with 語句的使用方法吧,希望對你有幫助。

如:

?

apple.banana.candy.dog.egg.fog.god.huh.index = 0;
doSomething(apple.banana.candy.dog.egg.fog.god.huh.index);


利用 with 語句, 可以寫為以下代碼.

?

?

?


with(apple.banana.candy.dog.egg.fog.god.huh) {
c = 0;
doSomething(index);
}


看起來很美妙, 卻存在致命的缺陷. 下面我們來進行一些小測試吧.

1. 在 with 語句內部通過內部變量修改數值

?

?

?


var root = {
branch: {
node: 1
}
};

with(root.branch) {
node = 0;
// 顯示 0, 正確!
alert(node);
}
// 顯示 0, 正確!
alert(root.branch.node);


2. 在 with 語句內部通過對象節點修改數值

?

?

?


var root = {
branch: {
node: 1
}
};

with(root.branch) {
root.branch.node = 0;
// 顯示 0, 正確!
alert(node);
}
// 顯示 0, 正確!
alert(root.branch.node);


經過測試 1 和測試 2, 乍看沒什么問題, 但是... 請看測試 3.

3. 在 with 語句內部通過對象父節點修改數值

?

?

?


var root = {
branch: {
node: 1
}
};

with(root.branch) {
root.branch = {
node: 0
};
// 顯示 1, 錯誤!
alert(node);
}
// 顯示 0, 正確!
alert(root.branch.node);


由上面的測試 3 可知, with 語句內部的節點父節點修改后, 不會同步到節點本身. 也就是說, 不能保證內外數值的一致性. 這是可能成為項目里面隱藏性很高的 bug.
那我們該怎么辦呢? 接受那很長的一串逐級訪問, 還是另有他法?

方法是有的. 我們可以通過別名引用父節點的方式來調用節點對象, 如:

?

?

?


var root = {
branch: {
node: 1
}
};

var quote = root.branch;
quote.node = 0;
// 顯示 0, 正確!
alert(root.branch.node);

上文是錯新技術頻道小編帶給大家的JavaScript的with 語句的使用方法,我相信很少有人會使用WITH語句,很多人不會知道這個功能,其實有都很好我們根本用不上它。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 迭部县| 双牌县| 长丰县| 平原县| 綦江县| 邓州市| 马鞍山市| 博湖县| 林周县| 安徽省| 元阳县| 绥德县| 南澳县| 湖口县| 黑河市| 枣强县| 晴隆县| 公安县| 高清| 巴林右旗| 都匀市| 岳普湖县| 海林市| 溆浦县| 察隅县| 墨竹工卡县| 浦县| 湘潭市| 仁化县| 永州市| 孟村| 镇远县| 凤台县| 凤庆县| 恩施市| 苗栗市| 开鲁县| 理塘县| 鲁甸县| 华亭县| 平度市|