函数与作用域

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

  • 函数声明

    1. 函数声明必须有函数名
    2. 函数可以在任意地方调用fn();
  • 函数表达式

    1. 前后两个函数的名字可以相同也可以不相同
    2. function 后面的这个名字是可以省略的
    3. function 后面的这个名字只能再函数内部使用
    4. 函数调用只有在函数表达式声明后调用。

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

  • 变量声明前置
    JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,然后给他初始值undefined,然后才逐句执行程序,这就叫做“变量提升”,也即“变量的声明前置”。

  • 函数声明前置
    和变量的声明会前置一样,函数声明同样会前置

arguments 是什么

  • arguments 是JavaScript里的一个内置对象,有的函数都有属于自己的一个arguments对象,它包括了函所要调用的参数。object对象。

函数的"重载"怎样实现

  • js中没有重载! 同名函数会覆盖。 但可以在函数体针对不同的参数调用执行相应的逻辑

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

  • 立即执行函数表达式有多种写法:(function(){})();, 或(function(){}()); ,或!function(){}();,或void function(){}();
  • 作用:创建一个独立的作用域。这个作用域里面的变量,外面访问不到(即避免变量污染)

求n!,用递归来实现

function factor(n){
if (n == 0) {
return 1;
}
if (n > 0) {
if(n === 1) {
return 1;
}
return n * factor(n-1);
} else if (n < 0) {
if(n === -1) {
return -1;
}
return n * factor(n+1);
}
}

你可能感兴趣的:(函数与作用域)