首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用'var‘声明变量是可选的吗?

使用'var‘声明变量是可选的吗?
EN

Stack Overflow用户
提问于 2010-03-21 09:06:52
回答 7查看 145.5K关注 0票数 363

"var“是可选的吗?

myObj = 1;

跟什么一样?

var myObj = 1;

我在测试中发现它们都可以工作,我认为var是可选的。是那么回事吗?

EN

回答 7

Stack Overflow用户

发布于 2010-03-21 09:16:32

不,它们不是等价的。

myObj = 1;中,您使用的是全局变量。

后一个声明创建一个您正在使用的作用域的局部变量。

尝试使用以下代码来了解其中的差异:

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

第二个函数改变全局变量"external“的值,但第一个函数不会。

票数 81
EN

Stack Overflow用户

发布于 2013-04-13 20:53:47

围绕这个主题有太多的困惑,而且现有的答案中没有一个清楚而直接地涵盖了一切。下面是一些带有内联注释的示例。

//this is a declaration
var foo;

//this is an assignment
bar = 3;

//this is a declaration and an assignment
var dual = 5;

声明设置DontDelete标志。赋值则不会。

声明将该变量绑定到当前作用域。

已分配但未声明的变量将查找要附加其自身的作用域。这意味着它将遍历作用域的食物链,直到找到具有相同名称的变量。如果没有找到,它将被附加到顶级作用域(通常称为全局作用域)。

function example(){
  //is a member of the scope defined by the function example
  var foo;

  //this function is also part of the scope of the function example
  var bar = function(){
     foo = 12; // traverses scope and assigns example.foo to 12
  }
}

function something_different(){
     foo = 15; // traverses scope and assigns global.foo to 15
}

为了清楚地描述正在发生的事情,此analysis of the delete function广泛地介绍了变量实例化和赋值。

票数 14
EN

Stack Overflow用户

发布于 2014-06-11 02:23:31

看看这个提琴:http://jsfiddle.net/GWr6Z/2/

function doMe(){

a = "123"; // will be global
var b = "321"; // local to doMe
alert("a:"+a+"  --  b:"+b);

b = "something else"; // still local (not global)
alert("a:"+a+"  --  b:"+b);

};


doMe()
alert("a:"+a+"  --  b:"+b); // `b` will not be defined, check console.log
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2485423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档