javascript运算符与流程控制

简介: javascript运算符与流程控制

文章和代码已经归档至【Github仓库:https://github.com/timerring/front-end-tutorial 】或者公众号【AIShareLab】回复 javascript 也可获取。

运算符的分类

JavaScript 中常用的运算符有:

  • 算数运算符
  • 递增和递减运算符
  • 比较运算符
  • 逻辑运算符
  • 赋值运算符

算数运算符

+-*/%

浮点数的精度问题

浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数。

var result = 0.1 + 0.2; // 结果不是 0.3,而是:0.30000000000000004
console.log(0.07 * 100); // 结果不是 7, 而是:7.000000000000001

⚠因此不要直接判断两个浮点数是否相等 !

递增和递减运算符

递增(++)和递减( -- )运算符,老生常谈,这里不多做解释了。

比较运算符

等号比较:注意 ===== 的区别。

逻辑运算符

逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。后面开发中经常用于多个条件的判断。

短路运算(逻辑中断)

短路运算的原理:当有多个表达式(值)时, 左边的表达式值可以确定结果时, 就不再继续运算右边的表达式的值;

开发中,还会见到以下的写法:

其实类似参数的默认值写法

逻辑与

表达式1 && 表达式2

  • 如果第一个表达式的值为真,则返回表达式 2
  • 如果第一个表达式的值为假,则返回表达式 1
console.log( 123 && 456 ); // 456
console.log( 0 && 456 ); // 0
console.log( 123 && 456&& 789 ); // 789

逻辑或

表达式 1 || 表达式 2

  • 如果第一个表达式的值为真,则返回表达式 1
  • 如果第一个表达式的值为假,则返回表达式 2
console.log( 123 || 456 ); // 123
console.log( 0 || 456 ); // 456
console.log( 123 || 456 || 789 ); // 123

赋值运算符

运算符优先级

  • 一元运算符里面的逻辑非优先级很高
  • 逻辑与比逻辑或优先级高

流程控制

流程控制主要有三种结构,分别是顺序结构分支结构循环结构,代表三种代码执行的顺序。

分支语句

分支结构:根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果。

if 语句

// 条件成立执行代码,否则什么也不做
if (条件表达式) {
   
   
// 条件成立执行的代码语句
}

// 条件成立 执行 if 里面代码,否则执行else 里面的代码
if (条件表达式) {
   
   
// 条件成立执行的代码
} else {
   
   
//执行的代码
}

// 适合于检查多重条件。
if (条件表达式1) {
   
   
语句1} else if (条件表达式2) {
   
   
语句2} else if (条件表达式3) {
   
   
语句3....
} else {
   
   
// 上述条件都不成立执行此处代码
}

switch 分支流程控制

switch( 表达式 ){
   
   
case value1:
// 表达式 等于 value1 时要执行的代码
break;
case value2:
// 表达式 等于 value2 时要执行的代码
break;
default:
// 表达式 不等于任何一个 value 时要执行的代码
}
  • 关键字 switch 后面括号内可以是表达式或值,通常是一个变量
  • 关键字 case , 后跟一个选项的表达式或值,后面跟一个冒号
  • switch 表达式的值会与结构中的 case 的值做比较
    • 如果存在匹配全等 (===) ,则与该 case 关联的代码块会被执行,并在遇到 break 时停止,整个 switch 语句代码执行结束
    • 如果所有的 case 的值都和表达式的值不匹配,则执行 default 里的代码

      注意: 执行 case 里面的语句时,如果没有 break,则继续执行下一个 case 里面的语句。

三元表达式

表达式1 ? 表达式2 : 表达式3;

如果表达式1为 true ,则返回表达式2的值,如果表达式1为 false,则返回表达式3的值。

断点调试

  1. 浏览器打开调试界面(按 F12打开开发者工具)
  2. 点到源代码一栏 ( sources )
  3. 选择代码文件
  4. 然后在需要加断点的地方点击侧边栏
  5. 重新刷新,鼠标放在代码变量上即可看见当前变量保存值。

    点击 step over 可以执行下一步。

    也可以通过右侧栏里的 watch,选择添加需要观察的变量名称直观的看变量值。

循环语句

while循环

while (条件表达式) {
   
   
   // 循环体    
}

中止循环

break 中止整个循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用(提高效率)

continue 中止本次循环,一般用于排除或者跳过某一个选项的时候

无限循环

1.while(true) 来构造“无限”循环,需要使用break退出循环。(常用)
2.for(;;) 也可以来构造“无限”循环,同样需要使用 break 退出循环。

for 语句

  for(起始值; 终止条件; 变化量) {
   
   
  // 要重复执行的代码
  }

案例:打印星星

 // 外层打印几行
for (let i = 1; i <= 5; i++) {
   
   
    // 里层打印几个星星
    for (let j = 1; j <= i; j++) {
   
   
        document.write('★')
    }
    document.write('<br>') // 用这种换行方式。
}

测试: https://ks.wjx.top/vm/tjmrvAg.aspx#

目录
相关文章
|
17天前
|
JavaScript 前端开发
JavaWeb JavaScript ③ JS的流程控制和函数
通过本文的详细介绍,您可以深入理解JavaScript的流程控制和函数的使用,进而编写出高效、可维护的代码。
63 32
|
3月前
|
监控 JavaScript 算法
深度剖析 Vue.js 响应式原理:从数据劫持到视图更新的全流程详解
本文深入解析Vue.js的响应式机制,从数据劫持到视图更新的全过程,详细讲解了其实现原理和运作流程。
|
4月前
|
JavaScript 前端开发
JavaScript 运算符全知道
JavaScript 运算符全知道
74 0
|
4月前
|
JavaScript
js运算符
js运算符
35 5
|
5月前
|
JavaScript 前端开发
JavaScript 运算符
JavaScript 运算符
28 3
|
5月前
|
JavaScript 前端开发
JavaScript基础知识-流程控制之for循环
这篇文章讲解了JavaScript中的for循环的基础知识,并通过一个实例演示了如何使用for循环来找出所有的三位水仙花数。
73 6
JavaScript基础知识-流程控制之for循环
|
5月前
|
JavaScript 前端开发
JavaScript基础知识-流程控制之while循环
这篇文章介绍了JavaScript中的while循环和do...while循环的基础知识,并通过一个实际案例演示了如何使用while循环计算投资增长到特定金额所需的年数。
78 2
JavaScript基础知识-流程控制之while循环
|
6月前
|
大数据 数据处理 分布式计算
JSF 逆袭大数据江湖!看前端框架如何挑战数据处理极限?揭秘这场技术与勇气的较量!
【8月更文挑战第31天】在信息爆炸时代,大数据已成为企业和政府决策的关键。JavaServer Faces(JSF)作为标准的 Java Web 框架,如何与大数据技术结合,高效处理大规模数据集?本文探讨大数据的挑战与机遇,介绍 JSF 与 Hadoop、Apache Spark 等技术的融合,展示其实现高效数据存储和处理的潜力,并提供示例代码,助您构建强大的大数据系统。
78 0
|
6月前
|
JavaScript 安全 数据安全/隐私保护
深入Node.js与Express:从表单接收到数据验证的完整指南——实战技巧揭秘后端开发中的表单处理流程
【8月更文挑战第31天】在Web开发中,处理表单数据至关重要。本文通过实例详细讲解了如何利用Node.js与Express框架接收和验证表单数据。首先,搭建环境并初始化一个简单的Express应用;接着,演示如何接收用户注册表单中的`username`和`email`字段;最后,引入`joi`模块进行数据验证,确保数据安全准确。掌握这些技能有助于开发者构建更安全、友好的Web应用。随着Node.js和Express的不断进步,未来将有更多高级功能值得期待。
171 0
|
6月前
|
JavaScript 前端开发 API
解锁前端开发新境界:Vue.js携手Webpack,打造高效构建流程,你的项目值得拥有!
【8月更文挑战第30天】随着前端技术的发展,模块化与组件化趋势愈发显著。Vue.js 以其简洁的 API 和灵活的组件系统,深受开发者喜爱;Webpack 则凭借强大的模块打包能力成为前端工程化的基石。两者结合,不仅简化了组件编写与引用,还通过模块热替换、代码分割等功能大幅提升开发效率。本文将通过具体示例,展示如何利用 Vue.js 和 Webpack 构建高效、有序的前端开发环境。从安装配置到实际应用,逐步解析这一组合的优势所在。
65 0

热门文章

最新文章

  • 1
    当面试官再问我JS闭包时,我能答出来的都在这里了。
    47
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 3
    Node.js 中实现多任务下载的并发控制策略
    34
  • 4
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 5
    【JavaScript】深入理解 let、var 和 const
    49
  • 6
    【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
    47
  • 7
    【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
    57
  • 8
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    57
  • 9
    如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
    72
  • 10
    【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
    57