JavaScript 操作符(二)

辩才天
• 阅读 986

布尔操作符

逻辑非(!

将操作数(任何数据类型)转换为一个布尔值,并求反。

!null; // true
!undefined; // true
!true; // false
!false; // true
!0; // true
!NaN; // true
!1; // false  除 0 和 NaN 以外的任何 Number 类型,此操作都会返回 false
!""; // true
!"s"; // false 任何非空的String类型,此操作都会返回false
!Symbol(); // false

连续使用两个 ! 可达到 Boolean() 函数同样的效果。

!!null; // false
// ...

逻辑与(&&

属于短路操作,当第一个操作数求值结果为false(如果不为Boolean类型则存在一个隐形转换),则不会再对第二个操作数求值,并返回第一个操作数;只有当第一个操作数位 true 才会返回第二个操作数(不论第二个操作数是 true 还是 false)。

const b1 = true;
const result1 = (b1 && undefined_variable); // ReferenceError
console.log(result1);

const b2 = false; // 如果是非 Boolean 类型则会自动转为 Boolean 类型
const result2 = (b2 && undefined_variable); 
console.log(result2); // false

b1 && console.log('只有第一个操作数为真,我才会出现在控制台')
b2 && console.log('只有第一个操作数为真,我才会出现在控制台')

逻辑或(||

同样属于短路操作,当第一个操作数求值结果为 true (如果不为Boolean类型则存在一个隐形转换),则不会对第二个操作数求值,并返回第一个操作数;只有当第一个操作数为 false 才会返回第二个操作数(不论第二个操作数是 true 还是 false)。

const b1 = true;
const result1 = (b1 || undefined_variable); 
console.log(result1); // false

const b2 = false;
const result2 = (b2 || undefined_variable); // ReferenceError
console.log(result2);

b1 || console.log('你在控制台看不到我')
b2 || console.log('我会出现在控制台!因为b2 === false')

加性操作符

加法

  • Number类型:

    • 任何数加NaN,结果都是NaN
    • Infinity + Infinity = Infinity
    • Infinity - Infinity = NaN
    • -Infinity - Infinity = -Infinity
    • 0 + 0 = 0
    • 0 - 0 = 0
    • -0 - 0 = -0
  • 操作数中包含 String 类型,则将非 String 类型转为 String 类型并拼接。

    • ObjectBoolean类型,则调用它们的toString()方法获得字符串值。默认情况下 Object 类型返回 "[object Object]"Boolean类型 true 返回 "true"false 返回 "false"
    • Undefined类型或Null类型: 调用 String() 取得字符串 "undefined""null"
const s1 = "" + "s"; 
const s2 = "str" + { name: "Ashin" }; 
const s3 = "str" + true;
const s4 = "str" + null;
const s5 = "str" + undefined;

console.log(s1); // "s"
console.log(s2); // "str[object Object]"
console.log(s3); // "strtrue"
console.log(s4); // "strnull"
console.log(s5); // "strundefined"

减法

乘性操作符

乘法

除法

求模

关系操作符

相等操作符

相等和不相等

全等和不全等

点赞
收藏
评论区
推荐文章
Python进阶者 Python进阶者
3年前
一篇文章告诉你JavaScript 如何实现继承
背景简介JavaScript在编程语言界是个特殊种类,它和其他编程语言很不一样,JavaScript可以在运行的时候动态地改变某个变量的类型。比如你永远也没法想到像isTimeout这样一个变量可以存在多少种类型,除了布尔值true和false,它还可能是undefined、1和0、一个时间戳,甚至一个对象。如果代码跑异常,打开浏览器,开始断点调试,发现
liam liam
2年前
Mock 语法讲解
是生成随机数据,拦截Ajax请求的JavaScript库。本文来介绍下Mock的常用语法。模拟数据生成随机数据Mock.Random.boolean()生成一个随机的布尔值。例如:返回值为true或false。Mock.Random.integer(min
Jacquelyn38 Jacquelyn38
4年前
前端面试题集锦(奥利给!!!)
基础知识点与高频考题JavaScript基础console.log(1 < 2 < 3);console.log(3  2  1);// 写出代码执行结果,并解释为什么// 答案与解析true false对于运算符、<,一般的计算从左向右第一个题:1 < 2 等于 true, 然后true < 3,true  1 ,因此结果是t
Souleigh ✨ Souleigh ✨
4年前
安利几个JS开发小技巧
开发小技巧<br/1、转换布尔值除了常规的布尔值true和false之外,JavaScript还将所有其他值视为truthy或falsy。除非另有定义,否则JavaScript中的所有值都是truthy,除了0,“”,null,undefined,NaN,当然还有false,这些都是falsy我们可以通过使用负算运算符轻松地
Stella981 Stella981
3年前
Bitmap 位图 Java实现
一、结构思想以bit作为存储单位进行0、1存取的数据结构。可用作布尔值存取,比如给定第i位,该bit为1则表示true,为0则表示false。二、使用场景及优点适用于对布尔或0、1值进行(大量)存取的场景。如:记录一个用户365天的签到记录,签了为true,没签为false。若是以普通key/valu
Wesley13 Wesley13
3年前
LUA教程表达式逻辑运算符
Lua中的逻辑操作符有and,or,以及not。 和控制结构一样,所有的逻辑操作符把false和nil都作为假,而其它的一切都当作真。andornot逻辑运算符认为false和nil是假(false),其他为真,0也是true.and和or的运算结果不是true和false,而是和它的两个操
Stella981 Stella981
3年前
PHP 隐式转换(自动装换) 和 bc 精度函数
<?phpecho1true;//true1echo'<hr/';echo1false;//false0echo'<hr/';echo1.1false;echo'<hr/';echo1.1tru
Stella981 Stella981
3年前
Golang学习
//将布尔值转换为字符串true或falsefuncFormatBool(bbool)string//将字符串转换为布尔值//它接受真值:1,t,T,TRUE,true,True//它接受假值:0,f,F,FALSE,false,False//其它任何值都返回一个错误。funcParseBool(st
小万哥 小万哥
1年前
Python 布尔类型
布尔值表示两个值之一:True(真)或False(假)。布尔值在编程中,您经常需要知道一个表达式是否为True或False。您可以在Python中评估任何表达式,并获得两个答案之一:True或False。当您比较两个值时,表达式会被评估,Python会返回
小万哥 小万哥
1年前
C# 布尔值和条件语句:入门指南和实用示例
C布尔值在编程中,通常需要一个只能有两个值之一的数据类型,比如:是/否开/关真/假为此,C有一个bool数据类型,可以取true或false的值。布尔值使用bool关键字声明布尔类型,只能取true或false的值:示例:csharpboolisCShar
小万哥 小万哥
11个月前
Kotlin 布尔值教程:深入理解与应用示例
Kotlin中的布尔值是一种数据类型,仅能存储true或false两种状态,适用于表示二选一的情况,如开关或真假判断。布尔类型可通过Boolean关键字声明,并直接赋值为true或false。此外,Kotlin支持使用比较运算符创建布尔表达式,用于条件判断。条件语句包括if、else和elseif,允许根据不同条件执行特定代码块。特别地,在Kotlin中,if..else结构不仅能作为语句使用,还能作为表达式,即可以在条件判断的同时返回一个值。这种灵活性使得Kotlin在处理条件逻辑时更为简洁高效。