关于JavaScript中return的使用情况

  • return的理解
  • return的使用
  • 注意点


return的理解

return;语句会终止函数的执行,并赋值给函数的结果,将其返回。
return;也可以理解为‘函数执行的结果’就是return后面紧跟着的值。

return的使用

ex1:
	function back(){
        return true;
    }
	back();//无结果,因为要输出才能看到结果
	console.log( back() );//result == true	

ex2:
	function back(){
        if( 1==true ){
            return false; ①
        }
        return true; ②
    }
	console.log( back());//result == false
	//因为代码从上至下运行,当if判断为真,进入内部执行①,则会立即终止函数,并返回false

ex3:
	var arr = [6, 8, 10, 12];
	//这里我们利用map方法对数组里面的每一个值都*2
	var newArr = arr.map(function(x){
        //这里的x就代表数组里面的每一个值,每执行一次function函数就会调用一个数组的新的值
        x = x*2;//这样就把数组每个值都*2
        return x;//这样arr.map的结果就是x,它会将每一个值装入一个新的数组,我们再cl一下arr.map就可以得到新的数组
        console.log(11);//不会输出
    })
	console.log( newArr );//这里我们将新的数组进行输出 [12,16,20,24]
	//这样的好处就是,就不需要手动的去遍历,然后再装入新的数组
	
	#这里有个问题,为什么return不会终止他的遍历呢?
    答:因为map方法使每一个数组的元素都调用一次function(x)函数,所以return是终止了这个函数了的。只是这个函数一直重复调用,一共调用了数组.length次
    ex4:
	//现在我要对满足条件的数组元素进行条件改变,把2的倍数的元素-1,不满足条件的元素不变。
	var arr = [1, 4, 8, 9];
	var newArr = arr.map( function(x){
        //现在我要对满足条件的数组元素进行条件改变,把2的倍数的元素-1
        if( !(x%2) ){
            x = x - 1;
        }
    })
    console.log( newArr );// [undefined, undefined, undefined, undefined]
	#为什么会是这个结果呢?
    答:因为没有给函数返回值,所以新数组里面的都是undefined
    
    改进写法:
    	var arr = [1, 4, 8, 9];
        var newArr = arr.map( function(x){
            //现在我要对满足条件的数组元素进行条件改变,把2的倍数的元素-1
            if( !(x%2) ){
                x = x - 1;
                return x; //这样就返回给map一个具体的值,存放再数组对应的位置
            }
        })
        console.log( newArr );//[undefined, 3, 7, undefined]
	#为什么还有两个undefined呢?
    答:因为只对满足条件的数组元素进行了返回值,并没有对不满足条件的元素进行默认值返回
    
    正确写法:
		var arr = [1, 4, 8, 9];
        var newArr = arr.map( function(x){
            //现在我要对满足条件的数组元素进行条件改变,把2的倍数的元素-1
            if( !(x%2) ){
                x = x - 1;
                return x; //这样就返回给map一个具体的值,存放再数组对应的位置
            }
            return x;//当不满住偶数条件是,返回默认值
        })
        console.log( newArr );//[1, 3, 7, 9]

注意点

return只是终止离他最近的上级函数,如果要输出这个return ,必须要console.log()这个函数结果,如果只是单纯的调用函数,是看不到结果的。