Day13
●js函数
案例:
请大家完成这样一个程序,输入两个数,再输入一个运算符,得到结果。
<html>
<head>
<!--一般讲javascript放在head里面-->
<script language="javascript" type="text/javascript">
//有些浏览器不识别language或者有些浏览器不识别type.
//为了兼容,将两个都写进去
<!--
//-->//有时候这样写,也是有些浏览器可能存在的问题。
var num1 = window.prompt("请输入第1个num");
var num2 = window.prompt("请输入第2个num");
var operator = window.prompt("请输入运算符");
num1 = parseFloat(num1);
num2 = parseFloat(num2);
var res =0;
if(operator =="+"){
res = num1+num2;
}else if(operator =="-"){
res = num1-num2;
}else if(operator =="*"){
res = num1*num2;
}else if(operator =="/"){
res = num1/num2;
}
document.write("结果是"+res);
</script>
</head>
<body>
</body>
</html>
引出一个问题:如果在另外的htm文件(比如a.htm,b.htm,c,htm)中也需要完成这个功能,又该怎么办?
☞解决方案:函数
函数概念:未完成某一功能的代码集合。
基本语法:
Function函数名(参数列表){
//代码
//Return;
}
强调:
参数不用写参数类型。
有时候需要返回值,但它不需要再函数名前面写函数返回类型。à不同于java
à主要原因还是javascript变量类型只有var一种,写不写无所谓,就不写了。
<html>
<head>
<script language="javascript" type="text/javascript">
var num1 = window.prompt("请输入第1个num");
var num2 = window.prompt("请输入第2个num");
var operator = window.prompt("请输入运算符");
num1 = parseFloat(num1);
num2 = parseFloat(num2);
//如何调用函数
document.write("res="+calc(num1,num2,operator));
//自定义函数
//命名:驼峰法,下划线
function calc(num1,num2,operator){
var res =0;
if(operator =="+"){
res = num1+num2;
}else if(operator =="-"){
res = num1-num2;
}else if(operator =="*"){
res = num1*num2;
}else if(operator =="/"){
res = num1/num2;
}
return res;
}
</script>
</head>
<body>
</body>
</html>
那么如果其他html文件需要引用这个函数呢?
<scriptlanguage=”javascript” src=路径 ></script>
☞把上面的函数单独拿出来,写到js文件中,然后在需要的地方引入即可。
Html:
<html>
<head>
<!--引入js文件-->
<script language="javascript" src ="myfunction.js" ></script>
<script language="javascript" type="text/javascript">
var num1 = window.prompt("请输入第1个num");
var num2 = window.prompt("请输入第2个num");
var operator = window.prompt("请输入运算符");
num1 = parseFloat(num1);
num2 = parseFloat(num2);
//如何调用函数
document.write("res="+calc(num1,num2,operator));
</script>
</head>
<body>
</body>
</html>
Myfunction.js:
function calc(num1,num2,operator){
var res =0;
if(operator =="+"){
res = num1+num2;
}else if(operator =="-"){
res = num1-num2;
}else if(operator =="*"){
res = num1*num2;
}else if(operator =="/"){
res = num1/num2;
}
return res;
}
●js函数分类
自定义函数、系统函数(经常查看js帮助文档)
●js自定义函数
前面已经说过
●js自定义函数调用方式
①普通调用,通过函数名调用(同java语言一样)
②通过指向函数的变量去调用
//定义一个函数test
function test(val){
window.alert("你输入的是:"+val);
}
test("helloWorld");//通过函数名调用
window.alert(test); //这时会把函数输出来
var myvar = test;//相当于指针一样
myvar("My name is Gavin");
③关于接收函数返回值的问题
//如果test函数没有返回值,但是你又接收了,则返回的就是undefined
//如果有返回值,则返回的是什么就是什么。
var myvar = test("abc");
window.alert(myvar);
●函数调用过程
//abc是一个函数,它接收一个数值,
function abc(num1){
if(num1>3){
abc(--num1);//递归
}
document.writeln(num1);
求abc(5),内存分析图如下:每调用一个函数,就新开辟一个栈空间。
●函数—深入使用
1、函数的参数列表可以是多个
2、参数列表可以是多个,并且数据类型可以是任意的类型
3、js支持参数个数可变的函数,天然支持。arguments
4、js支持创建动态函数(后面再讲)
5、但javascript不支持重载!!所以函数名一定要不一样。
案例:
//编写一个函数,可以接受任意多个数,并计算他们的和
function add(){
//在js中有一个arguments,可以访问所有的传入值
//window.alert(arguments.length);
var res = 0;
//遍历所有的参数
for(var i =0;i<arguments.length;i++){
res += arguments[i];
}
window.alert(res);
}
调用:
add(2,3,900);
add(3,"hello world",5);//调用时参数可以是字符串