我有以下Javascript。我将另一个函数嵌套到main函数中。我尝试显示main函数,以便执行每个嵌套函数,但它不能
<!DOCTYPE HTML PUBLIC>
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>5 Multiplication Table</title>
</head>
<body>
<script>
function myFunction()
{
function operandFirst(){
var x ="";
for (var i=0;i<10;i++)
{
var x = x + "The number is "+ i;
}
document.getElementById("display").innerHTML=x;
}
}
</script>
<body>
<button onclick="myFunction()">Display</button>
<p id="display"></p>
</body>
</html>
答案 0 :(得分:1)
函数声明的作用域。您只能从定义它们的范围内访问它们。(JS范围在功能级别处理,这意味着您只能从operandFirst
内部访问myFunction
。)
您必须调用一个函数才能运行它。
调用myFunction
不会导致operandFirst
自动调用。你必须有一个调用它的声明。
function myFunction() {
function operandFirst() {
// snip
}
// Like this
operandFirst();
}
答案 1 :(得分:1)
由于内部函数位于myFunction
的范围内,因此您可以随时返回它,在window
范围内获取对它的访问权限:
function myFunction()
{
return function operandFirst(){
var x ="";
for (var i=0;i<10;i++)
{
var x = x + "The number is "+ i;
}
document.getElementById("display").innerHTML=x;
}
}
并称之为
myFunction()();
或者更具可读性:
var operandFirst = myFunction();
operandFirst();
但是,看起来你可以在你的案例中更多地使用一个对象:
var myFunctions = {
operandFirst: function(){
var x ="";
for (var i=0;i<10;i++)
{
var x = x + "The number is "+ i;
}
document.getElementById("display").innerHTML=x;
}
};
myFunctions.operandFirst();