JS函数

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 函数声明和函数表达式有什么区别 (*)解析器会率先读取函数声明,并使其在执行任何代码之前可以访问;函数表达式则必须...
    coolheadedY阅读 3,047评论 0 1
  • 函数声明和函数表达式有什么区别? 函数声明和函数表达式是EMACScript规定的两种不同的声明函数的方法。1.函...
    LeeoZz阅读 2,981评论 0 1
  • 1、函数声明和函数表达式有什么区别 函数声明可以看作是函数的初始化,我们将给函数传参并建立函数体的表达式,当我门建...
    zh_yang阅读 2,962评论 0 1
  • 函数声明和函数表达式有什么区别 函数声明: 函数表达式: JavaScript 解释器中存在一种变量声明被提升的机...
    肥鱼666阅读 1,297评论 0 0
  • 1.函数声明和函数表达式有什么区别 函数声明 代码执行时函数声明会被提升到最前执行,所以函数的调用与函数声明的顺序...
    Feiyu_有猫病阅读 3,081评论 0 0

友情链接更多精彩内容