JS有无返回语句
在定义函数时经常会考虑到有无返回语句,今天一起来探讨JS函数的返回语句,分为三种情况:
1.没有返回语句;
2.返回语句为字符串;
3.返回匿名函数。
没有返回语句
<script>
// 函数没有返回语句
var Demo = function() {
console.log("Hello!");
}
Demo(); //单纯调用Demo函数,不输出return语句;
console.log(Demo()); //加括号,是返回值,调用Demo()函数,并且输出返回结果,没有返回结果是undefined;
console.log(Demo); //不加括号,是构造函数本身;
</script>
返回语句为字符串
<script>
// 函数有返回语句,返回语句是字符串
var Demo = function() {
console.log("Hello!");
return "执行了函数的返回语句!";
}
Demo(); //单纯调用Demo函数,不输出return语句;
console.log(Demo()); //加括号,是返回值,调用Demo()函数,并且输出返回结果,没有返回结果是undefined;
console.log(Demo); //不加括号,是构造函数本身;
</script>
返回匿名函数
<script>
// 函数有返回语句,返回语句是匿名函数
var Demo = function() {
console.log("Hello!");
return function() {
console.log("执行函数返回语句...");
}
}
Demo(); //单纯调用Demo函数,不输出return语句;
console.log(Demo() + "\n\n"); //加括号,是返回值,调用Demo()函数,并且输出返回结果,没有返回结果是undefined;
console.log(Demo()() + "\n\n");
/*
Demo()()可以视为(Demo())()
因为return匿名函数,所以Demo()代表返回匿名函数,再次利用Demo()()小括号调用匿名函数,输出匿名函数中的语句
但是匿名函数是没有返回值的,所以输出undefined
*/
console.log(Demo); //不加括号,是构造函数本身; */
</script>
小白一个,会有错误的地方,欢迎大佬指导!