(注:用法和c语言相同的部分这里不作赘述,敬请谅解)
目录
1.定义函数
(1)function语句
不作赘述
(2)Fuction()
语法:
var 函数名=new Function("参数1","参数2","参数3",...,"函数体");
例如
var mysum=new Function("x","y","return x+y;");
document.write(mysum(1,2));
上述函数输出3
(3)在表达式中直接定义函数
语法:
var 函数名=function(参数1,参数2,...){函数体};
例如
var mysum=function(x,y) {document.write(x+y)};
mysum("wo shi ","sha bi");
上述函数输出 wo shi sha bi
2.调用函数
与c语言函数调用相同,不作赘述
3.函数的参数
(1)判断传递函数参数的个数
对象arguments可以获取从js中传递过来的参数,并放在arguments[]数组中,故可以通过argument对象来判断传递过来的参数个数
例如:
function mysum(x,y)
{
if(arguments.length!=2)
{
return("ni shi ge ji ba"+"<br>");
}
else
return(x+y);
}
document.write(mysum(1,2,3));
document.write(mysum(1,2));
上述函数输出ni shi ge ji ba
3
(2)获得实际传递参数的值
例如:
function myfun(x,y)
{
if(arguments.length!=2)
{
var str="传递参数有误,传递了"+arguments.length+"个参数<br>";
str+="传递的参数分别为:<br>";
for(i=0;i<arguments.length;i++)
{
str+="第"+(i+1)+"个参数为:"+arguments[i]+"<br>";
}
return str;
}
else
{
var z=x*y;
return z;
}
}
document.write(myfun(1,2,3));
document.write(myfun(1,2));
上述代码段输出 传递参数有误,传递了3个参数
传递的参数分别为:
第1个参数为:1
第2个参数为:2
第3个参数为:3
2
4.函数的递归调用
(1)使用函数名的递归调用
不作赘述
(2)使用callee属性的递归调用
该属性的作用是引用正在执行的函数
例如:
function myfun(x)
{
if(x%2==0)
{
document.write(x+"<br>");
}
if(x>1)
{
arguments.callee(x-1)
}
}
document.write(myfun(5));
上述代码段输出 4
2
5.函数的属性与方法
(1)length属性:函数定义参数的个数(注意与arguments.length的区别),可在函数体外使用
例如:
function myfun(x,y)
{
if(myfun.length!=arguments.length)
{
return "传参与定参不一致!<br> ni shi sha bi";
}
else
{
return x+y+"<br>";
}
}
document.write(myfun("wo shi ","sha bi"));
document.write(myfun("wo shi ","sha bi","hhh"));
上述函数输出 wo shi sha bi
传参与定参不一致!
ni shi sha bi
(2)prototype属性:引用原型对象
原型对象是在使用new运算符构造函数时起作用,通常用于定义新的对象类型。由于prototype属性引用的是一个对象,所以可以为该对象添加属性
例如:
function pen(color,price)
{
this.color=color;
this.price=price;
}
var pen1=new pen("红色",20);
pen.prototype.name="沙笔";
document.write(pen1.color+"<br>");
document.write(pen1.price+"<br>");
document.write(pen1.name);
上述代码段输出 红色
20
沙笔
(3)caller属性:判断函数调用情况
如果是在js顶层代码中调用,caller属性返回值为null,否则返回调用该函数的当前函数的Function对象的引用
例如:
function myfun()
{
if(myfun.caller==null)
{
document.write("顶层调用<br>");
}
else
{
document.write(myfun.caller);
}
}
myfun();
function myfun1()
{
myfun();
}
myfun1();
上述代码段输出 顶层调用
function myfun1() { myfun(); }
(4)自定义属性
类比其他属性,这里不作赘述
(5)call()方法
调用某个函数
例如:
function myfun()
{
document.write (arguments[0]+arguments[1]);
}
var myobject=new Object();
myfun.call(myobject,1,2);
上述代码段输出 3
(6)apply()方法
与call()方法相同,这里不作赘述
6.系统函数
(1)编码函数escape()
将字符串中的非文字、数字的字符转换成相应的ASCII码值
例如:
var str="abc~!@#$%^&*()_+|\=-`";
document.write(escape(str));
上述代码段输出 abc%7E%21@%23%24%25%5E%26*%28%29_+%7C%3D-%60
(2)解码函数unescape()
与escape()函数相反
例如:
var str="abc~!@#$%^&*()_+|\=-`";
str=escape(str);
str=unescape(str);
document.write(str);
上述代码段输出:
abc~!@#$%^&*()_+|=-`
(3)求职函数eval()
将字符串指定为对象
例如:
var pen1=1;
var pen2=2;
var pen3=3;
for(i=1;i<4;i++)
{
var penx=eval("pen"+i); //注意不是加法哦大天才
document.write(penx+" ");
}
上述代码段输出:1 2 3
(5)数值判断函数isNaN()
判断变量是否为数字型,如是,则返回false,不是,则返回true
例如:
function myfun(x)
{
if(!isNaN(x))
document.write("是数字呀<br>");
else
document.write("哒咩!<br>");
}
myfun(4);
myfun("a");
上述代码段输出 是数字呀
哒咩!
(6)整数转换函数parseInt()
将2,,8,16进制的数转为十进制的数
语法:
parseInt(数据,底数)
例如:
document.write(parseInt("10101",2)+" ");
document.write(parseInt("77",8)+" ");
document.write(parseInt("2A3B",16)+" ");
document.write(parseInt("077")+" ");
document.write(parseInt("0x2A3B"));
上述代码段输出:21 63 10811 77 10811
(7)浮点数转换函数parseFloat()
将字符串数据转换成浮点数据
与parseInt()函数类似,这里不作赘述
--------------------------------------------------------------------------------------------
完结撒花!!!