JS函数

作者: 村里第一帅 | 来源:发表于2017-07-26 23:41 被阅读0次

    1.函数声明和函数表达式有什么区别

    • 声明函数
      使用function可以声明一个函数
    Paste_Image.png
    • 函数表达式
    Paste_Image.png
    • 区别
      声明函数声明不用放在调用前面,函数表达式声明必须放在调用前面,函数表达式是一个赋值的过程

    2.什么是变量的声明前置?什么是函数的声明前置

    • 在一个作用域下VAR声明的变量和Function声明的函数会前置。
    • 在函数内部VAR声明的变量同样前置。
    • 当命名冲突时先前置后覆盖。

    3. arguments 是什么

    Paste_Image.png
    • 在函数内部可以使用arguments对象获取该函数的所有传入参数。

    4.函数的"重载"怎样实现

    • 在JS中没有重载,同名函数会被覆盖,但可以在函数体针对不同的参数调用相应的逻辑。
    Paste_Image.png

    5.立即执行函数表达式是什么?有什么作用

              (function(){
              var a = 1;
              })
             ( function fn1() {});
             // 在数组初始化器内只能是表达式
             [function fn2() {}];
             // 逗号也只能操作表达式
             , function fn3() {}; 
    
    • 作用:隔离作用域。

    6.求n!,用递归来实现

    1.自己调用自己;
    2.设定终止条件;
    4.优点:算法简单;
    5.缺点:效率低;

          function factor(n){
              if(n==1||n==0){
              return 1}else if(n<0){
              return false}
              return n * factor(n-1)
          } 
    

    7. 以下代码输出什么?

    function getInfo(name, age, sex){
        console.log('name:',name);
        console.log('age:', age);
        console.log('sex:', sex);
        console.log(arguments);
        arguments[0] = 'valley';
        console.log('name', name);
    } 
    
    getInfo('饥人谷', 2, '男');
    getInfo('小谷', 3);
    getInfo('男');
    

    输出
    getInfo('饥人谷', 2, '男');
    "name" "饥人谷";"age" "2"; "sex" "男";[object Arguments] {0: "饥人谷",1: 2,2: "男"}
    getInfo('小谷', 3);
    "name:""小谷";"age:"3";sex:"undefined;[object Arguments] { 0: "小谷",1: 3}"name""valley"
    getInfo('男');
    "name:""男""age:"undefined"sex:"undefined[object Arguments]{0: "男"}"name""valley"

    8. 写一个函数,返回参数的平方和?

    function sumOfSquares(){
     var sum=0;
     for(var i=0;i<arguments.length;i++){
         sum += arguments[i] * arguments[i]
       }
       return sum}
    var result = sumOfSquares(2,3,4)
    var result2 = sumOfSquares(1,3)
    console.log(result)  //29
    console.log(result2)  //10
    

    9. 如下代码的输出?为什么

          console.log(a);
          var a = 1;
          console.log(b);
    

    输出:
    var a;
    console.log(a); //undefined
    a=1;
    console.log(b);//ReferenceError: b is not defined

    10. 如下代码的输出?为什么

    sayName('world');
    sayAge(10);
    function sayName(name){
        console.log('hello ', name);
    }
    var sayAge = function(age){
        console.log(age);
    };
    

    输出
    hello world Uncaught TypeError: sayAge is not a function//函数表达式不会像函数声明一样 被前置,所以执行到sayAge(10);这一句时函数sayAge未被声明,此时它还不是一个函数

    11. 如下代码输出什么? 写出作用域链查找过程伪代码

    Paste_Image.png

    12. 如下代码输出什么? 写出作用域链查找过程伪代码

    Paste_Image.png

    13. 以下代码输出什么? 写出作用域链的查找过程伪代码

    Paste_Image.png

    14. 以下代码输出什么? 写出作用域链查找过程伪代码

    Paste_Image.png Paste_Image.png

    相关文章

      网友评论

          本文标题:JS函数

          本文链接:https://www.haomeiwen.com/subject/obetkxtx.html