边肖将和大家分享一些JavaScript中强大的操作符。希望大家看完这篇文章后有所收获。我们一起讨论一下吧!
00-1010如果是第一次遇到,会看到两个问号。估计你脑子里的问号会更多(你的问号多吗~ ~ ~)?
两个问号?它被称为空值组合运算符。如果第一个参数不是null/undefined,则返回第一个参数;否则,它将返回第二个参数。
console.log(1?www . shanzhzonglei.com ');//1
console.log(false?www . shanzhzonglei.com ');//false
console.log(null?www . shanzhzonglei.com ');//www . shanzzhsonglei.com
console.log(未定义?www . shanzhzonglei.com ');//////www . shanzzhsonglei.com因此,只有当第一个参数为null/undefined时,才会返回第二个参数。
请注意,尽管未定义,JS中的空对象null、数值0、空数字NaN、布尔值false和空字符串“”都是false值,非null运算符只处理null/undefined。
与逻辑或运算符(||)不同,当左操作数为假时,逻辑或运算符返回右操作数。例如,当它是假值('或0)时。
console . log(1 | | 2);//1
console . log(“| | 2”);//2
一、??空值合并运算符
哦,现在不仅有两个问号,还有一个等号。问题是不是越来越难了?
?=null赋值运算符,仅当值为null或未定义时才赋值。
const student={ age :20 };
学生年龄?=18;
console.log(学生.年龄);//20
学生姓名?=' shanguaguagua ';
console . log(student . name);///《山瓜瓜》它和上面的一样吗?空值组合运算符相关:x?=y相当于x?(x=y),只有当x为null或未定义时,才会执行x=y。
letx=null
x?=20;
console . log(x);//20
lety=5;
你呢。=10;
console . log(y);//5
二、??=空赋值运算符
可选连锁运营商?允许读取位于连接对象链深处的属性值,而无需显式验证链中的每个引用是否有效。运算符隐式检查对象的属性是null还是undefined,这使得代码更加优雅简洁。
const obj={ 0
名为:‘山呱呱’,
foo:{
bar:{
baz:18,
fun:()={},
},
},
学校:{
学生[
{
(=NationalBureauofStandards)国家标准局
p; name: "shanguagua",
},
],
},
say() {
return "www.shanzhonglei.com";
},
};
console.log(obj?.foo?.bar?.baz); // 18
console.log(obj?.school?.students?.[0]["name"]); // shanguagua
console.log(obj?.say?.()); // www.shanzhonglei.com
四、?:三元运算符
它也叫三目运算符。额,这个就很常用了。
对于条件表达式b ? x : y,先计算条件 b,然后进行判断。如果 b 的值为 true,计算 x 的值,运算结果为 x 的值;否则,计算 y 的值,运算结果为 y 的值。
console.log(false ? 1 : 2); // 2 console.log(true ? 1 : 2); // 1
五、逻辑与(&&)和逻辑或(||)
先来复习一下吧:
逻辑与(&&):当第一个操作数为 true 时,将不会判断第二个操作数,因为无论第二个操作数为何,最后的运算结果一定是 true。
实际开发中,利用设个特性,可实现如下操作:
1、如果某个值为 true,则运行某个 function
function say() { console.log("www.shanzhonglei.com"); } let type = true; type && say(); // www.shanzhonglei.com
2、判断某个值
// 如果age大于10并且小于20才会执行 if (age > 10 && age < 20) { console.log(age); }
逻辑或(||): 当第一个操作数为 false 时(也就是 js 的假值),将不会判断第二个操作数,因为此时无论第二个操作数为何,最后的运算结果一定是 false。
实际开发中,利用设个特性,可实现如下操作:
1、给某个变量设置初始值
let student = { name: "shanguagua", }; console.log(student.age || "www.shanzhonglei.com"); // www.shanzhonglei.com
2、判断某个值
// 如果age等于10或者等于20或者等于30都执行 if (age === 10 || age === 20 || age === 30) { console.log(age); }
六、位运算符 & 和 |
位运算符是按位进行运算,&(与)、|(或),使用位运算符时会抛弃小数位,我们可以利用|0来给数字取整。也可以使用&1来判断奇偶数。
实际开发中,利用设个特性,可实现如下操作:
1、取整
1.3 | (0 - // 打印出 1 1.9) | 0; // 打印出 -1
2、判断奇偶数
let num = 5; !!(num & 1); // true !!(num % 2); // true
七、双位运算符 ~~
可以使用双位操作符来替代正数的 Math.floor( ),替代负数的 Math.ceil( )。
双否定位操作符的优势在于它执行相同的操作运行速度更快,对正数来说~~运算结果与 Math.floor( ) 运算结果相同,而对于负数来说与 Math.ceil( ) 的运算结果相同。
Math.floor(5.2) === 5; // true ~~3.2 === 3; // true Math.ceil(-6.6) === -6; // true ~~-4.5 === -6; // true
七、逻辑运算符 !
!,可将变量转换成 boolean 类型,null、undefined 和空字符串''取反都为 true,其余都为 false。一般来说会有好几种用法,!,!!,!=,!==。
7.1 利用!取反
let cat = false; console.log(!cat); // true
7.2 利用!!做类型判断
判断变量 a 不等于 null,undefined 和''才能执行的方法。
var a; if (a != null && typeof a != undefined && a != "") { //a有内容才执行的代码 }
等价于:
if (!!a) { //a有内容才执行的代码... }
7.3 两个值是否相等
一般来说都是用的全不等于!==,因为使用不等于!=的话,0 != ""返回的是 false,原因是 JS 中 0 和''转化成布尔型都为 false,所以推荐还是使用全不等于!==。
let a = 0; let b = 0; let c = "0"; let d = ''; a != b //false a != c // false number和string的0 被判断为相等 a != d // false 0和空字符串被判断为相等 a !== b // false a !== c // true a !== d // true
看完了这篇文章,相信你对“JavaScript中有哪些强大的运算符”有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/88241.html