函数的容错处理 函数的返回值

   // JavaScript函数的容错处理
        // 我们函数再执行的过程中,有可能被输入错误的函数数值,会引起函数执行错误
        // 我们定义函数的时候,必须要防止错误数据的输入

        // 举例,累加求和函数

        function myAdd(max , min=1){
            // 新增判断,确保 min 最终存储的是较小值,max存储的是较大值

            // 当min中存储的数据为较大值时,执行程序
            if(min > max){
                // 将min和max存储的数据,做一个数据交换
                // 确保min存储较小值,max存储较大值
                var int = min;
                min = max;
                max = int;
            }

            var res = 0;
            for(var i = min ; i <= max ; i++){
                res += i;
            }
            console.log(res);
        }

        // 定义累加求和函数
        // 如果输入的实参 第一个数值是 赋值给 max ,第二个数值是赋值给 min
        // 如果值输入一个实参,会赋值给 max , min执行默认值,1

        // 终止值是 100 , 起始数值默认1
        myAdd( 100 );

        // 输入两个实参数据,一个赋值max 一个赋值 min
        myAdd( 30 , 10 );

        // 如果我们输入数据的大小顺序有误
        // 先输入了 较小值 后输入的加大值
        // max 输入了 1 min 输入了 50
        // 会造成 for循环  var i = 50 i <= 1  判断直接接是false 整个循环无法执行的
        // 需要在函数中,确保,min存储的是较小数值,max存储的是较大数值
        myAdd( 1 , 50 );
 
 
 
  // 在函数中 可以通过 return 关键词来定义函数的返回值也就是函数的执行结果
        // 如果没有 return 定义,函数的返回值,函数的执行结果是 undefined 

        // 我们之前定义的 累加求和函数

        function myAdd1(max , min=1){
            if(min > max){
                var int = min;
                min = max;
                max = int;
            }
            var res = 0;
            for(var i = min ; i <= max ; i++){
                res += i;
            }
            // 当前函数,是通过console.log()向控制台输出执行结果
            // 没有通过return关键词,定义执行结果,返回值
            // 因此当前函数的执行结果是 undefined
            console.log(res);
        }

        // console.log() 是一个函数,是JavaScript程序本身定义个一个函数
        // 这个函数的作用是 将 () 中的参数,向浏览器控制台输出
        // 例如 console.log( 100 ) 是向 控制台输出 参数 100 数值
        // 这个函数只是向控制台输出结果,自己本身,并没有定义返回值
        // 没有定义返回值的函数,返回值一律是 undefined

        // console.log( console.log( 100 ) )
        // 是向控制台输出 console.log( 100 )  这个函数的 返回值
        // 再次强调 console.log( 100 ) 作用是向控制输出 参数 但是没有返回值
        // 返回值 是 undefined 
        // 那么我们想 控制台 输出  console.log( 100 ) 的返回值 
        // 结果就是 undefined 

        // 总结: 控制台输出,页面输出等,都不算是 函数的执行结果,不算是返回值
        //       必须是 通过 return 定义的数据数值,才是函数的执行结果,才是返回值
        //       这是我们 JavaScript 语法中严格规定的,我们必须遵守


        console.log( console.log( 100 ) ) ;

        function myAdd2(max,min=1){
            if(min > max){
                var int = min;
                min = max;
                max = int;
            }
            var res = 0;
            for(var i = min ; i <= max ; i++){
                res += i;
            }
            // 通过 return 来定义 函数的执行结果,返回值
            return res;
        }

        // 观察两个函数的执行区别

        // myAdd1() 因为是 console.log(res) 执行结果会直接在控制台输出
        // 但是这个结果 只能在 控制台中看  不能赋值给 变量存储 
        myAdd1(1,100);

        // 有一个变量想存储 执行结果 5050 , 是不能成功的
        // 执行结果 就直接 在 控制台输出了 变量是无法存储5050这个数值的
        // 变量中存储的是函数的执行结果,是返回值
        // 当前 myAdd1() 没有 return 定义 返回值 是 undefined
        // a 当中 存储的是 undefined
        var a = myAdd1(1,100);
        console.log(a);


        // myAdd2() 因为是 return res 执行结果 不会 直接在控制台输出
        // 但是 可以 作为 执行结果 返回值  赋值给其他变量存储
        // 当然,也可以通过 console.log() 来输出函数的执行结果返回值
        // 这样操作函数的执行结果返回值就比较灵活方便了

        var b = myAdd2(1,10);

        console.log(b);

        console.log( myAdd2(1,100) )


        // 举例:类比一下
        // 例如我们 到 蛋糕店 有做出来可以卖的蛋糕 , 还有 放在橱柜里 展示的蛋糕
        // 橱柜里展示 的 蛋糕 就是 相当于 console.log()  document.write() 输出的
        // 只能看,不能吃,你也不能买,就是一个假的蛋糕
        // console.log()  document.write() 输出的 结果
        // 你只能看,不能做任何其他的操作,只能看不能用
        // 蛋糕店里,用来出售的蛋糕,你可以买,可以吃,可以拍脸上,爱干什么干什么
        // 相当于 我们 return 的 执行结果返回值
        // 可以赋值给变量,可以 console.log(),想怎么操作怎么操作
 
  // 函数中 return 的作用
        // 1, return 可以定义函数的返回值
        // 2, return 可以终止函数中一切内容的执行

        // 因此要特别注意定义 return 的位置
        // 如果定义位置错误,函数被错误的提前终止,就不会有正确的返回值了

        // 因为 return 可以终止函数的执行,因此一个函数中,只能有一个 return
        // 如果定义 两个 return ,第二个会被第一个给终止掉,没有作用
        // 但是 if() switch 分支结构语句,可以定义情况下,不同的 return 值
右侧打赏一下 代码改变世界一块二块也是爱
原文地址:https://www.cnblogs.com/ht955/p/14021793.html