1.函数: 函数就是一种封装
2.定义函数:
function 函数名(){
函数体;
}
3.函数不会自动执行,需要被调用才可以执行
函数名();
4.函数命名规则:
与变量命名规则一致
1)以字母、$、_开头
2)可以包含数字、字母、$、_
3)区分大小写
4)不能使用关键字和保留字
驼峰命名法:若名称由多个单词组成,则从第二个单词开始,首字母大写
5.区分变量名和函数名
不成文的规定:
函数名 动词
变量名 名词
6.函数的定义顺序与调用顺序无关
举例子:
//在页面输出5行hello world
//定义函数
function printHello(){
for(var i=0;i<5;i++){
document.write('hello world<br>');
}
}
printHello();//函数调用
document.write('分割线<br>');
printHello();
例子:
function show(){
document.write('hello world');
}
document.write('hi'); //hi
show(); //hello world
document.write('how are you'); //how are you
带有参数的函数:
1.形参:函数定义时的参数
2.实参:函数掉用时的参数
3.函数的参数理论上可以有无限多少个,多个参数之间使用逗号隔开
4.函数参数类型不限制
用函数实现打印如下规律的图形:
*
***
*****
*******
*********
...
function print(){
for(var i=1;i<=5;i++){
for(var j=1;j<2*i-1;j++){
document.write('*');
} document.write('<br>'); //换行
}
}print();
我们可以这样写
//带有参数函数
function print( var row){ //var可以省略
for(var i=1;i<=row;i++){
for(var j=1;j<2*i-1;j++){
document.write('*');
} document.write('<br>'); //换行
}
}
print(10);
// print1(6);
// print1(3);
// print1(5);
例子:计算圆的面积:
function calCircle(r){
// var r=15;
var area=Math.PI*r*r;
console.log(area);
}
// calCircle();//计算圆的面积
calCircle(10);
calCircle(20);
计算长方形的面积
function calRet(w,h){
// var w=10;
// var h=5;
var area=w*h;
console.log(area);
}
// calRet();
calRet(20,10); //200
calRet(30,10); //300
多参函数
function show(name,age,gender){
var s='先生';//
if(!gender){
s='女士';
}
document.write('欢迎'+name+s+'到校访问,年龄为:'+age);
}
// show('李四');
show('王五',90,true);//true 男
show('小花',40,false);
return 语句;
(1)将结果返回
(2) 结束函数
例如:
return a+b;
console.log(a*b); //未执行
//计算两个数据的差
function diff(a,b){
var val;//差
if(a>b){
val=a-b;
}else{
val=b-a;
}
// console.log(val);
// document.write(val);
// alert(val);
return val;//将val返回
}
var a=diff(10,90);
console.log(a); //80
alert(a);
document.write(a);
函数返回值:
计算圆的面积
function calCircle(r){
return Math.PI*r*r;
}
计算长方形的面积
function calRet(w,h){
return w*h;
}
求长方形和圆的面积的和
function calCircle(r){
return Math.PI*r*r;
}
function calRet(w,h){
return w*h;
}
var b=calRet(10,5);
var a=calCircle(20);
var sumA=a+b;
var sumA=calRet(10,5)+calCircle(20);
console.log('和为:'+sumA);
break;只能放到函数结构里面去
return;结束函数;
(1)将结果返回
(2) 结束函数
function show12(){
for(var i=0;i<3;i++){
for(var j=0;j<3;j++){
if(j==1){
// break;//结束内层循环
return;//结束函数
}
// console.log(i+'x'+j+'='+i*j);
console.log('i='+i+',j='+j);
}
}
}
show12();
//无参 输出 ’0‘
//一个参数 输出该数值
//两个参数 输出二者的和
function show(a,b) {
// console.log(a,b);
//无参
if(a==undefined){
console.log(0);
}else if(a!=undefined&&b==undefined){
console.log(a);
}else{
console.log(a+b);
}
}
// show(10,20);
show(); //0
show(10); //10
show(10,20); //30
prompt('hello',100);
例子:
迎新年,某商场举行促销大酬宾活动,消费满1000元,打95折,消费满2000元,打9折
根据顾客的消费情况(购买的商品数量和商品价格),计算找零信息(用函数实现)。
var price=prompt('请输入商品价格:');
var count=prompt('请输入商品数量:');
//计算消费信息
var pMoney=getMoney(count,price);
//支付的金额
var my=prompt('客户消费了:'+pMoney+'元,请输入支付的金额:');
var cMoney=diffMoney(my,pMoney);//找零
alert('找零:'+cMoney+'元');
//计算客户消费信息
function getMoney(m,p){
var money=m*p;//消费的金额
if(money>=2000){
money*=0.9;
}else if(money>=1000){
money*=0.95;
}
return money;
}
//计算找零信息
function diffMoney(price1,price2){
return price1-price2;
}
Function
引用类型:Object Array Date Function RegExp
function
number Number
属性:arguments 参数(对象) length 参数的个数(接收到的参数的个数)
function show(a,b){
// console.log(arguments);//参数对象
console.log(arguments.length);//输出参数的个数 //2
console.log(a+b); //30
}
show(10,20);
实现如下函数:无参输出默认值:0,有一个参数,输出参数的平方,有两个参数,输出二者之积
function show(a,b) {
if(arguments.length==0){
console.log(0);
}else if(arguments.length==1){
console.log(a*a);
}else{
console.log(a*b);
}
}
// show();
// show(10);
show(20,9);
1.无参函数
2.有参函数
3.带有返回值的函数
4.匿名函数
function show() {
document.write('hello world');
}
// show();
// console.log(show);
var a=show;//赋值
console.log(a);
console.log(typeof a);//function
a();
var b=a;
b();
结果
匿名函数
匿名函数有两种用法:
1.赋值
var a=function(){};
2.自我执行
例如:
(function(){
document.write('我好我好');
})();
输出结果
计算圆的面积:
(function(r){
var area=Math.PI*r*r;
console.log(area);
})(10);
求两个数据的差
var num=(function(a,b){
if(a>b){
return a-b;
}
return b-a;
})(10,20);
console.log(num);
递归函数
求10的阶乘
function show() {
var s=1;
for(var i=10;i>0;i--){
s*=i;
}
console.log(s);//10*9*8...*1
}
show();
//递归函数有性能问题,若递归层次太深,会死机
//递归函数
//求阶乘
function show(n){
if(n==1){
return 1;
}
return n*show(n-1); //show(n-1)第一次调用是9;一直调用到1;结束函数
}
var num=show(10);
注意: show(n-1)第一次调用是9;一直调用到1;结束函数
1. n=10 10*show(9)
2. n=9 9*show(8)
3. n=8 8*show(7)
...
n=1 1
10*9*8*7...*2*1
console.log(num);