函数里执行 return 写法的功能 :
1、阻止函数中后续代码的执行(函数里return之后的代码没有任何意义,但是不会阻止整个js里后面其他的代码)
function fn(){
var a=10;
console.log(a);
var b=15;
console.log(b);
return;//本循环以下的会被阻止执行
console.log("我是本循环里return后面的代码");//不会执行
}
fn();//执行结果是 10
20
我是return所在循环的外面的代码
console.log("我是return所在循环的外面的代码");//可以执行
return;//不支持写在函数外边,是不执行的
2、return 可以返还函数的值;把函数内部的值 返还到函数外部
function fn() {
var a = 10;
var b = 20;
console.log(a,b);
return b;
}
// 函数外部可以通过变量res来接收返还的结果
var res=fn();//先执行fn 结果 10 20
console.log(res)//再执行返还函数return b 结果 20
3、如果没有return,函数会返还什么结果吗?
// 没有return 那么函数的返还值就是 undefined
function fn(){
console.log("fn");//执行 fn
}
var res = fn();//执行 undefined
console.log(res);
//没有return,会执行fn函数,返还 fn函数里的值 ,如果没有就返还undefined.
4、有return 没有返还值呢?
function fn(){
console.log("fn");//执行 fn
return;
}
var res = fn();//undefined
console.log(res);
////只有return没有具体return值,会执行fn函数,返还 fn函数里的值 ,如果没有就返还undefined.
5、有return 有返还值 可以返还任何值; 返还基本数据类型
function fn(){
console.log("fn");
return 1;//有值就执行具体值
}
var res = fn();//执行fn
console.log(res);//执行 1
6、有return 有返还值 可以返还任何值; 返还复杂数据类型
6.1返还数组
function fn(){
var arr = ['张三','李四','王五'];
return arr;
}
var res = fn();
console.log(res);//执行 (3) ["张三", "李四", "王五"]
6.2返还函数 后期使用非常之多
function fn(){
console.log("fn")
return function(){
console.log("返还的函数");
}
}
var res=fn();// 执行fn函数
console.log(res);//这个返还的函数,还没有执行 ;
res();//执行返还的函数
//返还函数 后期使用频率非常多;
6.3、拓展1
console.log("fn1");
return function () {
console.log("fn2");
return function () {
console.log("fn3");
return function () {
console.log("fn4");
return 200;
}
}
}
}
// 函数外部可以通过变量res来接收返还的结果
var res = fn()()()(); //这种写法少,不推荐用,执行fn1 fn2 fn3 fn4
console.log(res);//返还具体值 200
6.4、拓展2 案例 输入1——num之间的所有质数之和
function oddTotal(num){
// num 是函数的 输入
var total = 0;
for(var i=1;i<=num;i++){
if(i%2==0){
total += i;
}
}
// console.log(total); //是 所有 1到 num之间偶数的和;
// 一个函数的结果不是被函数内部使用的 ,而是给函数的外部使用的
return total; // 是函数的输出 ;
}
// 只需要关注 输入 和输出 就OK了 ;
var res = oddTotal(100);
console.log(res);