js如何在方法内部定义全局变量

JavaScript029

js如何在方法内部定义全局变量,第1张

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

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

先看浏览器报错(去控制台): ReferenceError: Can't find variable: startTime global code — xxx.html:1 说明无法找到startTime函数。因为你把它定义在了xianshi()内部,只有xianshi()内部才能调用startTime。代码执行速度很快,所以当setTimeout在500ms之后试图执行"startTime()"的时候,xianshi早已被执行完毕,运行环境已经不在xianshi里了。setTimeout是window的函数(window.setTimeout),这时候js的作用环境是全局(window),而它无法在全局范围内找到startTime,所以报错。 方法一:把startTime定义为全局函数: function startTime(){     // ...             document.getElementById("shijian").innerHTML=h+":"+m+":"+s    t=setTimeout('startTime()',500)} function xianshi() {     // ...     startTime()} 方法二:传入一个函数给setTimeout(js的闭包)  t = setTimeout(function(){startTime()}, 500)