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?
添加回答
举报
0/150
提交
取消