可以用()嗎?
回答
您所連結的MDN說:Using with is not recommended
...
with
是做麪條代碼爲午餐的好方法。
你可能會喜歡它,但那些需要調試它的人會詛咒你。
javascript
有一些非常奇怪的操作符,如逗號運算符(,
)。
你能理解下面的代碼是做什麼的嗎?
var a = "a";
var b = "b";
a = [b][b = a,0];
那麼它交換a和b ...你不明白,
,從而將需要保持你的with
代碼的人。不要使用黑客,黑客在charades遊戲中很酷,而不是真正的代碼。
什麼?o.O什麼'a = [b] [b = a,0];'做什麼? – 2012-03-25 21:14:22
我不明白...'[b] [b = a,0]'wtf ...是嗎? – 2012-03-25 21:18:11
@Derek。檢查更新的小提琴。它交換'a'和'b'。現在你明白我爲什麼了嗎?黑客很酷,但不是真正的代碼! – gdoron 2012-03-25 21:18:48
只要您理解它,就可以使用JavaScript的任何功能,。
例如,使用with
您可以訪問對象的現有屬性,但無法創建新的。
觀察:
var obj = {a:1,b:2};
with(obj) {
a = 3;
c = 5;
}
// obj is now {a:3,b:2}, and there is a global variable c with the value 5
它可以是縮短的代碼,如有用:
with(elem.parentNode.children[elem.parentNode.children.length-3].lastChild.style) {
backgroundColor = "red";
color = "white";
fontWeight = "bold";
}
由於style
對象的屬性已經存在。
我希望這個解釋夠清楚。
在他的優秀著作 「的Javascript:好的部分」,道格拉斯克羅克福德列出了 「與聲明」 附錄B:壞的部件。
他說:「不幸的是,它的結果有時是不可預測的,所以應該避免它」。
他繼續舉例說明,其中with中的賦值將根據對象是否已定義而對不同的變量進行操作。
請參閱With statement considered harmful(但不如本書中的解釋詳細)。
- 1. 用jwt可以嗎?
- 2. 可以驗證用戶嗎?他們可以有用戶名嗎?
- 3. 可以使用LISTAGG嗎?
- 4. 使用__doPostBack()可以嗎?
- 5. mclapply可以使用CompressedRleList嗎?
- 6. 可以調用[super loadView]嗎?
- 7. Magento可以禁用Cookie嗎?
- 8. SVD可以使用Skydrive嗎?
- 9. mod_callcenter可以使用mod_sms嗎?
- 10. PhysFS可以使用ifstreams嗎?
- 11. SAP可以使用Python嗎?
- 12. Dropbox可以使用它嗎?
- 13. 可以調用printf()塊嗎?
- 14. mootools.js可以使用microsoftajax.js嗎?
- 15. Pixate可以使用UIAlertView嗎?
- 16. 可以使用JAXX嗎?
- 17. 我可以用藍牙嗎?
- 18. 我可以不用KVO嗎?
- 19. phantomjs可以使用node.js嗎?
- 20. Arcgis可以用於android嗎?
- 21. 使用Ruby 1.8.5可以嗎?
- 22. VS2010可以使用VisualStudio.com嗎?
- 23. random_shuffle使用rand()可以嗎?
- 24. 可以使用glob.has_magic嗎?
- 25. Node.js可以調用Chrome嗎?
- 26. DAO可以調用DAO嗎?
- 27. 可以使用Cassandra Collections嗎?
- 28. 我可以使用NSPredicate嗎?
- 29. VS2013可以使用Cinder嗎?
- 30. VRaptor可以使用CDI嗎?
定義「好」。如果你的意思是「推薦」,那麼就沒有(至少有一個好的來源),並且你引用了證據。如果你的意思是「它會工作」,那麼也許,這取決於你是否使用嚴格模式。 – Quentin 2012-03-25 21:05:57
這個問題不值得投票 – Ben 2012-03-25 21:07:25
BTW HTML 4或5是不相關的。 Javascript/ECMAScript不是HTML的一部分。 – 2012-03-25 21:21:52