JavaScript里的函数加或不加括号的区别
区别
加括号:代表立即执行,也代表该函数的返回值
不加括号:代表函数体本身(Function类型)
测试
1.分别alert出各自结果
<html>
<head>
<title>Test</title>
</head>
<body>
<p>JavaScript Test</p>
</body>
<script>
function test() {
return 'hello';
}
alert(test);
alert(test());
</script>
</html>
结果如下:
function test() {
return 'hello';
}
hello
2.setTimeout“不生效”的问题(没有按照预期3s后再去执行test()函数,而是直接执行它)
<html>
<head>
<title>Test</title>
</head>
<body>
<p>JavaScript Test</p>
</body>
<script>
function test() {
console.log('hello');
}
setTimeout(test(),3000);
</script>
</html>
结果:不延迟3s,直接打印'hello'。所以需要注意正确的写法是不加括号:
setTimeout(test,3000);