JS中Var关键字

来源:互联网 发布:数据科学r语言实践 编辑:程序博客网 时间:2024/03/29 23:07

JS中Var关键字:

1.

我们都知道 JavaScript 中的var关键字是用来申明变量的,但是如果不用这个关键字而直接写出变量名,然后赋值给它,JavaScript 也并不会报错,它会自动申明这个变量。难道说 JavaScript 中的var是个多余的东西吗?显然不是!

请看下面这段代码:

?

1

2

3

4

5

6

7

8

str1 = 'Hello JavaScript!';

function fun1() {

 str1 = 'Hello Java!';

}

fun1();

alert(str1);

 

// 弹出 Hello Java!

可以看到,在函数 fun1被调用后,str1的值在函数内被改变了

再将上面的代码稍作修改:

?

1

2

3

4

5

6

7

8

str1 = 'Hello JavaScript!';

function fun1() {

 var str1 = 'Hello Java!';

}

fun1();

alert(str1);

 

// 弹出 Hello JavaScript!

看到没有,str1 的值并没有被函数 fun1改变

显然,var关键字影响了变量的作用域

函数外部:变量不管是否用了var申明,都是全局变量

函数内部:变量如果没有使用var关键字申明,那它就是全局变量,只有用var关键字申明了,才是局部变量。
结论

#为了避免潜在的风险,务必使用var关键字来申明变量

 

 

 

2.

1.在函数作用域内var定义的变量是局部变量,不加var定义的就成了全局变量。
使用var定义

var a = 'hello World';

function bb(){

    var a = 'helloBill';

   console.log(a);  

}

bb()   // 'hello Bill'

console.log(a);    //'hello world'

不使用var定义

var e = 'hello world';

function cc(){

    e = 'hello Bill';

   console.log(e);    // 'hello Bill'

}

cc()   // 'hello Bill'

console.log(e)     //'hello Bill'

2.在全局作用域下,使用var定义的变量不可以delete,没有var定义的变量可以delete.也就说明隐含全局变量严格来说不是真正的变量,而是全局对象的属性,因为属性可以通过delete删除,而变量不可以。

3.使用var定义变量还会提升变量声明,即
使用var定义:

function hh(){

    console.log(a);

    var a = 'helloworld';

}

hh()    //undefined

不使用var定义:

function hh(){

    console.log(a);

    a = 'hello world';

}

hh()    // 'a is notdefined'

这就是使用var定义的变量的声明提前。

4.ES5'usestrict'模式下,如果变量没有使用var定义,就会报错

 

0 0
原创粉丝点击