JS(1-69)

01_JS介绍

1.1 JS是什么

1.JavaScript(是什么?)

  • 是一种运行在客户端(浏览器)的编程语言,实现人机交互效果。

2.作用(做什么?)

  • 网页特效(监听用户的一些行为让网页作出对应的反馈)
  • 表单验证(针对表单数据的合法性进行判断)
  • 数据交互(获取后台的数据,渲染到前端
  • 服务端编程(node.js)

3.JavaScript的组成(有什么?)

  • ECMAScript:
    规定了js基础语法核心知识。
    口比如:变量、分支语句、循环语句、对象等等
  • Web APIs:
    • DOM 操作文档,比如对页面元素进行移动、大小、添加删除等操作
    • BOM 操作浏览器,比如页面弹窗,检测窗口宽度、存储数据到浏览器等等

总结

  1. JavaScript是什么?
    JavaScript 是一种运行在客户端(浏览器)的编程语言
  2. JavaScript组成是什么?
  • ECMAScript(基础语法)
  • web APIs (DOM、BOM)

注:JS权威网站

还得是MDN

1.2 JS书写位置

1.内部Javascript

  • 用法:直接写在html文件里,用script标签包住
  • 规范:script标签写在上面
  • 拓展:alert(你好,js’)页面弹出警告对话框
    示例:


注意事项:

  • 我们将

    注意事项:

    1. script标签中间无需写代码,否则会被忽略!
    2. 外部avaScript会使代码更加有序,更易于复用,且没有了脚本的混合,HTML也会更加易读,因此这是个好的习惯。

    3.内联JavaScript

    • 用法:代码写在标签内部
      示例:
    
    
    
    

    注意:

    • 此处作为了解即可,但是后面vue框架会用这种模式

    总结

    • ​JavaScript三种书写位置?
      内部 外部 行内
    • 注意事项:
      • 书写的位置尽量写到文档末尾前面外部js 标签中间不要写代码,否则会被忽略

    1.3 JS怎么写

    单行注释

    符号://
    作用://右边这一行的代码会被忽略
    快捷键:ctrl+/

    块注释

    符号:/**/
    作用:在/**/之间的所有内容都会被忽略
    快捷键:shift+alt+a

    1.4 结束符

    • 作用:使用英文的;代表语句结束
    • 实际情况:实际开发中,可写可不写,浏览器(avaScript 引擎)可以自动推断语句的结束位置
    • 现状:在实际开发中,越来越多的人主张,书写Javascript代码时省略结束符
    • 约定:为了风格统一,结束符要么每句都写,要么每句都不写(按照团队要求.)

    总结

    • JavaScript注释有哪两种方式?
      单行注释//
      多行注释/* */
    • JavaScript结束符注意点
    • 结束符是?
      分号
    • 结束符可以省略吗? Yes
      但为了风格统一,结束符要么每句都写,要么每句都不写(团队约定)

    1.5 JS输入输出的语法

    什么是语法:

    • 人和计算机打交道的规则约定
    • 我们要按照这个规则去写
      比如:你吃了吗?
    • 我们程序员需要操控计算机,需要计算机能看懂
    • 输出和输入也可理解为人和计算机的交互,用户通过键盘、鼠标等向计算机输入信息,计算机处理后再展示结果给用户这便是一次输入和输出的过程。

    输出语法:

    语法1:

    document.write('要出的内容')

    • 作用:向body内输出内容
    • 注意:如果输出的内容写的是标签,也会被解析成网页元素
    语法2:

    alert('要出的内容’)

    • 作用:页面弹出警告对话框
    语法3:

    console.log('控制台打印')

    • 作用:控制台输出语法,程序员调试使用

    输入语法:

    语法:
    prompt('请输入您的姓名:')

    • 作用:显示一个对话框,对话框中包含一条文字信息,用来提示用户输入文字

    JavaScript 代码执行顺序:

    • 按HTML文档流顺序执行JavaScript代码
    • alert()和prompt()它们会跳过页面渲染先被执行(目前作为了解,后期讲解详细执行过程)

    1.6字面量

    • 在计算机科学中,字面量(literal)是在计算机中描述 事/物
      比如:
    • 我们工资是:1000 此时1000就是 数字字面量
    • ‘黑马程序员’字符串字面量
    • 还有接下来我们学的[]数组字面量{}对象字面量 等等

    总结

    1.JavaScript是什么?
    JavaScript是一门编程语言,可以实现很多的网页交互效果。
    2.JavaScript书写位置?
    内联JavaScript
    内部JavaScript-写到标签上方
    外部JavaScript-但是

    3.更新变量

    • 更新:变量赋值后,还可以通过简单地给它一个不同的值来更新它。
    • 注意:let不允许多次声明一个变量。

    4.声明多个变量

    • 变量赋值后,还可以通过简单地给它一个不同的值来更新它。
    • 语法:多个变量中间用逗号隔开。
      let age = 18, uname = 'pink'
    • 说明:看上去代码长度更短,但并不推荐这样。为了更好的可读性,请一行只声明一个变量。
    //多行变量声明有点长,但更容易阅读
    let age = 18
    let uname = 'pink'
    

    总结

    • 变量用什么关键字来声明?
      let
    • 变量通过什么符号来赋值?
      =这个符号我们也称为 赋值运算符
    • 变量赋值之后如何更新新值?
      直接给它一个不同的值来更新它
    • 我们提倡同时声明多个不同的变量吗?
      不提倡,可读性不好

    2.3变量的本质

    • 内存:计算机中存储数据的地方,相当于一个空间
    • 变量本质:是程序在内存中申请的一块用来存放数据的小空间

    2.4变量的命名规则与规范

    • 规则:必须遵守,不遵守报错(法律层面)
    • 规范:建议,不遵守不会报错,但不符合业内通识(道德层面)
    • 规则:
    1. 不能用关键字
      • 关键字:有特殊含义的字符,JavaScript 内置的一些英语词汇。例如:let、var、if、for等
    2. 只能用下划线、字母、数字、$组成,且数字不能开头
    3. 字母严格区分大小写,如Age和age 是不同的变量
    • 规范:
    1. 起名要有意义
    2. 遵守小驼峰命名法
      • 第一个单词首字母小写,后面每个单词首字母大写。例:userName

    变量拓展_let与var的区别

    • let 和var区别:
      • 在较旧的JavaScript,使用关键字var来声明变量,而不是let。
      • var 现在开发中一般不再使用它,只是我们可能再老版程序中看到它。
      • let为了解决var的一些问题。
    • var声明:
      • 可以先使用在声明(不合理)
      • var 声明过的变量可以重复声明(不合理)
      • 比如变量提升、全局变量、没有块级作用域等等
    • 结论:
      • var就是个bug,别迷恋它了,以后声明变量我们统一使用let

    03*_JS数组

    3.1 数组的基本使用

    1.声明语法

    • 语法:
      let 数组名 =[数据1,数据2,…、数据n]
    • 示例:
      let names =['小明',‘小刚’,‘小红’,‘小丽',‘小米']
    • 数组是按顺序保存,所以每个数据都有自己的编号
    • 计算机中的编号从0开始,所以小明的编号为0,小刚编号为1,以此类推
    • 在数组中,数据的编号也叫索引或下标
    • 数组可以存储任意类型的数据

    2.取值语法

    • 语法:
      数组名[下标]
    • 示例:
    let names ['小明',‘小刚’,‘小红',‘小丽',‘小米']
    names[0] //小明
    names[1] //小刚
    

    3.一些术语

    • 元素:数组中保存的每个数据都叫数组元素
    • 下标:数组中数据的编号
    • 长度:数组中数据的个数,通过数组的length属性获得
    let names = ['小明',‘小刚',‘小红',‘小丽',‘小米']
    console.log(names[e]) //小明
    console.log(names[1])//小刚
    console.log(names.length) // 5
    

    总结

    • 使用数组有什么好处?
      数组可以保存多个数据
    • 数组字面量用什么表示?
      []中括号
    • 请说出下面数组中‘小米’的下标是多少?如何取得这个数据?
      下标是4
      获取的写法是 names[4]
      `let names = [‘小明’,‘小刚’,‘小红’,‘小丽’,‘小米’]

    03_常量

    常量的基本使用

    • 概念:使用const声明的变量称为“常量”。
    • 使用场景:当某个变量永远不会改变的时候,就可以使用const来声明,而不是let。
    • 命名规范:和变量一致
    • 常量使用:
    //声明一个常量
    const G= 9.8
    //输出这个常量
    console.log(G)
    
    • 注意:常量不允许重新赋值,声明的时候必须赋值(初始化)
    • 小技巧:不需要重新赋值的数据使用const

    总结

    • let:
      现在实际开发变量声明方式。
    • var
      以前的声明变量的方式,会有很多问题。
    • const
      类似于let,但是变量的值无法被修改

    04_数据类型

    4.0 分类

    • JS 数据类型整体分为两大类:
      基本数据类型
      引用数据类型
    • 基本数据类型
      number 数字型
      string 字符串型
      boolean 布尔型
      undefined 未定义型
      null空类型
    • 引用数据类型
      object 对象

    4.1数据类型-数字类型(Number)

    • 即我们数学中学习到的数字,可以是整数、小数、正数、负数。
    let age = 18//整数
    let price = 88.99 //小数
    
    • Javascript 中的正数、负数、小数等 统一称为 数字类型。
    • 注意事项:
      • JS是弱数据类型,变量到底属于那种类型,只有赋值之后,我们才能确认
      • Java是强数据类型 例如int a=3必须是整数
    运算
    • 数字可以有很多操作,比如,乘法*、除法/、加法+、减法-等等,所以经常和算术运算符一起。
    • 数学运算符也叫算术运算符,主要包括加、减、乘、除、取余(求模)。
      • +:求和
      • -:求差
      • *:求积
      • /:求商
      • %:取模(取余数)
        开发中经常作为某个数字是否被整除
    运算优先级
    • 同时使用多个运算符编写程序时,会按着某种顺序先后执行,我们称为优先级。
    • JavaScript中 优先级越高越先被执行,优先级相同时以书从左向右执行。
    • 乘、除、取余优先级相同
    • 加、减优先级相同
    • 乘、除、取余优先级大于加、减
    • 使用()可以提升优先级
    • 总结:
    • 先乘除后加减,有括号先算括号里面的~~~
    总结
    • 算术运算符有那几个常见的?
          • / %
    • 算术运算符优先级怎么记忆?
      先乘除取余,后加减,有小括号先算小括号里面的
    • 取余运算符开发中的使用场景是?
      来判断某个数字是否能被整除
    拓展
    • NaN代表一个计算错误。它是一个不正确的或者一个未定义的数学操作所得到的结果
      console.log('老师'-2)// NaN
    • NaN 是粘性的。任何对 NaN 的操作都会返回 NaN
      console.log(NaN + 2) // NaN

    4.2数据类型-字符串类型(string)

    • 通过单引号(“)、双引号(”")或反引号( )包裹的数据都叫字符串,单引号和双引号没有本质上的区别,推荐使用单引号。
    let uname =‘小明'//使用单引号
    let gender ="男"// 使用双引号
    let goods =`小米` // 使用反引号
    let tel ='13681113456'//看上去是数字,但是引号包裹了就是字符串
    let str ="" //这种情况叫空字符串
    
    • 注意事项:
      1. 无论单引号或是双引号必须成对使用
      2. 单引号/双引号可以互相嵌套,但是不以自已嵌套自已(口诀:外双内单,或者外单内双)
      3. 必要时可以使用转义符\,输出单引号或双引号

    字符串拼接

    • 场景:+运算符可以实现字符串的拼接。
    • 口诀:数字相加,字符相连
    document.write('我叫'+‘刘德华')//我叫刘德华
    let uname ='刘德华'
    let song =‘忘情水'
    document.write(uname + song)//刘德华忘情水
    

    模板字符串

    • 使用场景:
      • 拼接字符串和变量
      • 在没有它之前,要拼接变量比较麻烦
    document.write('大家好,我叫'+ name +',今年'+ age +‘岁')
    
    • 语法:
      • ”(反引号)
      • 在英文输入模式下按键盘的tab键上方那个键(1左边那个键)
      • 内容拼接变量时,用${}包住变量
    document.write(`大家好,我叫${name},今年${age}岁`)
    

    总结

    1. JavaScript中什么样数据我们知道是字符串类型?
      只要用 单引号、双引号、反引号包含起来的就是字符串类型
    2. 字符串拼接比较麻烦,我们可以使用什么来解决这个问题?
      模板字符串,可以让我们拼接字符串更简便
    3. 模板字符串使用注意事项:
    • 用什么符号包含数据?
      反引号
    • 用什么来使用变量?
      ${变量名}

    4.3数据类型-布尔类型(boolean)

    • 表示肯定或否定时在计算机中对应的是布尔类型数据。
    • 它有两个固定的值true和false,表示肯定的数据用true(真),表示否定的数据用false(假)。
    // JavaScript 好玩不?
    let isCool = true
    console.log(isCool)
    

    4.4数据类型-未定义类型(undefined)

    • 未定义是比较特殊的类型,只有一个值 undefined。
    • 什么情况出现未定义类型?
      只声明变量,不赋值的情况下,变量的默认值为undefined,一般很少【直接】为某个变量赋值为undefined。
    let age// 声明变量但是未赋值
    document.write(age) // 输出 undefined
    
    • 工作中的使用场景:
      • 我们开发中经常声明一个变量,等待传送过来的数据
      • 如果我们不知道这个数据是否传递过来,此时我们可以通过检测这个变量是不是undefined,就判断用户是否有数据传递过来。

    4.5数据类型-null(空类型)

    • JavaScript 中的null 仅仅是一个代表“无”、“空”或“值未知”的特殊值
    let obj = null
    console.log(obj)
    
    • null 和 undefined区别:
      • undefined表示没有赋值
      • null 表示赋值了,但是内容为空
    • null开发中的使用场景:
      • 官方解释:把 null作为尚未创建的对象
      • 大白话:将来有个变量里面存放的是一个对象,但是对象还没创建好,可以先给个null

    总结

    • 布尔数据类型有几个值?
      true 和false
    • 什么时候出现未定义数据类型?以后开发场景是?
      • 定义变量未给值就是 undefined
      • 如果检测变量是undefined就说明没有值传递过来
    • null是什么类型?开发场景是?
      • 空类型
      • 如果一个变量里面确定存放的是对象,如果还没准备好对象,可以放个null

    04*_控制台输出语句和检测数据类型

    通过 typeof关键字检测数据类型

    • typeof 运算符可以返回被检测的数据类型。它支持两种语法形式:
      1. 作为运算符:typeofx(常用的写法)
      2. 函数形式:typeof(x)
    • 换言之,有括号和没有括号,得到的结果是一样的,所以我们直接使用运算符的写法。

    05_类型转换

    5.1为什么需要类型转换

    • JavaScript是弱数据类型:JavaScript也不知道变量到底属于那种数据类型,只有赋值了才清楚。
    • 坑:使用表单、prompt 获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算。
    console.log('10000'+ '2000')// 100002000
    
    • 此时需要转换变量的数据类型。
    • 通俗来说,就是把一种数据类型的变量转换成我们需要的数据类型。

    5.2隐式转换

    • 某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。
    • 规则:
      • +号两边只要有一个是字符串,都会把另外一个转成字符串
      • 除了+以外的算术运算符 比如-*/等都会把数据转成数字类型
    • 缺点:
      • 转换类型不明确,靠经验才能总结
    • 小技巧:
      • +号作为正号解析可以转换成数字型
      • 任何数据和字符串相加结果都是字符串

    5.3显式转换

    • 编写程序时过度依靠系统内部的隐式转换是不严禁的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。
    • 为了避免因隐式转换带来的问题,通常根逻辑需要对数据进行显示转换。
    • 概念:
      • ​自己写代码告诉系统该转成什么类型
    • 转换为数字型
      • Number(数据)
        • 转成数字类型
        • 如果字符串内容里有非数字,转换失败时结果为NaN(Not a Number)即不是一个数字
        • NaN也是number类型的数据,代表非数字
      • parselnt(数据)
        • 只保留整数
      • parseFloat(数据)
        • 可以保留小数

    总结

    • 类型转换的概念
      一种数据类型转成别的类型,JavaScript是弱数据类型,很多情况计算的时候,需要转换数据类型
    • 隐式转换
      系统自动做转换
    • 显式转换
      自己写代码告诉系统转成什么类型
      • Number
        字符串内容里有非数字得到NaN
      • String

    06_运算符

    赋值运算符

    • 定义:对变量进行赋值的运算符
    • 已经学过的赋值运算符:= 将等号右边的值赋予给左边,要求左边必须是一个容器
    • 其他赋值运算符:
      • +=
      • -=
      • *=
      • /=
      • %=
        使用这些运算符可以在对变量赋值时进行快速操作

    总结

    • = 赋值运算符执行过程?
      将等号右边的值赋予给左边,要求左边必须是一个容器
    • +=出现是为了简化代码,比如让 letnum=10,num加5怎么写呢?
      num +=5

    一元运算符

    • 众多的JavaScript的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符
    • 二元运算符:
      示例:
    let num = 10 + 10
    
    • 一元运算符:
      例:
      正负号
    • 自增:
      • 符号:++
      • 作用:让变量的值+1
    • 自减:
      • 符号:–
      • 作用:让变量的值-1
    • 使用场景:经常用于计数来使用。比如进行10次操作,用它来计算进行了多少次了
    • 前置自增:
      每执行一次,当前变量数值加一
      其作用相当于 num += 1
      先加后运算
    • 后置自增:
      每执行一次,当前变量数值加一
      其作用相当于 num += 1
      先运算后加

    总结

    1. 只需要一个表达式就可以运算的运算符叫一元运算符
    2. 自增运算符也是为了简化写法,每次自加1,使用场景是什么?

    比较运算符

    • 比较运算符:
      >:左边是否大于右边
      <:左边是否小于右边
      >=:左边是否大于或等于右边
      <=:左边是否小于或等于右边
      ==:左右两边值是否相等
      ===:左右两边是否类型和值都相等
      !==:左右两边是否不全等
    • 对比:
      =单等是赋值
      ==是判断
      ===是全等
      ===开发中判断是否相等,强烈建议用===
    • 字符串比较,是比较的字符对应的ASCII码
      • 从左往右依次比较
      • 如果第一位一样再比较第二位,以此类推
      • 用的比较少,了解即可
    • NaN不等于任何值,包括它本身
      • 涉及到"NaN“都是false
    • 尽量不要比较小数,因为小数有精度问题
    • 不同类型之间比较会发生隐式转换
      • 最终把数据隐式转换转成number类型再比较
      • 所以开发中,如果进行准确的比较我们更喜欢===或者!==

    总结

    • ======怎么区别?
      =是赋值
      ==是判断 只要求值相等,不要求数据类型一样即可返回true
      === 是全等 要求值和数据类型都一样返回的才是true
      • 开发中,请使用===
    • 比较运算符返回的结果是什么?
      • 结果只有2个,true或者 false

    逻辑运算符

    &&

    • 名称:逻辑与
    • 日常读法:并且
    • 特点:符号两边都为true 结果才为true
    • 口诀:一假则假

    ||

    • 名称:逻辑或
    • 日常读法:或者
    • 特点:符号两边有一个true 就为true
    • 口诀:一真则真

    !

    • 名称:逻辑非
    • 日常读法:取反
    • 特点:true变false false变true
    • 口诀:真变假,假变真

    总结

    1. 逻辑运算符有那三个?
      • 与(&&)
      • 或(||)
      • 非(!)
    2. 判断一个变量num是否大于5且小于10怎么写?
      num >5 && num<10

    运算优先级

    1. 小括号 ()
    2. 一元运算符 ++ – !
    3. 算数运算符 先 * / %后 + -
    4. 关系运算符 > >= < <=
    5. 相等运算符 == != === !==
    6. 逻辑运算符 先&& 后 ||
    7. 赋值运算符 =
    8. 逗号运算符 ,

    07_表达式和语句

    表达式

    • 定义:表达式是可以被求值的代码,JavaScript引擎会将其计算出一个结果。

    语句:

    • 定义:语句是一段可以执行的代码。
    • 比如:prompt()可以弹出一个输入框,还有i语句for循环语句等等

    区别

    • 表达式:因为表达式可被求值,所以它可以写在赋值语句的右侧。
      表达式
      num =3+4
    • 语句:而语句不一定有值,所以比如alert()for和break等语句就不能被用于赋值。
      语句
      alert()弹出对话框
      console.log()控制台打印输出

    总结

    • 表达式和语句的区别
      • 因为表达式可被求值,所以它可以写在赋值语句的右侧。
      • 而语句不一定有值,所以比如alert()for和break等语句就不能被用于赋值。

    程序三大流程控制语句

    • 顺序结构:以前我们写的代码,写几句就从上往下执行几句,这种叫顺序结构
    • 分支结构:有的时候要根据条件选择执行代码,这种就叫分支结构
    • 循环结构:某段代码被重复执行,就叫循环结构

    分支语句

    • 作用:分支语句可以让我们有选择性的执行想要的代码
    • 分支语句包括:
      • If分支语句
      • 三元运算符
      • switch 语句
    if语句
    • if语句有三种使用:单分支、双分支、多分支
    • 单分支使用语法:
    if(条件){
    满足条件要执行的代码
    }
    
    • 括号内的条件为true时,进入大括号里执行代码
    • 小括号内的结果若不是布尔类型时,会发生隐式转换转为布尔类型
    • 如果大括号只有一个语句,大括号可以省略,但是,俺们不提倡这么做~
    双分支if语法:
    if(条件){
        满足条件要执行的代码
    } 
    else {
        不满足条件执行的代码
    }
    
    多分支if语法:
    • 使用场景:适合于有多个结果的时候,比如学成绩可以分为:优良中差
    if(条件1){
        代码1
    } else if(条件2){
        代码2
    } else if(条件3){
        代码3
    } else if (条件4){
        代码4
    } else {
        代码n
    }
    
    三元运算符:
    • 语法:
      条件?满足条件执行的代码:不满足条件执行的代码
    • 用法:一般用来取值
    switch语句
    • 语法:
    switch(数据){
    case 值1:
        代码1
        break
    case值2:
        代码2 
        break 
    default:
        代码n
        break
    
    • 释义:
      • 找到跟小括号里数据全等的case值,并执行里面对应的代码
      • 若没有全等===的则执行default里的代码
      • 例:数据若跟值2全等,则执行代码2
    • 注:
      1. switch case语句一般用于等值判断,不适合于区间判断
      2. switch case一般需要配合break关键字使用 没有break会造成case穿透

    if多分支语句和switch的区别:

    1. 共同点:
      • 都能实现多分支选择,多选1
      • 大部分情况下可以互换,
    2. 区别:
      • switch…case语句通常处理case为比较确定值 的情况,而if.…slse.语句更加灵活,通常用于范围判断(大于,等于某个范围)。
      • switch 语句进行判断后直接执行到程序的语句,效率更高,而if…slse语句有几种判断条件,就得判断多少次
      • switch一定要注意必须是===全等,一定注意数据类型,同时注意break否则会有穿透效果
    3. 结论:
      • 当分支比较少时,if…else语句执行效率高。
      • 当分支比较多时,switch语句执行效率高,而且结构更清晰。

    08_断点调试

    • 作用:学习时可以帮助更好的理解代码运行,工作时可以更快找到bug
    • 使用方式:
      浏览器打开调试界面
      1. 按F12打开开发者工具
      2. 点到sources一栏
      3. 选择代码文件

    09_循环

    while循环

    基本语法

    while(循环条件){
        要重复执行的代码(循环体)
         }
    
    • 释义:
      1. 跟i语句很像,都要满足小括号里的条件为true才会进入循环体执行代码
      2. while大括号里代码执行完毕后不会跳出,而是继续回到小括号里判断条件是否满足,若满足又执行大括号里的代码,然后再回到小括号判断条件,直到括号内条件不满足,即跳出

    循环三要素

    • 循环的本质就是以某个变量为起始值,然后不断产生变化量,慢慢靠近终止条件的过程。
    • 所以,while循环需要具备三要素:
    1. 变量起始值
    2. 终止条件(没有终止条件,循环会一直执行,造成死循环)
    3. 变量变化量(用自增或者自减)

    循环退出

    • 循环结束:
      break:退出循环
      continue:结束本次循环,继续下次循环
    • 区别:
      1. continue 退出本次循环,一般用于排除或者跳过某一个选项的时候,可以使用continue
      2. break退出整个循环,一般用于结果已经得到,后 续的循环不需要的时候可以使用

    for循环

    基本使用

    • 作用:重复执行代码
    • 好处:把声明起始值、循环条件、变化值写到一起,让人一目了然,它是最常使用的循环形式
    for(变量起始值;终止条件;变量变化量){
    // 循环体
     }
    

    for&while区别

    • 当如果明确了循环的次数的时候推荐使用for循环
    • 当不明确循环的次数的时候推荐使用while循环

你可能感兴趣的:(javascript,开发语言,学习)