第二章 JavaScript 运算符与流程控制

本文深入解析JavaScript中的一元运算符、比较运算符、逻辑运算符等基础概念,探讨了三元表达式、switch、while、do...while、for循环及break与continue的用法,并介绍了label标签、for...in与for...of的特性。

1.一元运算符的前置与后置操作

n++表示先使用n完成整个表达式的计算后,n再自加;而++n表示n先自加,然后在进行表达式的运算。

let n = 1
let f = 2
let d = f + n++
console.log(d)//3
let n = 1
let f = 2
let d = f + ++n
console.log(d)//4

2.比较运算符

等于“==”,全等于“===”,这两者的区别是执行等于时会发生类型转换,而全等于不会。

let a= 1
let b = "1"
console.log(a == b)//true
console.log(a === b)//false

3.逻辑运算符与短路运算符

逻辑与“&&”,逻辑或“||”;短路与“&”,断路或“|”。

逻辑在条件确定后就不再进行判断,而端路运算符会继续判断。

let a = 2
let b = 2
console.log(a == 1  && b++ == 3)//false
console.log(b)//2
let a = 2
let b = 2
console.log(a == 1 & b++ == 4)//0
console.log(b)//3

可以使用逻辑或赋值。如果使用断路或,会返回0或1(标识假和真)。

let msg = prompt() || "weizhuren"
console.log(msg)//如果输入则显示输入内容,如果没有输入则显示weizhuren

4.三元表达式

简单的if语句可以使用三元表达式进行判断。

let age = 15
if(age >= 18){
  console.log("已成年")
}else{
  console.log("未成年")
}
//可以将上面的判断语句简写成以下三元表达式
console.log(age >= 18 ? "已成年" : "未成年")

5.switch

在switch,如果匹配成功则执行对应事件,如果全部不匹配则执行default内的事件。如果不添加break则在条件成立后,会一直执行到结束。

let name = "视频"
switch(name){
  case "产品":
  console.log("这是一个产品");
  break;
  case "视频":
  console.log("这是一个视频");
  break;
  case "音频":
  console.log("这是一段音频");
  break;
  default:
  console.log("未知内容")
  break;
}

6.while

循环语句,注意限制循环结束条件即可。

7.do···while

类似while,但是先执行一次循环再进行判断。

8.for

执行有规律的循环。

for(let i = 0;i < 10;i++){
  console.log(i)// 0 1 2 3 4 5 6 7 8 9
}

9.break与continue

break会直接跳出循环,而continue会终止本次循环,进入下一次循环。

for(let i = 0;i < 5;i++){
  if(i == 3){
    break
  }
 console.log(i)//0 1 2 
}

for(let i = 0;i < 5;i++){
  if(i == 3){
    continue
  }
  console.log(i)//0 1 2 4
}

10.label标签

label标签可以标明一个循环。

first:for(let i = 1;i <= 10;i++){
  second:for(let n = 1;n<= 10 ;n++){
    if(n % 2 == 0){
      console.log(i,n)
    }
    if(n + i > 10){
    break first//直接跳出第一层循环
    }
  }
}
// 1 2
// 1 4
// 1 6
// 1 8
// 1 10

11.for···in

for···in可以遍历数组和对象,对于索引值进行循环。

let movies = [
  {name:"降临",grade:7.7},
  {name:"喜宴",grade:8.9},
  {name:"奇迹男孩",grade:8.6}
]
for(let i in movies){
  console.log(movies[i].name,movies[i].grade)//降临 7.7 喜宴 8.9 奇迹男孩 8.6
}
for(let key in window){
  console.log(key)//输出window的属性值
}

12.for···of

for···of类似于for···in,for···of方法是对元素值进行遍历。

let movies = [
  {name:"降临",grade:7.7},
  {name:"喜宴",grade:8.9},
  {name:"奇迹男孩",grade:8.6}
]
for(let value of movies){
  console.log(value .name,value .grade)//降临 7.7 喜宴 8.9 奇迹男孩 8.6
}

 

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值