前端学习记录26-JavaScript-函数
函数
js中可能会定义非常多相同或相似的代码,重复使用
虽然for
循环可实现简单的重复操作,但是有局限性,此时需要函数
函数就是封装了一段可被重复执行调用的代码块
函数使用
分为两步 声明函数和调用函数
1.声明函数
function 函数名(){
函数体
}
函数名一般是动词
函数不调用不会执行
2.调用函数
函数名();
函数的两种声明方式
1.利用函数关键字自定义函数(命名函数)
function fn(){
}
fn();
2.函数表达式
var 变量名 = function(){};
这里定义的是变量名
函数表达式声明方式跟声明变量差不多
变量存的是值 函数表达式存的是函数
调用是 调用 变量名();
函数封装
把一个或多个功能组合通过函数的方式封装起来 对外只提供简单函数接口
简单理解为 电脑配件整合到机箱 使用就开机就行了
函数的返回值
函数内部不应该有输出语句
应该把函数的返回值 返回给调用者
使用 return
语句即可实现;
function 函数名(){
return 需要返回的结果;
}
函数名();
只要函数遇到return 就把后面的结果 返回给函数的调用者 函数名()= return后面的结果
return
语句后的代码不会被执行
return
只能返回一个值 如果用,
隔开只会返回最后一个值
如果想返回多个值 可以使用数组或对象
函数没有 return
返回的为undefined
break,continue,return 的区别
break
结束当前循环体
continue
跳出本次循环 继续下次循环
return
既可以退出循环 还能返回 返回值 同时可以结束函数体的代码
参数
我们可以利用函数的参数 实现重复不同的代码
参数有形参和实参
function 函数名(形参1,形参2...){
}
调用:函数名(实参1,实参2.....)
在声明函数的小括号里 是形参 形式上的参数
在函数调用的小括号里 是实参 实际的参数
形参和实参的执行过程
形参接受实参 aru='我爱你'
形参类似变量 但是不用声明
函数的参数可以有也可以没有 个数不限
形参和实参不匹配问题
function getSum(num1, num2) {
console.log(num1 + num2);
}
如果实参和形参个数相同 则正常输出结果
getSum(1, 2);
如果实参个数多于形参 会取形参个数 冗余的实参不进入函数
getSum(1, 2, 3);
如果实参少于形参 由于形参可看作为变量 变量没有接受值为undefined 数字型+undefined=NaN
getSum(1);
形参的默认值是undefined
虽然不会出现报错问题 但是建议形参和实参数量匹配
arguments使用
只有函数才有 arguments
对象
当不确定有多个参数时 可用arguments
来获取
它实际上是函数的内置对象 arguments
存储了传递过来的所有实参
并且存储方式为 伪数组 并不是数组 但是具有数组的特性
具有length
属性
按照索引方式进行存储 有元素序列
它没有真正数组的一些方法 例如pop() push()
等
可以按照数组方式 遍历 arguments
使用函数翻转数组
// 使用一个数组进行数组翻转 不用第二个新数组做媒介
function throughArr() {
var temp = 0;
for (var i = 0; i < arguments.length - i; i++) {
temp = arguments[arguments.length - 1 - i];
arguments[arguments.length - 1 - i] = arguments[i];
arguments[i] = temp;
}
return arguments;
}
console.log(throughArr(1, 2, 3, 4, 5, 6, 7, 8));
判断一个数是否为素数
function getSs(num1) {
if (num1 < 1) {
return false;
} else if (num1 == 1 || num1 == 2) {
return true;
} else {
for (var i = 2; i < num1; i++) {
if (num1 % i == 0) {
return false;
}
}
}
}
var Ss = parseInt(prompt('请输入第一个数检查结果'));
if (getSs(Ss) != false) {
alert(Ss + '是素数');
} else {
alert(Ss + '不是素数');
}
简易计算器
var choose = 0;
while (choose != 5) {
choose = parseInt(prompt('欢迎使用简易计算器:\n1.加法运算\n2.减法运算\n3.乘法运算\n4.除法运算\n5.退出\n请输入您的选项:'));
switch (choose) {
case 1:
calculation(parseInt(prompt('请输入第一个数')), parseInt(prompt('请输入第二个数')), choose);
break;
case 2:
calculation(parseInt(prompt('请输入第一个数')), parseInt(prompt('请输入第二个数')), choose);
break;
case 3:
calculation(parseInt(prompt('请输入第一个数')), parseInt(prompt('请输入第二个数')), choose);
break;
case 4:
calculation(parseInt(prompt('请输入第一个数')), parseInt(prompt('请输入第二个数')), choose);
break;
case 5:
break;
default:
alert('您的输入有误,请重试');
}
}
function calculation(num1, num2, num3) {
if (num3 == 1) {
alert(num1 + '+' + num2 + '=' + (num1 + num2));
} else if (num3 == 2) {
alert(num1 + '-' + num2 + '=' + (num1 - num2));
} else if (num3 == 3) {
alert(num1 + '*' + num2 + '=' + (num1 * num2));
} else if (num3 == 4) {
alert(num1 + '/' + num2 + '=' + (num1 / num2));
}
}