javascript中变量前边有var和没有var的区别

2018-02-22  本文已影响0人  程序媛萌小雪Mxx

在日常的js开发中,我们经常会遇到这样的事情,当变量前加var和不加var好像对程序的运行没什么影响,那到底加var和不加var有什么区别呢?

首先我们要清楚一下下面代码的含义

//this is a declaration 声明一个变量
var foo;

//this is an assignment 给变量赋值
bar = 3;

//this is a declaration and an assignment 声明变量,同时给此变量赋值
var dual = 5;

我们再看一下这段代码

var foo = 1; // declared properly   声明一个变量并赋值
bar = 2; // implied global  
window.baz = 3; // global via window object

delete foo; // false
delete bar; // true
delete baz; // true

foo; // 1
bar; // ReferenceError
baz; // ReferenceError

用var声明的变量会被赋予一个不可被删除的属性,因此当我们用delete去删除他们是不可以的,而没有var声明的变量则可以被删除,因为(bar =2)我们在赋值的时候他会逐层的在作用域中找同名的变量bar,如果找到的话,他会引用此变量,如果没有找到,他最终会被赋给全局对象window,此时,我们用window.bar就可以查看到这个值

var foo = 'first time use';
foo = 'second time use';

所以,我们在定义变量的时候不加var,大多数情况是我们已经声明了这个变量,而此时,我只想更改这个变量的值而已。

external = 5;
function firsttry() {
  var external = 6;
  alert("first Try: " + external);
}

function secondtry() {
  external = 7;
  alert("second Try: " + external);
}

alert(external); // Prints 5
firsttry(); // Prints 6
alert(external); // Prints 5
secondtry(); // Prints 7
alert(external); // Prints 7

在正常的开发中,如果没有特殊情况建议不要把var漏掉,如果漏掉了可能会出现你想不到的棘手问题。

对学习抱有热情的开发小伙伴欢迎加入 qq群685421881,更欢迎热爱编程的妹子进入,让我们一起学习 并进步吧!

上一篇下一篇

猜你喜欢

热点阅读