初识eval()

今天看到一个关于自执行函数和异步调用的问题

for(var i = 0; i<5; i++){
  setTimeOut(function(i){
      console.log(i);
  }(i),i * 1000);
}

//0,1,2,3,4 同时输出

解释:
首先了解setTimeOut。setTimeOut第一个参数只接受Function和String类型,而如果你传入的显示不是Function类型,解析器会把你传入的参数扔进eval()中执行。回到本题,因为传入的是立即执行函数,所以会把这个立即执行函数的运行结果(return值)当作代码扔到eval()中执行。

eval()

eval()函数会将传入的字符串当作JavaScript代码进行执行

eval(string)

  • 参数 String
    一个表示 JavaScript 表达式、语句或一系列语句的字符串。表达式可以包含变量与已存在对象的属性。
  • 返回值
    返回字符串中代码的返回值。如果返回值为空,则返回 [undefined]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容