初识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]

你可能感兴趣的:(初识eval())