0623
1.条件语句
if(条件){
语句块;
}
条件的结果强制转换为布尔值,为true则执行语句块
注意:条件中不能出现声明
表达式如果用逗号隔开,前面的不作为条件,最后一个作为条件
if(条件){
语句块1;
}
else{
语句块2;
}
满足条件时执行语句块1,否则执行语句块2
如果条件语句的语句块只有一句语句,则可以省略{}
省略{}后,条件语句不能使用“;”,如果使用了则语句块脱离条件语句成为单独语句
if(条件1){
语句块;
}
else if(条件2){
语句块;
}else if(条件3-){
语句块;
}
else if(条件4){
语句块;
}
多分支条件语句,会从第一个条件判断到最后一个条件,因此需要在条件描述时将频率高的条件写在前面
var div=document.getElementById("div1");
var x=0;
var y=0;
setInterval(function(){
x++;
if(x>=300){
y++;
x=300;
}
if(y>=300){
x--;
y=300;
}
div.style.left=x+"px";
div.style.top=y+"px";
},16);
//一个小测试
switch(表达式){
case 值1:
语句块1;
break;
case 值2:
语句块2:
break;
default:
语句块3;
}
表达式不会强制转换为布尔值
当表达式绝对等于(===)值1时,执行语句块1,随后跳出整个语句
break的作用是跳出当前switch的所有语句块
若没有写入break,则继续不判断下一个值是否与表达式相同,直接执行下一个语句块(穿越)
表达式不等任何值时,默认执行default语句块内容,一般default中不使用break
if(a===3){
console.log("aaa");
console.log("bbb");
}
if(a===4){
console.log("bbb");
}
switch(a){
case 3:
console.log("aaa");
case 4:
console.log("bbb");
break;
}
穿越的作用:
1.上面条件内容用到下面的语句,并且是在上面语句的最后
2.一般用于判断条件等于某个值或者等于另外一个值
if(a===3 || a===4 || a===5){
console.log("aaa");
}
switch(a){
case 3:
case 4:
case 5:
console.log("aaa");
break;
}
清除魔术字符串:
在代码中多次出现,与代码形成强耦合的某一字符串或数值,不利于将来的修改和维护。在编写代码时应尽量消除魔术字符串,用变量代替
2.while语句
循环三要素:
1.条件变量的初始值
2.循环条件
3.条件变量向条件外变化的表达式
循环的条件默认转换为布尔值
while(循环条件){
循环语句块;
}
循环条件是在每次执行循环时首先判断的内容,会判断多次
//1-100的和
var sum = 0,i = 0;
while(i++<100){
sum += i;
}
console.log(sum);
改进输入:
//输入数值,数值以下直至1的和
var i, sum = 0;
i = ~~prompt("输入一个数值,会计算从1到该数值的和:"); //将输入字符串转化为数值
while (i > 0) {
sum += i;
i--;
}
console.log(sum);
嵌套循环,每层循环的变量不能相同
每次重新开始循环内侧循环体时,内层的循环变量需要重置,否则无法循环
//while实现乘法口诀表
var str = "", i = 0, j = 0;
str += "<table>";
while (i++ < 9) {
str += "<tr>"
while (j++ < i) {
str += "<td>" + i + "*" + j + "=" + i * j + "</td>";
}
j = 0;
str += "</tr>";
}
str += "</table>";
document.write(str);
//修改
var str = "", i = 0, j = 9, num;
str += "<table>";
while (i++ < 9) {
str += "<tr>";
num = i;
while (j-- > 0) {
str += "<td>" + i + "*" + num + "=" + i * num + "</td>";
num++;
}
j = 9 - i;
str += "</tr>";
}
str += "</table>";
document.write(str);
//求质数
var num = ~~prompt("输入一个数,输出该数本身及以下的所有质数:")
var i = 1, j;
kaige: while (i++ < num) {
j = 1;
while (j++ < i - 1) {
if (i % j == 0) continue kaige;
}
console.log(i);
}
var num = ~~prompt("输入一个数,输出该数本身及以下的所有质数:")
var i=1;
var j,flag;
while(i++<num){
j=1;
flag=true;
while(j++<i-1){
if(i%j===0)flag=false;
}
if(flag) console.log(i);
}
var num = ~~prompt("输入一个数,输出该数本身及以下的所有质数:")
var i=1;
var j,flag;
while(i++<num){
j=1;
flag=true;
while(j++<i-1){
if(i%j===0){
flag=false;
break;
}
}
if(flag) console.log(i);
}
斐波那契数列:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
//循环实现斐波那契数列
var num = ~~prompt("输入一个数,将输出该数以下的斐波那契数列:");
var i = 0, j = 1, sum = 0;
while (sum <= num) {
sum = i;
i = j;
j = sum + j;
console.log(sum);
if(i > num) break;
}
//以字符串方式输出斐波那契数列
var num = ~~prompt("输入一个数,将输出该数以下的斐波那契数列:");
var str="",i=0,j=1;
var _temp
str+=i+","+j;
while(true){
_temp=i;
i=j;
j=_temp+j;
if(j>num) break;
str+=","+j;
}
console.log(str);
最大公因数
//循环实现最大公因数的计算
var a = 64,b = 48;
var min = a < b ? a : b;
var i = 0 , max = 1;
while(i++ < min){
if(a % i === 0 && b % i === 0) max=i;
}
console.log(max);
var a=64;
var b=48;
var min=a>b ? b : a;
var i=2;
var max=1;
while(i<min){
if(a%i===0 && b%i===0){
max=i;
}
i++;
}
console.log(max);
链表:线性的顺序存储数据,详解链接
https://zhuanlan.zhihu.com/p/29627391
3.do while和for
变量初始化;循环条件;变量向循环外运行的表达式
变量初始化仅做了一次
条件 是每次循环前执行判断的
向条件外运行的表达式是每次循环完成,判断条件之前执行的表达式
作业:
最小公倍数:
var a=64,b=48;
var min = a < b ? a : b;
var i = 0 , num = 1;
while(i++ < min){
if(a % i === 0 && b % i === 0) num=i;
}
var max = a/num * b/num * num;
console.log(max);
菱形:
var num = ~~prompt("打印奇数位菱形,所给数值为菱形对角线含星星数:");
if (num % 2 === 0) throw new Error("输入有误!");
var i = 0,str = "",j = num -2;
while (i++ < num) {
_space = j;
while (_space-- > 0) {
str += " ";
}
j--;
_star = i;
while (_star-- > 0 && i != num) {
str += " *";
}
while(_star-- > -1 && i === num){
str += "* "
}
str += "<br/>";
}
i -= 1;
while(i-- > 0){
_space = 0;
_star = i;
while (++_space < num - i) {
str += " ";
}
while (_star-- > 0) {
str += " *";
}
str += "<br/>";
}
document.write(str);