javascript每日知识更新
if函数的运用,switch、case函数的运用
代码的调试方法,经验在丰富的程序员也有出错的时候,而经验丰富的程序员之所以很厉害,就是因为他们的调试能力强,能够及时的发现语句中存在的问题,所以调试的运用就成了人人必备的知识。下面我为大家介绍最基本的if,switch,case函数的特点,并说明调试应注意的问题。
例:计算献血量
体重,血红蛋白含量Hb<30 7ml/kg
30-60 10
>60 15
//1、测出献血人的体重g
//2、测出献血人的血红蛋白x
//3、定义血红蛋白小于30的,献血7ml/kg
//定义血红蛋白在30-60的,献血10ml/kg
//定义血红蛋白大于60的,献血15ml/kg
//4、计算献血人的献血量
var g =Number(prompt("请输入献血人的体重"));
var x =Number(prompt("请输入献血人的血红蛋白含量"));
var ml=0;
if(x<30){
ml=7*g;
alert(ml)
}else if(x>60){
ml = 15 * g;
alert(ml)
} else {
ml = 10 * g;
alert(ml) }
求解一元二次方程的根
//1 获取方程中的二次项系数a 一次项系数b 常数项 c
// 2 判断b*b-4*a*c跟0的关系
//3 如果大于0则有两个根。
// 则输出x1=(-b-sqrt(b^2-4ac))/2a x2=(-b+sqrt(b^2-4ac))/2a
// 4 如果等于0则有且只有一个根。
// x=(-b)/2a
// 5 如果小于0,则不存在根
var a=Number(prompt("请输入方程的二次项系数a"));
var b=Number(prompt("请输入方程的一次项系数b"));
var c=Number(prompt("请输入方程的常数c"));
var r=b*b-4*a*c;
if(a!=0){
if(r>0){
var x1=(-b+Math.sqrt(r))/2*a;
var x2=(-b-Math.sqrt(r))/2*a;
alert(x1+" "+x2);
}else {
if (r == 0) {
varx = -b / 2 * a;
alert(x);
}
else {
alert("无解");
}}}
else
alert("您输入的不是一元二次方程");
制作一个四则运算器,要求用户输入一个数再输入一个算术运算符在输入一个数,计算出对应的结果。
//1 获取用户输入的一个数num1,一个运符op,一个数num1
//2 判断op 如果等于 + 就对两个数进行加法运算
//判断op 如果等于- 就对两个数进行减法运算
//判断op 如果等于* 就对两个数进行乘法运算
//判断op 如果等于/ 就对两个数进行除法运算(判断除数是否为0,如果为0,则提示输入错误)
//
var num1=Number(prompt("请用户输入第一个数"));
var op=prompt("请用户输入一个算数运算符");
var num2=Number(prompt("请用户输第二个数"));
var result=0;
if(op=="+"){
result=num1 + num2;
}else if(op == "-"){
result=num1 -num2;
}else if(op == "*"){
result=num1 *num2;
}else if(op == "/"){
if(num2!=0){
result=num1 /num2;
} alert(result)
else{
alert("除数不能为0")}
}else{
alert("符号有错误");
}
选择还有switch(开关)
switch(x){
case a;
break;
case b;
default;
}
他的执行效率比if快得多,switch将所有的可能放在内存当中,case就是标号,当条件满足这个标号是直接进入这个情况。用空间换时间。
四则运算改为switch:
var num1=Number(prompt("请用户输入第一个数"));
var op=prompt("请用户输入一个算数运算符");
var num2=Number(prompt("请用户输第二个数"));
var result=0;
switch(op){
case"+":
result=num1+num2;
break;
case"-":
result=num1-num2;
break;
case"*":
result=num1*num2;
break;
case"/":
result=num1/num2;
break;
}
alert(result)
break如果不加就是一直执行,输出结果为除法,加上break,执行了什么就终止。
Switch优点:
1 结构清晰,一目了然
2 运行速度相对较快
switch执行逻辑:从switch后面的小括号里面的变量与后面case中的常量相等的地方开始执行,然后依次后面的指令。一直到指令结束。
Case:并不会参与计算,不与条件判断作用,只起到一个标号的作用。只是执行命令的入口。
Default就是出了case以外的情况。
Break并不是switch语法中的内容,他不属于switch只是一个辅助工具。用于跳出当前结构。
例:献血的题目改为switch:
var g =Number(prompt("请输入献血人的体重"));
var x =Number(prompt("请输入献血人的血红蛋白含量"));
var ml=0;
// x/30 0-1,1-2,2-;
switch(Math.floor(x/30)){
case 0:
ml=7*g;
break;
case 1:
ml=10*g;
break;
default:
ml=15*g;
break;
}
alert(ml)
百分制转化为5分制。
// 1 接收学生输入的分数
// 2 将分数除以10取整result
// 3 A等级为80分以上 B等级为70-80分 C等级为60-70分 D等级为60分以下
// 4 向下取整 A 8 9 10 B 7 C 6 D 0-6
// 5 得出结果
var result =Number(prompt("请输入学生的分数"));
var res=””;
switch(Math.floor(result/10)) {
case 10:
case 9:
case 8:
res="A";
break;
case 7:
res="B";
break;
case 6:
res="C";
break;
default:
res="D";
break;}
alert(res)
A 90分以上
B 70-8-以上
C 60-70
D 60以下
例:11.16是今年的第几天。不考虑闰年。
var month =Number(prompt("请输入月份"))
var rate =Number(prompt("请输入日期"))
var day=0;
switch(month-1){case 11:day+=30;
case 10:day+=31;
case 9:day+=30;
case 8:day+=31;
case 7:day+=31;
case 6:day+=30;
case 5:day+=31;
case 4:day+=30;
case 3:day+=31;
case 2:day+=28;
case 1:day+=31;
case 0:day+=0;
day+=rate;
alert(day);
}
例:4年一闰 百年不闰 400年在闰
var month =Number(prompt("请输入月份"));
var rate =Number(prompt("请输入日期"));
var year =Number(prompt("请输入年份"));
var day=0;
switch(month-1){case 11:day+=30;
case 10:day+=31;
case 9:day+=30;
case 8:day+=31;
case 7:day+=31;
case 6:day+=30;
case 5:day+=31;
case 4:day+=30;
case 3:day+=31;
case 2:
if((year%4==0&&year%100==0)||(year%400==0)){
day+=29;
}else{
day+=28;
}
case 1:day+=31;
case 0:day+=0;}
day+=rate;
alert(day)
错误与调试
错误分两种:语法错误,逻辑错误
语法错误:
var a=3;
alert(a);
a++;
aletr(a);
将alert错写成aletr。
右击浏览器选择检查,或者f12进入开发者工具。错误信息会在console窗口下提示。
上面的步骤同时进一步说明了解释型语言的特点,翻译一条一条,遇到错误的术后才终止。
如何调试逻辑错误:
语法没问题,得到的结果与期望得到的结果不符合。并不会在console的窗口下面去提示错误信息。
在source下面可以看到js代码,在里面可以设置断点
代码执行到断点就暂停执行(在代码左侧单击即可)
可以让代码单步执行快捷键f10
同时可以查看代码中任意一个表达式或变量的值。
1 手动添加watch
2 右击选中的表达式选择添加到watch
通过以上的方式可以查看到代码每一步的执行效果,当遇到与期望不符合是就是那一行的代码有问题。能够帮助我们定位到错误的位置。根据自己的经验和知识,分析出错误的原因,然后解决他。