-
函数
(1) 编码规则:高内聚,弱耦合(冗余度小)
(2) 函数是一个特殊类对象
(3) 函数的表示① 函数声明 function 函数名() {} ② 函数表达式(匿名) (表达式会忽略自己的名字)var 变量名 = function (){} ③ 函数名/变量名.name = 函数名
(4) 函数参数
① 传参形式说明
function demo(a,b){} === function demo(){ var a,b; }
function demo(a,b){} demo(1,2) === function demo(){ var a = 1,b = 2;}
② 形参和实参的值可以不相对一样多,比如:形参写3个,实参写2个都是可以的
(5) 实参列表(arguments)
① arguments是一个类数组
② 在每一函数里面都有一个arguments
(6) 形参长度可以用函数名/变量名.length;实参长度可以用arguments.length
(7)arguments[i]和形参是映射关系,一个变,一个就跟着变;但是前提是实参和形参的个数必须是一样多的,一一对应;如果形参有两个,实参只有一个,那么arguments[1]和形参的第二个是不存在任何映射关系的
(8) 不传参实例练习
利用函数对传进去的任意数进行求和运算
function sum(){
var summation = 0;
for ( var i = 0; i < arguments.length;i++ ){
summation += arguments[i];
}
document.write(summation);
}
- 函数返回值(return)
(1) return语句会终止函数执行并返回函数的值
(2) 如果函数体内没有return语句,系统会自动将其加到函数体末尾,如果没有返回值,就返回undefined - 实例解析
(1) 定义一组函数,输入数字,逆转并输出汉字形式
function changeover(){
var num = window.prompt('请输入数字');
var len = num.length;
for( var i = len - 1; i >= 0; i-- ){
change(num,i);
}
}
changeover();
function change(num,i){
switch(parseInt(num[i])){
case 0 :
document.write('零')
break;
case 1 :
document.write('壹')
break;
case 2 :
document.write('贰')
break;
case 3 :
document.write('叁')
break;
case 4 :
document.write('肆')
break;
case 5 :
document.write('伍')
break;
case 6 :
document.write('陆')
break;
case 7 :
document.write('柒')
break;
case 8 :
document.write('捌')
break;
case 9 :
document.write('玖')
break;
default:
document.write('你的输入有误');
}
}
(2) 写一个函数实现n的阶乘
var n = parseInt(window.prompt('请输入一个数字'));
function factorial(n){
if ( n == 1 || n == 0 ){
return 1;
}else{
return n * arguments.callee(n - 1); // return n * factorial(n - 1);
}
}
document.write(factorial(n));
(3) 写一个函数实现斐波那契数列
var n = parseInt(window.prompt('请输入一个数字,来代表斐波那契数列的项数,第一项为(n为0)'));
function Fibonacci(n){
if ( n == 0 || n == 1 ){
return 1;
} else{
return arguments.callee(n - 1) + arguments.callee(n - 2);
}
}
document.write(Fibonacci(n));
-
初始作用域
(1) 在函数外定义的全局变量可以在函数内被访问,但是,在函数内的定义的局部变量,在函数外,不能被访问;即里面的可以访问外面的,但是外面的不能访问里面的