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?
相关分类