问题描述
- js中数组和var类型的return问题
- var arr = [10 20 30];
function add( arrayObj ){
for(var i in arr){
arrayObj[i] ++;
}
console.log( arrayObj );
}
add( arr );
console.log( arr );var x = 10;
function f1( num ){
num++ ;
console.log(num);
}
f1( x );
console.log( 'x=' + x );
为什么数组不用定义return就可以改变里面的值,而var x=10,需要return才可以返回改变呢?
解决方案
两个完全不同的写法,一个是函数内直接修改全局变量。一个是返回一个值,主程序再修改。
很明显,第二个方法好。因为函数封装了对数据的操作,你可以把函数放在另一个程序中用。第一个方法,函数随便修改全局变量,这样的函数失去了封装代码的意义。
解决方案二:
你直接对数组进行修改了,值就变了,,,,你定义的x = 10 ;是全局变量,不返回,没法覆盖全局变量初值,,不返回,只是改变了局部变量
var x = 10;
function f1( num ){
num++ ;
console.log(num);
return num;
}
x = f1( x );
console.log( 'x=' + x );
这样就变了
时间: 2024-11-01 00:40:52