为了账号安全,请及时绑定邮箱和手机立即绑定

setInterval执行环境的问题,求高手解答!

setInterval执行环境的问题,求高手解答!

winner4265975 2017-03-19 14:51:43
window.onload=function(){  function fun(str){   alert(str)  }  setInterval("fun('hello world')",3000)  }这样肯定是执行不了的,因为setInterval第一个参数在这里加双引号意思差不多就是可执行代码,执行环境就是window,不是在onload方法下,所以fun是not defined。改成这样就好了window.onload=function(){  function fun(str){   alert(str)  }  setInterval(fun,3000,'hello world'); }这里fun没加双引号,它就代表函数,所以运行ok,拿出window.onload外就不行了,这是因为js的作用域链内部访问外部(其上层),外部不能访问内部!但是window.onload=function(){  function fun(str){   alert(str)  }  eval("fun('hello world')") }但是这个就能执行,我这回有点不明白了,同样参数加引号都是可执行代码,为什么setInterval和eva都是内置函数会有这样的差别?为什么此时setInterval的执行环境非要强制为window?
查看完整描述

1 回答

  • 1 回答
  • 1 关注
  • 1662 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信