Javascript运算符——算术运算符、三元运算符、自增 与 自减、比较运算符、逻辑运算符、= 与== 与 === 的区别

2024-04-13 01:08

本文主要是介绍Javascript运算符——算术运算符、三元运算符、自增 与 自减、比较运算符、逻辑运算符、= 与== 与 === 的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1、算术运算符

2、三元运算符

3、自增 自减 / 递增 递减

4、比较运算符

5、逻辑运算符

6、双非 !! 作用讲解

运算符优先级

= 与== 与 === 的区别 


1、算术运算符


1. 加号 +(可用于字符串拼接)

加号两侧同时为数字,进行加法运算
加号两侧任何一侧为字符串,表示字符串拼接        (符号两侧要用空格隔开)

2.减号 -         3.乘号 *         4.除号 /        5.取余 %(只有+号会进行字符串的拼接,其余不会)

在进行减 乘 除 取余运算时:

符号两侧同时为数字进行对应的算术运算,若其中有一侧为非数字,则运算时会把该侧转换为数字,转换成功,进行对应的算术运算,转换失败,得到NaN(Not a Number非数字)    

  <script>/*+ 加- 减* 乘/ 除% 取余数*/console.log(2 + 3);console.log(2 - 3);console.log(2 * 3);console.log(2 / 3);console.log(3 % 2);console.log(4 % 2); //余数0</script>
  1. +=  加等
  2. -= 减等
  3. *= 乘等
  4. /= 除等
  5. %= 
 var a = 10;a = a + 2;a += 2; // 输出12 和a=a+3结果相等,加等 
//其他几个用法相同

 字符拼接问题:

   console.log(2 + 4 + "=" + 6); //6=6console.log(4 + "=" + 3 + 1); //4=31 从左往右依次运算,先乘除,后加减,有括号先算括号内的console.log(4 + "=" + (3 + 1)); //4=4

2、三元运算符

语法: 条件        ?语句1        :语句2;

条件成立执行语句1,条件不成立执行语句2

<script>// 举例:var a = prompt('请输入数字'),b = prompt('请输入数字');a > b//条件? document.write(a + b)//语句1: document.write(b + a);//语句2//举例var num = prompt("请输入一个数字", 0);num % 2 == 0 ? console.log(num + "是偶数") : console.log(num + "是奇数");</script>

3、自增 自减 / 递增 递减

递增(++)

递减(- -)

放在变量前面时,我们称为前置递增(递减)运算符

放在变量后面时,我们称为后置递增(递减)运算符

注意:递增和递减运算符必须和变量配合使用。

①前置递增运算符

++num num = num + 1

使用口诀:先自加,后返回值

var num = 10;
alert (++num + 10); // 21

②后置递增运算符

num ++ num = num +1

使用口诀:先返回原值,后自加

var num = 10;
alert(10 + num++); // 20

③小结

  • 前置递增和后置递增运算符可以简化代码的编写,让变量的值 + 1 比以前写法更简单
  • 单独使用时,运行结果相同,与其他代码联用时,执行结果会不同
  • 开发时,大多使用后置递增/减,并且代码独占一行

4、比较运算符

 除恒等外,其他比较过程都会进行类型转换 (但两侧同为字符串时不能自行完成类型转换

  • 大于>
  • 小于<
  • 小于等于<=
  • 大于等于>=
  • 等于==
  • 不等于!=
  • 恒等===

     返回布尔值

    console.log(5 > 8); //falseconsole.log(5 < 8); //trueconsole.log(5 >= 8); //false console.log(5 <= 8); //trueconsole.log(5 == 5); //trueconsole.log(5 == "5"); //true 比较过程中也会进行类型转换console.log(5 === "5"); //false恒等,值和类型都要相等,不会进行类型转换console.log(1 == true); //trueconsole.log(null == undefined); //trueconsole.log(null == 0); //falseconsole.log(0.1 + 0.2 == 0.3); //false

5、逻辑运算符

  •  逻辑与 &&   符号两侧同时为真,才为真,其他情况均为假
  • 逻辑或 ||   符号两侧同时为假才为假,其他情况均为真
  • 逻辑非 !非真即假 非假即真
  • !!双等号可进行类型转换  两个!!就可以将变量或属性转化为对应布尔值

6、双非 !! 作用讲解

javascript中的!!是逻辑"非非",即是在逻辑“非”的基础上再"非"一次。通过!或!!可以将很多类型转换成bool类型,再做其它判断。

使用javascript时,有时会在变量前面加上两个感叹号,这样做表示什么含义呢?Javascript中,!表示运算符“非”,如果变量不是布尔类型,会将变量自动转化为布尔类型,再取非,那么用两个!!就可以将变量转化为对应布尔值。

详情参考http://t.csdn.cn/0VkoT

    //逻辑与&&  符号两侧同时为真,才为真,其他情况均为假//短路console.log(true && true); //trueconsole.log(true && false); //falseconsole.log(false && false); //false//逻辑或||  符号两侧同时为假才为假,其他情况均为真console.log(true || true); //trueconsole.log(true || false); //trueconsole.log(false || false); //false// 逻辑非 ! 非真即假 非假即真console.log(!true); //falseconsole.log(!false); //true

运算符优先级

优先级运算符顺序
1小括号()
2一元运算符++ - - !
3算数运算符先 * / % 后 + - (先乘除后加减)
4关系运算符> >= < <
5相等运算符==、   !=  、  ===、   !==
6逻辑运算符先  &&  后  ||
7赋值运算符=(赋值运算符优先级最低)
 

= 与== 与 === 的区别 

=表示赋值

== 表示相等 (值相等)
===表示恒等(类型和值都要相等)
js在比较的时候如果是 == 会先做类型转换,再判断值得大小,如果是===类型和值必须都相等。

这篇关于Javascript运算符——算术运算符、三元运算符、自增 与 自减、比较运算符、逻辑运算符、= 与== 与 === 的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/898743

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

一篇文章彻底搞懂macOS如何决定java环境

《一篇文章彻底搞懂macOS如何决定java环境》MacOS作为一个功能强大的操作系统,为开发者提供了丰富的开发工具和框架,下面:本文主要介绍macOS如何决定java环境的相关资料,文中通过代码... 目录方法一:使用 which命令方法二:使用 Java_home工具(Apple 官方推荐)那问题来了,

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S