在函数中定义时定义var很重要吗?

时间:2015-05-19 10:21:57

标签: javascript var

我对在Javascript中定义var有疑问 Here is a JS Bin



var newText=document.getElementById("myinput").value;

document.getElementById("changebutton").onclick=function(){
  newText=document.getElementById("myinput").value;
  document.getElementById("firstdiv").innerHTML=newText;
};

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <input id="myinput" type="text" value="test" />
  <button id="changebutton">Change!</button>
  <div id="firstdiv">This is some text</div>
</body>
</html>
&#13;
&#13;
&#13;

在这段代码中,我想在框中显示我可以输入内容的内容。上面的代码运行良好,即使在JS部分的第一行没有var newText=document.getElementById("myinput").value;也是如此。

那么有必要定义变量吗?在其他一些情况下会怎样?

2 个答案:

答案 0 :(得分:3)

通常你会尽可能地“肮脏”你的全球范围。在这种情况下,您将仅在匿名函数内调用变量,因此答案是:在函数内定义它。你可能没有定义变量,大多数javascript引擎会为你做这件事,但这不是一个明确的方法。

黄金法则:只有在外部作用域或多个“内部”作用域中需要时才在外部作用域中定义变量。

在这种情况下,你不需要弄脏外部范围。

编辑:在你的情况下:

document.getElementById("changebutton").addEventListener('click',function(){
    var newText=document.getElementById("myinput").value;
    document.getElementById("firstdiv").innerHTML=newText;
});

另请注意,我已将.onclick替换为addEventListener('click', function () {... - &gt;通过这种方式,您可以为单个事件绑定多个侦听器。

答案 1 :(得分:2)

你也可以这样做:

document.getElementById("changebutton").onclick=function(){
  var newText=document.getElementById("myinput").value;
  document.getElementById("firstdiv").innerHTML=newText;
};