【Java 进阶篇】JavaScript 一元运算符详解

news2025/3/3 4:33:07

在这里插入图片描述

在JavaScript中,一元运算符是一类操作符,它们作用于单一操作数(一个值)。这些运算符执行各种操作,包括递增、递减、类型转换等。本文将详细介绍JavaScript中的一元运算符,解释它们的用途,提供示例代码,以帮助您更好地理解它们。

什么是一元运算符?

一元运算符是一种仅涉及一个操作数的运算符。这意味着它们对单个值执行操作,而不需要第二个操作数。在JavaScript中,一元运算符用于执行各种操作,包括更改变量的值、进行数学运算和类型转换等。

JavaScript中的常见一元运算符包括递增(++)、递减(--)、取反(-)、逻辑非(!)等。

递增运算符 ++

递增运算符(++)用于增加变量的值。它有两种形式:前置递增和后置递增。

  • 前置递增:操作数的值会在语句执行之前递增。
  • 后置递增:操作数的值会在语句执行之后递增。

下面是示例:

let x = 5;
let y = 10;

// 前置递增
++x; // x 的值现在是 6
// 后置递增
y++; // y 的值现在是 11

递增运算符的常见用途包括在循环中递增变量,以及在某些计数和累加操作中。

递减运算符 --

递减运算符(--)与递增运算符相反,用于减少变量的值。它也有前置和后置两种形式。

下面是示例:

let a = 8;
let b = 15;

// 前置递减
--a; // a 的值现在是 7
// 后置递减
b--; // b 的值现在是 14

递减运算符通常用于循环中递减变量或执行某些递减操作。

一元加法运算符 +

一元加法运算符(+)通常用于执行显示类型转换,将值从其他类型转换为数字。如果操作数本身已经是数字,它将保持不变。如果操作数是字符串,它将尝试将字符串转换为数字。

示例:

let strNum = "42";
let num = +strNum; // num 的值现在是 42

let boolValue = true;
let num2 = +boolValue; // num2 的值现在是 1

let notANumber = "hello";
let num3 = +notANumber; // num3 的值现在是 NaN

一元加法运算符对于将用户输入的字符串转换为数字或将字符串拼接转换为数字运算非常有用。

一元取反运算符 -

一元取反运算符(-)用于将操作数变为其负值。它也可用于将值从其他类型转换为数字,类似于一元加法运算符。

示例:

let posNum = 5;
let negNum = -posNum; // negNum 的值现在是 -5

let strNum = "10";
let num = -strNum; // num 的值现在是 -10

let notANumber = "hello";
let num2 = -notANumber; // num2 的值现在是 NaN

一元取反运算符对于执行数学运算或将字符串转换为数字非常有用。

逻辑非运算符 !

逻辑非运算符(!)用于将操作数的值转换为布尔值,并返回其相反值。如果操作数的值为真,逻辑非运算符将返回false,如果操作数的值为假(如falsenullundefined0NaN或空字符串""),则逻辑非运算符将返回true

示例:

let isTrue = true;
let isFalse = false;

let notTrue = !isTrue; // notTrue 的值现在是 false
let notFalse = !isFalse; // notFalse 的值现在是 true

逻辑非运算符常用于执行条件判断,判断某个条件是否为真或为假。

一元运算符的优先级

在JavaScript中,一元运算符的优先级较高,这意味着它们在表达式中的运算顺序较早。当一元运算符与其他运算符一起使用时,它们通常会首先执行。

例如,对于以下表达式:

let x = 5;
let result = ++x * 2;

首先会执行前置递增运算符++x,然后再将结果乘以2。

结论

一元运算符是JavaScript中的一类重要运算符,它们用于执行各种操作,包括递增、递减、类型转换和逻辑运算等。通过了解这些运算符的用法,您可以更好地掌握JavaScript的基础知识,并编写更复杂的脚本和应用程序。

请记住,尽管一元运算符在某些情况下非常有用,但在编写代码时要小心使用,以确保代码的可读性和维护性。

希望这篇博文能帮助您更好地理解JavaScript中的一元运算符,并为您的学习和开发之旅提供有用的信息。如果您有任何问题或需要进一步的帮助,不要犹豫,随时咨询JavaScript社区或参考官方文档。愿您编写出优秀的JavaScript代码!

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

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

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

相关文章

MySQL MVCC详细介绍

MVCC概念 MVCC(Multi-Version Concurrency Control) 多版本并发控制,是一种并发控制机制,用于处理数据库中的并发读写操作,它通过在每个事务中创建数据的快照,实现了读写操作的隔离性,从而避免了读写冲突和数据不一致的问题。 M…

VUE echarts 柱状图、折线图 双Y轴 显示

weekData: [“1周”,“2周”,“3周”,“4周”,“5周”,“6周”,“7周”,“8周”,“9周”,“10周”], //柱状图横轴 jdslData: [150, 220, 430, 360, 450, 680, 100, 450, 680, 200], // 折线图的数据 cyslData: [100, 200, 400, 300, 500, 500, 500, 450, 480, 400], // 柱状图…

基于VScode 使用plantUML 插件设计状态机

本文主要记录本人初次在VScode上使用PlantUML设计 本文只讲述操作的实际方法,假设java已安装成功 。 1. 在VScode下安装如下插件 2. 验证环境是否正常 新建一个文件夹并在目录下面新建文件test.plantuml 其内容如下所示: startuml hello world skinparam Style …

ubuntu|23 安装Gnome主题

ubuntu23 安装主题 进入网站选择需要的主题 https://www.opendesktop.org/s/Gnome/p/1357889 1 资源下载 经常加载不出来, 这里直接进入github下载源码 下载zip 2 安装主题 根据文档提示, 执行install.sh就能安装 3 切换主题 安装 tweak工具 sudo …

Win10玩游戏老是弹回桌面的解决方法

在Win10电脑中,用户不仅可以办公,也可以畅玩各种各样的游戏。但是,有时候用户在玩游戏的时候,遇到了游戏老是自己弹回桌面的问题,这样是非常影响游戏体验的,却不清楚具体的解决方法。下面小编给大家带来了简…

力扣第235题 二又搜索树的最近公共祖先 c++

题目 235. 二叉搜索树的最近公共祖先 中等 (简单) 相关标签 树 深度优先搜索 二叉搜索树 二叉树 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q&…

抖音短视频SEO是什么?抖音SEO系统源码/SEO系统源码搭建/

一.数据市场 二、AI视频创意 (1)工作台 (2)创造性工程 (3)材料管理 (4)裂变视频 (5)创作灵感 场景:实现单体设计模式; 想法:与创建相关的是construct的陷阱,每次我们都返回相同的实例。 (1)推广词库(2)三维排名查询(3)算术指数四。帐户矩阵操作(1)账户管…

谷歌浏览器 ERR_MANDATORY_PROXY_CONFIGURATION_FAILED 报错的处理方式

今天早上到公司 还是和往常一样 电脑开机 打开谷歌浏览器 搜索资料结果给我报错了 2.原先我的谷歌浏览器配置的搜索引擎为百度 3.电脑上面的火狐 ie浏览器都是可以的排除电脑网络方面的问题(dns也有解析谷歌路径的这个有兴趣的可以研究) 最终还是刷新了电脑的dns ,清除了谷歌…

混淆技术研究笔记(六)如何基于yGuard实现?

确定参考 <adjust> 作为入口后&#xff0c;就需要详细了解这部分代码的逻辑。 需要看yguard源码了&#xff0c;你会如何阅读一个完全不了解的源码&#xff1f; 我通常的策略都是找一个目标&#xff0c;添加代码依赖&#xff0c;写好demo&#xff0c;debug跟踪代码看。如…

大功率回馈式直流电子负载箱的运用

大功率回馈式直流电子负载箱能够模拟各种负载条件&#xff0c;可以在实验室环境中对电源、电池、太阳能电池板等电子设备进行全面的性能测试和模拟负载&#xff0c;具有高功率输出、高精度、高稳定性和高可靠性的特点&#xff0c;能够满足各种应用场景的需求。 电源测试方面大功…

深入了解桶排序:原理、性能分析与 Java 实现

桶排序&#xff08;Bucket Sort&#xff09;是一种排序算法&#xff0c;通常用于将一组数据分割成有限数量的桶&#xff08;或容器&#xff09;&#xff0c;然后对每个桶中的数据进行排序&#xff0c;最后将这些桶按顺序合并以得到排好序的数据集。 桶排序原理 确定桶的数量&am…

eclipse 某个文件不能编辑

今天打开eclipse 突然发现有一个文件不能编辑&#xff0c;左下角发现此文件被修改为只读&#xff0c; 右键此文件-->properties--> Resource -->在Attributes中&#xff0c;取消Read-only选项--> Apply 此时&#xff0c;发现eclipse 右下角 变为Writable。再次编辑…

windows查看登陆的IP

我的电脑右键打开管理 筛选当前日志 4648 可以查看到IP了

象棋小游戏【小游戏】(Java课设)

系统类型 Java实现的小游戏 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Idea或eclipse 运行效果 本系统源码地址&#xff1a;https://download.csdn.net/download/qq_50954361/88388732 更多Java课设系统源码地址&#xff1a;更多J…

Android---java线程优化 偏向锁、轻量级锁和重量级锁

java 中的线程是映射到操作系统原生线程之上的&#xff0c;如果要阻塞或唤醒一个线程就需要操作系统的帮忙&#xff0c;这就需要从用户态转换到核心态。状态转换需要花费很多时间&#xff0c;如下代码所示&#xff1a; private Object lock new Object();private int value;p…

研发必会-异步编程利器之CompletableFuture(含源码 中)

近期热推文章&#xff1a; 1、springBoot对接kafka,批量、并发、异步获取消息,并动态、批量插入库表; 2、SpringBoot用线程池ThreadPoolTaskExecutor异步处理百万级数据; 3、基于Redis的Geo实现附近商铺搜索(含源码) 4、基于Redis实现关注、取关、共同关注及消息推送(含源码) 5…

Avalonia常用小控件Charts

1.项目下载地址&#xff1a;https://gitee.com/confusedkitten/avalonia-demo 2.UI库Semi.Avalonia&#xff0c;项目地址 https://github.com/irihitech/Semi.Avalonia 3.Charts库&#xff0c;LiveChartsCore.SkiaSharpView.Avalonia&#xff0c;Nuget获取只有预览库&#x…

Vue3模块找不到问题解决:找不到模块‘vue ‘。你的意思是将“模块解决方案”选项设置为“节点”,还是添加ali

Vue3 vite 项目引入 vue 报错 Cannot find module ‘vue‘. Did you mean to set the ‘moduleResolution‘ option to ‘node‘, or to add ali 在项目中找到 tsconfig.json 文件 找到配置项里的 "moduleResolution": "bundler", 将其改成 &q…

简述WPF中MVVM的设计思想

近年来&#xff0c;随着WPF在生产、制造、工控等领域应用越来越广泛&#xff0c;对WPF的开发需求也在逐渐增多&#xff0c;有很多人不断的从Web、WinForm开发转向了WPF开发。 WPF开发有很多新的概念及设计思想&#xff0c;如数据驱动、数据绑定、依赖属性、命令、控件模板、数…

win10 配置静态IP脚本

静态IP配置方法&#xff1a; 1、新建一个txt文本&#xff0c;加入以下代码 netsh interface ip set address name"以太网" sourcestatic addr192.168.101.11 mask255.255.255.0 gateway192.168.101.12、将TXT另存为ANSI编码&#xff01;将TXT另存为ANSI编码&#x…