JavaScript 中定义变量时有无 var 声明的区别

前段时间回答了一个关于定义变量时使用关键字 var 与否的区别,总结回顾一下。

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

使用 var 定义:

var a = 'hello World';  
function bb(){  
 var a = 'hello Bill';  
 console.log(a);    
}  
bb()      //'hello Bill'  
console.log(a);  //'hello world'  

不使用 var 定义:

var a = 'hello World';  
function bb(){  
 a = 'hello Bill';  
 console.log(a);    
}  
bb()      //'hello Bill'  
console.log(a);  //'hello Bill'  

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


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

使用 var 定义:

function hh(){  
 console.log(a);  
 var a = 'hello world';  
}  
hh()      //undefined  

不使用 var 定义:

function hh(){  
 console.log(a);  
 a = 'hello world';  
}  
hh()      //'a is not defined'  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值