函数返回值return详解—JS学习笔记2015-6-16(第58天)

一、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
原文地址:https://www.cnblogs.com/zhangxg/p/4582063.html