我知道这有点有趣,因为人们经常要求解决某些不起作用的解决方案,在这种情况下,情况恰恰相反。为什么我的点击事件处理程序是(YES“is”)工作?
我在玩JavaScript,发现了让我感到困惑的东西! 我尝试过在线寻找帮助,但找不到任何有用的主题。
问题是这样的:在函数bar
只调用一次后,onclick
事件工作正常。这怎么可能!?
但是,当我问类型的变量x
的返回undefined
,而不是Number
,这是正常的,因为x
里面bar
。
function bar() {
var p = document.getElementById("foo");
p.onclick = showAlert;
var x = 5;
alert("bar function was called !");
}
bar();
任何人都可以启发我究竟发生了什么,一个详细的解释将非常赞赏。
全码:(的jsfiddle链路:https://jsfiddle.net/ge4gj5nw)
<!DOCTYPE html>
<html>
<head>
<style>
#foo {
border: solid blue 1px;
width: 30%;
padding: 10px;
}
</style>
</head>
<body>
<p id="foo">My Event Element</p>
<p>Click on the above element..</p>
</body>
</html>
<script>
function bar() {
var p = document.getElementById("foo");
p.onclick = showAlert;
var x = 5;
alert("bar function was called !");
}
bar();
function showAlert(event) {
alert("onclick Event detected!");
}
</script>
我不很明白你在这里问的问题。你在问为什么事件处理程序被调用?或者给定的范围如何在这里工作?或者你问为什么showAlert'可用? – Nit
JavaScript是一种垃圾收集语言。变量或对象在未被使用时会被垃圾收集。这是通过查看该变量的执行上下文来完成的。 – liontass
JavaScript中有函数声明。 – acdcjunior