JScript中的'var'定义变量的作用域

 更新时间:2007年03月08日 00:00:00   作者:  
都不记得是什么时候看的JScript的语法教程了,里面说在声明变量时忽略var关键字是完全合法的。当时也因为觉得JavaScript是loosely-typed的语言,所以var可能真的就是个摆设。但是事实常常又证明想当然的结果是不可靠的。 
 看看下面这几个例子的结果就知道问题了: 
No.1  

[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]


No.2  

[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]


No.3 

[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]


这三个例子的执行结果分别是:  
复制代码 代码如下:

Results#region Results  
No.1  
0  
undefined  

No.2  
0  
1  

No.3  
0  
undefined  
#endregion  


     原来JavaScript的变量也是有作用域的,只是它非常的笼统,就分为全局变量和函数变量。在第二个例子中得到0和1,是因为所有的变量都是全局变量,而且那个语句块一共就定义了两个变量。而第一个第三的函数外全局变量,确实说明var关键字有没有都没有关系。而函数内的var关键字就很关键了,它说明第二个var01是函数内的变量,所以在初始化var01前输出自然就是'undefined'了。 

     那么函数里面是不是就屏蔽掉了全局的var01了呢?我们知道在C/C++可以使用::去访问全局变量,那么JavaScript可不可以呢?这里其实我们只要明白了全局变量到底是什么东西,就好弄了。原来全局变量都是动态添加到Window对象的实例window上的属性而以,所以我们只要在函数内用:document.write(window.var01);就可以取到其值1了。同时在这个上下文中,function内的this也是指向的window实例,我们也可以把引用写成:this.var01。 

    By the way, 重看JScript教程时,它说变量只能是[a-zA-Z_]+[a-zA-Z0-9_]*格式,可是'$'却也可以作为变量名字符,而且还可以用在开头,比如:$1234,更甚至于:$$$ 也是合法的变量名,faint。 

相关文章

  • 浅谈JSON.parse()和JSON.stringify()

    浅谈JSON.parse()和JSON.stringify()

    本文给大家简单描述了下JSON.parse()和JSON.stringify()的异同点,十分的实用,有需要的小伙伴可以参考下
    2015-07-07
  • JS实现图片上传多次上传同一张不生效的处理方法

    JS实现图片上传多次上传同一张不生效的处理方法

    这篇文章主要介绍了JS实现图片上传多次上传同一张不生效的处理方法,处理方法也很简单,只要在删除方法里置空input,具体实例代码大家参考下本文
    2018-08-08
  • JS常用加密编码与算法实例总结

    JS常用加密编码与算法实例总结

    这篇文章主要介绍了JS常用加密编码与算法,结合实例形式总结分析了javascript常见的utf8、base64编码及md5、md4、SHA1等算法实现方法,需要的朋友可以参考下
    2016-12-12
  • 使用JS实现在空白页上展示出一个有趣的时钟

    使用JS实现在空白页上展示出一个有趣的时钟

    在我们日常的网页浏览中,空白的页面往往会被视为一种无趣的事物,一片等待填充的空间,今天我们来学习一下如何使用JS在空白的网页上展示出一个有趣的时钟吧,感兴趣的小伙伴跟着小编一起来看看吧
    2024-04-04
  • 深入理解JavaScript系列(12) 变量对象(Variable Object)

    深入理解JavaScript系列(12) 变量对象(Variable Object)

    JavaScript编程的时候总避免不了声明函数和变量,以成功构建我们的系统,但是解释器是如何并且在什么地方去查找这些函数和变量呢
    2012-01-01
  • js图片向右一张张滚动效果实例代码

    js图片向右一张张滚动效果实例代码

    这篇文章主要介绍了js图片向右一张张滚动效果实例代码,有需要的朋友可以参考一下
    2013-11-11
  • javascript实现移动的模态框效果

    javascript实现移动的模态框效果

    这篇文章主要为大家详细介绍了javascript实现移动的模态框效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • JS生态系统加速模块解析赋能性能优化探索

    JS生态系统加速模块解析赋能性能优化探索

    这篇文章主要为大家介绍了JS生态系统加速模块解析赋能性能优化探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • javascript生成大小写字母

    javascript生成大小写字母

    本文给大家分享的是javascript生成大写小写字母的代码,十分的简单实用,主要用到了str.charCodeAt()和 String.fromCharCode()方法,有需要的小伙伴可以参考下。
    2015-07-07
  • JS防抖和节流实例解析

    JS防抖和节流实例解析

    这篇文章主要介绍了JS防抖和节流实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09

最新评论