javascript 函数调用不带括号问题

来源:百度知道 编辑:UC知道 时间:2024/05/29 19:54:56
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Ch04--加载XML文档</title>
<script language="javascript">
function loadXML(handler) {
var url = "employees.xml";
if(document.implementation&&document.implementation.createDocument) {
var xmldoc = document.implementation.createDocument("", "", null);
xmldoc.onload = handler(xmldoc, url);
xmldoc.load(url);
}
else if(window.ActiveXObject) {
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
xmldoc.onreadystatechange = function() {
if(xmldoc.readyState == 4) handler(xmldoc, url);
}
xmldoc.load(url);
}
}
function makeTable(xmldoc, url) {
var table = document.createElement("table");
table.setAttribute("border","1");
table.setAttribute(

函数名可以作为参数,传统语言的PASCAL里面经常有,JAVA更是如此。

当mekeTable和loadXML都是函数的时候,loadXML(makeTable)和loadXML(makeTable())是不同的。

loadXML(makeTable)表示把函数名makeTable作为实际参数调用,在loadXML函数定义里面对应的形式参数hande作为函数调用的时候,就对makeTable函数进行相应的调用,函数里面根据需要可以多次对handle进行使用。

loadXML(makeTable())是把makeTable返回的结果作为loadXML的参数进行调用,里面的函数实际上先执行,和上面的以函数名作为参数完全不同。

补充:是你的那个意思,这种机制的好处是很多的,WINDOWS系统大量回调函数就是利用这个机制来实现,某些通用排序函数,允许设置自己的比较函数。