1.函数:定义一次,调用或执行多次;function 函数名([参数1,参数2...]){语句[return 返回值]}
。
同一页面中,函数名必须是唯一的。
2.函数的调用:
1)简单调用
函数名(传递给函数的参数1,...)
function test() {
alert('我喜欢javascript!');
}
test(); //放在定义的函数前面也是可以的,区分大小写。
2)在事件响应中调用函数
事件处理过程:触发事件,调用和执行函数,在页面中产生响应。
function test() {
alert('我喜欢javascript!');
}
<input type="button" value="提交" onclick="test()"/>
3)通过链接调用函数
在<a>
标签中的href
属性中使用javascript:函数名()
格式来调用函数,点击链接,相关函数被执行。
<a href="javascript:test()">单击链接</a>
3.函数的参数
形参:定义函数时指定的参数;实参:调用函数时实际传递的值。
function show(bookname,author,name) {
alert(bookname+author+name);
}
show("功夫javascript",'作者:',"FJ");
4.函数的返回值
格式return 表达式;
。
function sum(x,y) {
var z = x+y;
return z;
}
alert(sum(2,3)); //5
/*
var result = sum(2,3);
alert(result);
*/
//通过返回值判断两个数的大小
function compare(x,y) {
if(x>y){
return true;
}else{
return false;
}
}
var result1 = compare(10,20);
if(result1){
alert('第一个数大于第二个数!');
}else{
alert('第一个数小于第二个数!');
}
5.函数的嵌套定义
在函数内部再定义其他的函数。(使程序的可读性降低)
6.函数的嵌套调用:允许在一个函数的函数体对另一个函数进行调用。
//计算三个参数的平均值
function setValue(num1,num2,num3) {
var avg = (num1+num2+num3)/3;
return avg;
}
function getValue(num1,num2,num3) {
document.write("参数分别为:"+num1+'\n'+num2+'\n'+num3);
var value = setValue(num1,num2,num3);
document.write("参数的平均数为:"+value);
}
getValue(60,70,90); //参数分别为:60 70 90参数的平均数为:73.33333333333333
7.递归函数:函数在自身体内调用自身。
格式:function 函数名(参数1){函数名(参数2);}
(应用处理阶乘问题)
//10的阶乘为:3628800
function f(num) {
if(num<=1){
return 1;
}else{
return f(num-1)*num;
}
}
alert('10的阶乘为:'+f(10));
8.内置函数
1)数值处理函数:parseInt();parseFloat();isNaN();isFinite();
。
parseInt(string,[n])
函数:将首位为数字的字符串转换成数字,如果字符串不是以数字开头,那么将返回NaN
,string
转换为整型的字符串,后面的n
指出字符串中的数据是几进制的数据。
var str1 = "123abc";
var str2 = "abc123";
document.write(parseInt(str1)+"<br>"); //123
document.write(parseInt(str1,8)+"<br>"); //83
document.write(parseInt(str2)); //NaN
parseFloat(string)
:该函数主要将首位为数字的字符串转化成浮点型数字,如果字符串不是以数字开头,那么将返回NaN。
var str1 = "123.456abc";
var str2 = 'abc123.456';
document.write(parseFloat(str1)+"<br>"); //123.456
document.write(parseFloat(str2)); //NaN
-isNaN(num)
:检验某个值是否为NaN。
var num1 = 123;
var num2 = "123abc";
document.write(isNaN(num1)+"<br>"); //false
document.write(isNaN(num2)); //true
isFinite(num)
用于检验其参数是否有限。
document.write(isFinite(123)+"<br>"); //true
document.write(isFinite("123abc")+"<br>"); //false
document.write(isFinite(1/0)+"<br>"); //false
2)字符串处理函数:eval();escape();unescape();encodeURI();decodeURI();
。
eval(string)
函数:计算字符串表达式的值,并执行其中的JS代码。
document.write(eval("3+6")); //9
document.write("<br>");
eval("x=5;y=6;document.write(x*y)"); //30
escape(string)
将一些特殊字符(不包括字母和数字字符以及* @ - _ + . /
)进行编码,转换成%XX
。
document.write(escape("You & Me")); //You%20%26%20Me
unescape(string)
用于对应用·前面函数编码后的字符串进行编码,转换成字符。
var str = escape("You & Me");
document.write(unescape(str)); //You & Me
encodeURI(url)
将URI字符串进行编码。URI比URL范围更大一些,一般可以看成一样的,只对字符串中的空格汉字进行编码。
var URI = "https://www.baidu.com/index.php?tn=monline_3_dg123145 你好!";
document.write(encodeURI(URI));
//https://www.baidu.com/index.php?tn=monline_3_dg123145%20%20%E4%BD%A0%E5%A5%BD%EF%BC%81
decodeURI(url)
前者的逆向操作。
var URI1 = encodeURI(URI);
document.write(decodeURI(URI1));
//https://www.baidu.com/index.php?tn=monline_3_dg123145 你好!
2.定义函数的基本方法
1)定义匿名函数(定义没有名称的函数):var 变量名 = function(参数1,......){语句;}
var sum = function (x,y) {
return x+y;
}
alert(sum(10,20)); //30
示例:
var getOdd,i;
getOdd = function (num) {
document.write("1到"+num+"之间所有3的倍数为:");
for(i = 1;i < num;i++){
if(i%3 != 0){
continue;
}
document.write(i+"\n"); //1到20之间所有3的倍数为:3 6 9 12 15 18
}
}
getOdd(20);
2)Function()
构造函数:var 变量名 = new Function("参数1",......."函数体");
,所有参数和函数体都必须是字符串类型,一定要用双引号或单引号引起来。
var sum = new Function("x","y","alert(x+y)");
sum(10,20); //30
最近早上起太晚,每天都在自责,但是,我知道,自责没有用,我都养成习惯了!早点儿睡才能够早点儿起!我今天一定早点儿睡觉!最近居然迷上了大胃王的视频!肚子早就肥了一圈,减肥等于省钱!