国产探花免费观看_亚洲丰满少妇自慰呻吟_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變量

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 时尚| 百色市| 保亭| 乳山市| 义马市| 肇源县| 武强县| 沁阳市| 广河县| 新和县| 东乌珠穆沁旗| 独山县| 和静县| 仲巴县| 遂溪县| 双峰县| 五家渠市| 陇西县| 江门市| 肥乡县| 屯门区| 莆田市| 拜城县| 苗栗市| 莲花县| 天全县| 巴林左旗| 射洪县| 普格县| 广汉市| 平罗县| 陕西省| 南丹县| 德化县| 涞水县| 顺义区| 逊克县| 馆陶县| 龙井市| 凤凰县| 新巴尔虎左旗|