js中怎么定义全局变量

JavaScript06

js中怎么定义全局变量,第1张

JavaScript声明全局变量三种方式的异同

JavaScript中声明变量格式:var(关键字)+变量名(标识符)。

方式1

var test

var test = 5

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

方式2

test = 5

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

方式3

window.test

window.test = 5

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

window.jQuery = window.$ = jQuery

在js中定义成全局变量的方式有以下几种:第一种,不对该变量进行var声明,则默认是全局变量,不过不推荐,容易出错。第二种,通过window.变量名方式进行申明,这种方式没有位置限制。如function fa(){ a='2'//这里a就是全局变量 window.k=2//这里k也是全局变量}

一、js全局变量和局部变量

1、全局变量和它的作用域

全局变量是指在程序开头的说明部分定义和说明的量。它的作用域分为两种情况:

    1)在全局变量和局部变量不同名时,其作用域是整个程序。

    2)在全局变量和局部变量同名时,全局变量的作用域不包含同名局部变量的作用域。

2、局部变量和它的作用域

凡是在子程序内部使用的变量,必须在子程序中加入说明。这种在子程序内部说明的变量称为局部变量。局部变量的作用域是其所在的子程序。形式参数也只能在子程序中有效。因此也属于局部变量。局部变量的作用域分为两种情况:

    1)当外层过程序的局部变量名和嵌套过程中的局部变量不同名时,外层过程的局部变量作用域包含嵌套过琛。

    2)当外层过程的局部变量名和嵌套过程内的局部变量名同名时,外层局部变量名的作用域不包含此过程。

二、js定义变量需要注意以下内容:

1、Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{ }来划分);切记,是function块,而for、while、if块并不是作用域的划分标准

2、Javascript在执行前会对整个脚本文件的声明部分做完整分析(包括局部变量),从而确定实变量的作用域

3、当全局变量跟局部变量重名时,局部变量的scope会覆盖掉全局变量的scope,当离开局部变量的scope后,又重回到全局变量的scope

三、js定义变量时,var和this的区别

1、var的规则是: 使用var声明变量就是内部变量, 否则就是先调用全局变量, 不管多少层函数

2、this的规则是: method函数里的this永远指向自身, 普通函数的this永远指向DOMWindow

附件为var和this区别的示例代码!