我对在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;
在这段代码中,我想在框中显示我可以输入内容的内容。上面的代码运行良好,即使在JS部分的第一行没有var newText=document.getElementById("myinput").value;
也是如此。
那么有必要定义变量吗?在其他一些情况下会怎样?
答案 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;
};