函数Function
<p>1、一般函数:</p>
<pre><code>function name(para1,para2,...){
//code
}</code></pre>
<p>2、匿名函数:</p>
<pre><code>var myFun = function(para1,para2,...){
//code
}</code></pre>
<p>3、Function()构造函数:</p>
<pre><code>var myFun = new Function(para1,para2,code)</code></pre>
<p>4、自调用函数:</p>
<pre><code>(function(para){
//code
})(argu)</code></pre>
<blockquote>
<p>函数参数(Function parameters)是在函数定义中所列的名称。
函数参数(Function arguments)是当调用函数时由函数接收的真实的值。</p>
</blockquote>
<ul>
<li>arguments:函数内接收实参的对象,包含实参的length和k-v
<pre><code>function myFun(a, b) {
return arguments.length;
}</code></pre></li>
</ul>
<p>5、剪头函数(lamda):</p>
<pre><code>var myFun = (para1,para2,..) => {
//code
}</code></pre>
<ul>
<li>参数只有一个时,()可以省略;</li>
<li>code 只有一个表达式时,{}可以省略;</li>
<li>自带return</li>
<li>没有this(this为{},浏览器下为window)</li>
</ul>
<hr />
<h3>函数调用</h3>
<p>1、apply(obj,[para1,para2,...]):改变函数调用的this指向
2、call(obj,para1,para2,...):改变函数调用的this指向
3、bind(obj)(para1,para2,...):改变函数调用的this指向</p>
<hr />
<h3>闭包</h3>
<blockquote>
<p>闭包是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私有变量不受外界干扰。
直观的说就是形成一个不销毁的栈环境。</p>
</blockquote>