函数与作用域
2017-03-04 本文已影响0人
Chy18
1.函数声明和函数表达式有什么区别
函数声明:使用function关键字可以声明一个函数。
//函数声明
** function** sayHello(){
console.log('hello')
}
//函数调用
sayHello()
函数表达式:
var sayHello = function(){
console.log('hello');
}
sayHello()
区别:函数声明的声明不必放到调用的前面,函数表达式的声明必须放到调用的前面。
2.什么是变量的声明前置?什么是函数的声明前置
![](https://img.haomeiwen.com/i4768945/252927a3f54d920a.png)
3.arguments 是什么
类数组对象,
![](https://img.haomeiwen.com/i4768945/01db9e3ae31694a3.png)
4.函数的"重载"怎样实现
在JS中没有重载, 同名函数会覆盖。 但可以在函数体针对不同的参数调用执行相应的逻辑。
![](https://img.haomeiwen.com/i4768945/eda3ab4bfa4a4072.png)
5.立即执行函数表达式是什么?有什么作用
![](https://img.haomeiwen.com/i4768945/e24bf4ceb8847533.png)
作用: 隔离作用域
其他写法:
(function fn1() {});
// 在数组初始化器内只能是表达式
[function fn2() {}];
// 逗号也只能操作表达式
1, function fn3() {};
6.求n!,用递归来实现
![](https://img.haomeiwen.com/i4768945/cb82336a54c88f1b.png)
7.以下代码输出什么?
![](https://img.haomeiwen.com/i4768945/f331294b4b217835.png)
8.写一个函数,返回参数的平方和?
![](https://img.haomeiwen.com/i4768945/61fde9b840f72a98.png)
9.如下代码的输出?为什么
![](https://img.haomeiwen.com/i4768945/cb9f50398a5306cc.png)
10.如下代码的输出?为什么
![](https://img.haomeiwen.com/i4768945/582f198ea767c9ec.png)
11.如下代码输出什么? 写出作用域链查找过程伪代码
![](https://img.haomeiwen.com/i4768945/218604cb0fb92589.png)
12. 如下代码输出什么? 写出作用域链查找过程伪代码
![](https://img.haomeiwen.com/i4768945/05457d6210deed51.png)
13.以下代码输出什么? 写出作用域链的查找过程伪代码
![](https://img.haomeiwen.com/i4768945/e803a09142adb3a0.png)
14.以下代码输出什么? 写出作用域链查找过程伪代码
![](https://img.haomeiwen.com/i4768945/21a1c01f541a6fef.png)