<script type="application/javascript">
function f1(n){
n= n || 2;
return function (x){
return (x*n);
}
}var f2 = f1();
var f3 = f1(3);document.write(f2(3)+"</br>");
document.write(f3(3)+"</br>");
document.write(f3(f2(3))+"</br>");
</script>
的输出结果为什么是
6
9
18
那句n= n || 2;有什么作用呢?js

解决方案 »

  1.   

    1楼2楼都对~
    就是看你执行f1的时候有没有给参数n传值(准确的说是不等于0的数值),传了的话就让n=“传的值”,没传的话就让n=2。
      

  2.   

    感觉n应该是个boolean值,只能是0或1吧  个人觉的。
      

  3.   

    逻辑“或”运算符 (||) 是个短路语句
    表达式a || 表达式b
    当表达式a的值转换成Boolean值为true时,返回表达式a的值,并且不执行表达式b
    当表达式a的值转换成Boolean值为false时,执行表达式b 返回表达式b的值,非 Boolean 值转换为 Boolean 值: 
    所有对象都被认为是 true。 
    字符串当且仅当为空时才被认为是 false。 
    null 和 undefined 被认为是 false。 
    数字当且仅当为 0 时才是 false。 
      

  4.   

    var f2 = f1();
    f2就是一个方法内容是function (x){
    return (x*2);
    }
    然后你就懂了吧
    函数里可以返回函数,可以方便自定义很多函数,增加了灵活性啊
      

  5.   

    那f2(3)里面的参数三就是传递给f1(n)方法中的返回方法
    function (x){
    return (x*2);
    }
    里的形参x是么?
      

  6.   

    那f2(3)里面的参数三就是传递给f1(n)方法中的返回方法
    function (x){
    return (x*2);
    }
    里的形参x是么?
    f2(3)所以就是function (3){
    return (3*2);
    }
    结果就是6了