函数
function 函数
函数:把同一个功能的代码放在一起
作用:封装性 + 复用性
函数分类:
1.系统函数()
2.自定义函数
函数:就是一个工具,是可以重复使用的。函数有的有参数,有的没有。如Math.random()、alert(666)
函数的语法:
function 函数名(参数){
功能是怎么实现的
}
注意:函数名(参数) —函数必须调用
函数的说明书包括:
1.函数的功能:求两个数的和
2.参数说明:(声明参数的类型)
第一个参数是一个数字
第二个参数也是一个数字
利用函数求和
//说明书
//函数的功能:求两个数的和
//函数的参数:
//第一个参数是一个数字
//第二个数字也是一个数字
//定义一个函数 function 函数名(参数)
function sum(m,n){
//打印出m,n的和
document.write(m+n);
}
//调用函数
sum(2,3);
函数的封装
函数封装的步骤:
1.普通的实现这个功能
2.装个壳子 function
3.取个名字
4.考虑是否需要参数 — 参数可有可无
5.一定要调用函数
6.附上说明书
训练:利用函数的封装打印三角形
function star(m){
//外层循环 打印*行数
for(var i = 1 ; i <= m ; i++){
//内层循环 打印一行*个数
for(var j = 1 ; j <= i ; j++){
//打印*
document.write('*')
}
//换行
document.write('<br>')
}
}
//调用函数 打印三角形
star(5) ;
函数的形参和实参:
函数声明的地方:形参
函数调用的地方:实参
//函数的功能:打印乘法表
//函数的参数:
//第一个参数是数字 number ----打印几乘几乘法表
// m 和 n 叫做形式参数 ---形参
function multi_99(m , n) {
for(var i = 1 ; i <= m ; i++){
for(var j = 1 ; j <= i ; j++){
if(n === '*'){
document.write(j + '*' + i + '=' + i * j + ' ');
}
else if(n === '+'){
document.write(j + '+' + i + '=' + (i + j) + ' ' );
}
}
document.write('<br>');
}
}
//5 6 * + 叫做实际参数 ----实参
multi_99(5 , '*');
multi_99(6 , '+ ');
训练:利用函数的封装输出1-100以内的质数,并换行
//函数的功能:输出100以内的质数,并换行
//第一个参数是数字 ---number 输入0-几以内的质数
//第二个参数是数字 ---number 输入几个换一次行
function isZhi(n , m){
//先遍历1-100的数
var count = 0 ;
for(var i = 2 ; i <= n ; i++){
//找到满足条件的质数,假设是质数
var flag = true;
//找到不是的证据 --- 只要能被任何一个数整除就不是
for(var j = 2 ; j < i ; j++){
//只要能被其他数整除
if(i % j === 0){
//说明不是质数,也就是假设被推翻
flag = false ;
//结果已经出来,就不需要继续找证据
break ;
}
}
//最终根据flag的值来判断是不是质数
//flag ? document.write(i) : '';
if(flag){
document.write(i + ' ');
count++;
//每 m 个换行
if(count === m){
document.write('<br>');
count = 0 ;
}
}
}
}
isZhi(100 , 5);
函数的返回值
函数的返回值 — 函数最终执行的结果
函数的返回值也是可有可无的
在函数内部定义变量时,在外面无法使用。会报错,因为访问不到函数的内部变量。
function sum(a , b){
//只是在控制台打印了这个结果
// console.log(a+b);
var result = a + b ;
//result 是在函数内部定义的,在外面无法使用
// console.log(result);
return result
}
var n = sum(2 , 3) ;
document.write(n);
// document.write(result); //报错,因为访问不到函数的内部变量
var n = Math.random();
console.log(n); //函数会得出一个结果
var res = alert(666);
console.log(res); //没有结果 显示undefined
训练:封装随机数
function rand(max , min){
// var n = Math.round(Math.random()*(max - min) + min) ;
// return n ;
return Math.round(Math.random()*(max - min) + min) ;
//此时需要在函数外打印必须要return,否则会显示undefined
}
var m = rand(200,100);
document.write(m);
训练:利用函数的封装判断一个数是不是质数,并输出1-100以内的质数
在这里插入代码片 //判断一个属是不是质数
function isZhi(x){
var flag = true ;
for(var i = 2 ; i < x ; i++){
if(x % i === 0){
flag = false ;
break;
}
}
// if (flag){
// return true ;
// }
// else{
// return false ;
// }
return flag ;
}
var r1 = isZhi(12) ; //false
var r2 = isZhi(17) ; //true
document.write(r1 , r2) ;
//100以内所有的质数
// for(var i = 2 ; i<= 100 ; i++){
// var r4 = isZhi(i);
// if(r4){
// document.write(i);
// }
// }
for(var i = 2 ; i <= 100 ; i++) {
var r4 = isZhi(i) ;
if(r4) {
document.write(i)
}
}
训练:调用函数。1.生成指定范围内的随机数,并判断这个数是否为质数;2.随机生成两个数,调用函数求和,差,乘,除。
html代码:
<body>
产生100-200之间的随机数是:<input type="text" id="inp1">
<br>
判断他是不是质数:<input type="text" id="inp2">
<script src="../js/tools_02.js"></script>
<script>
//产生一个100-200的随机数,判断是不是质数
//调用产生随机数的函数
var n = rand(100,200)
//判断这个产生的随机数是否为质数
var res = isZhi(n) ;
console.log(n , res)
//获取对象
var oInp1 = get('inp1');
var oInp2 = get('inp2');
oInp1.value = n;
if(res){
oInp2.value = '是一个质数'
}
else{
oInp2.value = '不是一个质数'
}
//计算两个数的运算
var n1 = rand(0 , 100) ;
var n2 = rand(0 , 100) ;
var res2 = jiSuanQi(n1 , n2 , '-') ;
document.write(n1 + '-' + n2 + '=' + res2);
</script>
</body>
js代码:
//功能:产生某个范围内的随机整数
//参数:
// min number 范围最小值
// max number 范围最大值
//返回值:
// number
function rand(min , max){
return Math.round(Math.random()*(max - min) + min)
}
//判断一个属是不是质数
//参数 :
// number
//返回值:
// boolean
function isZhi(x){
for(var i = 2 ; i < x ; i++){
if(x % i === 0){
return false;
}
}
return true;
}
//获取对象
function get(id){
return document.getElementById(id)
}
//计算器
function jiSuanQi(a , b , f){
switch(f){
case '+' : return a + b ;
case '-' : return a - b ;
case '*' : return a * b ;
case '/' : return a / b ;
}
}
函数注意点:
alert(666) 直接调用函数,并且传了一个参数
var n = Math.random() 调用函数并使用一个变量接受这个结果
返回值return:1.函数执行的结果;2.提前结束整个循环