?.
Ptionচ্ছিক চেইনিং এবং নুলিশ কোয়েলসিং??
আপনি এখন সরাসরি ব্যবহার করতে পারেন ?.
নিরাপদে অস্তিত্বের জন্য পরীক্ষা ইনলাইন । সমস্ত আধুনিক ব্রাউজার এটি সমর্থন করে।
??
পূর্বনির্ধারিত বা শূন্য হলে ডিফল্ট মান সেট করতে ব্যবহার করা যেতে পারে।
aThing = possiblyNull ?? aThing
aThing = a?.b?.c ?? possiblyNullFallback ?? aThing
যদি কোনও সম্পত্তি বিদ্যমান থাকে, ?.
পরবর্তী চেকটিতে এগিয়ে যায় বা বৈধ মানটি দেয়। যে কোনও ব্যর্থতা অবিলম্বে শর্ট সার্কিট হয়ে ফিরে আসবে undefined
।
const example = {a: ["first", {b:3}, false]}
example?.a // ["first", {b:3}, false]
example?.b // undefined
example?.a?.[0] // "first"
example?.a?.[1]?.a // undefined
example?.a?.[1]?.b // 3
domElement?.parentElement?.children?.[3]?.nextElementSibling
null?.() // undefined
validFunction?.() // result
(() => {return 1})?.() // 1
একটি ডিফল্ট সংজ্ঞায়িত মান নিশ্চিত করতে, আপনি ব্যবহার করতে পারেন ??
। আপনার যদি প্রথম সত্যবাদী মান প্রয়োজন হয় তবে আপনি এটি ব্যবহার করতে পারেন ||
।
example?.c ?? "c" // "c"
example?.c || "c" // "c"
example?.a?.[2] ?? 2 // false
example?.a?.[2] || 2 // 2
যদি আপনি কোনও মামলা পরীক্ষা না করেন তবে অবশ্যই বাম দিকের সম্পত্তি থাকা উচিত। যদি তা না হয় তবে এটি ব্যতিক্রম ছুঁড়ে ফেলবে।
example?.First // undefined
example?.First.Second // Uncaught TypeError: Cannot read property 'Second' of undefined
?.
ব্রাউজার সমর্থন - 78%, জুলাই 2020
??
ব্রাউজার সমর্থন - 78%
মজিলা ডকুমেন্টেশন
-
লজিকাল নালিশ নিয়োগ, 2020+ সমাধান
নতুন অপারেটরগুলি বর্তমানে ব্রাউজারগুলিতে যুক্ত করা হচ্ছে ??=
, ||=
এবং &&=
। তারা আপনি যা সন্ধান করছেন তা পুরোপুরি করে না, তবে আপনার কোডের লক্ষ্য অনুসারে একই ফলাফল হতে পারে।
দ্রষ্টব্য: পাবলিক ব্রাউজার সংস্করণগুলিতে এগুলি এখনও সাধারণ নয় , তবে বাবেলকে ভালভাবে স্থানান্তর করা উচিত। প্রাপ্যতা পরিবর্তন হিসাবে আপডেট হবে।
??=
বাম দিকটি অপরিজ্ঞাত বা নাল কিনা তা পরীক্ষা করে দেখেছে, ইতিমধ্যে সংজ্ঞায়িত হলে শর্ট সার্কিট। যদি তা না হয় তবে বাম দিকটি ডান পাশের মান নির্ধারিত হয়। ||=
এবং &&=
অনুরূপ, তবে ||
এবং &&
অপারেটরগুলির উপর ভিত্তি করে ।
বেসিক উদাহরণ
let a // undefined
let b = null
let c = false
a ??= true // true
b ??= true // true
c ??= true // false
বস্তু / অ্যারে উদাহরণ
let x = ["foo"]
let y = { foo: "fizz" }
x[0] ??= "bar" // "foo"
x[1] ??= "bar" // "bar"
y.foo ??= "buzz" // "fizz"
y.bar ??= "buzz" // "buzz"
x // Array [ "foo", "bar" ]
y // Object { foo: "fizz", bar: "buzz" }
ব্রাউজার সমর্থন 2020 জুলাই - .03%
মজিলা ডকুমেন্টেশন
if( obj?.nested?.property?.value )
পরিবর্তেif( obj && obj.nested && obj.nested.property && obj.nested.property.value )