JavaScript 操作符与表达式

Hi,我是布兰妮甜 !JavaScript 是强健灵活的编程语言,适用于前后端开发。它提供了丰富的操作符和表达式用于数据处理、逻辑判断和流程控制。理解这些对于编写高效、可读的代码至关重要。接下来,我们将深入探讨其 操作符表达式 的使用。


文章目录

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


一、操作符(Operators)

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

1. 算术操作符(Arithmetic Operators)

用于执行基本数学运算:

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

let mod = 10 % 3; // 取模
console.log(mod); // 输出: 1

let 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); // 输出: 8

x *= 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中的操作符与表达式。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot 搭建 SSE

参考链接 https://www.51cto.com/article/798001.html 了解一下SseEmitter&#xff08;一&#xff09;-CSDN博客 依赖 有默认的 springboot-web 依赖即可 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-start…

python_在钉钉群@人员发送消息

python_在钉钉群人员发送消息 1、第一种 企业内部机器人群聊实现人接入指南&#xff0c;适用于群机器人接收消息&#xff0c;处理完一系列的动作之后&#xff0c;将消息返回给发消息的人员&#xff0c;同时该人员。 需要在企微后台新建一个自建应用&#xff0c;在自建应用里…

macOS安装Gradle环境

文章目录 说明安装JDK安装Gradle 说明 gradle8.5最高支持jdk21&#xff0c;如果使用jdk22建议使用gradle8.8以上版本 安装JDK mac系统安装最新&#xff08;截止2024.9.13&#xff09;Oracle JDK操作记录 安装Gradle 下载Gradle&#xff0c;解压将其存放到资源java/env目录…

HTML之拜年/跨年APP(改进版)

目录&#xff1a; 一&#xff1a;目录 二&#xff1a;效果 三&#xff1a;页面分析/开发逻辑 1.页面详细分析&#xff1a; 2.开发逻辑&#xff1a; 四&#xff1a;完整代码&#xff08;不多废话&#xff09; index.html部分 app.json部分 二&#xff1a;效果 三&#xff1a;页面…

PostgreSQL的学习心得和知识总结(一百六十六)|深入理解PostgreSQL数据库之\watch元命令的实现原理

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

使用 Parcel 和 NPM 脚本进行打包

使用 Parcel 和 NPM 脚本进行打包 Parcel Parcel 是一个零配置的网页应用程序打包工具&#xff0c;主要用于快速构建现代 JavaScript 应用。 我们可以使用npm直接安装它 npm install --save-dev parcel //这将把 Parcel 添加到 devDependencies 中&#xff0c;表明它是一个…

项目实战--网页五子棋(游戏大厅)(3)

我们的游戏大厅界面主要需要包含两个功能&#xff0c;一是显示用户信息&#xff0c;二是匹配游戏按钮 1. 页面实现 hall.html <!DOCTYPE html> <html lang"ch"> <head><meta charset"UTF-8"><meta name"viewport"…

网络安全VS数据安全

关于网络安全和数据安全&#xff0c;我们常听到如下两种不同声音&#xff1a; 观点一&#xff1a;网络安全是数据安全的基础&#xff0c;把当年做网络安全的那一套用数据安全再做一遍。 观点二&#xff1a;数据安全如今普遍以为是网络安全的延伸&#xff0c;实际情况是忽略数据…

React 中hooks之useDeferredValue用法总结

目录 概述基本用法与防抖节流的区别使用场景区分过时内容最佳实践 概述 什么是 useDeferredValue? useDeferredValue 是 React 18 引入的新 Hook&#xff0c;用于延迟更新某个不那么重要的部分。它接收一个值并返回该值的新副本&#xff0c;新副本会延迟更新。这种延迟是有…

浅谈 JVM

JVM 内存划分 JVM 内存划分为 四个区域&#xff0c;分别为 程序计数器、元数据区、栈、堆 程序计数器是记录当前指令执行到哪个地址 元数据区存储存储的是当前类加载好的数据&#xff0c;包括常量池和类对象的信息&#xff0c;.java 编译之后产生 .class 文件&#xff0c;运…

HTTP / 2

序言 在之前的文章中我们介绍过了 HTTP/1.1 协议&#xff0c;现在再来认识一下迭代版本 2。了解比起 1.1 版本&#xff0c;后面的版本改进在哪里&#xff0c;特点在哪里&#xff1f;话不多说&#xff0c;开始吧⭐️&#xff01; 一、 HTTP / 1.1 存在的问题 很多时候新的版本的…

使用vscode在本地和远程服务器端运行和调试Python程序的方法总结

1 官网下载 下载网址&#xff1a;https://code.visualstudio.com/Download 如下图所示&#xff0c;可以分别下载Windows,Linux,macOS版本 历史版本下载链接: https://code.visualstudio.com/updates 2 安装Python扩展工具 打开 VS Code&#xff0c;安装 Microsoft 提供的官…

免费为企业IT规划WSUS:Windows Server 更新服务 (WSUS) 之快速入门教程(一)

哈喽大家好&#xff0c;欢迎来到虚拟化时代君&#xff08;XNHCYL&#xff09;&#xff0c;收不到通知请将我点击星标&#xff01;“ 大家好&#xff0c;我是虚拟化时代君&#xff0c;一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…

Ubuntu 24.04 LTS 安装 tailscale 并访问 SMB共享文件夹

Ubuntu 24.04 LTS 安装 tailscale 安装 Tailscale 官方仓库 首先&#xff0c;确保系统包列表是最新的&#xff1a; sudo apt update接下来&#xff0c;安装 Tailscale 所需的仓库和密钥&#xff1a; curl -fsSL https://tailscale.com/install.sh | sh这会自动下载并安装 …

基于python+Django+mysql鲜花水果销售商城网站系统设计与实现

博主介绍&#xff1a;黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

“AI人工智能内容辅助创作平台:让创意不再“卡壳”

在如今这个信息爆炸的时代&#xff0c;内容创作成了每个人的“必修课”。无论是自媒体大V、文案策划&#xff0c;还是普通学生写作文&#xff0c;大家都会遇到一个让人抓狂的问题——“创意枯竭”。有时候&#xff0c;脑袋里空空如也&#xff0c;一个字都写不出来&#xff0c;那…

【计算机网络】传输层协议TCP与UDP

传输层 传输层位于OSI七层网络模型的第四层&#xff0c;主要负责端到端通信&#xff0c;可靠性保障&#xff08;TCP&#xff09;&#xff0c;流量控制(TCP)&#xff0c;拥塞控制(TCP)&#xff0c;数据分段与分组&#xff0c;多路复用与解复用等&#xff0c;通过TCP与UDP协议实现…

基础入门-传输加密数据格式编码算法密文存储代码混淆逆向保护安全影响

知识点&#xff1a; 1、传输格式&传输数据-类型&编码&算法 2、密码存储&代码混淆-不可逆&非对称性 一、演示案例-传输格式&传输数据-类型&编码&算法 传输格式 JSON XML WebSockets HTML 二进制 自定义 WebSockets&#xff1a;聊天交互较常…

DenseNet-密集连接卷积网络

DenseNet&#xff08;Densely Connected Convolutional Network&#xff09;是近年来图像识别领域中一种创新且高效的深度卷积神经网络架构。它通过引入密集连接的设计&#xff0c;极大地提高了特征传递效率&#xff0c;减缓了梯度消失问题&#xff0c;促进了特征重用&#xff…

记一次数据库连接 bug

整个的报错如下&#xff1a; com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Metho…