初见函数
函数: 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
重要事项1. 函数只定义,不调用的话,是不执行 的
2. 函数在哪里调用,就在哪里执行
3. 函数调用的次数,不限
定义函数:声明函数的关键字 函数名(参数)
function myFun(){
函数体(也就是,需要执行的功能) }
函数调用: 通过函数名直接调用即可, 无论是否有参数,都需要带上小括号
函数的四种形态: (说是四种,其实就是参数和返回值在闹腾而已)
在调用函数的过程中,实参是具体的数据, 形参只是一块空白的内存空间;实参向形参 传参这个过程, 就是一个值拷贝的过程。 形参负责存储实参拷贝的值,并在函数中使用,但函数执行结束后,形参这块内存被回收,下次函数再被调用时,重新分配给形参空间;实参给形参赋值, 是按照实参()中,书写的顺序的来的。
1.无参无返回值
function myFun(){
alert("我是一个函数");
}
myFun();
2.有参无返回值
形参:形式参数列表 , 简称形参。自定义名称,不需要加var 就可以声明内存空间。
函数调用
实参: 是向函数内部,传递的数据。
function myFunTwo(c,e){
alert(a+b);
}
var aa = 3;
myFunTwo(4,aa);
练习:定义一个函数, 可以求出两个数的最大值
function av(c,d){
var e = c > d ? c : d;
alert("最大值是:" + e);
}
av(10,15);
3. 无参有返回值
function sum(){
var s = 0;
for(var i = 1; i < 101; i++){
s += i;
}
return s;
}
var num = sum();
console.log(num);
4. 有参有返回值
函数的返回值:
- 需要写在return关键字后, 可以是一个值,也可以是一个表达式计算出来的值。
- return在一个函数中,理论上可以出现很多个,但是只有一个会执行。
- return被触发后,当前函数立刻结束,它下面的代码不再执行。
调用:
1.函数在哪里调用, 返回值就去到了哪里。
2.有返回值的情况,一定需要新建变量来接受。
function KFC(a,b){
return a*b;
}
var c = KFC(1,2);
console.log(c);
回调函数(函数嵌套)
**函数嵌套:**不允许嵌套定义, 嵌套的是调用。
形参的命名: 1. 在定义函数的小括号中自定义,符合命名规则即可。
2. 一旦定义过,在当前函数内,必须按照定义好的名字使用
//比较两个 数的大小
function TwoNumber(av,bv){
return av>bv ? av:bv;
}
var sml = TwoNumber(1,2);
//比较三个数的大小
function ThreeNumber(a,b,c){
var s = TwoNumber(a,b);
return s > c ? s : c;
}
var cn = ThreeNumber(2,3,5);
//比较四个数的大小
function fourNumber(one,two,three,four){
var three = ThreeNumber(one,two,three);
return three > four ? three : four;
}
变量的作用域
变量的声明: var s;
变量的定义: var s = 10;
全局变量: 不在函数中声明或定义.(之前的写法);它的作用范围,是当前整个文件. 任何地方都可以获取并修改它。
局部变量: 定义或声明在函数中的变量,当函数执行结束后,这个变量被回收,分支和循环结构 并不能产生 局部变量。 它们产生的是全局变量 。
< script>
var s = 1;
function num(){
var n = 10;
s += n;
console.log(s)
}
num();
console.log(s);
function numTwo(){
var n = 10;
s *= n;
console.log(s);
}
numTwo();
< /script>
练习题:
//1.随意输入三个数,然后在函数中比较这三个数字的大小,按照从小到大的顺序输出
// var a1 = parseInt(prompt());
// var b1 = parseInt(prompt());
// var c1 = parseInt(prompt());
//
// function maxNumber(one,two,three){
//
// //比较最小值
// var min = one < two ? one : two;
// min = three > min ? min : three;
//
// //比较最大值
// var max = one > two ? one : two;
// max = three < max ? max : three;
//
// //求中间数
// var sum = (one + two + three) - max - min;
//
// console.log("数值从小到大,依次为:" + min + "," + sum +"," + max);
//
// }
//
// maxNumber(a1,b1,c1);
//2.随意输入五个数,分别求出这个五个数的最大值,最小值,加和。并逐个输出
// var a1 = parseInt(prompt());
// var b1 = parseInt(prompt());
// var c1 = parseInt(prompt());
// var d1 = parseInt(prompt());
// var e1 = parseInt(prompt());
//
// function maxNumber(one,two,three,four,five){
//
// //比较最小值
// var min = one > two ? two : one;
// min = three > min ? min : three;
// min = four > min ? min : four;
// min = five > min ? min : five;
//
// //比较最大值
// var max = one < two ? two : one;
// max = three < max ? max : three;
// max = four < max ? max : four;
// max = five < max ? max : five;
//
// //求加和
// var sum = one + two + three + four + five;
//
// console.log("最大值是: " + max);
// console.log("最小值是: " + min);
// console.log("加和是: " + sum);
//
// }
//
// maxNumber(a1,b1,c1,d1,e1);
//3.通过输入的行数和列数,来创建表格。显示到页面上
// var a1 = parseInt(prompt());
// var b1 = parseInt(prompt());
//
// function myTable(hang,lie){
//
// document.write("<table>");
//
// for(var i = 0; i < hang; i++){
//
// document.write("<tr>")
//
// for(var j = 0; j < lie; j++){
// document.write("<td class='tt'></td>");
// }
//
//
// document.write("</tr>")
// }
//
// document.write("</table>")
//
// }
//
// myTable(a1,b1);
//4.随意输入两个数,将两个数之间,所有的奇数的加和,并 输出,所有的偶数的乘积,并输出
// var a1 = parseInt(prompt("请输入较小的数:"));
// var b1 = parseInt(prompt("请输入较大的数"));
//
// function sumNumber(min,max){
//
// min = max > min ? min : max;
// max = max > min ? max : min;
//
// var s = 0;
// var c = 1;
// for(var i = min; i < max ; i++){
//
// if(i % 2 != 0){
// s += i;
// }else{
// c *= i;
// }
// }
//
// console.log("加和为:"+ s);
// console.log("乘积为: " + c);
// }
//
// sumNumber(a1,b1);