当前位置: 首页 > news >正文

JavaScript 操作符与表达式

Hi, 我是布兰妮甜,编写流畅、愉悦用户体验的程序员。JavaScript 是一种功能强大且灵活的编程语言,广泛应用于前端和后端开发。它提供了一系列丰富的操作符和表达式来处理数据、执行逻辑判断以及控制程序流程。理解这些概念对于编写高效、可读性强的代码至关重要。下面将详细探讨JavaScript中的操作符表达式


文章目录

    • 一、操作符(Operators)
    • 二、表达式(Expressions)
    • 三、总结


一、操作符(Operators)

操作符是用来对一个或多个值(操作数)执行特定运算的符号。根据操作数的数量,可以将操作符分为三类:一元操作符(单个操作数)、二元操作符(两个操作数)和三元操作符(三个操作数)。JavaScript 中的操作符种类繁多,涵盖了算术、比较、逻辑等多个方面。

1. 算术操作符(Arithmetic Operators)

用于执行基本数学运算:

  • + 加法
  • - 减法
  • * 乘法
  • / 除法
  • % 取模(返回两数相除后的余数)
  • ** 幂运算(ES2016引入)
let sum = 5 + 3; // 加法
console.log(sum); // 输出: 8let mod = 10 % 3; // 取模
console.log(mod); // 输出: 1let power = 2 ** 3; // 幂运算
console.log(power); // 输出: 8

2. 比较操作符(Comparison Operators)

用来比较两个值,并返回一个布尔结果:

  • == 相等性检查(不推荐使用,因为会发生类型转换)
  • === 严格相等(推荐使用,不会发生类型转换)
  • != 不相等
  • !== 严格不相等
  • <, >, <=, >= 大小比较
console.log(5 === "5"); // false, 因为类型不同
console.log(5 == "5");  // true, 发生了类型转换console.log(5 > 3);     // true
console.log(5 <= 5);    // true

3. 逻辑操作符(Logical Operators)

用于组合多个条件表达式:

  • && 逻辑与(所有条件都必须为真)
  • || 逻辑或(任意条件为真即可)
  • ! 逻辑非(取反)
let hasMoney = true;
let isShopOpen = true;if (hasMoney && isShopOpen) {console.log("Let's go shopping!");
}// 使用 || 和默认值
function getUserSetting(setting, defaultValue) {return setting !== undefined ? setting : defaultValue;
}
console.log(getUserSetting(undefined, "default")); // 输出: default

4. 赋值操作符(Assignment Operators)

不仅限于简单的赋值 (=),还包括复合赋值操作符,如 +=, -=, *=,/=, %=, **= 等。

let x = 5;
x += 3; // 等价于 x = x + 3
console.log(x); // 输出: 8x *= 2; // 等价于 x = x * 2
console.log(x); // 输出: 16

5. 条件(三元)操作符(Conditional (Ternary) Operator)

提供了一种简洁的方式来进行条件判断:

let age = 20;
let message = age >= 18 ? "Adult" : "Minor";
console.log(message); // 输出: Adult

6. 其他操作符

  • 逗号操作符:可以在同一个表达式中执行多个操作。

    let a, b;
    a = (b = 5, b * 2); // b先被赋值为5,然后计算b * 2的结果给a
    console.log(a); // 输出: 10
    
  • 位操作符:如按位与 (&)、按位或 (|) 和按位异或 (^) 等,主要用于低级别的数字操作。

    console.log(5 & 3); // 输出: 1
    console.log(5 | 3); // 输出: 7
    console.log(5 ^ 3); // 输出: 6
    
  • typeof 操作符:返回一个表示操作数类型的字符串。

    console.log(typeof 42);      // "number"
    console.log(typeof "string"); // "string"
    console.log(typeof undefined); // "undefined"
    
  • delete 操作符:用于删除对象的属性。

    let obj = { prop: 42 };
    delete obj.prop;
    console.log(obj); // {}
    
  • in 操作符:检查某个属性是否存在于对象中。

    let person = { name: 'John', age: 30 };
    console.log('name' in person); // true
    console.log('address' in person); // false
    
  • instanceof 操作符:用来检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。

    function Animal() {}
    let cat = new Animal();
    console.log(cat instanceof Animal); // true
    

二、表达式(Expressions)

表达式是由操作符、变量、函数调用和字面量组成的语法结构,它们会计算出一个值。简单来说,表达式就是任何能够产生结果的东西。例如:

  • 数字 42
  • 字符串 "Hello"
  • 变量引用 myVar
  • 函数调用 myFunction()
  • 运算 5 + 3

在JavaScript中,表达式可以作为语句的一部分出现,也可以单独作为一条语句。当表达式出现在赋值语句的右侧时,它的值会被赋予左侧的变量。

let result = 5 * 3; // 表达式 5 * 3 计算出的结果被赋给了变量 result
console.log(result); // 输出: 15

表达式的分类

  • 简单表达式:由单一元素构成,如常量、变量或直接量。
  • 复杂表达式:包含多个简单表达式通过操作符组合而成。

特殊表达式

  • 立即执行函数表达式(IIFE):匿名函数定义后立即被执行。

    (function() {console.log("This is an IIFE");
    })();
    
  • 箭头函数表达式:ES6 引入的一种更简洁的函数定义方式。

    const add = (a, b) => a + b;
    console.log(add(2, 3)); // 输出: 5
    
  • 模板字面量:允许嵌入表达式,使用反引号 ` 包围。

    let name = "Alice";
    console.log(`Hello, ${name}!`); // 输出: Hello, Alice!
    

三、总结

掌握JavaScript中的操作符和表达式是编写健壮代码的基础。熟练运用这些工具可以帮助开发者更有效地处理数据、构建复杂的逻辑流并提高代码的可读性和维护性。随着ECMAScript标准的不断演进,新的操作符和表达式形式也在持续加入到语言规范中,为开发者提供了更多的灵活性和便利性。

了解每个操作符的具体行为及其适用场景,可以使你写出更加精简且高效的代码。同时,正确地使用表达式可以让代码逻辑更加清晰易懂。希望这篇文章能帮助你更好地掌握JavaScript中的操作符与表达式。

相关文章:

JavaScript 操作符与表达式

Hi, 我是布兰妮甜&#xff0c;编写流畅、愉悦用户体验的程序员。JavaScript 是一种功能强大且灵活的编程语言&#xff0c;广泛应用于前端和后端开发。它提供了一系列丰富的操作符和表达式来处理数据、执行逻辑判断以及控制程序流程。理解这些概念对于编写高效、可读性强的代码至…...

深度学习 Pytorch 张量(Tensor)的创建和常用方法

1 张量的基本创建及其类型 和Numpy中的array一样&#xff0c;张量的本质也是结构化地组织了大量的数据。 并且在实际操作中&#xff0c;张量的创建和基本功能也与其非常类似。 1.1 张量(Tensor)函数创建方法 张量的最基本创建方法和Numpy中创建Array的格式一致。 # Numpy创建…...

在VMwareFusion中使用Ubuntu

在VMwareFusion使用Ubuntu 在VMwareFusion使用Ubuntu背景在VMwareFusion虚拟机里使用Ubuntu1、集成桌面工具2、主机和虚拟机之间共享剪贴板内容3、设置root用户密码4、设置静态ip4.1、静态ip和动态ip的区别4.2、查看当前ip4.2、linux网络配置文件所在位置4.3、基于ubuntu22.04.…...

%.*s——C语言中printf 函数中的一种格式化输出方式

在C语言中&#xff0c;%.*s 是 printf 函数中的一种格式化输出方式&#xff0c;用于控制字符串的输出长度。具体来说&#xff0c;%.*s 中的 * 表示输出宽度&#xff08;即最多输出的字符数&#xff09;是一个变量&#xff0c;这个变量的值在运行时通过 printf 函数的参数传递。…...

基于微信小程序的摄影竞赛系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

hydra破解密码

hydra九头蛇是常用的密码破解工具 1、破解centos ssh密码 hydra -l root -P password.txt ssh://192.168.1.107:2222 hydra -l root -P password.txt -s 2222 192.168.1.107 ssh2、破解ftp hydra -l allen -P e:\aa.txt ftp://127.0.0.1 hydra -l allen -P e:\aa.txt ftp:…...

JAVA之外观模式

外观模式&#xff0c;又称门面模式&#xff0c;是一种结构型设计模式&#xff0c;旨在为复杂的子系统提供一个统一且简化的接口。通过这一模式&#xff0c;客户端可以更加便捷地与子系统交互&#xff0c;而无需深入了解其内部结构和实现细节。外观模式不仅简化了客户端的使用&a…...

如何选择合适的服务器?服务器租赁市场趋势分析

服务器租赁市场概览 服务器租赁 market可以分为两种类型&#xff1a;按小时、按月和按年&#xff0c;每种模式都有其特点和适用场景&#xff0c;按小时租赁是最经济实惠的选择&#xff0c;适用于短期需求&#xff1b;按月租赁则适合中长期使用&#xff1b;而按年租赁则是最灵活…...

CentOS 下载软件时报Error: Failed to synchronize cache for repo ‘AppStream‘解决方法

下载软件时出现以下问题 直接把CentOS-AppStream.repo改个名字就行 cd /etc/yum.repos.d/ mv CentOS-AppStream.repo CentOS-AppStream.repo.bak就可以了 解决思路 把AI问遍&#xff0c;无人会&#xff0c;解决法 想要下载软件通通失败了&#xff0c;解决方法当然是问AI&am…...

鲍厚霖:引领AI广告创新,搭建中美合作桥梁

2024年是鲍厚霖和她领导的超能S咨询公司(Triple S AI)收获颇丰的一年。这一年中,她以卓越的战略眼光和创新能力,为中美教育、文化与技术的深度融合注入了新的活力。2025年,Triple S AI计划推出全新2.0版本平台,进一步深化人工智能驱动的营销与文化合作领域,推动产业变革与社会福…...

学习记录1

[SUCTF 2019]EasyWeb 直接给了源代码&#xff0c;分析一下 <?php function get_the_flag(){// webadmin will remove your upload file every 20 min!!!! $userdir "upload/tmp_".md5($_SERVER[REMOTE_ADDR]);if(!file_exists($userdir)){mkdir($userdir);}if…...

【Gossip 协议】Golang的实现库Memberlist 库简介

Gossip 协议简介 Gossip 协议是一种分布式协议&#xff0c;用于在节点之间传播信息&#xff0c;常用于成员管理、故障检测、服务发现等场景。在这个协议中&#xff0c;每个节点定期与其他节点交换信息&#xff0c;最终保证所有节点达到一致的状态。它的工作原理类似于人群中的…...

LDD3学习7--硬件接口I/O端口(以short为例)

1 理论 1.1 基本概念 目前对外设的操作&#xff0c;都是通过寄存器。寄存器的概念&#xff0c;其实就是接口&#xff0c;访问硬件接口&#xff0c;有I/O端口通信和内存映射I/O (Memory-Mapped I/O)&#xff0c;I/O端口通信是比较老的那种&#xff0c;都是老的串口并口设备&am…...

openharmony电源管理子系统

电源管理子系统 简介目录使用说明相关仓 简介 电源管理子系统提供如下功能&#xff1a; 重启服务&#xff1a;系统重启和下电。系统电源管理服务&#xff1a;系统电源状态管理和休眠运行锁管理。显示相关的能耗调节&#xff1a;包括根据环境光调节背光亮度&#xff0c;和根…...

【Rust自学】13.4. 闭包 Pt.4:使用闭包捕获环境

13.4.0. 写在正文之前 Rust语言在设计过程中收到了很多语言的启发&#xff0c;而函数式编程对Rust产生了非常显著的影响。函数式编程通常包括通过将函数作为值传递给参数、从其他函数返回它们、将它们分配给变量以供以后执行等等。 在本章中&#xff0c;我们会讨论 Rust 的一…...

在 macOS 上,用命令行连接 MySQL(/usr/local/mysql/bin/mysql -u root -p)

根据你提供的文件内容&#xff0c;MySQL 的安装路径是 /usr/local/mysql。要直接使用 mysql 命令&#xff0c;你需要找到 mysql 可执行文件的路径。 在 macOS 上&#xff0c;mysql 客户端通常位于 MySQL 安装目录的 bin 子目录中。因此&#xff0c;完整的路径应该是&#xff1…...

mono3d汇总

lidar坐标系 lidar坐标系可以简单归纳为标准lidar坐标系和nucense lidar坐标系&#xff0c;参考链接。这个坐标系和车辆的ego坐标系是一致的。 标准lidar坐标系 opendet3d&#xff0c;mmdetection3d和kitt都i使用了该坐标系 up z^ x front| /| /left y <------ 0kitti采…...

K8S 节点选择器

今天我们来实验 pod 调度的 nodeName 与 nodeSelector。官网描述如下&#xff1a; 假设有如下三个节点的 K8S 集群&#xff1a; k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、镜像准备 1.1、镜像拉取 docker pull tomcat:8.5-jre8…...

【2024年华为OD机试】 (C卷,200分)- 反射计数(Java JS PythonC/C++)

一、问题描述 题目解析 题目描述 给定一个包含 0 和 1 的二维矩阵&#xff0c;一个物体从给定的初始位置出发&#xff0c;在给定的速度下进行移动。遇到矩阵的边缘时会发生镜面反射。无论物体经过 0 还是 1&#xff0c;都不影响其速度。请计算并给出经过 t 时间单位后&#…...

AI编程工具使用技巧——通义灵码

活动介绍通义灵码1. 理解通义灵码的基本概念示例代码生成 2. 使用明确的描述示例代码生成 3. 巧妙使用注释示例代码生成 4. 注意迭代与反馈原始代码反馈后生成优化代码 5. 结合生成的代码进行调试示例测试代码 其他功能定期优化生成的代码合作与分享结合其他工具 总结 活动介绍…...

AcousticSense AI进阶使用:批量处理上百首歌曲的实战方法

AcousticSense AI进阶使用&#xff1a;批量处理上百首歌曲的实战方法 1. 为什么需要批量处理音乐文件&#xff1f; 在音乐流媒体平台、唱片公司或广播电台的实际工作中&#xff0c;我们经常需要处理海量音频文件。手动上传单首歌曲进行流派分析不仅效率低下&#xff0c;也难以…...

DASD-4B-Thinking部署教程:Docker镜像内vLLM服务健康检查脚本编写与自动重启

DASD-4B-Thinking部署教程&#xff1a;Docker镜像内vLLM服务健康检查脚本编写与自动重启 1. 项目背景与需求 DASD-4B-Thinking是一个专门针对数学、代码生成和科学推理任务优化的40亿参数语言模型。它通过vLLM框架部署&#xff0c;配合chainlit前端提供交互式体验。但在实际使…...

春联生成模型-中文-base行业落地:新能源车企‘碳中和’‘智驾’等科技春联生成

春联生成模型-中文-base行业落地&#xff1a;新能源车企碳中和智驾等科技春联生成 1. 引言&#xff1a;当传统春联遇上现代科技 春节贴春联是千百年来的传统习俗&#xff0c;但传统的"福禄寿喜"已经难以完全表达现代企业的科技内涵。特别是新能源车企&#xff0c;既…...

零基础玩转像素幻梦:快速生成《光纹苔藓姑苏幻梦》同款像素画

零基础玩转像素幻梦&#xff1a;快速生成《光纹苔藓姑苏幻梦》同款像素画 1. 像素幻梦初体验 1.1 什么是像素幻梦创意工坊 像素幻梦创意工坊&#xff08;Pixel Dream Workshop&#xff09;是一款基于FLUX.1-dev扩散模型构建的AI像素艺术生成工具。它采用明亮的16-bit像素风格…...

高效智能抖音直播下载工具:一站式解决方案

高效智能抖音直播下载工具&#xff1a;一站式解决方案 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 你是否曾经为错过精彩的抖音直播而遗憾&#xff1f;是否想要保存喜欢的直播内容却苦于没有合适的工具&a…...

Phi-3-Mini-128K实操手册:模型加载耗时优化技巧——分层加载与缓存机制应用

Phi-3-Mini-128K实操手册&#xff1a;模型加载耗时优化技巧——分层加载与缓存机制应用 1. 项目概述 Phi-3-Mini-128K是基于微软Phi-3-mini-128k-instruct模型开发的轻量化对话工具&#xff0c;专为本地部署和高效推理场景设计。该工具通过多项技术创新&#xff0c;显著提升了…...

Neovim美化踩坑实录:从乱码图标到完美主题,我的init.lua配置全解析(附避坑清单)

Neovim美化踩坑实录&#xff1a;从乱码图标到完美主题&#xff0c;我的init.lua配置全解析&#xff08;附避坑清单&#xff09; 第一次打开Neovim时&#xff0c;满屏的方块符号和刺眼的默认配色让我差点以为打开了某个古董终端。作为从VSCode转投Neovim的开发者&#xff0c;我原…...

提升工作效率的利器:哦我的Claude代码(Oh-My-ClaudeCode)

轻松掌握Claude Code的多代理 orchestration——oh-my-claudecode 在我们的工程师和开发者面前&#xff0c;常常会遇到复杂的任务调度和多代理协作的问题。如何有效地利用可用的AI助手并提高工作效率&#xff0c;成为了一个不容忽视的挑战。oh-my-claudecode正是为了解决这些问…...

OpenClaw多任务测试:nanobot镜像并行处理能力评估

OpenClaw多任务测试&#xff1a;nanobot镜像并行处理能力评估 1. 测试背景与目标 最近在探索OpenClaw的自动化能力边界时&#xff0c;我遇到了一个实际需求&#xff1a;能否让这个智能体框架同时处理多个不同类型的任务&#xff1f;比如一边整理本地文件&#xff0c;一边抓取…...

Spring Cloud Hystrix 详细示-元一软件

Hystrix 是 Spring Cloud 中实现服务熔断、降级、隔离的核心组件&#xff0c;用于解决微服务架构中的雪崩效应&#xff0c;核心是快速失败、优雅降级、自动恢复。以下从环境搭建、基础使用、高级配置、Feign 整合、监控5 个维度提供完整示例。一、项目环境准备1. 依赖引入&…...