在介绍之前首先说明一点,在严格模式下,不使用var声明变量将会报错,所以最好在任何时候声明变量都要使用var关键字。

非严格模式或者非新的js版本中,声明一个变量var关键字不是必须的,下面就介绍一下使用var和不使用var之间的区别。

先看一段代码实例:
   [ bootstrap ] 运行代码    下载代码
<script>
function func(){  
  var url="https://www.51qianduan.com";
  webName="51前端";
}
func();
//console.log(url)会报错
console.log(webName);
</script>
在函数作用域内,使用var声明的变量只能够在此函数作用域内使用,而不用var声明的变量,可以在全局范围内使用。

再来看一段代码:
   [ bootstrap ] 运行代码    下载代码
<script>
var url="https://www.51qianduan.com";
webName="51前端";
console.log(window.url);
console.log(window.webName);
</script>
在全局作用域声明的变量,无论加不加var都是作为全局对象的一个属性,但这并不说明它们两者没有区别,看如下代码:
   [ bootstrap ] 运行代码    下载代码
<script>
var url="https://www.51qianduan.com";
webName="51前端";

var urlTx=Object.getOwnPropertyDescriptor(window,'url')
var webNameTx=Object.getOwnPropertyDescriptor(window,'webName')

for(var propUrlTx in urlTx){
  console.log(propUrlTx+":"+urlTx[propUrlTx] );
}
  
for(var propWebNameTx in webNameTx){
  console.log(propWebNameTx+":"+webNameTx[propWebNameTx]);
}
</script>
从上面代码的输出值来看,两者还是有区别的,两个属性的configurable特性值是不同的,带var的是false,不带var的是true。configurable决定了一个属性是否可以被delete运算符删除,如果是false就不能删除,如果为true则能够被删除,看如下代码:
   [ bootstrap ] 运行代码    下载代码
<script>
var url="https://www.51qianduan.com";
webName="51前端";
  
delete window.url;
delete window.webName;
  
console.log(window.url);
console.log(window.webName);
</script>

代码描述:js使用 var声明变量区别。js使用var声明变量区别简单介绍



115 153



用户评论
大牛,别默默的看了,快登录帮我点评一下吧!:)      登录 | 注册



×
×
51前端

注册

×
绑定手机

请绑定手机号,在继续操作

×
单次下载支付

应付金额:279

支付完成后,回到下载页面,在进行下载

官方QQ群
意见反馈
qq群

扫描上面二维码加微信群

官方QQ群

jQuery/js讨论群
群号:642649996
Css3+Html5讨论群
群号:322131262

加群请备注:从官网了解到