js的函数
- 格式:docx
- 大小:120.98 KB
- 文档页数:7
函数的定义
JavaScript中的函数属于Function对象,因此可以使用Function对象的构造函数来创建一个函数。
同时,也可以使用function关键字以普通的形式来定义一个函数。
这二种方式称为普通方式和变量方式。
函数的普通定义
普通定义方式使用关键字function,也是常用方式,形式更其它编程语言一样。
function 函数名( 参数1,参数n)
{
语句组;
return 表达式;
}
函数的变量定义
函数变量定义方式是指以定义变量的方式来定义函数,JavaScript所有函数都属于Function 对象,于是可以使用function对象的构造函数来创建一个函数。
var变量名=new Function( 参数1,参数n,函数体)
//JavaScript document
var add=new Function("a","b","returna+b");
var sum=add(1,2);
window.alert("1+2="+sum);
指针调用
除了前面介绍的直接调用函数外,JavaScript中还有一种重要的,在其它语言也经常使用的调用形式叫做回调。
其机制是通过指针来调用函数。
回调函数按照调用者的约定实现函数的功能,由调用者调用。
//JavaScript document
function SortNumber(obj,func) //冒泡排序法
{
if(!(objinstanceof Array)||!(funcinstanceof Function))
{
var e=new Error();
e.message="参数无效";
throw e;
}
for(n in obj)
{
for(m in obj)
{
if( func(obj[n],obj[m])) //使用回调函数排序,规则由用户设定
{
var temp=obj[n];
obj[n]=obj[m];
obj[m]=temp;
}
}
}
returnobj;
}
function greatThan(arg1,arg2) //回调函数,用户定义的排序规则。
{
223
return arg1<arg2;
}
try{
//
varnumArray=new Array(6,58,-8,4,2,1);
document.write("<li>排序前:"+numArray);
SortNumber(numArray,greatThan);
document.write("<li>排序后:"+numArray);
}catch(e)
{
alert(e.message);
}
函数的参数
JavaScript的函数参数信息由arguments对象管理,arguments对象代表正在执行的函数和调用它的参数,函数对象的length属性说明调用函数时传递的参数个数。
arguments对象不能显示创建,函数在调用时由JavaScript运行时环境创建并设定各个属性的值。
函数
声明提前:在程序执行前或函数被调用前,将var声明的变量和function声明的函数提前到当前作用域的顶部集中创建。
仅声明提前,赋值留在原地。
function fun()
{
console.log(66);
}
fun();
function fun()
{
console.log(88);
}
VM162:88
第二个
var a=100;
function fun()
{
console.log(a);
var a=90; //这个声明提前到函数内部的顶部
console.log(a);
}
fun();
console.log(a);
VM238:undefined
VM238: 90
VM238:100
按值传递:js中无论变量间赋值或使用变量传递参数时,都是将变量中的值,复制一个副本给对方。
函数的返回类型
函数返回形式分为二种类型,即值类型和引用类型。
值类型返回的是数据本身的副本,相当于复制了一份传递出去。
引用类型返回的是数据的地址,而不是数据本身。
引用传递的优点是速度快,但是系统会为数据而付出额外的开销。
通过返回复合数据类型数据时使用引用传递方式。
functiongetList()
{
var List=new Array('tom','jack','bob');
return List=List;
}
varrealList=getList();
console.log(realList[1]);
realList[1]='dflx';
console.log(getList()[1]);
VM522: jack
VM522: jack
全局函数:ES标准已经定义好的,开发者可直接使用函数。
比如parseInt(), parseDouble(),eval(),encodeURI;
解码:
varurl="/s?word=";
var input=prompt("百度一下");
input=encodeURI(input);
alert("先服务器发送请求:"+url+input);
alert("服务器端解码后:"+decodeURI(input));
eval:计算字符串格式的表达式的值,或执行字符串格式的js语句。
var input=prompt("输入一个算式");
alert(eval(input));
var input=prompt("输入一条js语句");
eval(input);。