-4

此代码示例与与事件触发器的 if 语句配对的普通函数声明有何不同?简洁是唯一的优势吗?

xmlhttp.onreadystatechange=function()
{
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
4

7 回答 7

3

在 Javascript 中,您可能拥有所谓的匿名函数。在上面的代码中,匿名函数将在 xmlhttp.onreadystatechange 事件被触发时执行。其他例子是:

window.onkeypress = function(e) {
    alert(String.fromCharCode(e.which));
}

或者你可以创建一个匿名变量函数......

var myFunc = function(msg) {    // Create function and assign to var
    alert(msg);
}
myFunc("Hello World");          // Call new 'function'
于 2012-04-10T06:17:04.637 回答
2

标识符函数是一个保留字,它是FunctionDeclarationFunctionExpression的开始。如果它在语句的开头(或更准确地说,在语句可以出现的地方),它被解释为FunctionDeclaration并且必须是以下形式:

function <name> (<parameter list>) { <function body> }

FunctionDeclaration中的名称是必需的。

如果它不在语句的开头,则它是一个FunctionExpression并且名称是可选的,例如它可以是:

(function () {…})

var a = function () {…};

someFunction(function () {…})

等等。在所有情况下,它都会返回对可以分配(例如,变量)、调用、传递给其他函数或忽略的函数的引用。

于 2012-04-10T06:18:29.143 回答
1

它表示将要为给定事件发生调用的函数。

在您的上下文中,当xmlhttp.onreadystatechange=事件发生时,function()块被执行。

你也可以这样写

xmlhttp.onreadystatechange=myfunction;

function myfunction()
{
 //code to execute
}
于 2012-04-10T06:09:33.530 回答
1

这是分配给对象onreadystatechange属性的正常功能,xmlhttp可以通过以下方式触发:

xmlhttp.onreadystatechange();

看教程:

了解更多。

你真的应该先学习基础知识:)

于 2012-04-10T06:11:31.747 回答
1

Javascript 支持匿名函数对象。当您想要执行与事件相关的代码块时,您必须将您的代码包装到一个函数中。如果您不需要特定的功能(您不想重用代码),您可以让您的功能匿名。

xmlhttp.onreadystatechange = function () { ... }

这与这样做类似:

function foo() { ... }
xmlhttp.onreadystatechange = foo;

但在这种情况下,您可以在任何需要的地方重用 foo。

于 2012-04-10T06:13:28.443 回答
0

它是一个函数。将其视为可以在以后执行的代码块。

于 2012-04-10T06:09:42.890 回答
0

function(){...}是一个无名(“匿名”)函数表达式。如果将其分配给变量或将其用作参数,则不需要名称。在您的示例中,您将该函数对象分配给 xhr 对象的处理程序属性,它将被用作回调。

于 2012-04-10T06:16:23.773 回答