javascript学习(3)——[基础回顾]函数
2013-11-16 14:47 低调de草原狼 阅读(183) 评论(0) 编辑 收藏 举报简单说下鄙人对js函数的理解,如果只是简简单单的说下函数的话,我想其实并不是特别困难的,但是要是细细的围绕着函数等一系列的周边来说的话,那么真的需要一点时间和精力了,当然本次属于基础回顾,也就简单的说下函数的基本应用了。
我还是想简单的贴几段代码来说明下函数的基本用法,毕竟本次博客是用来说明javascript的高级应用之设计模式的,所以如果有什么不懂得地方,大家可以自己百科了。
/** * 函数 */ (function(){ // function 函数名字(val1,val12,val3,valn){ // //代码 // //return // } // var fn = function(){ // //代码 // } //2中函数声明的区别 /** * var abc = function(){} * 只能在函数声明后才能使用 */ //add(1,1); function add(x,y){ alert(x+y) } //add(1,2); //add2(12,3) var add2 = function(x,y){ alert(x+y) } add2(12,3) })()
/** * 回调函数 * 调用一个函数之后,又会再调用本身传入的一个函数 */ (function(){ //接收回调函数的函数 function add(x,y,fn){ this.x = x||1; this.y = y||1; if(fn){ fn(this.x+this.y); } } add(1,2,function(v){ if(v>0){ alert("re > 0") }else{ alert("re <= 0") } }) })()
/** * 函数传参 */ (function(){ //1.参数传递的随意性 function add(x,y,z){ this.x = x||0; this.y = y||0; this.z = z||0; alert(this.x+this.y+this.z) } //add(12,3,5) //add(14,5) //弊端 : 无法像java等高级语言那有 有函数精确复写的特性 //技巧 : 如果你这个类是工具类的情况下,那没你接收的参数最好是对象 /** * conf = {gridName:"",gridCode:"",gridSize:""} */ function gridUtil(conf){ alert(conf["gridName"]+" "+conf["gridSize"]); } gridUtil({gridName:"YUNFENGCHENG",gridSize:10}); //传值还是传址 var i = 100; var s = "one"; function add3(i,s){ i++; s+="--"; //alert(i); } //add3(i,s); //alert(i);//100 or 101 //alert(s);//"one" or one-- /** * 证明 : 基础变量是传递数值的 * 自定义对的传参方式是传得"地址" */ //对象 var o = {name:"YUNFENGCHENG"} function change(o){ o["name"] = "USPCAT.COM" } change(o); alert(o.name) })()
/** * 函数递归 */ (function(){ //常见的编程题 1~100 用递归算法完成累加 function add(start,end){ var num = 0; num = num + start; if(start < end){ num = num + add(start+1,end); } return num; } alert(add(1,100)); })()
/** * 函数使用技巧 */ (function(){ //代理函数-->用程序来决定返回的新的函数(他是一个生产函数的函数) //模拟数据库 var person = {"jim":"m","lili":"w"} var test = function(name){ if(person[name] == "m"){ /** * 内科,外科 */ return function(nk, wk){ alert(nk+" "+wk) } }else if(person[name] == "w"){ /** * 内科,外科,妇科 */ return function(nk, wk, fk){ alert(nk+" "+wk+" "+fk) } } } test("jim")("ok","ok") test("lili")("ok","ok","no") })()
简单介绍下一个功能强大的函数eval
(function(){ //eval 他是把一个字符串解析成一个方法并且调用 var str = "var show = function(){alert(100)}()"; //eval(str) //数据库会返回一个字符串(长得像javaScrpit数组) var a = "[1,2]"; var array = eval(a); for (var i = 0; i < array.length; i++) { alert(array[i]) } })()