1.函数声明和函数表达式有什么区别
- 声明函数
使用function可以声明一个函数

- 函数表达式

- 区别
声明函数声明不用放在调用前面,函数表达式声明必须放在调用前面,函数表达式是一个赋值的过程
2.什么是变量的声明前置?什么是函数的声明前置
- 在一个作用域下VAR声明的变量和Function声明的函数会前置。
- 在函数内部VAR声明的变量同样前置。
- 当命名冲突时先前置后覆盖。
3. arguments 是什么

- 在函数内部可以使用arguments对象获取该函数的所有传入参数。
4.函数的"重载"怎样实现
- 在JS中没有重载,同名函数会被覆盖,但可以在函数体针对不同的参数调用相应的逻辑。

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. 如下代码输出什么? 写出作用域链查找过程伪代码

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

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

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


网友评论