首页 > js关于全局变量的问题?

js关于全局变量的问题?

为什么,我把变量定义到匿名函数的外边会报错呢?


function里面那那里是全局变量?你写成window.title = xxx也行啊

要不就直接在 fucntion 外面 var 一个


http://.com/a/1190000003013952


不是函数外,titles 在 window.onload的回调函数里


你这是函数中,不是函数外啊,准确的说,你在函数里声明了变量,所以外部没有函数中的作用域,所以是访问不到的。。。


window.onload的值是一个函数,而titles是这个函数中的变量,并不是全局变量。所以curTab()中不能访问,如果想在curTab()中访问,可以将function curTab(){} 放到window.onload里,即

window.onload = function (){
    var titles = ......
    // .....


    function curTab() {
        // do something
    }
}

onload本身也形成了一个内部作用域


相当于
function onload(){
var a=0;
dosome();
}
function dosome(){
alert(a)
//a is not defined
}
onload();


你要调用的变量也是在函数中定义的啊。
函数本身就能创建局部作用域,你这怎么调?


你这不是全局变量,在function里定义的。怎么能叫全局呢?想想


你用$()包裹的就是jquery对象了,jquery对象没有getElementsByTagName方法
如果在jquery对象上使用原生js:

$('#notes-tit').get(0).getElementsByTagName('tagName');

当然直接用jquery更好咯:

$('#notes-tit li');

onload指向一个匿名函数,你在匿名函数定义了titles变量,这个变量的作用域就这个函数内部,在函数外是没有办法访问这个变量的。
js中,只有两种作用域 全局的和函数内部,或者说局部。
通过作用域链,局部的函数可以访问外层函数中定义的变量(或者说活动对象),外层的又可以访问再外层的,直到全局。


window.titles = xxx;
...
for(var i = 0, i < window.titles.length; i++) {}

js变量的查询遵循的是域,首先会在包裹曾的 { 。。。 } 中找变量,如果没有的话会继续向上层找查找

【热门文章】
【热门文章】