上一节我们详细介绍了函数的调用,本节我们将详细介绍函数调用时会使用到另一个重要概念——返回值。JS函数可以通过 return 语句返回一个值。返回值可以是任何JS数据类型,包括数字、字符串、布尔值、对象等。
下面是一个简单的函数示例,演示了如何使用 return 语句来返回一个值:
/*字符串拼接函数*/
function f(s1,s2)
{
return `${s1}${s2}`
}
console.log(f('dotcpp','.com'));//dotcpp.com除了返回基本数据类型的值,函数还可以返回对象或数组等复杂数据类型。例如:
/*参数是一个对象+函数返回参数=验证函数能够返回一个对象*/
function f()
{
const obj ={brand:'Dotcpp编程',website:'dotcpp.com',content:'do coding',storage:99999999}//准备一个对象
return obj;
}
console.log(f());//打印{brand: 'Dotcpp编程', website: 'dotcpp.com', content: 'do coding', storage: 99999999}值得注意的是,当函数执行到 return 语句时,它会立即终止函数的执行,并将返回值传递给调用方。因此,如果在函数中有多个 return 语句,只有第一个执行到的 return 语句会生效,后面的 return 语句将不会执行。
另外,如果函数没有显式地使用 return 语句返回一个值,那么函数将返回一个特殊的值 undefined。
/* 没有返回语句 */
function f() {}
console.log(f());//没有返回值,打印undefinedJS函数返回值使用技巧:
1. 使用返回值进行条件判断:
/* boolean类型判断一个三位数是不是水仙花数 */
function is_sxh(n) {
const a = Math.floor(n / 100); // 百位
const b = Math.floor(n / 10) % 10; // 十位
const c = n % 10; // 个位
return a*a*a + b*b*b + c*c*c === n;
}
for(let i=100;i<999;++i){
if(is_sxh(i))console.log(i);
}
// 153
// 370
// 371
// 4072. 使用返回值进行链式调用:
/* 链式调用简单来说就是一个对象调用多个自身方法 */
const Dotcpp ={
course1:"JS教程",
course2:"C++教程",
course3:"Java教程",
course4:"C语言教程",
f1(){console.log(`开始学习${this.course1}`);return this
},
f2(){console.log(`开始学习${this.course2}`);return this
},
f3(){console.log(`开始学习${this.course3}`);return this
},
f4(){console.log(`开始学习${this.course4}`);return this
}
}
Dotcpp.f1().f2().f3().f4();
//开始学习JS教程
//开始学习C++教程
//开始学习Java教程
//开始学习C语言教程3.返回对象或数组:
/* 返回对象 */
function f1(brand,address)
{
return {brand:brand,address:address}
}
/* 返回数组 */
function f2(a,b,c,d,e)
{
return [a,b,c,d,e];
}
console.log(f1('Dotcpp编程','dotcpp.com'));//{brand: 'Dotcpp编程', address: 'dotcpp.com'}
console.log(f2(1,2,3,4,5));//(5) [1, 2, 3, 4, 5]总结:本节我们详细讲解了JS中函数的返回值,包括返回类型的多样性(不仅仅是基本数据类型,还可以返回对象、数组等),返回值具有可选性(可以有返回值,也可以没有返回值);同时我们还扩展讲解了JS函数返回值的使用技巧,让读者对JS函数返回值有了更深一步的理解。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程