细说JavaScript表达式和运算符号详解

除了简单的表达式还有复杂的表达式,它是由简单表达式构成的,将简单表达式组合成复杂表达式最常见的方法就是使用运算符
细说JavaScript表达式和运算符号详解

一、表达式

表达式分为简单表达式和复杂表达式,但最后的结果均是返回一个值

1、简单表达式

简单表达式又称为原始表达式,由原始数据值构成,是表达式中最小的单位,简单表达式包含常量和变量,常量与变量相对应,变量相当于未知数。而常量相当于已知数,在程序运行中,常量不会被更改

110 // 数值常量
1.1001e7 // 数值常量 科学记数法
"兄弟连" // 字符串常量

常量返回值是其本身,所以它们又被称为原始值,除了字符串和数值外还包括boolean类型的true和false、null类型的唯一值null和正则表达式

true // 布尔类型常量
null // 空值常量
/\d{4}/ // 特殊字符常量

变量也是简单的表达式之一,变量如果没有被赋值会被默认为undefined,也就是说它最终会返回一个值

2、复杂表达式
2.1、使用运算符连接的复杂表达式

简单表达式与复杂表达式是相对存在的,复杂表达式可以说是简答表达式的组合,最常见的复杂表达式是有简单表达式和运算符组成的

var num = 1;
console.log(1 + 1); // 为复杂表达式
2.2、直接量表达式

直接量表达式又称为字面量表达式,它最终返回的值就是其本身,直接量表达式又分为函数直接量表达式、数组直接量表达式、对象直接量表达式

2.3、其它表达式

其它表达式包括数组元素访问表达式、对象属性访问表达式、函数调用表达式以及对象创建表达式

二、运算符

运算符又称为操作符,除算数元算符还有赋值运算符、关系运算符、逻辑运算符、位元算符和其它运算符,js中的运算符可以适用于不同的数据类型,当然也会涉及到类型转换的问题

1、算数运算符
运算符含义使用格式本质
+加法a+b本质
-减法a-b本质
*乘法a*b本质
/除法a/b本质
%取余/求模a%b本质
+取正+b本质
-取负-b本质
++数值加1后赋值a++ / ++aa = a+1
数值减1后赋值a-- / --aa = a-1
// 这里重点说下++ 和 -- 运算,递增++ 和递减-- 符号可以放置在操作数的前面或者后面,
// 这种写法称为前增量和后增量或者前减量、后减量,如果单独使用没啥区别,
// 但在运算时、表达式中、流程控制中或者输出中会产生差异
var num = 1;
num++;
console.log(num); // 2
++num;
console.log(num);  // 3
num--;
console.log(num);  // 2
--num;
console.log(num);  // 1


var num =1;
console.num(num++); // 1
console.log(++num); // 3
console.log(num--); // 3
console.log(--num); // 1

// 总结: 
// 当在表达式中使用时,会出现前增量、先累加、后使用;后增量、先使用、后增加,减量与增量的规则一致
2、赋值运算符
运算符含义使用格式常规表达式
=赋值a=ba=b
+=相加后赋值a += ba = a+b
-=相减后赋值a-=ba = a-b
*=相乘后赋值a*=ba = a * b
/=相除后赋值a/=ba = a / b
%=取余后赋值a%=ba = a%b
3、关系运算符

关系运算符又称比较运算符,用来判断运算符左右两个值的关系,或者比较运算符左右两个值的大小

运算符含义使用格式
>大于a>b
<小于a<b
>=大于等于a>=b
<=小于等于a<=b
==等于a==b
!=不等于a!=b
===全等于a===b
!==不等于a!==b
4、逻辑运算符
运算符含义使用格式
&&逻辑与/并且a&&b
||逻辑或/或者a||b
!逻辑非!a

逻辑与有短路现象,当判断第一个操作数为false时,就不会去判断第二个操作数
逻辑或也有段路现象,当判断第一个为true并且第二个为false也判定为true
逻辑非运算时,操作数会被转换为布尔值,并且取反,然后返回布尔值

5、位运算符

位运算在编程语言中位于最底层,它是按内存中数值的位来计算数值的。会涉及到计算机底层原理知识,一般不会用到,后面有时间会写一下相关的内容(待补充)

运算符含义使用格式
&位与b&a
|位或a|b
~位非~a
^异或b^a
<<左移b<<a
>>右移b>>a
>>>无符号右移b>>>a
6、其它运算符
运算符含义使用格式
typeof查看类型typeof a
delete删除属性delete a
void取消返回值
in验证属性是否存在a in b
instanceof验证对象是否为类的实例
?:判断表达式,弱真则为执行问好后的表达式,若假则为冒号后面的表达式a ? b : c
new构造对象new A
6.1、instanceof运算符
// 实例判断运算符,用于判断一个对象是否为一个类的实例
var nums = [1,2,3,4];
console.log(nums instanceof Array); // true
6.2、delete运算符
// 删除属性运算符,用来删除对象属性或数组中的元素,返回值为true或false

var obj = {name:"知数SEO"};
delete obj.name;
6.3、in运算符
// 属性验证运算符,用来验证一个对象是否包含某个属性,返回true和false
var obj = {name:"知数SEO"};
console.log("name" in obj);
6.4、void运算符
// 取消返回值运算符,用于解析表达式,并返回undefined
// 例如这个运算符用于阻止<a>标签跳转
<>a href="javascript:void(1=1)"点击链接跳转</a>
6.5、三元运算符(?:)
// 表达式 ? 真区间 : 假区间
// 表达式为真时,则执行真区间代码,否则执行假区间代码
console.log(1+1 == 2 ? "真区间" : "假区间");

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

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

相关文章

MongoDB - 索引底层原理和使用,聚合的使用(案例 + 演示)

目录 一、MongoDB 索引 1.1、说明 1.2、原理 1.3、操作 1.3.1、创建索引 1.3.2、查看集合索引列表 1.3.3、查看集合索引大小 1.3.4、删除集合所有索引 1.3.5、删除集合指定索引 1.3.6、创建复合索引 1.4、聚合 a&#xff09; 统计每个作者写的文章数 b&#xff09…

没有自动化测试项目经验,3个项目帮你走入软测职场!

学习自动化测试最难的是没有合适的项目练习。测试本身既要讲究科学&#xff0c;又有艺术成分&#xff0c;单单学几个 API 的调用很难应付工作中具体的问题。 你得知道什么场景下需要添加显性等待&#xff0c;什么时候元素定位需要写得更加优雅&#xff0c;为什么需要断言这个元…

如何用MetaGPT帮你写一个贪吃蛇的小游戏项目

如何用MetaGPT帮你写一个贪吃蛇的小游戏项目 MetaGPT是基于大型语言模型(LLMs)的多智能体写作框架&#xff0c;目前在Github开源&#xff0c;其Start数量也是比较高的&#xff0c;是一款非常不错的开源框架。 下面将带你进入MetaGPT的大门&#xff0c;开启MetaGPT的体验之旅。…

机器人行业概况(2)

上篇已经介绍过关于机器人的定义以及分类&#xff0c;下面来看看机器人产业市场规模。 二、国内机器人产业市场规模 中国机器人产业在国家智能制造相关政策的引导下蓬勃发展。在新冠肺炎疫情防控期间&#xff0c;消毒、配送、测温、巡检等各类机器人的“火线上岗”&#xff0…

Electron中 主进程(Main Process)与 渲染进程 (Renderer Process) 通信的方式

1. 渲染进程向主进程通信 修改 html 文件内容 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><!-- 解决控制…

C# 基础入门

第二章 C# 语法基础 2-1 C# 中的关键字 关键字&#xff0c;是一些被C#规定了用途的重要单词。 在Visual Studio的开发环境中&#xff0c;关键字被标识为蓝色&#xff0c;下图代码中&#xff0c;用红方框圈出的单词就是关键字。 关键字 class &#xff0c;这个关键字的用途是…

【GitHub项目推荐--谷歌大神又一开源代码调试神器】【转载】

如果调试是 Debug 的必经之路&#xff0c;那么编程应该将它考虑在内。今天我就和大家分享一个代码调试神器 - Cyberbrain。 Cyberbrain是一个免费开源的 Python 代码调试解决方案&#xff0c;它可视化程序执行以及每个变量的变化方式&#xff0c;让程序员免受调试之苦。主要具有…

【Docker】centos中及自定义镜像,并且上传阿里云仓库可提供使用

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是平顶山大师&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《【Docker】centos中及自定义镜像&#xff0c;…

零零鸡生态养殖农场“出圈”,有“智”更有“质”,助力本土品牌高质量发展

什么是生态农场&#xff1f;不同于常规农场&#xff0c;它对农业生产经营单元的各个关键环节有着极为严格的要求&#xff0c;强调整体、协调、循环、再生、多样&#xff0c;产品质量自然更好&#xff0c;附加值也更高&#xff0c;更能满足日趋多样化的巨大市场。零零鸡生态农场…

机器学习---xgboost算法

1. xgboost算法原理 XGBoost&#xff08;Extreme Gradient Boosting&#xff09;全名叫极端梯度提升树&#xff0c;XGBoost是集成学习方法的王 牌&#xff0c;在Kaggle数据挖掘比赛中&#xff0c;大部分获胜者用了XGBoost。 XGBoost在绝大多数的回归和分类 问题上表现的十分…

蓝桥杯准备

书籍获取&#xff1a;Z-Library – 世界上最大的电子图书馆。自由访问知识和文化。 (zlibrary-east.se) 书评&#xff1a;(豆瓣) (douban.com) 一、观千曲而后晓声 别人常说蓝桥杯拿奖很简单&#xff0c;但是拿奖是一回事&#xff0c;拿什么奖又是一回事。况且&#xff0c;如果…

用通俗易懂的方式讲解:图解 Transformer 架构

文章目录 用通俗易懂方式讲解系列1.导语2.正文开始现在我们开始“编码”从宏观视角看自注意力机制从微观视角看自注意力机制通过矩阵运算实现自注意力机制残差模块最终的线性变换和Softmax层训练部分总结损失函数再进一步 用通俗易懂方式讲解系列 用通俗易懂的方式讲解&#x…

开源6位半万用表硬件电路分析

开源6位半手持式万用表 这里用的LM399H参考源&#xff0c;单片机是STM32L152&#xff0c;里面还用了MACHXO2-1200FPGA。 万用表由两块PCB组成。 硬件组成部分 电源管理电路 电源用的是6-10V&#xff0c;电源管理部分&#xff0c;首先用来一个ADP5070芯片&#xff08;内部含有…

NumPy:从初识到实战,探索Python科学计算的无限可能

NumPy 在浩瀚的Python编程世界中&#xff0c;有一个强大的库如星辰般璀璨&#xff0c;它是数据科学家、机器学习工程师乃至量化金融分析师手中的利器——NumPy&#xff0c;它以其高效的数据处理能力和便捷的矩阵运算机制&#xff0c;在科研与工程领域中占据着举足轻重的地位。…

【msvcr120.dll】修复电脑出现msvcr120.dll找不到的详细方法

“msvcr120.dll丢失”。那么&#xff0c;msvcr120.dll丢失是什么意思呢&#xff1f;msvcr120.dll丢失的原因是什么&#xff1f;msvcr120.dll的作用又是什么呢&#xff1f;当msvcr120.dll丢失时&#xff0c;会对计算机产生什么影响&#xff1f;本文将详细介绍这些问题&#xff0…

寻找最富裕的小家庭 - 华为OD统一考试

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C++ 题目描述 在一棵树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为一个小家庭现给你一棵树,请计算出最富裕的小家庭的财富和。 输入描述 第一行为一个数N,…

spring cloud feign demo

1. 工程结构 2. 父工程pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.…

墙地砖外形检测的技术方案-图像获取

硬件系统 墙地砖外形检测硬件系统主要由工业相机、光源、瓷砖位置检测电路和上位机组成&#xff0c;其结构如图所示。为了提高系统检测精度和稳定性&#xff0c;系统采用的是较高精度的高速工业相机用于抓取墙地砖表面轮廓图像&#xff0c;图像数据通过USB接口向上位机传送&am…

ElasticSearch(1):Elastic Stack简介

1 简介 ELK是一个免费开源的日志分析架构技术栈总称&#xff0c;官网https://www.elastic.co/cn。包含三大基础组件&#xff0c;分别是Elasticsearch、Logstash、Kibana。但实际上ELK不仅仅适用于日志分析&#xff0c;它还可以支持其它任何数据搜索、分析和收集的场景&#xf…

使用Qt连接scrcpy-server控制手机

Qt连接scrcpy-server 测试环境如何启动scrcpy-server1. 连接设备2. 推送scrcpy-server到手机上3. 建立Adb隧道连接4. 启动服务5. 关闭服务 使用QTcpServer与scrcpy-server建立连接建立连接并视频推流完整流程1. 开启视频推流过程2. 关闭视频推流过程 视频流的解码1. 数据包协议…