JavaScript中变量的作用域非常奇特,如果不仔细研究,一定会被它搞晕
用几个简单的例字说明一下:
1、定义全局变量
var a = 1;
或 window.a=1;
2、同名的变量,局部变量的优先级高于全局变量
var a = 1;
function main() {
alert(a); //弹出 'undefined'
var a = 2;
alert(a); //弹出 2
}
也许你会觉得奇怪,第一个应该会弹出“1”啊,上面不是定义了一个全局的a吗?是的,虽然定义了全局的a,但在main()函数体内也定义了一个同名的a,这时在main()中调用的a指向的都是函数体内的a,其它的a都被隐藏,即然这样,那第一次输出a的值undefined就不足为奇了。
3、js中变量的作用域没有块级约束
function main(){
for(var i=0;i<100;i++){
var a=3;
}
alert(a); //弹出 "3"
alert(i); //弹出 "100"
}
其它语言的变量就有块级约束,在for循环体内定义的变量,在循环体外是不能调用的,可见JS不是一般的灵活。
4、没有用var定义的变量都是全局变量
function main(){
a = 1;
}
alert(a); //弹出 "1"
//即然是全局变量,那
alert(window.a); //弹出 "1"
分享到:
相关推荐
javascript变量作用域 希望对大家有帮助
js变量作用域
理解JavaScript变量作用域.pdf 本人还有几十本经典javascript书籍以及无数javascript资料,要的加我qq 568094881,本人网址:www.maoshanhai.com
一道关于JavaScript变量作用域的面试题_.docx
当然我们知道全局变量是全局对象的属性,而局部变量是一个特殊的调用对象的属性,那么我们就可以再次关注一下变量作用域的表示法,对它进行再定义。有关作用域的新描述给理解多环境下的变量提供了一种有用的方法,它...
// 全局变量: 在script之间或者一个独立的js文件中,在全局作用域中定义的变量 全局变量。在任何位置都可以访问 // 全局作用域:在script之间或者一个独立的js文件 script之间或者一个独立的js文件里的内容区域...
Js中的变量作用域问题: 1、没有块级作用域。Js中的变量作用域不是以{}为界的,不像C/C++/Java。 如: 代码如下: if(true){ var name = “qqyumidi”; } alert(name); // 结果:qqyumidi Js会...
本文不打算深入讲解JavaScript变量作用域问题(其实本人也没有能力能把这一话题讲的深入些),也不讲“闭包”话题,本文只讨论最实用的JavaScript作用域知识点。 一、JavaScript作用域分类 JavaScript就两种作用域:...
本文实例讲述了JavaScript变量作用域及内存问题。分享给大家供大家参考,具体如下: 学习要点: 1.变量及作用域 2.内存问题 JavaScript的变量与其他语言的变量有很大区别。JavaScript变量是松散型的(不强制类型)...
主要为大家介绍了一道关于JavaScript变量作用域的面试题,如何解决这道面试题,感兴趣的小伙伴们可以参考一下
javascript变量作用域在不同浏览器的实现处理代码
主要是对Javascript变量作用域进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助
基于JavaScript的变量作用域的辨析.pdf
主要介绍了JavaScript变量作用域,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
刚看了一篇文章对js作用域的理解又会上升到一个新的台阶,javascript里变量作用域是个经常让人头痛抓狂的问题,接下来对经常遇到又容易出错的情况进行了简单总结,感兴趣的各位可以参考下哈
JavaScript程序设计变量作用域共4页.pdf.zip