函数
函数有系统函数,也有自定义函数。自定义函数即自己封装所写的,案例中的函数都为自定义函数。
关键字function声明一个函数,如function 函数名() { },大括号中写自己的代码。
函数案例
1、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的。加密规则如下:每位数字都加上5,然后用除以10的余数代替该数字;再将第一位和第四位交换,第二位和第三位交换;
请编写一个函数,传入原文,输出密文
<script>
function encryption() {
//求出四位整数数据各个位上的数字
num = Number(prompt("输入一个四位数:"));
var gw = num % 10;
var sw = parseInt(num / 10) % 10;
var bw = parseInt(num / 100) % 10;
var qw = parseInt(num / 1000);
console.log(gw, sw, bw, qw);
//根据加密规则对每位上的数字进行加密
var newGw = (gw + 5) % 10;
var newSw = (sw + 5) % 10;
var newBw = (bw + 5) % 10;
var newQw = (qw + 5) % 10;
console.log(newQw, newBw, newSw, newGw);
//交换第一位和第四位的数字
var temp1 = 0;
temp1 = newGw;
newGw = newQw;
newQw = temp1;
//交换第二位和第三位的数字
var temp2 = 0;
temp2 = newSw;
newSw = newBw;
newBw = temp2;
//输出密文
console.log(newQw, newBw, newSw, newGw);
}
//调用encryption()函数
encryption();
</script>
结果可在控制台查看,如图:
注:当你输入1234四位数据时,控制台第一行显示的依次是四位数据的个位数字、十位数字、百位数字、千位数字;第二行显示的是根据第一条加密规则进行加密后的数字;控制台第三行显示的是最终加密后的数字。
2、如果一个数恰好等于它的因数(除自身以外)之和,则称该数为“完全数” perfect number。 比如:6的因数有1、2、3,而1+2+3正好等于6,所以6就是完全数。
封装一个函数,请列出m~n(m<n)的所有完全数。
(1)首先判断一个数是否是完全数
<script>
//判断一个数是否是完全数
function perfectNumber(n) {
//定义一个变量存储因数累加和
var sum = 0;
//此处是i<n而不是<=n,根据完全数定义知因数不包含自身
for (var i = 1; i < n; i++) {
//找出该数的因数
if (n % i === 0) {
//将该数的因数(除本身外)进行累加
sum += i;
}
}
//如果因数累加和等于该数,则该数是完全数,输出
if (sum === n) {
console.log(sum);
}
}
//调用函数,传入实参,实参即为你想验证的完全数
perfectNumber(6);
</script>
控制台查看结果:
(2)紧接着求出m~n(m<n)的所有完全数
<script>
//求m~n(m<n)的所有完全数的函数
function perfectNumber(m, n) {
for (var i = m; i <= n; i++) {
var sum = 0;
//判断一个数是否是完全数
for (var j = 1; j < i; j++) {
//将该数的因数(除本身外)进行累加
if (i % j === 0) {
sum += j;
}
}
//如果因数累加和等于该数,则该数是完全数,输出
if (sum === i) {
console.log(sum);
}
}
}
//调用perfectNumber()函数,传入实参
perfectNumber(6, 100);
</script>
控制台查看结果:
注:控制台显示的是6~100之间的所有完全数,即6和28.
3、编写函数实现:两个数平方的阶乘相加的和
<script>
//求阶乘的函数
function factorial(n) {
//定义一个变量存储累乘的积
var res = 1;
//累乘过程
for (var i = 1; i <= n; i++) {
res *= i
}
//累乘最终结果即为该数的阶乘
return res;
}
//求平方的函数
function square(m) {
var res = m * m;
return res;
}
//求两个数平方的阶乘相加的和的函数
function total(a, b) {
//第一个形参a的平方的阶乘
var num1 = factorial(square(a));
//第二个形参b的平方的阶乘
var num2 = factorial(square(b));
//定义一个变量存储两个数平方的阶乘相加的和
var sum = num1 + num2;
//控制台输出最终结果和
console.log(sum);
}
//调用total()函数,传入实参数
total(2, 3);
</script>
控制台查看结果: