Javascript的变量范围,全局变量和局部变量 一个Var,一个没有用Var,或直接加在了wndow

本文探讨JavaScript中变量的作用域,包括全局变量和局部变量的声明方式。通过对比var声明、隐式声明以及匿名函数中附加到window对象的变量,解析它们在不同情况下的行为,如for in window、delete操作以及with语句下的表现。强调了解变量范围对于理解和调试JavaScript代码的重要性。
摘要由CSDN通过智能技术生成

   对于开源世界,我是很想投入,也很想去做一些自己能做的事情,可惜只怪自己学术不精,往往进去都是找一个跟自己相关的东西,而从来没有什么贡献。不知道什么时候有了从源码中找答案的这个想法,前面的博客中说过,程序中的问题,可以通过调试,跟踪,模拟等手段找原因,其实还可以从源码中获取相关答案,请相信:源码中可以找到问题的本质的。

  

在Java这样的面向对象语言中,变量的作用域是很关键的,不仅仅是这些面向对象的语言,其实所有的语言都一样吧?今天我不谈变量的类型,也不谈变量的private,public等访问,就谈谈作用域。C#,Java变量按照作用范围大体上分为属于类的,也就是用static声明的,然后就是成员变量以及方法变量,成员变量是整个对象都可以访问的,而方法变量是只有该方法可以访问。

那么javascript呢?如果看了JQuery的源码,可以看到JQuery的所有东西都在一个自执行的匿名函数中,在这个匿名函数中传递了一个windows全局对象,而在这个windows对象中附加上了JQuery和$这两个,这两个也就是我们访问JQuery的入口。

但是清楚的话可以看到源码一开始就有一个Var JQuery,而给windows附加的JQuery对象是在最后,一个Var,一个没有用Var,而是直接加在了wndows之后作为全局变量。这个其实就是Javascript的变量范围,也就是全局变量和局部变量,因为JQuery在我的心中根本就不是面向对象的语言,没有类,接口,继承等,但是它都可以模拟出来,我真是不懂。

变量变量声明是一门语言最基本的概念,初学者都会很快掌握。JavaScript中声明变量也是如此,很简单var(关键字)+变量名(标识符)。

方式1

1
2
var  test;
var  test = 5;

需注意的是该句不能包含在function内,否则是局部变量。这是第一种方式声明全局变量。

 

方式2

1
test = 5;

没有使用var,直接给标识符test赋值,这样会隐式的声明了全局变量test。即使该语句是在一个function内,当该function被执行后test变成了全局变量。

 

方式3

1
2
window.test;
window.test = 5;

这种方式经常被用到一个匿名函数执行后将一些函数公开到全局。 如JQuery1.5中最末一句

1
window.jQuery = window.$ = jQuery;

 

如果只是使用变量test,那么三种方式将没有什么区别。比如:alert(test) 都将显示5。但三种方式在某些情况下还是有区别的。分别按以上三种方式声明三个变量a1,a2,a3。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值