JavaScript中的问号运算符(?、?.、??)主要的三种用法
条件运算符(三元运算符)
条件运算符(三元运算符)的语法为:condition ? exprIfTrue : exprIfFalse
。它用于根据条件表达式的结果来选择两个不同的表达式之一。如果条件为真,则表达式返回exprIfTrue
的结果;否则返回exprIfFalse
的结果。
可选链操作符(?.)
可选链操作符(?.)用于安全地访问嵌套对象的属性或方法,而不会因为中间某个引用为null或undefined而抛出错误。其语法为:obj?.prop
。如果obj
是null或undefined,表达式将立即返回undefined,否则继续访问属性或方法。
空值合并操作符(??)
空值合并操作符(??)用于提供一个默认值,当左侧的操作数为null或undefined时,返回右侧的操作数;否则返回左侧的操作数。其语法为:value ?? defaultValue
。这常用于提供默认值,避免因变量为null或undefined而导致的错误。
示例代码
-
1.条件运算符:
-
-
let value = condition ? trueValue : falseValue;
-
-
2.可选链操作符:
-
-
const obj = {a: {b: 1}}; console.log(obj?.a?.b); // 输出 1
-
-
3.空值合并操作符:
-
-
const value = null ?? 'default'; // 输出 'default'
这些用法使得JavaScript在处理条件判断、对象属性访问和提供默认值时更加灵活和安全。
2025-06-06 09:48:38【出处】:https://blog.csdn.net/kana_yonk/article/details/143858888
=======================================================================================
js里面?. 、?? 、??= 运算符的作用(ES2020)
在JavaScript中,?.
、??
和 ??=
是三个不同的运算符,各自有不同的用途和用法。
以下是详细解释:
可选链操作符(?.
)
作用: 可选链操作符用于在访问对象属性或调用函数时,处理可能为 null
或 undefined
的情况。如果链中某个部分是 null
或 undefined
,操作将短路并返回 undefined
,而不会抛出错误。
语法:
-
let result = object?.property;
-
let result = object?.method?.();
-
let result = array?.[index];
示例:
-
let user = {
-
name: "Alice",
-
address: {
-
city: "Wonderland"
-
}
-
};
-
-
console.log(user?.address?.city); // 输出 "Wonderland"
-
console.log(user?.address?.street); // 输出 undefined
-
console.log(user?.contact?.phone); // 输出 undefined
Null 合并操作符(??
)
作用: Null 合并操作符用于在 null
或 undefined
时提供默认值。如果左侧操作数是 null
或 undefined
,则返回右侧操作数,否则返回左侧操作数。
语法:
let result = value ?? defaultValue;
示例:
-
let name = null;
-
let defaultName = "Guest";
-
-
console.log(name ?? defaultName); // 输出 "Guest"
-
-
let age = 0;
-
let defaultAge = 18;
-
-
console.log(age ?? defaultAge); // 输出 0
Null 合并赋值操作符(??=
)
作用: Null 合并赋值操作符用于在变量为 null
或 undefined
时给变量赋值。如果变量已经有值,则不会覆盖。
语法:
variable ??= value;
示例:
-
let name = null;
-
let defaultName = "Guest";
-
-
name ??= defaultName;
-
console.log(name); // 输出 "Guest"
-
-
let age = 0;
-
let defaultAge = 18;
-
-
age ??= defaultAge;
-
console.log(age); // 输出 0
2025-06-06 10:15:18【出处】:https://blog.csdn.net/weixin_42097259/article/details/139495998
=======================================================================================
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/18913603
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!