JS函数和作用域

函数声明和函数表达式
  • 函数声明:

fuction fn(){
console.log("test");
}

  • 函数表达式:

var fn = fucntion(){
console.log("test");;
}

  • 区别:函数声明可以在任何位置被调用。函数表达式需要在被执行完了后,才能被调用。

变量提升和函数提升
  • 变量提升:当定义一个变量的时候,变量声明会被提升到前面。然后才被赋值。

var a = 10;
相当于
var a;
a = 10;

  • 函数提升:当定义一个函数的时候,函数会自动提前。函数表达式不会被提前,只有函数声明会被提前。
test();//asd
  fucntion test(){
      console.log("asd");
  };

argument

argument是函数参数的列表。是个类数组对象,但他并不是一个真正的数组。所以他只具备length属性。
可以通过一下语句进行转化:
var args=Array.prototype.slice.call(arguments)


函数重载的实现
  • 可以通过argument.length来实现,根据length的不同,来执行不同的代码块。
  • 可以通过if(){}来实现,根据形参的值,来执行不同的代码块。

立即执行函数表达式
(function(){})()

IIFE是函数在声明后立即执行,而且同时可以利用函数的作用域,可以避免全局变量的污染。第一个括号的作用是避免function被解析,让function(){}被当成表达式,立即执行。然后第二个括号就是调用函数。


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

推荐阅读更多精彩内容

  • 一、函数声明和函数表达式 函数声明的形式:function fn() { } ,使用函数声明的形式声明一个函数时,...
    sutingy阅读 176评论 0 0
  • 1.函数声明和函数表达式有什么区别 函数声明和函数表达式是声明函数的两种不同的方式,形式如下: 函数声明:即使用f...
    饥人谷_bigJiao阅读 237评论 0 0
  • 一、函数声明function(){}是function +函数名字(){内容}调用函数是 函数名字();funct...
    崔敏嫣阅读 296评论 0 0
  • 函数声明和函数表达式有什么区别 用函数声明创建的函数可以在定义之前就进行调用(声明前置);而用函数表达式创建的函数...
    727上上上阅读 83评论 0 0
  • 1.函数声明和函数表达式有什么区别 (*) 区别: 函数声明后面的分号可加可不加,不加也不影响接下来语句的执行,但...
    Sheldon_Yee阅读 410评论 0 1