zoukankan      html  css  js  c++  java
  • javascript学习(3)——[基础回顾]函数

    简单说下鄙人对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])
    	}
    })()


  • 相关阅读:
    静态路由
    ARP攻击原理及解决方法
    JS post提交表单
    ARP攻击
    三层交换机与路由器的比较
    动态域名解析软件——花生壳(peanuthull)
    DateTime.Now.Ticks 属性
    我的WCF之旅(1):创建一个简单的WCF程序
    window程序或服务的工作原理
    内网外网同时上的方法静态路由
  • 原文地址:https://www.cnblogs.com/sunyingyuan/p/3686229.html
Copyright © 2011-2022 走看看