06 JavaScript 函数
By Kevin Song
06-01 一般函数
06-02 动态函数
06-03 匿名函数
06-01 一般函数
定义函数需要两个明确
- 函数的结果
- 参数列表
格式:
function 函数名 (参数列表) {
函数体;
return 返回值;
}
<script type="text/javascript">
function demo() {
alert("demo run");
return;
}
demo();//调用函数
function demo2(x,y) {
return x+y;
}
var sum = demo2(1,2);
alert("sum"+sum);
</script>
函数细节一
- 只要使用函数名称就是在调用函数
- 函数中有一个数组,在对传入的参数进行存储,这个数组就是argument
function show(x,y) {
alert(x+":"+y);
}
show(4);//4:undefined
函数细节二
- 不写括号直接写函数名,无法调用函数,输出的是函数的字符串表达形式
function getSum() {
return 100;
}
var sum = getSum();
alert("sum="+sum);//函数运行,返回值100赋值给sum
var sum = getSum;
alert("sum="+sum);//getSum这个引用的地址值赋给sum,sum也变成了函数对象的引用,打印对象的字符串形式
/*
sum=function getSum() {
return 100;
}
*/
06-02 动态函数
动态函数:使用的是JavaScript中内置的对象Function
格式
new Function("参数列表","代码1;代码2;return;");
var add = new Function("x,y","var sum; sum=x+y; return sum;");
var sum = add(4,8)
alert("sum”+sum);//12
06-03 匿名函数
函数的简写形式
var add3 = function(a,b) {
return a+b;
}
alert(add3(7,8));
函数练习
- 获取数组最值
function getMax(arr) {
var max = 0;
for(var x = 1; x < arr.length; x++) {
if(arr[x]>arr[max]) {
max = x;
}
}
return arr[max]
}
- 数组排序
function sortArray(arr) {
for(var x = 1; 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;
}
- 数组查找
//挨个查找
function searchElement(arr,key) {
for(var x = 0; x < arr.length; x++) {
if(arr[x]==key) {
return x;
}
}
}
//二分查找
function binarySearch(arr,key) {
arr.sort();
for(var x = 0; x < arr.length; x++) {
var max,min,mid;
min = 0;
max = arr.ength-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;
}
}
- 数组逆排序
function reverseArray(arr){
for(var start=0,end=arr.length-1; start<end; start++,end--){
swap(arr,start,end);
}
}
reverseArray(arr);
println("反转后:"+arr);
function println(val) {
document.write(val+"<br/>");
}