一些应该掌握的知识点
函数的创建
- 函数创建有三种形式:函数声明、函数表达式(又称函数字面量)、匿名函数
- 创建函数表达式的过程并不是函数声明,而是变量声明
- 函数声明和函数表达式的区别:解析器会先读取函数声明,并使其在执行任何代码之前可以访问;而函数表达式则必须等到解析器执行到它所在的代码行才会真正被解释执行
- 创建函数时函数中声明的变量只在函数调用过程中起作用
一个函数声明示例
function add (a, b) { //声明一个名为add的函数并设置a和b两个形参
var c = a + b;
document.write('a+b的值为',c,'<br>');
console.log(arguments);
}
alert('计算a+b的值')
var a = parseInt(window.prompt('a'));
var b = parseInt(window.prompt('b'));
add (a, b);//调用并执行函数
- 一个函数表达式示例
var Add = function () { //声明一个变量,声明一个匿名函数并赋值给所声明的变量
for (var i = 0; i < arguments.length; i++) { //arguments即实参
var sum =+ arguments[i];
}
return sum;
}
a = Add (10);
b = Add (10, 20);
c = Add (10, 20, 30);
document.write(a, ' ', b, ' ', c);
一些练习
- 创建一个函数,使调用该函数时,给出三种动物的叫声,执行函数时输入其中一种动物就显示相应动物的叫声
function animalScream (animal) {
switch (animal) {
case 'cat':
document.write('meow');
break;
case 'dog':
document.write('wang');
break;
case 'duck':
document.write('ga ga');
break;
default:
document.write('he he');
}
document.write('<br>')
}
animalScream(window.prompt('请从"cat",dog","duck"三种动物中选一个'));
- 创建一个函数,使调用该函数时,输入一个正整数,则可输出该数的反向序列中文大写字串列
function reverseTransfer (numStr) {
var arr = numStr.split('');
var reArr = arr.reverse();
var str = '';
for (var i = 0; i < reArr.length; i++) {
switch (reArr[i]) {
case '1':
str += '壹';
break;
case '2':
str += '貳';
break;
case '3':
str += '叁';
break;
case '4':
str += '四';
break;
case '5':
str += '伍';
break;
case '6':
str += '陆';
break;
case '7':
str += '柒';
break;
case '8':
str += '捌';
break;
case '9':
str += '玖';
break;
case '0':
str += '零';
break;
}
}
document.write(numStr,'的反向序列中文大写字串列为',str);
document.write('<br>');
}
reverseTransfer(window.prompt('输入一正整数,将输出该数的反向序列中文大写字串列'));
- 创建一个函数,使调用该函数时,输出所输入的正整数的阶乘
function nStage (n) {
if (n == 1) {
return 1;
}
return n * nStage(n - 1);
}
document.write(nStage(window.prompt('你希望输出哪个正整数的阶乘?')));
document.write('<br>');
- 创建一个函数,使调用该函数时,输出斐波那契数列所求的一项
function Fibonacci_Seq (k) {
if (k == 2 || k == 1) {
return 1;
}
return Fibonacci_Seq(k - 1) + Fibonacci_Seq(k - 2);
}
document.write(Fibonacci_Seq(window.prompt('你希望输出斐波那契数列的第几项?')));