JS中Var关键字

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值