萬惡WITH為首之Javascript
来源:互联网 发布:unity3d真实地形制作 编辑:程序博客网 时间:2024/05/17 13:42
古語云:"萬惡淫為首"。淫者,奢者,不節制亦或勝也。在Javascript中with可不是一個好東西,很難用好,而且會引發一些難以捉摸的臭蟲。我相信,你和我有一樣的經歷,為了一個tricky bug花了大量的時間,到最後居然是...居然是一個小小的錯誤。恩,不用奇怪,with有時候就是這樣。先來介紹一下with。
用在with塊中的變數限制了其查找範圍(scope chain,具體可以參考Javascript高級編程中的文章),但如果傳入的參數正好和with所包含的變數中含有的屬性同名的話,則會發生scope 查找中斷,返回的就是被with包含的變數的屬性。不清楚?看代碼說話。
function Add(x,y) { return x+y;}
非常簡單,傳入Add(1,2)的結果就是3。再來看看with:
var point = new Object();point.x = 0;point.y = 0;function Add(x,y) { with(point) { return x + y; }}
當傳入Add(1,2)的時候結果多少?Oops,結果為0!x,y這兩個變數是point中的屬性,被複寫了,返回當然不是3。然,做一些簡單的修改再來看看。
function Add(x1,y1) { with(point) { return x1 + y1; }}
point中沒有x1,y1兩個屬性,所以函數的scope chain查詢會往上層查找,也就是全局空間x1,y1。最後的結果也就是3,當寫下Add(1,2)的時候。
OK,with真是個壞傢伙,絕對不要用,不然你會被上司罵得狗血淋頭。我就這樣罵過別人。不要用with,trust me.
0 0
- 萬惡WITH為首之Javascript
- javascript之with
- javascript语法之with语句
- JavaScript复习之--JavaScript控制流程-跳转语句,with语句
- Javascript with
- javascript之对象访问语句(for...in循环,with语句)
- Hack With javascript
- Using FCKeditor with JavaScript
- Javascript 中的 with 用法
- javascript with()方法
- MD5 with Javascript
- javascript with用法(转)
- javascript中的with
- javascript with 的用法
- javascript with 用法
- Permutation algorithm with JavaScript
- Javascript中的with
- Get familiar with JavaScript
- FreeRTOS 源代码的编程标准与命名约定
- hdu 2955 Robberies
- Lua Metatable
- ASP.NET基础(一)
- 统一资源管理与调度平台(系统)介绍
- 萬惡WITH為首之Javascript
- Ext JS 4 类体系(Class System)
- pat advanced 1071 Speech Patterns
- 用sed与awk整理文件名
- tornado实现高性能无阻塞udp通信(1)——server端实现
- #小脚本#把海词dict.cn的生词变成vce格式的测试题目
- HDU1172 猜数字
- spring容器原理之浅析
- LeetCode OJ:Multiply Strings