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。 

相关文章

  • uniapp Android解决 APP菜单、按钮权限控制方法

    uniapp Android解决 APP菜单、按钮权限控制方法

    这篇文章主要介绍了uniapp Android解决 APP菜单、按钮权限控制方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • 微信小程序实现日历小功能

    微信小程序实现日历小功能

    这篇文章主要为大家详细介绍了微信小程序实现日历小功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • JavaScript基本数据类型及值类型和引用类型

    JavaScript基本数据类型及值类型和引用类型

    大家经常可以见到javascript中的一些数据类型,比如“undefined”、“boolean”、“string”等等,这篇文章就和大家一起来学习JavaScript基本数据类型及值类型和引用类型,有需要的童鞋参考下,本文写的不好地方,还望大家提出,共同学习进步
    2015-08-08
  • 微信小程序手机号码验证功能的实例代码

    微信小程序手机号码验证功能的实例代码

    这篇文章主要介绍了微信小程序手机号码验证功能的实例代码及微信小程序正则判断手机号的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08
  • js动态移动滚动条至底部示例代码

    js动态移动滚动条至底部示例代码

    这篇文章主要介绍了使用js动态移动滚动条至底部,需要的朋友可以参考下
    2014-04-04
  • javascript 文本框水印/占位符(watermark/placeholder)实现方法

    javascript 文本框水印/占位符(watermark/placeholder)实现方法

    html5为表单元素(type为text/password/search/url/telephone/email)新增了一个placeholder属性,为输入框提供一种提示
    2012-01-01
  • 最新版JavaScript中的箭头函数

    最新版JavaScript中的箭头函数

    ES6标准新增了一种新的函数,Arrow Function(箭头函数),箭头函数相当于匿名函数,并且简化了函数定义,本文重点给大家介绍JavaScript中的箭头函数,需要的朋友可以参考下
    2022-11-11
  • JS新包管理工具yarn和npm的对比与使用入门

    JS新包管理工具yarn和npm的对比与使用入门

    在2016年10月11日facebook 公开了新的javascript包管理工具 yarn, 用来替代目前被广泛使用的npm(nodejs 自带的包管理工具),本文将介绍yarn工具带来的优点和使用入门,以及对比npm解决了什么问题,带来哪些便利。有需要的朋友们下面来一起看看吧。
    2016-12-12
  • 基于JavaScript实现div层跟随滚动条滑动

    基于JavaScript实现div层跟随滚动条滑动

    项目需求是这样的:在一个页面放2个悬浮框,悬浮框随页面的上下滚动有上下波动的效果,最终固定在同一位置,下面通过本文给大家分享基于JavaScript实现div层跟随滚动条滑动的相关资料,对js div跟随滚动条滑动相关知识感兴趣的朋友一起学习吧
    2016-01-01
  • JS造成内存泄漏的几种情况实例分析

    JS造成内存泄漏的几种情况实例分析

    这篇文章主要介绍了JS造成内存泄漏的几种情况,结合实例形式分析了内存泄漏的原理以及JS造成内存泄漏的几种常见情况,需要的朋友可以参考下
    2020-03-03

最新评论