任务17 问答

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

函数声明 function Name(){函数体}
函数表达式 var 变量=function (){};
Javascript 中函数声明和函数表达式是存在区别的,函数声明在JS解析时进行函数提升,因此在同一个作用域内,不管函数声明在哪里定义,该函数都可以进行调用。而函数表达式的值是在JS运行时确定,并且在表达式赋值完成后,该函数才能调用。

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

  • 所谓的变量声明前置就是在一个作用域块中,所有的变量都被放在块的开始出声明
  • 而函数的声明前置因为JS引擎 将函数名视同变量名,所以采用function命令声明函数时,整个函数被提升到代码头部。采用赋值语句声明函数时,函数在原位置被声明。

3.argument是什么?

argument是一个类数组的对象。可以将参数传入argument对象中,并且能调出数组的长度,以及当前函数的参数。

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

允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数必须不同。但在js中没有函数重载的概念,因为即使函数名相同,参数不同,也被认为是相同的函数。(例子1)

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

语法
(function sum(i){ })( );
(function sum(i){ }( ));
var a= function sum(i){ }( );
不必为函数命名,避免污染全局变量
函数内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量。通常只对匿名函数使用。

6.什么是函数的作用域链

当一个函数被调用时,他先访问自身的变量,不存在时就回去访问父级函数的变量,知道访问全局变量为止。这种链式的过程称为作用于链。只能从内到外,不能从外到内。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容