标签:
一、函数的定义
window.onload=function(){ //函数的调用 fcName(); fc1(); var num=fc2(10,20); fc3(); fc4(); } //函数的参数列表 相当于函数入口;return 相当于函数出口 /*1.function 语句式 特点:a.创建一次存储在内存中,每次使用从内存中取,效率高 b.js 解析器会优先解析然后存储在内存中,使用时直接取内存中的(优先解析) c.具有函数作用域 */ function fcName(){ alert("function 语句式"); } /*2、函数的直接量式(ECMAScript推荐) 特点:a.创建一次存储在内存中,每次使用从内存中取,效率高 b.js 解析器 只是声明了变量fc1 并没有给其赋值 ,只用当程序运行到这里时才会赋值(顺序解析) c.具有函数作用域 */ var fc1=function(){ alert("函数的直接量式"); } /* 3.Function 构造函数式 特点:a.每次创建使用后就会销毁 不占用内存但每次使用都要创建 所以效率低 b.js 解析器 只是声明了变量fc2 并没有给其赋值 ,只用当程序运行到这里时才会赋值(顺序解析) c.顶级作用域 */ var fc2=new Function("a","b","return a+b;"); var fc3=new Function("alert(‘构造函数式‘)"); //三种函数的作用域 var m=0; function fc4(){ var m=1; function fc5(){ alert(m);// 1 }; var fc6=function(){ alert(m);// 1 } var fc3=new Function("return m;"); fc5(); fc6(); alert(fc3());// 0 }
二、函数的参数
<script type="text/javascript"> window.onload=function(){ fc1(10,20); } /* 在js中形参个数可以与实参个数不同 */ function fc1(a,b,c){ var length=fc1.length;//获得形参个数 (不建议使用) /* arguments 的对象可以访问函数的实际参数(只能在函数内部使用) */ var length2=arguments.callee.length;//获得形参个数(arguments.callee 指向函数本身) var args=arguments.length;//实际参数的个数 var arg1=arguments[0];//获得第一个实际参数 //在实际开发中我们会先判断参数个数是否相同再执行代码 if(arguments.callee.length===arguments.length){ return a+b+c; }else{ return ‘参数不正确‘; } } </script>
三、this 关键字
四、call、apply关键字
五、执行环境、作用域链
六、垃圾收集、块级作用域
七、closure 闭包
标签:
原文地址:http://www.cnblogs.com/jalja/p/4865170.html