什么是网站建设中的专用主机/seo去哪里培训

什么是网站建设中的专用主机,seo去哪里培训,品牌网站建设供应商武汉,如何做一家类似携程的网站目录 JavaScript运算符 一、运算符分类与优先级 1. 运算符优先级表 二、算术运算符 1. 基础算术运算 2. 自增/自减运算符 三、比较运算符 1. 基础比较 2. 相等性判断 四、逻辑运算符 1. 基础逻辑运算 2. 短路求值(Short-Circuiting) 3. 逻辑…

目录

JavaScript运算符

一、运算符分类与优先级

1. 运算符优先级表

二、算术运算符

1. 基础算术运算

2. 自增/自减运算符

三、比较运算符

1. 基础比较

2. 相等性判断

四、逻辑运算符

1. 基础逻辑运算

2. 短路求值(Short-Circuiting)

3. 逻辑赋值运算符(ES2021+)

五、位运算符

1. 基础位运算

六、其他运算符

1. 三元条件运算符

2. 空值合并运算符(??)

3. 可选链运算符(?.)

4. 展开运算符(...)

七、常见陷阱与最佳实践

1. == 的隐式类型转换

2. 浮点数精度问题

3. 短路求值的灵活应用

JavaScript逻辑中断

一、逻辑与 && 的短路

1. 假值列表

2. 示例

二、逻辑或 || 的短路

三、空值合并 ?? 的精准短路

四、实际应用场景

1. 条件执行函数

2. 链式属性访问

3. 组合使用

五、注意事项

六、总结


JavaScript运算符


一、运算符分类与优先级

1. 运算符优先级表

优先级从高到低排序(部分常见运算符):

优先级运算符说明
1()括号(强制优先级)
2++--!~typeof自增、自减、逻辑非、按位非等
3**指数(ES6+)
4*/%乘、除、取模
5+-加、减
6<<>>>>>位左移、右移、无符号右移
7<<=>>=比较运算符
8==!====!==相等性判断
9&按位与
10^按位异或
11|按位或
12&&逻辑与
13||逻辑或
14??空值合并(ES2020+)
15?:三元条件运算符
16=+=-=**= 等赋值运算符
17,逗号运算符(返回最后一个表达式)

二、算术运算符

1. 基础算术运算

运算符名称示例说明
+加法3 + 2 → 5数值相加或字符串拼接
-减法5 - 3 → 2
*乘法2 * 3 → 6
/除法6 / 2 → 3结果为浮点数(如 5 / 2 → 2.5
%取模7 % 3 → 1返回除法余数
**指数2 ** 3 → 8ES6+ 新增,等价于 Math.pow()

2. 自增/自减运算符

运算符示例说明
++let a = 1; a++后置自增:先返回值,再自增 → a 变为 2
--let b = 2; --b前置自减:先自减,再返回值 → b 变为 1
let i = 1
console.log(i++ + ++i + i)  //7

注意:避免在复杂表达式中混用前置和后置形式,易引发歧义。


三、比较运算符

1. 基础比较

运算符名称示例说明
>大于5 > 3 → true
<小于2 < 1 → false
>=大于等于5 >= 5 → true
<=小于等于3 <= 2 → false

2. 相等性判断

运算符名称示例说明
==宽松相等"5" == 5 → true类型不同时尝试转换再比较
===严格相等"5" === 5 → false值和类型均相同才返回 true
!=宽松不等"5" != 5 → false等效于 !(a == b)
!==严格不等"5" !== 5 → true等效于 !(a === b)

最佳实践:始终优先使用 === 和 !==,避免隐式类型转换导致的意外结果。


四、逻辑运算符

1. 基础逻辑运算

运算符名称示例说明
&&逻辑与true && false → false两边为 true 才返回 true
||逻辑或true || false → true任一边为 true 即返回 true
!逻辑非!true → false取反

2. 短路求值(Short-Circuiting)

  • && 短路:若左侧为假,直接返回左侧值,否则返回右侧值。

    console.log(0 && "Hello"); // 0(左侧为假,直接返回)
    console.log(2 && "Hello"); // "Hello"
  • || 短路:若左侧为真,直接返回左侧值,否则返回右侧值。

    console.log("" || "Default"); // "Default"
    console.log("Hello" || "Default"); // "Hello"

3. 逻辑赋值运算符(ES2021+)

运算符示例等效于
&&=a &&= ba = a && b
||=a ||= ba = a || b
??=a ??= ba = a ?? b(空值合并赋值)

五、位运算符

1. 基础位运算

运算符名称示例说明
&按位与5 & 3 → 1二进制位均为 1 时结果为 1
|按位或5 | 3 → 7二进制位任一为 1 则结果为 1
^按位异或5 ^ 3 → 6二进制位不同则结果为 1
~按位非~5 → -6取反码(二进制位取反)
<<左移5 << 1 → 10左移指定位数,右侧补 0
>>右移(有符号)-5 >> 1 → -3保留符号位,右侧补 0
>>>右移(无符号)-5 >>> 1 → 2147483645忽略符号位,左侧补 0

六、其他运算符

1. 三元条件运算符

  • 语法condition ? expr1 : expr2

    const status = age >= 18 ? "Adult" : "Minor";

2. 空值合并运算符(??)

  • 作用:左侧为 null 或 undefined 时返回右侧值,否则返回左侧值。

    const value = input ?? "default"; 
    // 等效于 input !== null && input !== undefined ? input : "default"

3. 可选链运算符(?.)

  • 作用:安全访问嵌套对象属性,避免因中间属性不存在而报错。

    const city = user?.address?.city; 
    // 若 user 或 address 为 null/undefined,返回 undefined

4. 展开运算符(...)

  • 数组展开

    const arr1 = [1, 2];
    const arr2 = [...arr1, 3]; // [1, 2, 3]
  • 对象展开(ES2018+):

    const obj1 = { x: 1 };
    const obj2 = { ...obj1, y: 2 }; // { x: 1, y: 2 }

七、常见陷阱与最佳实践

1. == 的隐式类型转换

console.log([] == ![]); 
// true([] 转为 0,![] 转为 false → 0)

解决方案:始终使用 === 和 !==

2. 浮点数精度问题

console.log(0.1 + 0.2 === 0.3); 
// false(实际结果为 0.30000000000000004)

解决方案:使用 toFixed() 或第三方库(如 decimal.js)处理精度。

3. 短路求值的灵活应用

// 条件执行函数
function init() { console.log("Initialized"); }
let isInit = false;
isInit || init(); // 若未初始化,则调用 init()

   

JavaScript逻辑中断


一、逻辑与 && 的短路

规则:当左侧表达式为 假值(falsy) 时,直接返回左侧值,不再执行右侧。

1. 假值列表

  • false

  • 0-00n(BigInt 零)

  • ""(空字符串)

  • null

  • undefined

  • NaN

2. 示例

// 示例 1:短路发生
console.log(0 && alert("不会执行")); // 输出 0(左侧为假,直接返回 0)// 示例 2:未短路
console.log(1 && "Hello"); // 输出 "Hello"(左侧为真,返回右侧值)// 实际应用:条件渲染(React/Vue)
isLoggedIn && <Dashboard />;

二、逻辑或 || 的短路

规则:当左侧表达式为 真值(truthy) 时,直接返回左侧值,不再执行右侧。

示例

// 示例 1:短路发生
console.log("Hello" || alert("不会执行")); // 输出 "Hello"// 示例 2:未短路
console.log(0 || "默认值"); // 输出 "默认值"// 实际应用:设置默认值(旧版写法)
const port = config.port || 3000; // 注意:0 会被覆盖!

三、空值合并 ?? 的精准短路

规则:仅当左侧为 null 或 undefined 时,才返回右侧值。

示例

// 示例 1:不短路
console.log(0 ?? "默认值"); // 输出 0(保留 0)// 示例 2:短路发生
console.log(null ?? "备用值"); // 输出 "备用值"// 实际应用:精准默认值(现代推荐)
const port = config.port ?? 3000; // 允许 0 或 ""

四、实际应用场景

1. 条件执行函数

// 仅当用户存在时调用函数
user.isAdmin && showAdminPanel();// 替代写法
if (user.isAdmin) showAdminPanel();

2. 链式属性访问

// 安全访问嵌套属性(旧版)
const city = user && user.address && user.address.city;// 现代替代方案:可选链操作符 `?.`
const city = user?.address?.city;

3. 组合使用

// 复杂条件判断
const result = (condition1 && value1) || (condition2 && value2) ?? fallback;

五、注意事项

  1. 优先级问题
    逻辑运算符优先级:&& > || > ??,建议用 () 明确优先级:

    console.log(true || false && false); 
    // 输出 true(等价于 true || (false && false))
  2. 副作用控制
    短路特性可能导致右侧代码未执行:

    let x = 0;
    false && x++; // x 仍为 0
  3. 避免过度使用
    虽然简洁,但过度使用会降低可读性:

    // ❌ 难以理解
    isValid && (isAdmin || isModerator) && submitForm();// ✅ 更清晰
    if (isValid && (isAdmin || isModerator)) {submitForm();
    }

六、总结

  • &&:用于 必须满足前置条件 的场景(如权限检查)。

  • ||:适合旧版默认值,但会覆盖假值(0、"")。

  • ??:现代默认值方案,精准处理 null/undefined


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/899419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NC,GFS、ICON 数据气象信息可视化--降雨量的实现

随着气象数据的快速发展和应用&#xff0c;气象信息的可视化成为了一项不可或缺的技术手段。它不仅能帮助气象专家快速解读数据&#xff0c;还能为公众提供直观的天气预报信息。今天&#xff0c;我们将从降雨量的可视化出发&#xff0c;带大家一起了解如何实现气象数据的可视化…

质量工程师的2025:从“找bug“到“造质量“的职业进化

想象一下&#xff0c;2025年的某天&#xff1a;阅读原文 早晨&#xff0c;AI测试助手已经自动运行了夜间回归测试&#xff0c;并将可疑问题标记出来 你喝着咖啡&#xff0c;通过质量数据看板分析系统健康度 下午的会议上&#xff0c;你正用业务语言向产品经理解释&#xff1a…

数据大屏点亮工业互联网的智慧之眼

在当今数字化飞速发展的时代&#xff0c;数据已成为企业决策的核心依据&#xff0c;而数据大屏作为数据可视化的重要工具&#xff0c;正逐渐成为工业互联网领域不可或缺的一部分。通过直观、动态的可视化展示&#xff0c;数据大屏能够将复杂的数据转化为易于理解的图表和图形&a…

UE4学习笔记 FPS游戏制作29 更换武器时更换武器的图标

文章目录 制作物体图标UI添加获取武器图标的方法使用事件分发器&#xff0c;通知UI要换枪定义事件分发器调用事件分发器注册事件分发器 制作物体图标UI 在Fpp-UI上添加一个图片&#xff0c;改名为五weaponIcon&#xff0c;勾选SizeToContent,锚点放在右下角&#xff0c;对齐改…

SpringMVC 请求与响应处理详解

引言 在 Java Web 开发中&#xff0c;SpringMVC 作为 Spring 框架的重要模块&#xff0c;提供了强大的请求和响应处理机制。本文将深入探讨 SpringMVC 中请求和响应的处理方式&#xff0c;结合实际案例&#xff0c;帮助开发者更好地理解和应用这些功能。 一、SpringMVC 请求处…

从零开始的 Kafka 学习(四)| 生产消息

1. 生产消息 1.1 生产消息的基本步骤 &#xff08;一&#xff09;创建Map类型的配置对象&#xff0c;根据场景增加相应的配置属性&#xff1a; 参数名参数作用类型默认值推荐值bootstrap.servers集群地址&#xff0c;格式为&#xff1a;brokerIP1:端口号,brokerIP2:端口号必…

新手村:逻辑回归-理解04:熵是什么?

新手村&#xff1a;逻辑回归04&#xff1a;熵是什么? 熵是什么? 前置条件 在开始学习逻辑回归中的熵理论之前&#xff0c;需要掌握以下基础知识&#xff1a; 概率论与统计学&#xff1a; 概率分布&#xff08;如伯努利分布、正态分布&#xff09;。条件概率和贝叶斯定理。期…

STM32通用定时器结构框图

STM32单片机快速入门 通用定时器框图 TIM9和TIM12 通用定时器框图 TIM9和TIM12 &#xff08;二&#xff09; 通用定时器框图

3.28-2 jmeter读取mysql

jmeter操作mysql 1.下载数据驱动&#xff0c;安装数据驱动 &#xff08;1&#xff09;存放四个路径 a.jre下的lib C:\Program Files\Java\jre1.8.0_60\lib &#xff08;2&#xff09;存放在jre 下的lib 中的ext 路径&#xff1a; C:\Program Files\Java\jre1.8.0_60\lib\…

Postman CORS 测试完全指南:轻松模拟跨域请求,排查 CORS 相关问题

在使用 Postman 进行 API 测试时&#xff0c;通常不会遇到跨域问题&#xff0c;因为 Postman 是一个独立的客户端应用程序&#xff0c;不同于在浏览器中运行的 JavaScript 代码&#xff0c;它没有同源策略&#xff08;SOP&#xff09;的限制。跨域资源共享&#xff08;CORS&…

基于SpringBoot和Vue的SQL TO API平台的设计与实现

文章目录 前言一、系统功能模块二、数据库设计1. 实体属性图1. 实体属性图1.1 职员表1.2 数据源配置表1.3 接口配置表1.4 请求记录表 2. E-R图 三、系统实现1. 登录页面2. 职员管理页面1.1 创建用户1.2 编辑用户 2. 数据源管理2.1 创建数据源2.2 编辑数据源 3. 接口管理3.1 创建…

【Portainer】Docker可视化组件安装

Portainer Portainer 是用于管理容器化环境的一体化平台工程解决方案&#xff0c;提供广泛的定制功能&#xff0c;以满足个人开发人员和企业团队的需求。 官方地址: https://www.portainer.io/ 安装 在 WSL / Docker Desktop 上使用 Docker 安装 Portainer CE 通过命令或UI页…

unity中Xcharts图表鼠标悬浮表现异常

鼠标悬浮在面板附近&#xff0c;只显示单独的一个项目 而且无论鼠标如何移动&#xff0c;根本没有效果。 解决方案&#xff1a; 需要在对应的Canvas上绑定主相机才可以 鼠标移动到项目上就有信息展示了

CentOS 安装LAMP全过程 - 完整步骤与最佳实践

在开始搭建 LAMP 环境之前&#xff0c;需要确保系统已经满足以下条件&#xff1a; 1、操作系统&#xff1a;CentOS 7 或 CentOS 8 2、网络连接&#xff1a;系统必须能够访问互联网以下载所需的软件包 3、权限&#xff1a;需要 root 权限或者通过sudo 提权执行命令 先更新系…

Java基础关键_031_反射(一)

目 录 一、概述 二、获取 Class 的四种方式 1.Class.forName("完整全限定类名") 2.getClass() 3.class 属性 4.通过类加载器获取 三、通过反射机制实例化对象 1.newInstance()&#xff08;已过时&#xff09; 2.配置文件利用反射机制实例化对象 四、反射 Cla…

33.[前端开发-JavaScript基础]Day10-常见事件-鼠标事件-键盘事件-定时器-案例

1 window定时器 window定时器方法 setTimeout的使用 setInterval的使用 2 轮播消息提示 案例实战一 – 轮播消息提示 3 关闭隐藏消息 案例实战二 – 关闭隐藏消息 4 侧边栏展示 案例实战三 – 侧边栏展示 5 tab切换实现 案例实战四 – 登录框&#xff08;作业&#xff09;…

react ant design树穿梭框实现搜索并展开到子节点、同级节点选择及同时选择数量限制功能

功能点&#xff1a; 点击节点前的箭头&#xff0c;可以手动展开或折叠该节点的子节点。在搜索框中输入关键词&#xff0c;匹配的节点及其父节点会自动展开。清空搜索框后&#xff0c;恢复到用户手动控制的展开状态。勾选节点时仍然遵守 "最多勾选 6 个节点" 和 &quo…

阿里云云效 Maven

阿里云云效 Maven 官网&#xff1a;https://developer.aliyun.com/mvn/guide 阿里云Maven中央仓库为 阿里云云效 提供的公共代理仓库&#xff0c;帮助研发人员提高研发生产效率&#xff0c;使用阿里云Maven中央仓库作为下载源&#xff0c;速度更快更稳定。 阿里云云效 是企业…

如何在 Postman 中正确设置 Session 以维持用户状态?

在 Postman 里面设置有 session 的请求。如果你还不知道什么是 session&#xff0c;那么请看这里—— session 是一种记录客户端和服务器之间状态的机制&#xff0c;用于保持用户的登录状态或者其他数据&#xff0c;从而让用户在不同页面之间保持一致的体验。 Postman 设置带 …

DQN与PPO在算法层面的核心区别

DQN与PPO在算法层面的核心区别 1. 学习目标不同 DQN(基于价值): 核心:学习动作价值函数 Q ( s , a ) Q(s, a)