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()  undefinednull 不能转换
  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 的时候, 直接跳出到标记位置
  + 目的: 默认 breakcontinue 是在当前循环内生效
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-总结函数-预解析-函数的执行过程牢记的主要内容,如果未能解决你的问题,请参考以下文章

c语言中的do-while循环怎么用啊?给个例子呗。

不就是循环嘛,循环与分支知识点详解!!

day04-java-循环结构(whiledo-whilefor)

00013_循环语句do...while

java基础语法学习day05---初学者必看详解

java基础语法学习day05---初学者必看详解