JS的运算符

javascript


运算符

算数运算符 + - * / %

关系运算符 > < >= <= != === !==

      值为布尔值,两边都是字符串时则比较ASCII码(单个); 多个时则逐个比较(1-1 2-a…); 两个有一个数值时,将另一个转换成数值.

      :当一个数是NaN,则==返回的是false,!=返回的是true,且NaN与自身不等。

         ===:恒等,当数值和数据类型都相等才返回true

         null转为数字时是0,undefined转为数字是NaN.

逻辑运算符 && || !(优先级先&&再||)

与:表达式1&&表达式2 (两个为真时真)

      如果第一个表达式的值为真,则返回表达式2
      如果第一个表达式的值为假,则返回表达式1

或:表达式1||表达式2 (两个为假时假)

      如果第一个表达式的值为真,则返回表达式1
      如果第一个表达式的值为假,则返回表达式2

非:!表达式

      先将表达式的值取布尔值再取反(非0即真,非空即真)

console.log((!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]);

一元运算符 ++ –

       对原有变量+1,a++(++后置,先取a作为a++的表达式的值在a+1)与++a(++前置);

赋值运算符 基本赋值=

          复合赋值+= -= *= /= %=

          如num=num+5;与num+=5;相同


表达式

自动数据类型转换

1.其中一个是字符串且符号为+,其他会转为字符串并拼接;

2.其中一个是字符串且符号不为+,字符串转为数字再运算;(字符为纯数字会运算,否则为NaN,NaN和任何运算都是NaN)

3.字符串以外的数据,在运算时,先转为数字再运算;(true为1,false为0,null为0,undefined为NaN)




操作符

~ 按位非(反码)

用于数字类型即取反后-1

~5 = -6
// 一般用于indexOf()   ~-1 = 0

~ ~两次取反

保持原值,但布尔值会转为数字

~~true = 1
~~5 = 5
~~6.25 = 6 //相当于parseInt且效率更高

^ 位异或

对两个二进制操作数逐位进行比较,返回结果

12 ^ 5 = 9

& 按位与

用于判断奇偶

偶数 & 1 = 0
奇数 & 1 = 1

| 位或

用于对两个二进制操作数逐位进行比较,并计算返回结果

可以用于取整

123.45 | 0 = 123

?. 可选链

let a;
let b = a?.name;
/* 只有当a存在,同时a具有name属性的时候,才会把值赋给b,否则就会将undefined赋值给b
   重要的是,不管a存在与否,这么做都不会报错*/

// 操作 obj?.a   obj?.[a]   arr?.[index]   fun?.(args)

?? 合并空值

let b;
let a = 0;
let c = { name:'zs' }

b = a ?? c;
/* 当a除了undefined、或者null之外的任何值,b都会等于a,否则就等于c*/

??= 空值赋值

let b = '你好';
let a = 0
let c = null;
let d =123‘
b ??= a;  // b = “你好”
c ??= d  // c = '123'

/* 当??=左侧的值为null、undefined的时候,才会将右侧变量的值赋值给左侧变量.其他所有值都不会进行赋值*/

&&=

let num1 = 5;
let num2 = 10;
num1 &&= num2;
console.log(num1); // 10

// 等价于
num1 && (num1 = num2);
if (num1) {
    num1 = num2;
 } 

||=

let num1;
let num2 = 10;
num1 ||= num2;
console.log(num1); // 10

// 等价于
num1 || (num1 = num2);
if (!num1) {
   num1 = num2;
}

### JavaScript 运算符解释与使用 #### 关系运算符 关系运算符用于比较两个操作数之间的大小关系。常见的关系运算符有小于($lt)[^3]、大于($gt)、小于等于($lte) 和 大于等于($gte)。 例如,在数据库查询中可以找到年龄介于特定范围内的文档: ```javascript db.person.find({"age": {"$gt": 25, "$lt": 30}}) ``` 这会返回所有年龄严格大于25岁且严格小于30岁的记录。 #### 相等性运算符 相等性运算符用来判断两个值是否相同或不同。包括等于($eq)、不等于($ne)[^3]、属于某集合($in) 及完全匹配数组中的元素($all)。 比如查找年龄为25岁或35岁的人员信息: ```javascript db.person.find({age:{"$in":[25,35]}}) ``` 此命令将获取那些年龄恰好是25岁或是35岁的个体资料。 除了上述提到的关系和相等性运算符外,JavaScript还支持其他类型的运算符如逻辑运算符(&&, ||)、位运算符(&, | , ^ 等),以及赋值运算符(=)。对于更复杂的条件表达式,则可利用三元运算符来简化代码结构,其语法形式如下所示[^1]: ```javascript condition ? exprIfTrue : exprIfFalse; ``` 这种简洁的形式非常适合处理简单的分支逻辑,尤其是在事件处理器属性内编写少量代码时非常有用。 #### 函数定义及其应用 函数是一组执行特定任务的语句块;通过`function`关键字声明并赋予独一无二的名字加上圆括号里的参数列表构成。函数能够接收零个或多个输入参数,并对其实施各种计算最终给出一个输出结果。下面是一个简单加法函数的例子[^2]: ```javascript function addNumbers(x, y) { return x + y; } console.log(addNumbers(2, 3)); // 输出:5 ``` 这里展示了如何创建接受两个数值作为参数并将它们相加以得到总和的功能模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Raccom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值