九、函数
定义:
(耦合代码:重复、低效 编程要高内聚 弱耦合)
1、函数声明:
-------
function 函数名(){函数体
};
函数名(); 执行,出现几次执行几次
-------
2、函数表达式:
(1)第一种:函数声明
(2)命名函数表达式
-------
var test =function abc(){
};
test(); 表达式忽略名字 abc没用 但test.name 是abc
--------
(3)匿名函数表达式---函数表达式 常用
--------
var test =function (){
}; 函数名是匿名的,函数名是test
--------
3、组成形式:
---------
function 函数名(){函数体};
函数名();
---------
a.函数名称:
函数名起名方式:跟变量名类似
开发规范:函数名和变量名由复合单词组成需符合 "小驼峰原则"
theFirstName 第一个单词首字母小写 后面首字母大写
b.参数:不定参,可形参多,可实参多 不会报错
---------
function test(a,b){ 形式参数:
document.write(a+b);
}
test(1,2); 执行结果为3 实际参数
test(3,4); 执行结果为7 实际参数
---------
(在每一个函数中,有一个隐式的arguments,类似数组,叫做实参列表
映射规则:不是同一个,但一个变另一个也跟着变)
例1:实参多于形参时,将实参全部打印出来
function sum(a){
for(var i = 0; i < arguments.length; I++){
console.log(arguments[i]);
}
}
sum(11,2,3);
---------
例2:形参多于实参时,将形参全部打印出来
function sum(a,b,c,d){
if(sum.length > arguments.length){
console.log('形参多了');
}else if(sum.length < arguments.length){
console.log('实参多了');
}else{
console.log('相等');
}
}
sum(11,2,3);
---------
例3:任意实参求和
function sum(){
var result = 0 ;
for(var i = 0;i <arguments.length;i++){
result += arguments[i];
}
console.log(result);
}
sum(1,2,3,4,5,6);
c.返回值:return
功能:
终止函数
返回值
-----------
function sum(){
return 123;
}
var num = sum();
-------------
function myNumber(target){
return +target;
}
var num = myNumber('123');
console.log(typeof(num));
--------------
练习:
1、 写一个函数,功能是告知你所选定的小动物的叫声。
function voice(animal){
switch(animal){
case "dog" :
document.write('wang');
case "cat" ;
document.write('miao');
}
}
2、写一个函数,实现加法计数器
function sum() {
var number = 0;
for (var i = 0; i < arguments.length; i++) {
number += arguments[i];
}
console.log(number);
}
sum(1, 2, 3);
3、定义一组数字,输入数字,逆转并输出汉字形式
function reverse() {
var num = window.prompt("input");
var str = "";
for (var i = num.length - 1; i >= 0; i--) {
str += transfer(num[i]);
}
document.write(str);
}
function transfer(target) {
switch (target) {
case "1":
return "壹";
case "2":
return "贰";
case "3":
return "三";
}
}
4、写一个函数,实现n的阶乘
递归...找规律 找出口
----------------
function jc(n){
if(n == 1){
return 1;
}
return n * jc(n-1)
}
-----------------
function reverse() {
var n = window.prompt("input");
var num = 1;
for (var i = 1; i <= n; i++) {
num *= i;
}
document.write(num);
}
5、写一个函数,实现斐波那契数列
function reverse() {
var n = parseInt(window.prompt("数列"));
var first = 1,
second = 1,
third;
if (n > 2) {
for (var i = 0; i < n - 2; i++) {
third = first + second;
first = second;
second = third;
}
document.write(third);
} else {
document.write(1);
}
}
------------------------------------
递归方法:
function fb(n){
if (n == 1 || n ==2){
return 1;
}
return fb(n - 1) + fb(n - 2);
}