return返还函数能干嘛?

808 阅读2分钟

函数里执行 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);