js中如何定义全局变量?

JavaScript015

js中如何定义全局变量?,第1张

JavaScript声明全局变量三种方式的异同\x0d\x0a\x0d\x0aJavaScript中声明变量格式:var(关键字)+变量名(标识符)。\x0d\x0a方式1\x0d\x0avar test\x0d\x0avar test = 5\x0d\x0a\x0d\x0a需注意的是该句不能包含在function内,否则是局部变量。这是第一种方式声明全局变量。\x0d\x0a \x0d\x0a方式2\x0d\x0atest = 5\x0d\x0a\x0d\x0a没有使用var,直接给标识符test赋值,这样会隐式的声明了全局变量test。即使该语句是在一个function内,当该function被执行后test变成了全局变量。\x0d\x0a \x0d\x0a方式3\x0d\x0awindow.test\x0d\x0awindow.test = 5\x0d\x0a\x0d\x0a这种方式经常被用到一个匿名函数执行后将一些函数公开到全局。 如JQuery1.5中最末一句\x0d\x0awindow.jQuery = window.$ = jQuery

获取控件对象值,在调用的时候一个需要转成Jquery对象,一个不需要,操作方法如下:

1、首先在非函数内使用var或let声明的变量拥有全局的作用域,是全局变量。

2、在函数内使用var或let声明的变量是局部变量,只能在函数内部使用。

3、let声明的变量有块作用域的概念,而var声明的变量没有块作用域的概念,在块作用域外也可以使用。

4、let和var在重新声明变量时,有所不同。在块中使用var重新声明变量,在块外的变量也会被重新定义;在块中使用let重新声明变量,在块外的变量不会被重新定义。

5、在同一个作用域下,使用let重新声明一个已经使用var声明的变量是不允许的,但var是可以重复声明变量的。

你要了解一个词"Hoisting"

声明语句会被自动提升到所属作用域顶端.这是一种默认行为.

比如:

red = 100

var red //这一句会被自动提升到作用域的顶端.

console.log(red)

// 由于默认提升的行为,以上代码与以下代码等同

var red

red = 100

console.log(red)

需要注意的是,默认仅提升声明,而不是初始化(赋值). 比如:

/** e.g.1 */

console.log(x) //会报错,提示not defined

/** e.g.2 */

console.log(x) //不会报错,因为var自动提升到了当前作用域的顶部

var x = 456

// 相当于如下代码

var x //仅声明被提升

console.log(x)

x = 456 //初始化(赋值)不被提升. // 还是举例

/** e.g.3 */

console.log(x)

var x = 1

function f() {

    console.log(x)

    var x = 2

    console.log(x)

}

f()

console.log(x)

//以上代码可以类比为:

var x

console.log(x)

x = 1

function f() {

    var x

    console.log(x)

    x = 2

    console.log(x)

}

f()

console.log(x)

//所以结果为undefined,undefined,2,1