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

首頁 > 編程 > JavaScript > 正文

JavaScript中eval函數的問題

2019-11-20 10:39:16
字體:
來源:轉載
供稿:網友

今天看代碼,遇到一個eval函數的問題,到現在翻了很多博文,還是不是很懂eval函數,有個一直沒法理解的代碼如下:

/*var start = [] , end = [] , timings = [];*/function f(){ //模擬程序執行時間 var sum = 0; for(var i =0 ;i < 100000; i++){  sum = sum/(i+1); }}function repeat(n, action){ for(var i=0; i<n ;i++){  eval(action); // eval函數 }}function benchmark(){ var start = []  , end = []  , timings = []; repeat(100, "start.push(new Date().getTime());f();end.push(new Date().getTime())"); for (var i =0; i< start.length; i++){  timings[i] = end[i] - start[i]; } return timings;}benchmark(); //結果為:[]//如果我把上面的benchmark中的局部變量移到全局就一切正常.

如果我把上面的benchmark中的局部變量移到全局就一切正常.

這里的eval函數為何會產生這種效果?難道相當于將eval函數別名化了?

直接調用eval()時,它總是在調用它的上下文作用域內執行,也就是說他可以訪問到repeat函數中的變量,訪問不到benchmark函數中的變量,但是在函數中是能訪問到全局作用域的變量的,所以你把start那些變量設置成全局變量后,又可以返回想要的結果了。

function repeat(n, action){ for(var i=0; i<n ;i++){  start.push(new Date().getTime());f();end.push(new Date().getTime()); // eval函數 }}

repeat中訪問不到start,end變量

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临澧县| 楚雄市| 苍溪县| 澜沧| 陈巴尔虎旗| 萍乡市| 新泰市| 定南县| 怀化市| 武冈市| 佛冈县| 迁西县| 舞钢市| 武清区| 新昌县| 寿宁县| 普安县| 肥乡县| 西安市| 兴海县| 灵台县| 民丰县| 丰宁| 增城市| 平舆县| 镇江市| 尉犁县| 寿宁县| 八宿县| 醴陵市| 合作市| 汽车| 福鼎市| 永顺县| 金乡县| 平武县| 云和县| 葵青区| 北流市| 罗源县| 凯里市|