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)