> 웹 프론트엔드 > JS 튜토리얼 > JavaScript 웹 프로그래밍------함수(일반 함수, 동적 함수, 익명 함수)

JavaScript 웹 프로그래밍------함수(일반 함수, 동적 함수, 익명 함수)

黄舟
풀어 주다: 2016-12-30 16:45:14
원래의
1682명이 탐색했습니다.

함수
1. 일반 함수
형식:
함수 함수명(형식적 매개변수...)
{
실행문
반환값;
함수는 여러 실행문의 패키지이며 호출될 때만 실행됩니다.
참고: 매개변수가 있는 함수를 호출했지만 값을 전달하지 않으면 함수가 계속 실행됩니다. 또는 매개변수 없이 함수를 호출하고 값을 전달해도 함수는 계속 실행됩니다.
간단히 말하면 함수 이름 뒤에 괄호 한 쌍을 입력하면 함수가 실행됩니다. 전달된 매개변수는 어떻습니까?
사실 함수에는 전달된 매개변수를
배열로 캡슐화하는 매개변수 배열 객체(인수)가 있습니다.

예:

function demo(){<span style="font-family: 宋体;">//定义函数。</span>
	alert(arguments.length);
}
demo(“hello”,123,true);//调用函数。
로그인 후 복사
그러면 팝업 대화 상자의 결과는 3입니다. 모든 매개변수 값을 얻으려면 for 루프를 통해 배열을 순회할 수 있습니다.

for(var x=0; x<arguments.length; x++){
	alert(arguments[x]);
}
로그인 후 복사
가독성을 높이기 위해서는 스펙에 따라 정의된 형식 매개변수에 따라 실제 매개변수를 전달하는 것이 가장 좋습니다.

호출 시 함수를 작성하는 다른 방법:

var show = demo();//show变量接收demo函数的返回值。
var show = demo;//这种写法是可以的,意为show和demo代表同一个函数。
		//那么该函数也可以通过show()的方式运行。
로그인 후 복사
<script type="text/javascript">
  	function getValue(){
  	<span style="white-space:pre">	</span>alert("aa");
  		return 100;
<span style="white-space:pre">	</span>}
//var v = getValue();
//alert("v="+v);
  	var v2=getValue; //相当于getValue把引用值传给v2,因此v2也是一个“function对象”----getValue和v2都是引用变量
  	//alert("v2="+v2 );//其实是输出v2对象的toString()
  	//alert("v2="+v2() ); //调用v2这个函数对象---调用函数
</script>
로그인 후 복사
함수는 정의 시 두 개의 매개변수로 선언되지만

을 원하는 만큼 전달할 수 있습니다.
<span style="font-weight: normal;"><span style="font-size:12px;">function show(x,y){
  	alert(x+","+y);
}
//show(23,22);//23,22
//show(23); //23,undefined
//show(); //undefined,undefined
//show(23,22,11);//23,22 后面的一个参数函数接收了但没有用</span></span>
로그인 후 복사
각 함수에는 이 호출 중에 전달된 모든 실제 매개변수를 저장하는 기본 배열 인수가 있습니다.

//函数的参数全部是js内部用一个arguments数组来接收与存放的---该对象是js内部隐含帮我们做的,我们可以访问到这个数组对象
function show2(x,y){
  	arguments[0]=1000;//可以把形参x的值改掉
  	document.write(x+","+y+"<br/>");
  	for(var i=0;i<arguments.length;i++){
  	<span style="white-space:pre">	</span>document.write(arguments[i]+",");
  <span style="white-space:pre">	</span>}
}
show2(11,22,33,44);
  	   
//※综上,函数的技术细节:
//1, js中的函数是没有重载,只以函数名来识别的---其实函数名就是一个function对象的引用的名字
//2, js函数中有一个内部维护的arguments数组来接收与保存形参
로그인 후 복사
기술 세부정보:

1. js 로드에서는 함수 중복이 없으며 함수 이름으로만 식별됩니다. 함수 이름은 함수 객체의 참조 이름입니다

2. 함수의 매개변수는 모두 내부 인수 배열에 수신되고 저장됩니다. js ------ 객체 js 내부에서 암시적으로 수행되며 값

에 액세스하고 변경할 수 있습니다. 2. 동적 함수
는 내장 객체를 통해 구현됩니다. Js의 기능 .

예:

<script type="text/javascript">
//把函数的形参用第1个参数传入,函数体中的代码用第2个参数传入----可以通过调用者动态传入函数体,因此非常灵活,该思想类似Java当中的类反射。
<span style="white-space:pre">	</span>var add = new Function("a,b","var s = a+b; return s; ");
//alert( add(12,11));
</script>
로그인 후 복사
은 다음과 같습니다.

function demo(x,y){
	alert(x+y);
}
demo(4,6);
로그인 후 복사
차이점은 동적 함수, 매개변수 및 함수 본문이 매개변수를 통해 전달될 수 있다는 것입니다. . 동적으로 할당됩니다.


3. 익명 함수

형식: function(){...}

예:

var demo = function(){...}
demo();
로그인 후 복사
일반적으로 이벤트 속성의 동작을 정의합니다. 더 일반적으로 사용됩니다.


예:

function test()
{
	alert(“load ok”);
}
window.onload = test;
로그인 후 복사
은 익명 함수 형식으로 작성할 수 있습니다.

window.onload = function()
{
	alert(“load ok”);
}
로그인 후 복사
익명 함수는 약식 형식입니다.


함수 정의 및 호출 예시:

<html>
  <head>
    <title>javascript数组与函数练习</title>
  </head>
  
  <body>
  <script type="text/javascript">
    //写一个获取数组中元素最大值的函数
    function getMax(arr){
    	var max=0;//最大值的下标
    	for(var x=1;x<arr.length;x++){
    		if(arr[x]>arr[max]){
    			max = x;
    		}
    	}
    	return arr[max];
    }
    //调用
    var arr=[23,-3,45,0,-100,47,22];
    var v = getMax(arr);
    //alert("v="+v);
    
    //数组排序
    function sortArray(arr){
    	for(var x=0;x<arr.length-1;x++){
    		for( var y=x+1;y<arr.length;y++){
    			if(arr[x]>arr[y]){
    				swap(arr,x,y);
    			}
    		}
    	}
    }
    function swap(arr,x,y){
    	var temp = arr[x];
    	arr[x] = arr[y];
    	arr[y] = temp;
    }
    
    //alert(arr);
    //document.write(arr+"<br/>");
   // sortArray(arr);
    //alert(arr);
    //document.write(arr+"<br/>");
    
    //我们的输出函数---把内容输出到页面且换行
    function println(str){
    	 document.write(str+"<br/>");
    }
    println(arr);
    sortArray(arr);
    println(arr);
    
    //到数组当中查找元素
    function searchElement(arr,key){
    	for(var x=0;x<arr.length;x++){
    		if(arr[x]==key){
    			return x;
    		}
    	}
    	return -1;
    }
    println( searchElement(arr,0) );
    println( searchElement(arr,123) );
    
  </script>
  
  <script type="text/javascript">
    //二分查找
    function binarySearch(arr,key){
    	var max,min,mid;
    	min=0;
    	max=arr.length-1;
    	while(min<=max){
    		mid = (max+min)>>1;
    		if(key>arr[mid]){//落在右边
    			min = mid+1;    			
    		}else if(key<arr[mid]){//落在左边
    			max = mid-1;
    		}else{
    			return mid;
    		}
    	}
    	return -1;
    }
    println( binarySearch(arr,0) );
    println( binarySearch(arr,123) );
    
    //数组反转
    function reverseArray(arr){
    	for(var start=0,end=arr.length-1; start<end; start++,end--){
    		swap(arr,start,end);
    	}
    }
    reverseArray(arr);
    println("反转之后:"+arr);
  </script>

  </body>
</html>
로그인 후 복사
위는 자바스크립트 웹 프로그래밍의 내용------함수(일반 함수, 동적 함수, 익명 함수), 더보기 관련 내용은 PHP 중국어 홈페이지(m.sbmmt.com)를 참고해주세요!



관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿