一. isNaN函数 : 是否是一个非数字
is NaN : is not a Number
var str = "hello";
var str = "123";
var res = isNaN(str); // 判断 str 是否是一个非数字
console.log(res); // 不是数字就是true 否者就是false
不是数字就是true 是数字是false
判断一个字符串是否是数字 ,如果是数字就返还true 否者就返还false
var str = prompt("请输入字符");
if(!isNaN(str)){ // 使用的时候会取反
console.log("是数字")
}else{
console.log("不是一个数字")
}
二.分支结构 if
一.if 语句
-
通过一个 if 语句来决定代码执行与否
-
语法:
if (条件) { 要执行的代码 }
-
通过
()
里面的条件是否成立来决定{}
里面的代码是否执行如果条件是 true 那么就执行 大括号里的代码 ,如果是false 就不执行
简写形式 : 如果代码只有一行的时候,可以省略 if后面的大括号
// 条件为 true 的时候执行 {} 里面的代码
if (true) {
alert('因为条件是 true,我会执行')
}
// 条件为 false 的时候不执行 {} 里面的代码
if (false) {
alert('因为条件是 false,我不会执行')
}
二。if else 语句
-
通过 if 条件来决定,执行哪一个
{}
里面的代码 -
语法:
if (条件) { 条件为 true 的时候执行 } else { 条件为 false 的时候执行 }
-
两个
{}
内的代码一定有一个会执行
else 里就是 if 非得if条件里是否执行的内容 else 就是和 if 里的条件相反的;
### 二。if else 语句
- 通过 if 条件来决定,执行哪一个 `{}` 里面的代码
- 语法: `if (条件) { 条件为 true 的时候执行 } else { 条件为 false 的时候执行 }`
- 两个 `{}` 内的代码一定有一个会执行
else 里就是 if 非得if条件里是否执行的内容 else 就是和 if 里的条件相反的;
在2种状态中切换
<button class="btn">点击</button>
<script>
var btn = document.querySelector(".btn");
var flag = true;
var num = 1;
btn.onclick = function () {
flag = !flag;
// console.log("onclick执行了",flag);
if (num === 1) {
if (flag) {
console.log("if执行了");
} else {
console.log("else执行了");
}
}
}
</script>
练习
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
请输入年龄: <input type="text" class="age" /><br/>
<button class="btn">确定</button>
<script>
// 获取标签元素
var ageEle = document.querySelector(".age");
var btnEle = document.querySelector(".btn");
btnEle.onclick = function(){
// 获取输入的年龄
// 1.判断输入的时候是数字 2.判断年龄是否 大于等于18
var age = ageEle.value;
// 判断是否是一个数字
if(!isNaN(age)){
// 是一个数字
// 判断是否大于等于18岁
if(age>=18){
console.log("可以上网");
}else{
console.log("不能上网");
}
}else{
// 不是一个数字
// 给一个提示
alert("输入错误,请输入数字");
}
}
</script>
</body>
</html>
三。if else if ... 语句
1.if else : 只能处理 2种情况
2.多种情况 可以 通过 else if 来判断 ,可以有一个 也可以有多个
-
可以通过 if 和 else if 来设置多个条件进行判断
-
语法:
if (条件1) { 条件1为 true 的时候执行 } else if (条件2) { 条件2为 true 的时候执行 }
-
会从头开始依次判断条件
-
如果第一个条件为 true 了,那么就会执行后面的
{}
里面的内容 -
如果第一个条件为 false,那么就会判断第二个条件,依次类推
-
多个
{}
,只会有一个被执行,一旦有一个条件为 true 了,后面的就不在判断了
// 第一个条件为 true,第二个条件为 false,最终会打印 “我是代码段1”
if (true) {
alert('我是代码段1')
} else if (false) {
alert('我是代码段2')
}
// 第一个条件为 true,第二个条件为 true,最终会打印 “我是代码段1”
// 因为只要前面有一个条件满足了,就不会继续判断了
if (true) {
alert('我是代码段1')
} else if (true) {
alert('我是代码段2')
}
// 第一个条件为 false,第二个条件为 true,最终会打印 “我是代码段2”
// 只有前一个条件为 false 的时候才会继续向后判断
if (false) {
alert('我是代码段1')
} else if (true) {
alert('我是代码段2')
}
// 第一个条件为 false,第二个条件为 false,最终什么也不会发生
// 因为当所有条件都为 false 的时候,两个 {} 里面的代码都不会执行
if (false) {
alert('我是代码段1')
} else if (false) {
alert('我是代码段2')
}
四。if else if … else 语句
-
和之前的
if else if ...
基本一致,只不过是在所有条件都不满足的时候,执行最后 else 后面的{}
// 第一个条件为 false,第二个条件为 false,最终会打印 “我是代码段3”
// 只有前面所有的条件都不满足的时候会执行 else 后面的 {} 里面的代码
// 只要前面有一个条件满足了,那么后面的就都不会执行了
if (false) {
alert('我是代码段1')
} else if (false) {
alert('我是代码段2')
} else {
alert('我是代码段3')
}
var userName = prompt("请输入名字");
if(userName === "张三"){
console.log("穿红色的衣服");
}else if(userName === "李四"){
console.log("穿蓝色衣服");
}else if(userName === "王五"){
console.log("穿黄色衣服");
}else{
// 除了上述情况之外的所有情况
console.log("名字未找到");
}
范围判断
范围的条件判断:js不支持连写 类似 0<a<10 这种写法;可以使用 逻辑运算符 && 连接
一个条件在某个范围之内
//分数判断 : 小于60分 不及格 大于等于60分 及格 , 60-70 一般 70 - 80 良好 80以上 优秀
var score = prompt("请输入分数");
if(score<60){
console.log("不及格")
}else{
// 大于等于60;
// 错误的写法
// if(60<=score<70){
// console.log("一般")
// }else if(70<=score<80){
// console.log("良好")
// }else {
// console.log("优秀")
// }
// 正确的写法
if(60<=score && score<70){
console.log("一般")
}else if(70<=score && score<80){
console.log("良好")
}else {
console.log("优秀")
}
}
练习:输入一个数字 判断 数字是否是 1-10之间的数 且判断 是奇数还是偶数;
var num = prompt("请输入一个数字");
if(1<num && num<10){
// num 的值在 1和 10 之间
if(num%2===0){
document.write("<h1>"+num+"是一个偶数</h1>");
}else{
document.write("<h1>"+num+"是一个奇数</h1>");
}
}else{
alert(num+"不在1和10之间,请重新输入");
}
三。SWITCH 条件分支结构
-
也是条件判断语句的一种
-
是对于某一个变量的判断
-
语法:
switch (要判断的变量) {
case 情况1:
情况1要执行的代码
break
case 情况2:
情况2要执行的代码
break
case 情况3:
情况3要执行的代码
break
default:
上述情况都不满足的时候执行的代码
}
switch case 也是分支语句 , 可以替换 if else if else 。。。。;
条件一般操作三个的时候
需求: 星期几吃啥 : 星期一 : 鱼香肉丝 星期二: 麻婆豆腐 星期三:番茄鸡蛋 其他 输入错误;
// 1.通过 if else if else 实现
var str = prompt("请输入星期几?");
if(str==="星期一"){
console.log("吃鱼香肉丝");
}else if(str==="星期二"){
console.log("麻婆豆腐");
}else if(str==="星期三"){
console.log("番茄鸡蛋");
}else{
console.log("输入错误!!")
}
// 2.通过switch case 来实现
var str = prompt("请输入星期几?");
switch(str){
case "星期一":
console.log("吃鱼香肉丝");
break;
case "星期二":
console.log("麻婆豆腐");
break;
case "星期三":
console.log("番茄鸡蛋");
break;
default:
console.log("输入错误22!!");
break;
}
注意 : switch case 里的判断是 通过 全等于(===)来判断的
var str = prompt("请输入星期几?");
// // str 类型 ?
console.log(str);
str = parseInt(str);
// 如果是== 那么 可以进入到下面的判断里去 : "1"==1 true;
// 如果 === 那么 就不能进入 下面的判断里去 : "1" === 1 false
switch(str){
case "1":
console.log("吃鱼香肉丝");
break;
case "2":
console.log("麻婆豆腐");
break;
case "3":
console.log("番茄鸡蛋");
break;
default:
console.log("输入错误22!!");
break;
}
一、switch case 的穿透 , 如果在 case的后面 不写 break
只能向下穿透 ,不会向上穿透;
var a = parseInt( prompt("请输入数字"));//输入1 输出1111 2222 3333
//输入2 输出 2222 3333 //输入3 输出 3333
switch (a) {
case 1:
console.log(1111)
// break;
case 2:
console.log(2222)
// break;
case 3:
console.log(3333)
break;//穿透到这里
case 4:
console.log(444)
break;
default:
console.log("其他情况");
break;
}
二、switch case 的范围判断
如果做范围判断 不能直接在switch里写变量 需要写true 来完全命中 case中的情况 ;
var score = prompt("请输入分数");
//switch (score) {//不能直接在switch里写变量
switch (true) {
case score < 60:
console.log("不及格");
break;
case score >= 60 && score < 70:
console.log("一般");
break;
case score>=70 && score<80:
console.log("良好");
break;
case score>=80:
console.log("优秀");
break;
default:
console.log("输入错误");
break;
}
练习 1.输入年份判断该年是平年还是闰年
能够被4整除 且不能被100整除 或者 能够被400整除的年份就是闰年 其他的就是平年
2.根据输入的三个数字,判断是这一年的第几天
var year = prompt("请输入年份");
var month = parseInt(prompt("请输入月份"));
var day = prompt("请输入日");
// 1.判断 是平年还是闰年 ? 知道2月到底是多少天?
var feb; // 记录二月的天数
// 判断是平年还是闰年?
if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
console.log("是闰年")
feb = 29;
} else {
console.log("是平年")
feb = 28;
}
//常规思维解决
// switch (month) {
// case 1:
// console.log("是这年的" + day + "天");
// break;
// case 2:
// var res = 31 + parseInt(day);
// console.log("是这年的" + res + "天");
// break;
// case 3:
// var res = 31 + feb + parseInt(day);
// console.log("是这年的" + res + "天");
// break;
// case 4:
// var res = 31 + feb + 31 + parseInt(day);
// console.log("是这年的" + res + "天");
// break;
// case 5:
// var res = 31 + feb + 31 + 30 + parseInt(day);
// console.log("是这年的" + res + "天");
// break;
// case 6:
// var res = 31 + feb + 31 + 30 + 31 + parseInt(day);
// console.log("是这年的" + res + "天");
// break;
// }
// switch case 穿透
day = parseInt(day);
switch (month-1) {
case 5:
// day = day + 31;
day+=31
case 4:
// day = day + 30;
day+=30;
case 3:
// day = day + 31;
day+=31;
case 2:
// day = day + feb;
day += feb;
case 1:
// day = day + 31;
day += 31;
case 0:
console.log("是当年的"+day+"天");
break;
}
四。三元运算
-
三元运算,就是用 两个符号 组成一个语句
-
三元运算只是对 if else 语句的一个简写形式
-
语法:
条件 ? 条件为 true 的时候执行 : 条件为 false 的时候执行
var age = 18;
age >= 18 ? alert('已经成年') : alert('没有成年')
定义字符串: 1.双引号 2.单引号 3.反引号
var username = prompt("请输入名字");
var age = prompt("请输入年龄");
var str1 = "我是字符串,我的名字是"+ username +"我的年龄是"+age;
console.log(str1);
var str2 = '我是字符串2222,我的名字是'+username+'我的年龄是'+age;
console.log(str2)
// ${} 插值表达式 ,里面可以解析变量,还可以解析 三元运算符;
var str3 = `我是字符串3333我的名字是${username}我的年龄是${age}`;
var username = prompt("请输入名字");
var age = prompt("请输入年龄");
var flag = true;
document.querySelector(".btn").onclick = function(){
var str3 = `我是字符串3333我的名字是${flag?"张三":"李四"}我的年龄是${flag?21:22}`;
// var str3 = `我是字符串3333我的名字是${if(flag){"张三"}else{"李四"}}我的年龄是${flag?21:22}`;
console.log(str3);
flag = !flag;
}
五。 循环
一。 while循环
-
while
,当条件满足时就执行代码,一旦不满足了就不执行了 -
语法
while (条件) { 满足条件就执行 }
-
因为满足条件就执行,所以我们写的时候一定要注意,就是设定一个边界值,不然就一直循环下去了
分支 可以把代码块 按需执行; 循环 是可以让代码块 重复执行
循环的三要素 : 1.初始值 var a = 1; 2. 条件判断 a<6 3.初始值的改变
while(条件){ // 条件 如果是true 那么就会重复执行while 后大括号里的代码
}
while(true){
// 重复执行这里的代码块
}
// while(true){ // 死循环
// console.log(111);
// }
var a = 1; // 初始值
while(a<5){
console.log(1111);
a++;
}
console.log(2222);
第一次 : a = 1 判断 a<5 ==== 1<5 true while 循环里的代码会执行 打印1111 a++
第二次 : a = 2 判断 2<5 true 循环里的代码会执行 打印1111 a++
第三次 a = 3 判断 3<5 true 循环里的代码会执行 打印1111 a++
第四次 a = 4 判断 4<5 true 循环里的代码会执行 打印1111 a++
第五次 a = 5 判断 5<5 false 跳出循环 执行循环下面的代码
练习:找出 100-1000中所有各位十位百位一样的数字 : 例如 : 111 222 333 。。。;
// 方式一 ;
var num = 100;
while(num<=1000){
// console.log(num);
var a = parseInt( num/100) // 百位
var b = parseInt( (num%100 )/10 ); // 十位
var c = num%10 ; // 个位
// console.log(a,b,c);
// console.log("---");
if(a===b && b===c){
console.log(num);
}
num++;
}
// 方式二:
// 在js里 字符串可以通过 下标获取每一个字符
// 每一个字符 js都会编号,编号是从0 开始依次增加的;
// var str = "abcdef";
// // 012345
// console.log( str[5])
// 111 222 333
var num = 100;
while(num<=1000){
// console.log(num);
var a = String(num)[0]; // 百位
var b = String(num)[1]; // 十位
var c = String(num)[2]; // 个位
if(a===b && b===c){
console.log(num);
}
num++;
}
计数
var num = 0;
var count = 0; // 再定义一个变量记录 循环次数;
while(num<10000){
// console.log(num);
count++;
num+=17;
}
console.log(count);
累加
var num = 0;
// 0+1+2+3+4;
// 1.在循环外部定义一个变量记录累加的值 2. 每次循环的时候利用 变量加上 循环累加的值就可以了
var total = 0;
while(num<5){
console.log(num);
// total = total + num;
total += num;
num++;
}
/ *
第一次 : num = 0 total = 0 ---进入循环--- total = 0; num =1
第二次 : num = 1 total = 0 ---进入循环--- total = 1 num = 2
第三次 : num = 2 total = 1 ---进入循环--- total = 3 num = 3;
第四次 : num = 3 total = 3 ---进入循环--- total = 6 num = 4;
第五次: num = 4 total = 6 ---进入循环--- total = 10; num = 5
5<5 false 循环结束;
*/
二。DO WHILE 循环
-
是一个和
while
循环类似的循环 -
while
会先进行条件判断,满足就执行,不满足直接就不执行了 -
但是
do while
循环是,先不管条件,先执行一回,然后在开始进行条件判断 -
语法:
do { 要执行的代码 } while (条件)
// 下面这个代码,条件一开始就不满足,但是依旧会执行一次 do 后面 {} 内部的代码
var num = 10
do {
console.log('我执行了一次')
num = num + 1
} while (num < 10)
三。for循环
和 while 和 do while 循环都不太一样的一种循环结构
● 道理是和其他两种一样的,都是循环执行代码的
● 语法: for (var i = 0; i < 10; i++) { 要执行的代码 }
// 把初始化,条件判断,自身改变,写在了一起
for (var i = 1; i <= 10; i++) {
// 这里写的是要执行的代码
console.log(i)
}
// 控制台会依次输出 1 ~ 10
1.初始值
2.条件
3.初始值的改变
4.执行代码 ;
var i = 0; // 初始值
for(;i<5;){ // 判断条件
console.log(i); // 需要循环的代码块 ;
i++; // 初始值的改变
}
// for循环的常规写法 ;
// for(var i=0;i<5;i++){
// console.log(i);
// }
计算所有1-100 之间 奇数的和
//for循环累加
var total = 0;
for(var i=1;i<100;i++){
if(i%2===1){
total+= i;
}
}
输入 年 月 日 判断是当年的第几天 ?
var year = 2001;
var month = 3;
var day = 11;
// 1.判断闰年和平年 ,获取二月份的天数
var feb; // 记录二月的天数
// 判断是平年还是闰年?
if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
console.log("是闰年")
feb = 29;
} else {
console.log("是平年")
feb = 28;
}
// 2.根据月份累加天数;
for(var i=1;i<month;i++){
// i 就是每个月 ;
// i是月份 的值可能是 : 1 2 3 4 5 6 7 8 9 10 11
// 1 3 5 7 8 10 + 31天
// 2 + feb 天
// 其他的就是加 30天;
if(i===1 || i===3 || i===5 || i===7 || i===8 || i===10){
day += 31;
}else if(i===2){
day += feb;
}else {
day += 30;
}
}
console.log("在"+year+"年中是第"+day+"天");
一、循环中字符串的拼接 ;
var str = "a";
var num = prompt("请输入数量");
// 输入了几个 那么生成一个长度是 几的 a 的字符串;
// 2 : aa
// 5 : aaaaa
var res = "";
for(var i=0;i<num;i++){
res += str; // 字符串的累加
}
console.log(res);
二、循环里的i值问题
for(var i=0;i<3;i++){
console.log(i); // 0 1 2
}
console.log(i); // 3
三 、通过字符串拼接生成 table
var str = "<table width='500' border=''><tr> <td>1</td> <td>2 </td> <td>3</td><td>4</td> <td>5 </td> <td>6</td></tr></table>";
document.write(str);
// 利用循环来拼接需要的html结构
var html = "<table width='500' border=''><tr>";
for (var i = 1; i <= 8; i++) {
html += "<td>"+i+"</td>";
}
html += "<tr></table>";
console.log(html);
document.write(html);
练习:打印出1000-2000年中所有的闰年,并以每行四个数的形式输出
var count = 0;
var str = "";
for (var i = 1000; i <= 2000; i++) {
// console.log(i);
if ((i % 4 === 0 && i % 100 !== 0) || i % 400 === 0) {
console.log(i+"是闰年")
str += i+" ";
count++;
if(count%4===0){
str += "<br/>";
// console.log("每四个结束了!!",str);
document.write(str);
str = ""
}
}
}
嵌套循环 : 多个循环 套在一起;
需求: 绘制
/*
****
****
****
*/
// 第一行
var str = "";
for(var i=0;i<4;i++){
str += "*";
}
str += "<br/>"
// console.log(str); // ****
document.write(str);
// 第二行
var str = "";
for(var i=0;i<4;i++){
str += "*";
}
str += "<br/>"
// console.log(str); // ****
document.write(str);
// // 第三行
var str = "";
for(var i=0;i<4;i++){
str += "*";
}
str += "<br/>"
// console.log(str); // ****
document.write(str);
利用嵌套循环实现
for (var j = 0; j < 3; j++) { // 控制行数的
var str = "";
for (var i = 0; i < 3; i++) { // 控制列数的;
str += "*";
}
str += "<br/>"
// console.log(str); // ****
document.write(str);
}
/*
大循环第一次执行 j = 0
小循环执行三次 i = 0
i = 1
i = 2
大循环执行第二次 j = 1
小循环执行三次 i = 0
i = 1
i = 2
大循环执行第三次 j=2
小循环执行三次 i = 0
i = 1
i = 2
小循环结束
大循环结束
执行后续代码 */
四。BREAK 终止循环
-
在循环没有进行完毕的时候,因为我设置的条件满足,提前终止循环
-
比如:我要吃五个包子,吃到三个的时候,不能在吃了,我就停止吃包子这个事情
-
要终止循环,就可以直接使用
break
关键字
for (var i = 1; i <= 5; i++) {
// 没循环一次,吃一个包子
console.log('我吃了一个包子')
// 当 i 的值为 3 的时候,条件为 true,执行 {} 里面的代码终止循环
// 循环就不会继续向下执行了,也就没有 4 和 5 了
if (i === 3) {
break
}
}
停止break后的所有循环
for(var i=1;i<=5;i++){
if(i==2){
break; // 停止 break之后的所有循环;
}
console.log(i);
}
//输出为 1
// 需求 : 判断 1-100 之间 有没有偶数?
var flag = false; // 没有偶数
for (var i = 1; i <= 100; i++) {
if (i % 2 === 0) {
flag = true;
break; // 停止后续的所有循环;
}
console.log(i);
}
if (flag) {
console.log("有偶数")
} else {
console.log("没有偶数")
}
五。CONTINUE 结束本次循环
-
在循环中,把循环的本次跳过去,继续执行后续的循环
-
比如:吃五个包子,到第三个的时候,第三个掉地下了,不吃了,跳过第三个,继续吃第四个和第五个
-
跳过本次循环,就可以使用
continue
关键字
for (var i = 1; i <= 5; i++) {
// 当 i 的值为 3 的时候,执行 {} 里面的代码
// {} 里面有 continue,那么本次循环后面的代码就都不执行了
// 自动算作 i 为 3 的这一次结束了,去继续执行 i = 4 的那次循环了
if (i === 3) {
console.log('这个是第三个包子,掉地下了,我不吃了')
continue
}
console.log('我吃了一个包子')
}
continue :
停止当前这次循环 ,后面的循环依然会继续执行;
不会停止所有的循环;
跳出本次循环
for(var i=1;i<=5;i++){
if(i===2 || i===4){
continue; // 停止本次循环
}
console.log(i);
}
输出为:1,3,5
练习
a+aa+aaa+aaaa : 例如 a = 1 求 1+ 11+ 111 + 1111的值? 1.组装 a aa aaa aaaa ; 2.把 所有组装的数字 累加起来;
方式一:
// var a = 1;
// // var b = String( a) + String( a);
// // var b = a.toString() + a;
// var b = a + "" + a;
// console.log(b);
// var c = a + "" + a + a;
// console.log(c);
// var d = a + "" + a + a + a;
// console.log(d);
// console.log(a + Number(b) + Number(c) + Number(d));
// 方式二: 循环
var a = 1;
var str = "";
var total = 0;
for(var i=0;i<10;i++){
str += a;
console.log(str);
total += Number( str);
}
console.log(total);
判断一个数是否是一个质数?
var a = 4; // 判断这个a是否是一个质数;
if (a !== 1) {
var count = 0;
for (var i = 2; i < a; i++) {
if (a % i === 0) {
count++;
}
}
if (count === 0) {
console.log(a + "是一个质数");
} else {
console.log(a + "不是一个质数");
}
}else{
console.log(a + "不是一个质数也不是合");
}
//通过循环 替换a的值 判断是否是质数就可以; a 换成 1-100 之间的数
for (var j = 1; j <= 100; j++) {
var a = j; // 判断这个a是否是一个质数;
if (a !== 1) {
var count = 0;
for (var i = 2; i < a; i++) {
if (a % i === 0) {
count++;
}
}
if (count === 0) {
console.log(a + "是一个质数");
}
} else {
console.log(a + "不是一个质数也不是合");
}
}
//3.每4个输出一行
var num = 0; // 记录质数输出的次数;
var str = "";
for (var j = 1; j <= 100; j++) {
var a = j; // 判断这个a是否是一个质数;
if (a !== 1) {
var count = 0;
for (var i = 2; i < a; i++) {
if (a % i === 0) {
count++;
}
}
if (count === 0) {
// console.log(a + "是一个质数");
str += a + " "
num++;
if(num%4===0){
console.log(str);
document.write(str+"<br/>");
console.log("---质数4次输出完毕---")
str = "";//输出之后重置str
}
}
} else {
// console.log(a + "不是一个质数也不是合");
}
3.每4个输出一行
var num = 0; // 记录质数输出的次数;
var str = "";
for (var j = 1; j <= 100; j++) {
var a = j; // 判断这个a是否是一个质数;
if (a !== 1) {
var count = 0;
for (var i = 2; i < a; i++) {
if (a % i === 0) {
count++;
}
}
if (count === 0) {
// console.log(a + "是一个质数");
str += a + " "
num++;
if(num%4===0){
console.log(str);
document.write(str+"<br/>");
console.log("---质数4次输出完毕---")
str = "";//重置str
}
}
} else {
// console.log(a + "不是一个质数也不是合");
}
4.计算10的阶乘
var a = 10;
var total = 1;
for(var i=1;i<=a;i++){
total *= i;
}
console.log(total);
2.求1+2!+3!+...+20!的值;
var totalNum = 0;
for (var j = 1; j <= 20; j++) {
var a = j;
var total = 1;
for (var i = 1; i <= a; i++) {
total *= i;
}
console.log(j+"的阶层的值是:"+total);
totalNum+= total;
}
console.log("最终的结果值是",totalNum);
题目 *
**
***
****
*****
for (var j = 1; j <= 5; j++) { // j 是控制行数的;
var str = "";
for (var i = 1; i <= j; i++) { // i 控制列数的
str += "*";
}
str += "<br/>"
document.write(str);
}
题目
|||@ 第一行 补3个空格 ---》 (7 - 行数:1 )/2 = 3
||@@@ 第三行 补2个空格 ----》 (7-3) /2 = 2;
|@@@@@ 第五行 1 -----》 (7-5)/2 = 1
@@@@@@@ 第七行 ----》 (7-7) /2 = 0;
var line = 11;
for (var j = 1; j <= line; j++) { // 控制行
var str = "";
for (var i = 1; i <= j; i++) { // 控制列
str += "@";
}
str += "</br>"
if(j%2===1){
// 在前面补上空格
var res = "";
for(var k=0;k<(line-j)/2;k++){
res += " "
}
var res = " ".repeat((line-j)/2);
document.write(res)
// 如果是奇数行 那么会绘制出图形 ;偶数行 不管 ;
document.write(str);
}
}
绘制 9 * 9的长方形;
for (var j = 1; j <= 9; j++) {
var str = "";
for (var i = 1; i <= 9; i++) {
str += "@";
}
str += "<br/>";
document.write(str)
}
绘制 斜三角
for (var j = 1; j <= 9; j++) {
var str = "";
for (var i = 1; i <= j; i++) {
str += "@";
}
str += "<br/>";
document.write(str)
}
document.write("<hr>");
99乘法表
for (var j = 1; j <= 9; j++) {
var str = "";
for (var i = 1; i <= j; i++) {
str += i + "*" + j + "=" + i * j + " ";
}
str += "<br/>";
document.write(str)
}
小知识 repeat重复
var a = "1a0";
console.log( a.repeat(10));
//1a01a01a01a01a01a01a01a01a01a0
var ress = "";
for(var i=0;i<2;i++){
ress += a;
}
console.log(ress);
//1a01a0