Day_3-循环分支 - do while- 循环分支 - for 循环- 求最大公约数_1 -求最大公约数_2_最小公倍数- 流程控制语句-arguments-总结函数-预解析-函数的执行过程牢记
Posted 勇敢*牛牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day_3-循环分支 - do while- 循环分支 - for 循环- 求最大公约数_1 -求最大公约数_2_最小公倍数- 流程控制语句-arguments-总结函数-预解析-函数的执行过程牢记相关的知识,希望对你有一定的参考价值。
Day_3
回顾上节
1. 三种书写位置
+ 行内式
=> a 标签
-> 直接书写在 href 属性上, 书写 javascript: js 代码 ;
=> 非 a 标签
-> 书写一个行为属性, onclick="js代码"
+ 内嵌式
=> 书写在一个 script 标签对内
=> 可以书写在页面任何位置
-> 推荐书写在 head 的末尾或者 body 的末尾
=> 书写多个 script 标签会按照从上到下的顺序依次执行
+ 外链式
=> js 代码书写在一个 .js 后缀的文件内
=> 在 html 页面以 script 标签的 src 属性引入页面
=> 可以书写多个
=> 注意: 当一个 script 标签被当做外链式引入的时候, 不能当做内嵌式使用
2. 三大核心
2-1. BOM - Browser Object Model 浏览器对象模型
2-2. DOM - Document Object Model 文档对象模型
2-3. ECMAScript(ES) JS的语法规范
3. 变量
=> 在程序运行中用来保存一个中间值
=> 语法: var 变量名 = 值
4. 变量的命名规则和规范
4-1. 规则
1. 变量只能由 数字(0-9) 字母(a-zA-Z) 美元符($) 下划线(_) 组成
2. 变量不能由 数字 开头
3. 严格区分大小写
4. 不能使用关键字或者保留字
4-2. 规范
1. 变量语义化
2. 驼峰命名法
3. 不要用中文
5. 数据类型
5-1. 基本数据类型
=> Number 数值
=> String 字符串
=> Boolean 布尔
=> Undefined 空
=> Null 空
5-2. 复杂数据类型(引用/地址)
6. 数据类型检测
=> 语法:
-> typeof 要检测的变量
-> typeof(要检测的变量)
=> 返回值: 以字符串的形式返回被检测的变量存储的数据类型
=> 注意: 当 两个及以上 typeof 连用的时候, 返回值必然是 'string'
7. 检测非数字的方法
=> 语法: isNaN(要检测的变量)
=> 返回值: 一个布尔值
-> true, 说明检测的内容是一个 非数字
-> false, 说明检测的内容不是一个 非数字
8. 数据类型转换
8-1. 转数值
1. Number() 整体转换
2. parseInt() 一位一位查看(不认识小数点)
3. parseFloat() 一位一位查看(认识小数点)
4. 取正负 整体转换
5. 非加法的数学运算 整体转换
8-2. 转字符串
1. String() 什么数据类型都可以转换
2. toString() undefined 和 null 不能转换
8-3. 转布尔
1. Boolean()
=> 五个内容是 false
=> 数值 0
=> 数值 NaN
=> 空字符串 ''
=> undefined
=> null
9. 运算符
9-1. 算数运算符
+ - * / %
9-2. 赋值运算符
= += -= *= /= %=
9-3. 比较运算符
> < >= <=
== ===
!= !==
9-4. 逻辑运算符
&& || !
9-5. 自增自减运算符
++ --
10. 分支语句 - if
1. if (条件) 代码段
2. if (条件) 代码段 else 代码段
3. if (条件) 代码段 else if (条件2) 代码段
4. if (条件) 代码段 else if (条件2) 代码段 else 代码段
11. 条件分支 - switch
+ 基础语法:
switch (变量)
case 情况1:
满足情况1的时候执行的代码
break
case 情况2:
满足情况2的时候执行的代码
break
default:
所有情况都不满足的时候执行的代码
+ 注意:
1. case 必须和变量是 值和数据类型 都一样, 才叫做满足情况
2. case 进行不书写表达式, 如果一定要书写一个表达式, 那么把该表达式的结果当做 case 进行判断
3. default 可以不写, 不写的时候, 所有 case 都不满足就没有代码执行
4. break 可以不写, 不写的话会发生 break 穿透
+ 穿透
=> 从第一个满足条件的 case 开始, 如果没有 break 不会考虑下一个 case 是否满足, 直接执行代码
=> 直到遇到 break 或者 switch 结束为止
12. 循环分支 - while
+ 循环三要素
1. 开始: 定义初始变量
2. 结束: 条件判断
3. 步长: 修改初始变量
+ 基础语法
定义初始变量
while (条件)
重复执行的代码
修改初始变量
循环分支 - do while
+ 也是循环语法的一种
+ 和 while 循环很像, 使用场景比较少
while 语法
while (条件)
代码
do while 语法
do
代码
while (条件)
和 while 的区别
while 是先进行条件判断, 在决定是否执行代码
do while 先执行一遍代码, 再开始进行条件判断, 决定时候继续执行代码
区分:
+ 当初始条件在 结束条件以内的时候, while 和 dowhile 是一样的
+ 当初始条件在 结束条件以外的时候
=> while 循环一次都不会执行
=> do while 会执行一次
做一个 1 ~ 10 的循环
var n = 1
do
console.log(n)
n++
while (n <= 10)
循环分支 - for 循环
语法:
for (定义初始变量; 条件判断; 改变初始变量)
重复执行的代码
原始形态
定义初始变量
for (; 条件判断; )
重复执行的代码
改变初始变量
1 ~ 10 的数字
for (var n = 1; n <= 10; n++)
console.log(n)
求最大公约数_1
// 求最大公约数
/* 辗转相除法 */
var a = 12,b = 8;
var n =0;
var count = 1;
while(true)
console.log('执行了',count++,'次');
n = a%b
if(n == 0)
console.log("最大公约数是:",b);
break;
a = b;
b = n;
求最大公约数の最小公倍数
function fun(a,b)
if(a%b == 0) return b;
else return fun(b,a%b);
var gcd = function(a, b)
return b ? gcd(b, a % b) : a;
//最小公倍数
fun_2 = (a,b)=> b ? fun_2(b, a % b) : a
console.log(a*b/fun_2(a,b));
流程控制语句
1. break
+ 使用在循环内的关键字
+ 当循环内遇到 break 的时候, 会直接结束当前循环
2. continue
+ 使用在循环内的关键字
+ 当循环内遇到 continue 的时候, 会结束循环的本次, 直接去到修改变量位置
3. 标记语法
+ 可以给 循环打上标记
+ 在 break 或者 continue 的时候, 直接跳出到标记位置
+ 目的: 默认 break 和 continue 是在当前循环内生效
gx:
for (var i = 1; i <= 5; i++)
console.log('------------------------------')
console.log(`我拿起了第 $ i 个包子`)
for (var j = 1; j <= 3; j++)
console.log(`我咬下了第 $ j 口`)
if (i === 3 && j === 2)
console.log('看到了 半条虫子 ')
// 不吃了
// 当你结束的时候, 我是想结束 gx 这个被标记的循环
break gx
console.log(`第 $ i 个包子吃完了`)
console.log('------------------------------')
判断质数
function fun(n)
var isT = true;
for(var i = 2;i<=Math.sqrt(n);i++)
if(n % i == 0) return false
return true
for(var i = 100;i<=200;i++)
// if(fun(i))
// console.log(i);
//
// 或者
fun(i) && console.log(i);
输出各种三角形
跳出多层循环体(做标记)-求最小公倍数-99星星矩阵-99正斜三角-99反斜三角-侧边99正斜三角-九九乘法表-求任意个数字之和
认识函数
+ 什么是函数:
=> 就是一个数据类型
=> 是一个复杂数据类型
-> 就是一个 "盒子"
-> 可以承载一段代码的 "盒子"
函数的两个阶段
+ 函数定义阶段
=> 把代码装进 "盒子" 的过程
+ 函数调用阶段
=> 把 "盒子" 内的代码执行一遍
函数定义阶段
1. 声明式函数
+ 语法: function 函数名()
=> function 定义函数的关键字
=> 函数名 你自己起的一个名字(遵循变量命名规则和规范)
=> () 必须写, 书写参数的位置(欠着)
=> 书写代码段, 你要装进 "盒子" 的代码
2. 函数表达式(赋值式函数)
+ 语法: var 变量名 = function ()
函数调用阶段
+ 两种定义函数的方式, 对应的调用方式是一样的
+ 语法: 函数名()
+ 注意:
=> 声明式函数可以在定义之前调用, 也可以在定义之后调用
=> 函数表达式, 只能在定义之后调用, 先调用会报错
//1. 声明式函数
function fn()
console.log('我是被装进盒子的一段代码')
console.log(fn)
//2. 赋值式函数
var fn2 = function ()
console.log('我是第二段代码, 我也被装进了盒子')
console.log(fn2)
//函数调用
fn()
fn2()
fn()
fn2()
函数的参数
+ 目的: 为了在你封装函数的时候, 增加更多的定制性
函数的参数分成两种
+ 形参
=> 书写在函数定义阶段的 小括号 内
=> 就是一个只能在函数内使用的变量
=> 可以书写多个, 多个之间使用逗号(,) 分隔
=> 形参的值, 由函数调用时的实参决定
+ 实参
=> 书写在函数调用阶段的 小括号 内
=> 就是按照顺序依次给函数的形参赋值
=> 可以书写多个, 多个之间使用逗号(,) 分隔
arguments
arguments
+ 是什么?
=> 是函数内天生自带的变量, 可以直接使用
=> 是一个集合("盒子"), 承载的是该函数被调用时的全部实参
arguments 的基本操作
1. length 属性
+ 语法: arguments.length
+ 得到: 是一个数值类型, 表示该 arguments 的长度, 也就是 arguments 内有多少个数据
2. 索引 属性
+ 索引:
=> arguments 内的数据排列是有顺序的
=> 从 0 开始, 依次 +1
=> 我们管这个数据排列的 "序号", 叫做 索引或者下标
+ 索引和 length 的关系
=> 最后一位的索引一定是 length-1
+ 利用索引可以访问 arguments 内的数据
=> 语法: arguments[索引]
-> 如果 arguments 内有该索引位置, 那么就是该索引位置的数据
-> 如果 arguments 内没有该索引位置, 那么就是 undefined
3. 遍历 arguments
+ 意义: 依次访问数据集合内的每一个数据
+ 规律: arguments 内每一个数据的索引是一组有规律的数字
循环可以给我们提供一组有规律的数字
利用 循环, 来遍历 arguments
求arguments对象
function argumentsA()
// for(var i=0;i<arguments.length;i++)
console.log(arguments);
//
argumentsA(234,1244,)
argumentsA(234,1244,235,1,41,421,1,)
argumentsA(2341,41,421,1,)
function sumNumbers()
var sum=0;
for(var i=0;i<=arguments.length-1;i++)
sum += arguments[i];
console.log(sum);
sumNumbers(1,3,5)
求任意个数字之和
思路:
+ 利用函数只是做功能的封装
=> 只帮我们把 求和的过程 封装起来
=> 当我执行完毕函数, 得到一个结果
+ 我们在函数外面拿到结果以后
=> 再来决定输出方式
+ 知识点: 函数的返回值
=>在函数内可以使用一个叫做 return 的关键字
=>给函数创建一个返回值, 该函数执行后的结果
函数的 return
+ 函数的 return 有两个功能
1. 给该函数创建一个返回值(结果)
2. 打断函数
=> 当你在函数内遇到 return 关键字的时候
=> 后续代码不在继续执行了
求质数函数
function fun(n)
var isT = true;
for(var i = 2;i<=Math.sqrt(n);i++)
if(n % i == 0) return false
return true
for(var i = 100;i<=200;i++)
// if(fun(i))
// console.log(i);
//
// 或者
fun(i) && console.log(i);
总结函数
1. 什么是函数
=> 一个 javascript 内的复杂数据类型
=> 私人: 一个承载一段代码的 "盒子"
2. 函数的两个阶段
2-1. 函数的定义阶段
=> 声明式函数: function 函数名()
=> 函数表达式: var 函数名 = function ()
2-2. 函数的调用阶段
=> 函数名()
=> 注意: 声明式函数可以先调用可以后调用, 函数表达式只能后调用
3. 函数的参数
3-1. 形参
=> 书写在函数定义阶段的小括号内
=> 就是一个只能在函数内使用的变量
=> 可以书写多个, 多个之间使用 逗号(,) 分隔
=> 值由函数调用时的实参决定
3-2. 实参
=> 书写在函数调用阶段的小括号内
=> 就是按照顺序依次给函数的形参赋值
=> 可以书写多个, 多个之间使用 逗号(,) 分隔
3-3. arguments
=> 函数内天生自带的变量, 就是函数所有实参的集合
=> length 属性
-> 语法: arguments.length
-> 得到: 该 arguments 的长度, 也就是有多少个实参
=> 索引 属性
-> 索引: 从 0 开始, 依次 +1
-> 通过索引可以访问到 arguments 内某一个数据
-> 语法: arguments[索引]
=> 遍历
-> 利用循环对 arguments 进行遍历
-> 示例:
for (以上是关于Day_3-循环分支 - do while- 循环分支 - for 循环- 求最大公约数_1 -求最大公约数_2_最小公倍数- 流程控制语句-arguments-总结函数-预解析-函数的执行过程牢记的主要内容,如果未能解决你的问题,请参考以下文章