一、return
return后面接的实际上就是一个数据类型:
<script>
// fn1(); =>100
alert(fn1().length);
function fn1(){
// return 100;
return 'miaov';
}
</script>
1)、函数名+(): fn1() ==> return后面的值;
2)、return 实际上是所有函数内一个隐藏的属性,默认返回undefined;
3)、return 后面的任何代码都不会执行。
二、arguments
fn1(1,2,3); // 实参
function fn1(a,b,c){ // 形参
// arguments 实际上是一组实参的集合;[1,2,3];
alert (arguments.length); // 但它实际上是个对象,但是拥有数组的属性,比如length;
}
// 当函数的参数个数无法确定的时候用arguments
alert( sum(1,2,3));
alert( sum(1,2,3,4));
function sum (){ // 这里的参数值无法确定下来;
var n = 0;
for( var i=0; i<arguments.length; i++){
n += arguments[i];
}
return n;
}
与作用域的关系;
var a = 1; function fn2( a ){ arguments[0] = 3; alert(a); // 3 var a = 2; alert( arguments[0] ); // 2 } fn2(a); alert(a); // 1
既能读取,也能修改;
这里提一下 如果没有放参数的情况:
var a = 1; function fn2(){ alert(a); // undefined 涉及到作用域的问题; var a = 2; } fn2(a); alert(a); // 1
当函数里面放了参数,就相当于用了arguments:
var a = 1; function fn2( a ){ alert(a); // 1 这里相当于在alert(a);之前加上了arguments[0] = 1 var a = 2; } fn2(a); alert(a); // 1