目前在从事前端工作, 特别总结 JavaScript 基础知识供大家学习, 本人特总结一下使用方法献给目前正在学习 web 前端的小伙伴们, 希望你们在前端领域闯出属于自己的一片天空来, 需要 Sublime 软件安装包的或者前端资料的可以留言
一, 循环语句
循环语句: 重复执行一段代码, 执行遇见某个指令 (条件为假), 结束循环语句
for 循环, do while, while, for in 语句
2.1 for 循环语句
for 循环是前测试循环语句: 先判断条件是否满足, 当满足条件时, 才执行循环语句. 直到条件为假结束循环语句.
for 语句比较灵活.
for(循环变量初始值; 条件表达式 ; 步长){
循环语句;
}
原理: for 循环判断条件表达式, 当条件表达式为真时执行循环语句, 直到条件为假时跳出循环. 结束循环后再执行 for 循环后面的语句.
第一次执行:
先执行且只执行一次语句 1, 然后进行条件的判断语句 2, 如果满足循环条件, 向内执行循环语句 3, 然后执行语句 4 变量的改变; 如果不满足条件, 结束 for 循环, 执行 for 循环后面的其他 JS 语句;
第二次执行: 如果能执行语句 4, 继续执行语句 2, 判断判断条件表达式是否满足, 如果满足循环条件, 向内执行循环语句 3, 然后执行语句 4 变量的改变; 如果不满足条件, 结束 for 循环, 执行 for 循环后面的其他 JS 语句;
......
当条件为真时, 重复执行语句 2, 语句 3, 语句 4. 直到条件为假时, 执行后面的其他 JS 语句.(只要想执行循环语句 3 必须先判断 2 是满足条件)
可以直接根据 for 原理的到结果.
- for(var i = 3; i <13; i +=3 ) {
- console.log(i);
- }
- console.log("结束");
- /*
- 第一次执行: i=3,i<13 真, 才执行循环语句, 输出 3
- 第二次执行: i=6,i<13 真, 执行循环语句, 输出 6
- 第三次执行: i=9,i<13 真, 执行循环语句, 输出 9
- 第四次执行: i=12,i<13 真, 执行循环语句, 输出 12
- 第五次执行: i=15,i<13 假, 当循环条件为假, 才结束 for 循环
- for 循环结束才执行后面的其他 JS 语句
- 输出 "结束"
- */
for 循环中的变量称为循环变量, 可以是任意的名字, 一般我们习惯书写 i,j,k
循环变量是全局变量. 可以在任何地方书写, 可以书写在 for 循环外面或者里面.
- // 2 循环变量是全局变量, 循环语句有可能一次都不执行
- var i = 3;
- for(console.log(++ i); i < 1 ; i ++) {
- console.log(i);
- }
- /*
- 第一次执行: i= 3, 语句 1 只会执行一次输出 4,i<1 假, 结束 for 循环
- */
语句 2 可以书写为任何条件表达式, 只要可以判断真假就可以.
- // 语句 2 可以书写成任意形式
- for(var i = 4; i != 10; i += 3) {
- console.log(i);
- }
- /*
- 第一次执行: i=4, i!=10 真, 执行循环语句输出 4
- 第二次执行: i=7, i!=10 真, 执行循环语句输出 7
- 第三次执行: i=10, i!=10 假, 立即结束循环
- */
循环语句可能会一直循环, 这种是死循环.
- // 当循环条件为真, 循环语句会一直执行
- for(var i = 1; i>= 0 ; i ++) {
- console.log(i);
- }
- for(var i = 3; i < 10 ; i += 3) {
- console.log(i);
- }
- console.log(i);
- /*
- 第一次执行: i=3,i<10 真进入循环语句输出 3
- 第二次执行: i=6,i<10 真进入循环语句输出 6
- 第三次执行: i=9,i<10 真进入循环语句输出 9
- 第四次执行: i=12,i<10 假, 立即结束循环语句
- 执行后面的其他 JS 语句
- console.log(i)12
- */
for 循环里面的循环语句也可以书写为 if 语句, if 结构体想执行必须同时满足 for 循环条件和 if 语句的条件.
- for(var i = 4; i < 25 ; i +=4) {
- // 当 i<25, 同时 i 能被 5 整除才输出 i
- if(i % 5 == 0) {
- console.log(i);
- }
- }
- console.log(i);
- /*
- 第一次执行: i=4,i<25 真, 进入循环语句 if 判断 i%5==0 假结束 if 语句 3;
- 第二次执行: i=8,i<25 真, 进入循环语句 if 判断 i%5==0 假结束 if 语句 3;
- 第三次执行: i=12,i<25 真, 进入循环语句 if 判断 i%5==0 假结束 if 语句 3;
- 第四次执行: i=16,i<25 真, 进入循环语句 if 判断 i%5==0 假结束 if 语句 3;
- 第五次执行: i=20,i<25 真, 进入循环语句 if 判断 i%5==0 真执行 if 语句输出 20;
- 第六次执行: i=24,i<25 真, 进入循环语句 if 判断 i%5==0 假结束 if 语句
- 第七次执行: i=28,i<25 假, 结束 for 循环语句
- 执行后面的其他 JS 语句输出 i=28
- */
for 循环嵌套 for 循环, 一层一层去执行, 每一层 for 循环变量不同.
- for(var i = 1 ; i < 4; i ++) {
- for(var j = 1; j < 4 ; j ++) {
- console.log(i,j);
- }
- }
- console.log(i,j);
- /*
- 第一次: i=1,i<4 真, 进入循环语句 j=1,j<4 真,(1,1),j++
- j=2,j<4 真,(1,2),j++
- j=3,j<4 真,(1,3),j++
- j=4,j<4 假结束 j 循环
- 第 * 次: i=2,i<4 真, 进入循环语句, j=1,j<4 真 (2,1)j++
- j=2,j<4 真,(2,2),j++
- j=3,j<4 真,(2,3),j++
- j=4,j<4 假结束 j 循环
- 第 * 次: i=3,i<4 真, 进入循环语句, j=1,j<4 真 (3,1)j++
- j=2,j<4 真,(3,2),j++
- j=3,j<4 真,(3,3),j++
- j=4,j<4 假结束 j 循环
- 第 * 次: i=4,i<4 假, 结束 i 循环. 执行后面的其他 JS 语句
- 输出 (i=4,j=4)
- */
2.2 穷举思想
概念: 我们经常想得到一组数据, 有一些特定的要求, 计算机没法自己帮我们输出这些数据. 我们人为的需要编写一段程序, 让计算机去帮我们实现程序. 将所有的可能情况, 一一的列举出来, 然后我们人为限定判断条件, 把符合条件的数据就给它输出, 不满足的就跳过, 继续验证下一个数据是否满足条件, 直到把所有可能情况都验证一个遍. 这个方法就叫做全举法, 也叫穷举法.
外层: 一一列举, for 循环.
内层: 进行判断, if 语句.
案例 1: 在控制台输出一个数的所有约数.
约数概念: a %b ==0, 那么 a 叫做 b 的倍数, b 叫做 a 的约数或者因数.
一个数的约数, 最小是 1, 最大是它本身.
- // 用户输入一个正数, 输出这个数所有的约数
- // 比如用户输入 12 约数 1,2,3,4,6,12
- // 的到用户输入
- var num = parseInt(prompt("请输入数字"));
- // 输出约数
- // 约数范围区间 1 - 数字本身, 将这些可能性一一列举
- for(var i = 1; i <= num; i ++) {
- // 只输出约数
- // 整除
- if(num % i == 0) {
- // 这个 i 才是约数, 输出
- console.log(i);
- }
- }
2.3 累加器和累乘器
累加器: 有时我们在计算时不想知道直接的过程, 只想要最终的数值, 有一个满足条件的结果就自加 1.
注意:
1 累加器变量, 必须书写在 for 外面 (以防变量被每次重置为 0), 初始值设置 0.
2 当有满足条件的数值, 累加器自加 1
3 最终的结果也必须书写在 for 循环外面.
- // 用户输入数字, 输出约数的总个数
- // 的到用户的输入
- var num = parseInt(prompt("请输入数字"));
- // 输出总个数
- // 累加器必须书写在 for 外面初始值 0
- var sum = 0;
- // 一一列举所有的可能性
- for(var i = 1; i <= num ; i ++) {
- if(num % i == 0) {
- // i 是 num 的约数, 累加器自加 1
- sum ++;
- }
- }
- // 累加器最终结果在 for 结束输出
- console.log(sum);
累乘器: 我们不想要中间的过程, 想需要得到最终的乘积
1 累乘器变量, 必须书写在 for 外面 (以防变量被每次重置为 1), 初始值设置 1.
2 当有满足条件的数值, 累加器自乘
3 最终的结果也必须书写在 for 循环外面.
阶乘: 比如 4! = 432*1
- // 用户输入数字, 输出该数阶乘
- // 的到用户的输入
- var num = parseInt(prompt("请输入数字"));
- // 输出阶乘
- // 累乘器必须书写在 for 循环外面, 初始值是 1
- var cheng = 1;
- // 阶乘 1-num
- for(var i = 1 ; i <= num ; i ++) {
- // 阶乘
- cheng *= i;
- }
- // 结果在最终输出
- console.log(cheng);
案例: 用户输入一个数字, 判断这个数是不是质数
质数: 除了 1 和他本身两个约数之外没有其他约数. 比如 3
合数: 除了 1 和他本身两个约数之外还有其他约数. 比如 4
1 既不是质数也不是合数.
- // 的到用户输入
- var num = parseInt(prompt("请输入数字"));
- // 找约数总个数
- // 累加器, 变量必须书写在 for 循环外初始值 0
- var sum = 0;
- // num 约数的所有可能性一一列举 for 循环
- for(var i = 1 ; i <= num; i ++) {
- // 找约数
- if(num % i === 0) {
- // i 是 num 的约数
- // 总个数
- sum ++;
- }
- }
- // 最终 sum 值在 for 循环外面输出
- // console.log(sum);
- // 判断是不是质数
- // sum 如果是 2 那么 num 是质数
- if(sum === 2) {
- console.log(num + "是质数");
- }else {
- console.log(num + "不是质数");
- }
来源: http://www.bubuko.com/infodetail-3091783.html