直接po图和代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>javascript调用函数加不加括号的区别</title>
<script type="text/javascript">
// window.onload = function1; //会执行function1函数
// window.onload = function1(); //会执行function1函数
// window.onload = fun1; //不会执行function1函数
function function1() {
console.log("我是函数1");
}
// var fun1 = function1(); //会执行function1函数
// console.log(fun1); //结果为undefined
var fun1 = function1; //不会执行function1函数
// window.onload = fun1; //会执行function1函数
// window.onload = fun1(); //会执行function1函数
var myFunc = function() {
console.log("我是匿名函数");
};
// window.onload = myFunc(); //会执行匿名函数
window.onload = myFunc; //会执行匿名函数
// window.onload = function(){//等同于window.onload=myFunc;
// console.log("我是匿名函数");
// }
// myFunc;//不会执行匿名函数
// myFunc();//会执行匿名函数
function fun2() {
var address = '江西省赣州市于都县';
console.log("我的家乡在" + address);
return '哈哈哈' + address;
}
//不带()小括号,获取方法内容
alert(fun2);
//带()小括号,调用方法执行
fun2();
//带()括号,获取方法返回值
alert(fun2());
//不带()小括号,不会执行方法
fun2;
//(调用了fun2函数,执行了fun2的函数体,并将fun2函数体中的返回值返回)
var temp = fun2(); //函数名后面加()括号
console.log(temp); //temp得到的是fun2函数的返回值
//不会执行fun2函数体,自然不会有函数返回值,而是把函数名称作为函数的指针,把整个函数体传过去,在需要的时候好找到函数体去执行
temp = fun2; //函数名后面不加()括号
console.log("" + temp);//打印的是fun2函数的函数声明和函数体
console.log(temp);
//注意:js中的回调函数都是使用函数引用,所以回调函数是不写括号的
//看一个回调函数不加括号的例子
/*
xmlhttp.onreadystatechange=callback;
说明:注册回调函数只用函数名,不加括号,是因为该句只是把回调函数名注册给xmlhttp.onreadystatechange。如
果加了括号,则是调用函数然后把函数的返回值注册给xmlhttp.onreadystatechange
情形一:xmlhttprequest.onreadystatechange= myFunction;//把myFunction函
数作为一个对象赋值给onreadystatechange
情形二:xmlhttprequest.onreadystatechange= myFunction()//把myFunction函数的返回值赋
值给onreadystatechange. 如果它的返回值是个函数的话,当然可以这么用;可一般返回值是一个值
*/
</script>
</head>
<body>
<h1 style="color: red;">
javascript调用函数加不加括号的区别
</h1>
</body>
</html>