一、if语句括号中的隐式类型转换
if语句括号中的值是布尔值,只有两种结果,分别是true和false。当括号中的变量是数值类型时,只要不等于0,那么就是true,if语句的条件就是真。如果为0,那么就是false,条件为假。如果变量是字符串,只要不为空,条件就是真。
var x =1;
if(x==1){}等价于if(x){}
var str = "2114";
if(str != "")等价于if(str)
二、三目运算符
语法:条件?满足时执行的代码 : 不满足时执行的代码;
案例:给小于10的数补0;
for(var i = 0;i < 20;i++){
i < 10 ? '0'+ i : i;//如果i小于10,就执行'0'+i,大于10的话就直接输出i
}
三、for语句中的假设法
节流阀:声明一个全局变量,赋予布尔值,要么为true,要么为false;
当满足一定条件时,改变其值,然后根据改变后的值做出一些程序处理。常常用在js动画效果的触发之间,避免用户点击太快,造成动画效果不佳。
四、break和continue的区别和用法
- break(直接结束循环)
- continue (结束本次循环,继续下次循环)
//判断质数
<script>
//声明一个全局变量,判断这个变量是不是质数
var num = 9;
//假设法判断质数
//声明一个布尔值,值为true,假设所有的数都是质数
var isTrue = true;
for (var i = 2; i < num; i++) {
if (num % i == 0) {
isTrue = false; //当num能被它之前的任何一个数整除,那他就不是质数。
break; //只要被判断不是质数后,就可以直接结束循环了
}
}
//如果上面的循环没有进入if语句,就说明这个数是质数,isTrue的值依然是true
if (isTrue) {
alert('判断法,判断该数是质数');
} else {
alert('判断法,判断该数不是质数');
}
//采用循环生死法判断
//核心思想,当判断某数不是质数后,直接结束循环,此时循环变量的值将停留在结束时的值,如果是质数,循环不会结束,i的值就是循环最终值。
for (var i = 2; i < num; i++) {
if (num % i == 0) {
break;
}
}
console.log(i);
if (num == i) {
alert('循环生死法判断,该数是质数');
} else {
alert('循环生死法判断,该数不是质数');
}
//计数法判断
var isZ = 1;
for (var i = 2; i < num; i++) {
if (num % i == 0) {
isZ = 0;
break;
}
}
if (isZ == 1) {
alert('计数法判断,该数是质数');
} else {
alert('计数法判断,该数不是质数');
}
</script>
五、嵌套循环
外层循环和内层循环的关系就像时针和分针的关系。时针走一次,分针走一圈等同于外层循环走一次,里层循环走一圈。
1、打印星星
<script>
//****
//****
//****
//****
for (var i = 0; i < 4; i++) {
for (var y = 0; y < 4; y++) {
document.write('⭐');
}
document.write('<br>');
}
document.write('<br>');
//****
//***
//**
//*
for (var i = 0; i < 4; i++) {
for (var y = 0; y < 4 - i; y++) {
document.write('⭐');
}
document.write('<br>');
}
document.write('<br>');
//*
//**
//***
//****
for (var i = 0; i <= 4; i++) {
for (var y = 0; y < i; y++) {
document.write('⭐');
}
document.write('<br>');
}
document.write('<br>');
//****
// ***
// **
// *
for (var i = 0; i < 4; i++) {
for (var y = 0; y < i; y++) {
// document.write(' ');
document.write('♥');
}
for (var z = 0; z < 4 - i; z++) {
document.write('⭐');
}
document.write('<br>');
}
document.write('<br>');
// *
// **
// ***
//****
for (var i = 1; i <= 4; i++) {
for (var y = 0; y < 4 - i; y++) {
document.write('♥');
}
for (var z = 0; z < i; z++) {
document.write('⭐');
}
document.write('<br>');
}
document.write('<br>');
// *
// * *
// * * *
//* * * *
for (var i = 1; i <= 4; i++) {
for (var y = 0; y < 4 - i; y++) {
document.write(1);
}
for (var z = 0; z < i; z++) {
document.write(0 + ' ');
}
document.write('<br>')
}
</script>
2、打印九九乘法表
<!DOCTYPE html>
<html lang="en">
\
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>九九乘法表</title>
<style>
span {
display: inline-block;
width: 80px;
height: 30px;
border: 1px solid;
margin: 0 12px;
text-align: center;
line-height: 30px;
}
p span:nth-child(2n) {
background-color: pink;
color: #fff;
border: 2px solid green;
}
p span:nth-child(2n-1) {
background-color: green;
color: #fff;
border: 2px solid orange;
}
</style>
</head>
<body>
<script>
for (var i = 1; i <= 9; i++) {
document.write('<p>')
for (var j = 1; j <= i; j++) {
document.write('<span>' + j + "*" + i + "=" + i * j + '</span>')
}
document.write('</p>')
}
</script>
</body>
</html>
3、输出100以内的所有质数
<script>
var sum = 0;
for (var i = 2; i <= 100; i++) {
var istrue = true;
for (var y = 2; y < i; y++) {
if (i % y == 0) {
istrue = false;
break;
}
}
if (istrue) {
i = i < 10 ? '0' + i : i;
if (i != '01') {
document.write(i + ' ');
sum++;
}
}
if (sum == 5) {
document.write('<br>');
sum = 0;
}
}
</script>
六、循环的特殊语法
//这是for循环的最简单写法,但是这样的程序是一个死循环程序
for(;;){
console.log(666)
}
//下面的for循环与while语法循环类似,必须前有初始值,后有变量变化
var i = 0;
for(;i<10;){
console.log(666);//输出的结果是十个666
i++;
}
//以下两个代码相等
var sum = 0;
for(var i=0;i<10;i++){
sum++;
}
for(var i=0,cont=0;i<10;i++){
cont++;
}
七、死循环以及解决方式
for(var i = 0,cont =0;;){
var n = Math.floor(Math.random()*100);
if(n==0){
console.log('恭喜您用了'+i+'次,抽中了0');
break;
}
i++;
}