1、主要有三类基本函数
<script type="text/javascript"> // 普通函数 function func1(arg){ return true; }; // 匿名函数 var func2 = function(arg){ return "jay"; }; // 自执行函数,会自己执行,不用等待调用,arg就是参数,不需要名字 (function(arg){ console.log(arguments);//不限定参数个数,会全部当做数组放进去 console.log(arg); })('123') </script>
2、作用域
每一个函数都保留了一个自己的作用域,而且在解释的时候已经定死了
i= 123; function f1() { var i =212;//属于f1 function f2() { var name ='jay'; console.log(i);//会先在f2里面找,没有则在f1,一步一步找到最上面 } }
下面的代码输入的是eric
name = 'jay' function f1() { var name = 'eric'; function f2() { alert(name); } return f2; } var ret =f1(); ret();
3、闭包
闭包是指可以包含自由(未绑定到特定对象)变量的代码块。
「闭包」,是指拥有多个变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
闭包是个函数,而它「记住了周围发生了什么」。表现为由「一个函数」体中定义了「另个函数」
由于作用域链只能从内向外找,默认外部无法获取函数内部变量。闭包,在外部获取函数内部的变量。
function f2(){ var arg= [11,22]; function f3(){ return arg; } return f3; } ret = f2(); ret();