1、函数声明和函数表达式有什么区别
函数声明:使用function关键字可以声明一个函数,声明不必放到调用的前面
//函数声明
function sayHello(){
console.log('hello')
}
//函数调用
sayHello()
函数表达式:声明必须放到调用的前面
var sayHello = function(){
console.log('hello');
}
sayHello()
2、什么是变量的声明前置?什么是函数的声明前置
函数声明前置:函数的声明会被提升到当前作用域的最前面,所以在该作用域的任何地方都能调用该函数

图片.png
3、arguments 是什么
在函数内部,你可以使用arguments对象获取到该函数的所有传入参数

图片.png
4、函数的“重载” 怎么实现
可以在函数体针对不同的参数调用执行相应的逻辑

图片.png
5、立即执行函数表达式是什么?有什么作用
立即执行函数能够立即执行,这样可以做到隔离作用域,避免变量污染全局。

图片.png
6、求n!,用递归来实现

图片.png
7、以下代码输出什么?

图片.png

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

图片.png
9、 如下代码的输出?为什么

图片.png
10、如下代码的输出?为什么

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

图片.png

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

图片.png

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

图片.png

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

图片.png

图片.png
输出undefined 5 1 6 20 200