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