关于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()这个函数结果,如果只是单纯的调用函数,是看不到结果的。