1

错误:未捕获的 ReferenceError:未定义 myFunction

这是我的 .js 文件,它不工作或调用我的 HTML

function = myFunction() 
{
    var ret = "";
    for (var i = 15; i < 26; i++) 
    {
        ret += i + "  " + i*2 + "  " + i*3 + "\n";    
    }
    alert(ret);
}

这是我的 HTML 代码:

<!DOCTYPE HTML>
<html>

<head>
<script type="text/javascript" src="Test1.js"></script>

</head>

<body>

<h1> Exercise 4 - LAB 4  </h1>

<h2> Exercise 2.1 </h2>

<button type="button" onclick= "myFunction() "> Press Me </button>

</body>
</html>

错误:未捕获的 ReferenceError:未定义 myFunction

4

3 回答 3

5

干得好:

var myFunction = function ()
{
    var ret = "";
    for (var i = 15; i < 26; i++)
    {
        ret += i + "  " + i*2 + "  " + i*3 + "\n";
    }
    alert(ret);
};

function = varName () {}是语法错误。你可以这样做:function varName () {}没有等号,或者你可以像我一样做。

经过我们的一些发帖者的一些健康警告之后,我应该指出这两种编写函数的方式之间存在差异。引用 RobG 的话:“函数 foo(){} 和 var foo = function(){} 之间没有实际区别;除了函数创建时,第一个称为 FunctionDeclaration,第二个称为 FunctionExpression。” 在执行任何代码之前加载函数声明,因此您可以在任何地方调用它(在函数在文件中的位置之前或之后)。但是,再次就文件中的实际位置而言,如果在文件中的位置之前调用函数表达式,则会引发错误。(但是,您可以通过在文件开头声明稍后将分配给函数表达式的变量来解决此问题。)

于 2013-04-18T02:22:28.643 回答
2
function = myFunction() { /* body */ }

是无效的语法。您没有因此在控制台中收到错误吗?正确的语法是

function myFunction() { /* body */ }

或者

myFunction = function() { /* body */ }

你也可以写:

somename = function myFunction()  { /* body */ };

但是,在这种情况下,名称的范围myFunction只是主体,它不是全局的。

于 2013-04-18T02:23:43.623 回答
0

The declaration of the function is wrong:
Javascript:

function myFunction() {
    var ret = "";
    for (var i=15; i<26; i++) {
        ret += i + "  " + (i*2) + "  " + (i*3) + "\n";    
    }
    alert(ret);
}

HTML

<html>
  <head>
    <script type="text/javascript" src="Test1.js"></script>
  </head>

  <body>
    <h1>Exercise 4 - LAB 4</h1>
    <h2>Exercise 2.1</h2>
    <input type="button" value="Press Me" onclick="myFunction()" />
  </body>
</html>
于 2013-04-18T04:13:53.557 回答