一、实验目的
掌握JavaScript函数的使用方法
理解变量的复制,基本类型值和引用类型值的不同
理解函数的参数传递时所传递的内容
理解执行环境和作用域的概念
二、预习内容及要求(要求写出预习内容)
JavaScript中的变量类型
变量复制的原理,基本类型和引用类型的不同
变量类型的检测方法
函数的使用,函数参数的用法
三、实验内容、操作过程及实验结果记录
1.请指出下面程序运行结果,并解释原因
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>第一题</title>
</head>
<script>
var num1=0.0,num2=0.0,sum=0.0;
function add(num1, num2){
sum =num1+num2;
return sum;
}
var result=add(10,20);
alert(sum);
</script>
<body>
</body>
</html>
因为num1和num2这两个变量没有进行先声明就使用了,应该先声明在使用。下图为改正后的代码。
<script>
var num1=0.0,num2=0.0,sum=0.0;
function add(num1, num2){
sum =num1+num2;
return sum;
}
var result=add(10,20);
alert(sum);
</script>
2. 函数求阶乘。
给出一个数,利用函数直接可以求出阶乘计算结果和求出阶乘函数的和。
- 效果如图4-1所示。
- 具体实现步骤如下:
- 定义一求数的阶乘的getJC(n)函数。
- 调用getJC(3),求3的阶乘。
- 定义一求数的阶乘累加和的getSum (n)函数。
- 调用getSum(3),求1!+2!+3!的阶乘的累加和。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<script>
var a=3,num=1,sum=0;
function getJC(a){
for(var i=1;i<=a;i++){
num =(num*i);
}
return num;
}
document.write(a+"的阶乘是:"+getJC(a)+"</br>");
function getSum (a){
for(var i=1;i<=a;i++){
sum +=getJC(i);
}
return sum;
}
document.write(a+"的阶乘叠加和是:"+getSum (a)+"</br>");
</script>
<body>
</body>
</html>
3. 判断是否是闰年。
- 效果如图4-2,4-3所示。
- 输入年份
- 给出判断结果
- 具体实现步骤如下:
- 用户在prompt弹出窗口中输入一个年份。
- 拿到输入框值,判断该值是否输入正确。
- 如果输入错误,给出错误提示。
- 如果输入正确,进入year(n)函数,处理逻辑运算
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>判断是否是闰年</title>
</head>
<body>
<script>
var year1=prompt("请输入一个年份:");
if(year1>0&&year1!=null){
if((year1%400==0)||(year1%4==0&&year1%100!=0)){
document.write(year1+"是闰年!")
}else{
document.write(year1+"不是闰年!")
}
} else{
alert("年份要大于0,或年份不能为空!");
}
</script>
</body>
</html>
4.编写函数,计算圆的面积和周长。
- 效果如图4-4、4-5所示。
- 具体实现步骤如下:
- 定义求面积函数。
- 圆的面积公式:3.1415926 * r * r或者Math.PI * Math.pow(r, 2)。
- 调用面积函数,得出结果。
- 定义求周长函数。
- 圆的周长公式:3.1415926 * 2 * r 或者2 * Math.PI * r。
- 调用周长函数,得出结果。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>计算圆的面积和周长</title>
</head>
<body>
<script>
const PI=3.14;
//求圆面积函数
var r=prompt("请输入圆的半径:");
function f1(r){
return r*r*PI;
}
//求周长函数
function f2(r){
return r*2*PI;
}
document.write("半径为"+r+"的圆的周长是:"+f2(r)+"</br>");
document.write("半径为"+r+"的圆的面积是:"+f1(r)+"</br>");
</script>
</body>
</html>
5. 编写函数,比较最大值:求出求两个数中的最大值;求出三个数中的最大值。
效果如图4-6所示
- 具体实现步骤如下:
- 定义getMax(n1, n2)函数,比较2个数中谁最大,返回最大值。
- 调用getMax(6.98,6.99)。
- 定义getMax1(a,b,c)函数,比较3个数中谁最大,返回最大值。
- 调用getMax1(40,70,10)
-
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>比较最大值</title> </head> <body> <script> var a,b,c,n1,n2; function getMax(n1, n2) { if(n1>n2){ document.write(n1+"和"+n2+"相比,"+n1+"最大"+"</br>"); }else{ document.write(n1+"和"+n2+"相比,"+n2+"最大"+"</br>"); } return 0; } function getMax1(a,b,c){ if(a>b){ if(a>c){ document.write(a+","+b+","+c+"和相比,"+a+"最大"+"</br>"); }else{ document.write(a+","+b+","+c+"和相比,"+c+"最大"+"</br>"); } }else if(a<b){ if(b>c){ document.write(a+","+b+","+c+"和相比,"+b+"最大"+"</br>"); }else{ document.write(a+","+b+","+c+"和相比,"+c+"最大"+"</br>"); } } return 0; } getMax(6.98,6.99); getMax1(40,70,10); </script> </body> </html>
6. 编写函数,计算并输出k以内的最大的10个能被13或17整除的自然数之和。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>第六题</title>
</head>
<body>
<script>
var num=prompt("请输入一个数:");
var sum=0;
var count=0;
function f(num){
for(var i=1;i<=num;i++){
if(i%13==0||i%17==0){
sum +=i;
count++;
}
if(count==10){
break;
}
}
return sum;
}
document.write(num+"以内的最大的10个能被13或17整除的自然数之和是:"+f(num));
</script>
</body>
</html>
7. 编写一个简单的计算器。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>计算器</title>
</head>
<body>
<!--页面布局-->
<input type="text" id="num1" placeholder="请输入第一个数字"/>
<input type="text" id="operator" placeholder="请输入运算符">
<input type="text" id="num2" placeholder="请输入第二个数字"/>
<input type="button" onclick="count()" value="计算"/><br/>
<span>计算结果:</span><span id="result"></span>
<!--JavaScript-->
<script>
function count() {
var num1 = document.getElementById("num1").value;
var num2 = document.getElementById("num2").value;
var operator = document.getElementById("operator").value;
var num = "";
//判断输入的两个数字是否为数字,如果为数字,返回结果为false
var num1 = parseFloat(num1);
var num2 = parseFloat(num2);
var isNotNumber = isNaN(num1) || isNaN(num2);
if (!isNotNumber) {
switch (operator) {
case "+":
num = num1 + num2;
break;
case "-":
num = num1 - num2;
break;
case "*":
num = num1 * num2;
break;
case "/":
if (num2 == 0) {
// 除数不能为0
alert("除数不能为0");
} else {
num = num1 / num2;
break;
}
default:
alert("请输入正确的运算符!!!");
}
num = num.toFixed(2);
document.getElementById("result").innerText = num;
} else {
alert("请输入数字!!!")
}
}
</script>
</body>
</html>