জাভাস্ক্রিপ্টে একটি "নাল কোয়েলসিং" অপারেটর আছে?


1380

জাভাস্ক্রিপ্টে কি নাল কোলেসিং অপারেটর আছে?

উদাহরণস্বরূপ, সি # তে, আমি এটি করতে পারি:

String someString = null;
var whatIWant = someString ?? "Cookies!";

জাভাস্ক্রিপ্টের জন্য আমি যে সর্বোত্তম অনুমানটি বের করতে পারি তা শর্তসাপেক্ষ অপারেটরটি ব্যবহার করে:

var someString = null;
var whatIWant = someString ? someString : 'Cookies!';

যা বাছাই আইকি আইএমএইচও। আমি কি আরও ভাল করতে পারি?


30
2018 থেকে নোট: x ?? yসিনট্যাক্স এখন প্রথম পর্যায়ে প্রস্তাবের স্থিতিতে রয়েছে - নালিশ কোয়েলসিং
এপ্রিলিয়ন

2
এখন একটি বাবেল প্লাগইন রয়েছে যা এই সঠিক বাক্য গঠনটি অন্তর্ভুক্ত করে।
জোনাথন সুদিয়ামান

9
2019 এর নোট: এখন 3 ম স্ট্যাটাস!
ড্যানিয়েল শেফার

3
জানুয়ারী 2020 থেকে: নুলিশ কোলেসিং অপারেটর ফায়ারফক্স 72 এ স্থানীয়ভাবে পাওয়া যায় তবে butচ্ছিক চেইনিং অপারেটরটি এখনও নেই not
কির কানোজ

3
নালিশ কোয়েলসিং অপারেটর ( x ?? y) এবং alচ্ছিক চেইনিং অপারেটর ( user.address?.street) এখন উভয় পর্যায়ে 4. এটির অর্থ কী সম্পর্কে এখানে একটি ভাল বর্ণনা এখানে দেওয়া আছে: 2ality.com/2015/11/tc39-process.html#stage-4%3A-finised
গণ ডট নেট

উত্তর:


2132

হালনাগাদ

জাভাস্ক্রিপ্ট এখন নালিশ Coalescing অপারেটর (??) সমর্থন করে । এটি যখন তার বাম-হাতের অপরেন্দ্র হয় nullবা undefinedঅন্যথায় তার বাম-হাতের অপরেন্দ্রটি ফিরিয়ে দেয় right

এটি ব্যবহার করার আগে দয়া করে সামঞ্জস্যতা পরীক্ষা করুন।


সি # নাল কোয়েলসিং অপারেটর ( ??) এর জাভাস্ক্রিপ্ট সমতুল্য একটি লজিক্যাল ওআর ( ||) ব্যবহার করছে :

var whatIWant = someString || "Cookies!";

এমন কেস রয়েছে (নীচে পরিষ্কার করা হয়েছে) যে আচরণটি সি # এর সাথে মেলে না, তবে জাভাস্ক্রিপ্টে এটি ডিফল্ট / বিকল্প মান নির্ধারণের সাধারণ, ক্ষুদ্র উপায়।


শোধন

প্রথম অপারেন্ডের ধরণ নির্বিশেষে, যদি এটি বুলিয়ান ফলাফলের মধ্যে ফেলে দেয় falseতবে অ্যাসাইনমেন্টটি দ্বিতীয় অপারেন্ড ব্যবহার করবে। নীচের সমস্ত মামলা থেকে সাবধান:

alert(Boolean(null)); // false
alert(Boolean(undefined)); // false
alert(Boolean(0)); // false
alert(Boolean("")); // false
alert(Boolean("false")); // true -- gotcha! :)

এর অর্থ:

var whatIWant = null || new ShinyObject(); // is a new shiny object
var whatIWant = undefined || "well defined"; // is "well defined"
var whatIWant = 0 || 42; // is 42
var whatIWant = "" || "a million bucks"; // is "a million bucks"
var whatIWant = "false" || "no way"; // is "false"

48
"মিথ্যা", "অপরিজ্ঞাত", "নাল", "0", "খালি", "মুছে ফেলা" এর মতো স্ট্রিংগুলি সত্যই যেহেতু সেগুলি খালি নেই str
কিছু

4
এটি পরিষ্কার করা দরকার। "" নাল নয়, তবে এটি মিথ্যা বলে বিবেচিত। সুতরাং যদি আপনি শূন্যের জন্য কোনও মান পরীক্ষা করে দেখেন এবং এটি হয়ে যায় তবে এটি সঠিকভাবে এই পরীক্ষায় পাস করবে না।
স্কটকুন

99
লক্ষণীয় বিষয়টি ||হ'ল প্রথম "ট্রুয়ী" মান বা সর্বশেষ "ভুয়া" মান দেয় (যদি কেউ সত্যের সাথে মূল্যায়ন করতে না পারে) এবং &&এটি বিপরীত পথে কাজ করে: শেষ সত্যের মান বা প্রথম মিথ্যাটি ফেরত দেয়।
জাস্টিন জনসন

19
FYI যে কারও কাছে এখনও যত্ন করে না, 0 এবং খালি স্ট্রিংটি নাল হিসাবে সমানভাবে মূল্যায়ন করা হয় যদি আপনি এটির প্রকারের নির্মাতা এটি ঘোষণার জন্য ব্যবহার করেন। var whatIWant = new Number(0) || 42; // is Number {[[PrimitiveValue]]: 0} var whatIWant = new String("") || "a million bucks"; // is String {length: 0, [[PrimitiveValue]]: ""}
কেভিন হাইড

5
লুইস অ্যান্টোনিও পেস্টানা যদি মায়োবজ বা মাইওবিজে.প্রপার্টি মিথ্যা হয় তবে var value = myObj && myObj.property || ''ফিরে ''আসবে।
এটস গোলাল

77
function coalesce() {
    var len = arguments.length;
    for (var i=0; i<len; i++) {
        if (arguments[i] !== null && arguments[i] !== undefined) {
            return arguments[i];
        }
    }
    return null;
}

var xyz = {};
xyz.val = coalesce(null, undefined, xyz.val, 5);

// xyz.val now contains 5

এই সমাধানটি এসকিউএল কোলেসেস ফাংশনের মতো কাজ করে, এটি যে কোনও সংখ্যক যুক্তি গ্রহণ করে এবং তাদের কোনওটিরই মান না থাকলে শূন্য দেয় returns এটি সি # এর মতো আচরণ করে ?? অপারেটর এই অর্থে যে "", মিথ্যা, এবং 0 টি নাল নয় এবং তাই প্রকৃত মান হিসাবে গণ্য। আপনি যদি নেট নেট ব্যাকগ্রাউন্ড থেকে এসে থাকেন তবে এটি সর্বাধিক প্রাকৃতিক অনুভূতির সমাধান হবে।



13
এইরকম দেরী সংযোজনের জন্য ক্ষমাপ্রার্থী, তবে আমি কেবলমাত্র সম্পূর্ণতার জন্য নোট করতে চেয়েছিলাম যে এই সমাধানটির শরীয়ত রয়েছে যে এটির কোনও শর্ট সার্কিট মূল্যায়ন নেই; যদি আপনার আর্গুমেন্ট ফাংশান কল তারপর তারা হবে সব তাদের মূল্য ফিরিয়ে দেওয়া হয়, যা লজিক্যাল বা অপারেটর আচরণ থেকে পৃথক, তাই টুকুনি কিনা নির্বিশেষে মূল্যায়ন করা।
হারাভিক্ক

63

হ্যাঁ, এটি শীঘ্রই আসছে। এখানে প্রস্তাব এবং বাস্তবায়ন স্থিতি দেখুন

দেখে মনে হচ্ছে:

x ?? y

উদাহরণ

const response = {
  settings: {
    nullValue: null,
    height: 400,
    animationDuration: 0,
    headerText: '',
    showSplashScreen: false
  }
};

const undefinedValue = response.settings?.undefinedValue ?? 'some other default'; // result: 'some other default'
const nullValue = response.settings?.nullValue ?? 'some other default'; // result: 'some other default'
const headerText = response.settings?.headerText ?? 'Hello, world!'; // result: ''
const animationDuration = response.settings?.animationDuration ?? 300; // result: 0
const showSplashScreen = response.settings?.showSplashScreen ?? true; // result: false

2
এটি এখন 3 ম পর্যায়ে রয়েছে এবং পরবর্তী টাইপস্ক্রিপ্ট প্রকাশের জন্য পরিকল্পনা করা হয়েছে! github.com/microsoft/TypeScript/issues/26578
lautaro.dragan

1
নালিশ কোয়েলসিং অপারেটর ( x ?? y) এবং alচ্ছিক চেইনিং অপারেটর ( user.address?.street) এখন উভয় পর্যায়ে 4. এটির অর্থ কী সম্পর্কে এখানে একটি ভাল বর্ণনা এখানে দেওয়া আছে: 2ality.com/2015/11/tc39-process.html#stage-4%3A-finised
ম্যাস ডট নেট

45

যদি ||সি # এর প্রতিস্থাপন হিসাবে ??আপনার ক্ষেত্রে যথেষ্ট ভাল না হয়, কারণ এটি খালি স্ট্রিং এবং শূন্যগুলি গ্রাস করে, আপনি সর্বদা আপনার নিজের ফাংশনটি লিখতে পারেন:

 function $N(value, ifnull) {
    if (value === null || value === undefined)
      return ifnull;
    return value;
 }

 var whatIWant = $N(someString, 'Cookies!');

1
সতর্কতা (নাল || '') এখনও একটি খালি স্ট্রিংকে সতর্ক করে, এবং আমি মনে করি যে আমি আসলে এই সতর্কতাটি ('' || 'ব্লাহ') সতর্কতাগুলি খালি স্ট্রিংয়ের চেয়ে পছন্দ করি - তবে জানা ভাল! (+1)
ড্যানিয়েল শ্যাফার

1
আমি মনে করি আমি আসলে কোনও ফাংশন সংজ্ঞায়িত করতে পছন্দ করতে পারি যা ফিরে আসে false(কঠোরভাবে) নাল / অপরিজ্ঞাত এবং trueঅন্যথায় - লজিকাল বা এটি ব্যবহার করে; এটি অনেক নেস্টেড ফাংশন কলগুলির চেয়ে বেশি পঠনযোগ্য হতে পারে। যেমন এর $N(a) || $N(b) || $N(c) || dচেয়ে বেশি পঠনযোগ্য $N($N($N(a, b), c), d)
বব

ব্রেন্ট লারসনের সমাধানটি আরও জেনেরিক
এসিমেলেটার

if .. return .. else ... returnএকটি বার্ষিকীর জন্য নিখুঁত ক্ষেত্রে। return (value === null || value === void 0) ? ifnull : value;
অ্যালেক্স ম্যাকমিলান

15

এখানে কেউ আমার জন্য সম্ভাব্যতার কথা উল্লেখ করেনি NaN, যা আমার কাছে - এটিও একটি নাল - ইশ মান। সুতরাং, আমি ভেবেছিলাম আমি আমার দু'টি সেন্ট যোগ করব।

প্রদত্ত কোডের জন্য:

var a,
    b = null,
    c = parseInt('Not a number'),
    d = 0,
    e = '',
    f = 1
;

আপনি যদি ||অপারেটরটি ব্যবহার করতে চান তবে আপনি প্রথম অ-মিথ্যা মান পাবেন:

var result = a || b || c || d || e || f; // result === 1

আপনি এখানে পোস্ট হিসাবে সাধারণ coalesce পদ্ধতি ব্যবহার করেন , আপনি পাবেন c, যার মান আছে:NaN

var result = coalesce(a,b,c,d,e,f); // result.toString() === 'NaN'

আমরাও এই আমার অধিকার বলে মনে হচ্ছে। আমার নিজস্ব সামান্য যুক্তিযুক্ত যুক্তিতে, যা আপনার জগত থেকে পৃথক হতে পারে, আমি অপরিজ্ঞাত, নাল এবং ন্যানকে সবাই "নাল-ইশ" হিসাবে বিবেচনা করি। সুতরাং, আমি dকোলেসেস পদ্ধতি থেকে ফিরে (শূন্য) প্রত্যাশা করব ।

যদি কারও মস্তিষ্ক আমার মতো কাজ করে এবং আপনি বাদ দিতে চান NaNতবে এই পদ্ধতিটি এটি সম্পাদন করবে:

function coalesce() {
    var i, undefined, arg;

    for( i=0; i < arguments.length; i++ ) {
        arg = arguments[i];
        if( arg !== null && arg !== undefined
            && (typeof arg !== 'number' || arg.toString() !== 'NaN') ) {
            return arg;
        }
    }
    return null;
}

যারা কোডটি যথাসম্ভব সংক্ষিপ্ত আকারে চান এবং স্বচ্ছতার কিছুটা অভাব বোধ করেন না তাদের জন্যও আপনি @ আইফিনবলের পরামর্শ অনুসারে এটি ব্যবহার করতে পারেন। এটি এই তথ্যের সুযোগ নেয় যে NaN কখনই NaN এর সমান হয় না। আপনি এখানে আরও পড়তে পারেন: NaN কেন NaN এর সমান নয়?

function coalesce() {
    var i, arg;

    for( i=0; i < arguments.length; i++ ) {
        arg = arguments[i];
        if( arg != null && arg === arg ) { //arg === arg is false for NaN
            return arg;
        }
    }
    return null;
}

সেরা অনুশীলনগুলি - আর্গুমেন্টগুলিকে অ্যারে-জাতীয় হিসাবে বিবেচনা করুন, NaN এর সুবিধা নিন! == NaN ( typeof+ num.toString() === 'NaN'নিরর্থক), পরিবর্তিত পরিবর্তে চলতি আর্গুমেন্ট সংরক্ষণ করুন arguments[i]
ইসিয়াহ মেডো

@ আইপিনবুল, আপনার প্রস্তাবিত সম্পাদনাটি কাজ করে না, এটি আমার পরীক্ষার কেস থেকে 0 (শূন্য) এর পরিবর্তে NaN প্রদান করে। আমি প্রযুক্তিগতভাবে !== 'number'চেকটি অপসারণ করতে পারলাম যেহেতু আমি ইতিমধ্যে মূল্যায়ন করেছি যে এটি না nullবা এটি নয় undefinedতবে এই কোডটি পড়ার জন্য কারও কাছে খুব স্পষ্ট হওয়ার সুবিধা রয়েছে এবং শর্তটি নির্বিশেষে কাজ করবে। আপনার অন্যান্য পরামর্শগুলি কোডটি কিছুটা ছোট করে দেয়, তাই আমি সেগুলি ব্যবহার করব।
কেভিন নেলসন

2
@ আইপিনবল, আমি আপনার প্রস্তাবিত সম্পাদনায় আপনার বাগটি পেয়েছি, আপনি এটি হিসাবে রেখে গেছেন arg !== arg, তবে এটি আপনার হওয়া দরকার arg === arg... তবে এটি কার্যকর হয়। তবে, আপনি কী করছেন তা সম্পর্কে খুব অস্পষ্ট হওয়ার অসুবিধা হ'ল ... পরবর্তী ব্যক্তির দ্বারা এই কোডটি পড়ে এবং arg === argঅপ্রয়োজনীয় মনে করে অপসারণ করা রোধ করতে কোডে মন্তব্য করতে হবে ... তবে আমি এটিকে প্রকাশ করব যাহাই হউক না কেন।
কেভিন নেলসন

ভালো বল ধরা. এবং যাইহোক, এটি NAN সত্যের সুবিধা গ্রহণের জন্য NaNs চেক করার একটি দ্রুত উপায় = আপনি যদি চান, আপনি এটি ব্যাখ্যা করতে পারেন।
ইসিয়া মিডোস

1
"একটি সংখ্যা নয়" এর জন্য চেকটি একটি অন্তর্নির্মিত ফাংশন দিয়ে প্রতিস্থাপন করা যেতে পারে: isNaN ()
ইউরি কোজলভ

5

নাল সম্পর্কিত জাভাস্ক্রিপ্ট নির্দিষ্ট সংজ্ঞা সাবধান। জাভাস্ক্রিপ্টে "কোনও মূল্য নেই" এর জন্য দুটি সংজ্ঞা রয়েছে। 1. নাল: যখন কোনও ভেরিয়েবল নাল হয়, এর অর্থ এটিতে কোনও ডেটা থাকে না তবে ভেরিয়েবলটি ইতিমধ্যে কোডে সংজ্ঞায়িত হয়। এটার মত:

var myEmptyValue = 1;
myEmptyValue = null;
if ( myEmptyValue === null ) { window.alert('it is null'); }
// alerts

সেক্ষেত্রে আপনার ভেরিয়েবলের ধরণটি আসলে অবজেক্ট। এটা পরীক্ষা করো.

window.alert(typeof myEmptyValue); // prints Object
  1. অপরিবর্তিত: যখন কোনও ভেরিয়েবলের কোডের আগে সংজ্ঞা দেওয়া হয়নি, এবং যেমনটি প্রত্যাশা করা হয়েছে, তখন এর কোনও মান থাকে না। এটার মত:

    if ( myUndefinedValue === undefined ) { window.alert('it is undefined'); }
    // alerts

যদি এরকম হয় তবে আপনার ভেরিয়েবলের ধরণটি 'অপরিজ্ঞাত'।

লক্ষ্য করুন যে আপনি টাইপ-রূপান্তরকারী তুলনা অপারেটর (==) ব্যবহার করলে জাভাস্ক্রিপ্ট এই দুটি খালি-মানের জন্য সমানভাবে কাজ করবে। তাদের মধ্যে পার্থক্য করতে, সর্বদা টাইপ-কঠোর তুলনা অপারেটর (===) ব্যবহার করুন।


1
আসলে, নাল একটি মান। এটি অবজেক্ট টাইপের একটি বিশেষ মান। একটি পরিবর্তনশীল নাল সেট করা মানে এর মধ্যে এটিতে ডেটা থাকে, ডেটা নাল বস্তুর একটি রেফারেন্স। একটি ভেরিয়েবল আপনার কোডে অপরিবর্তিত মান দিয়ে সংজ্ঞায়িত করা যেতে পারে। এটি ভেরিয়েবল ঘোষিত না হওয়ার মতো নয়।
এটস গোলাল

কোনও ভেরিয়েবল ঘোষিত বা না হওয়ার মধ্যে প্রকৃত পার্থক্য: সতর্কতা (উইন্ডো.স্টেস্ট) / * অপরিজ্ঞাত * /; সতর্কতা (উইন্ডোতে "পরীক্ষা") / * মিথ্যা * /; উইন্ডো.স্টেস্ট = অপরিবর্তিত; সতর্কতা (window.test) / * অনির্ধারিত * /; সতর্কতা (উইন্ডোতে "পরীক্ষা") / * সত্য * /; (উইন্ডোতে var পি) জন্য {/ * পি "পরীক্ষা" * /} হতে পারে
এটেস গোলাল

1
তবে (একটু paradoxal) আপনি পারবেন সংজ্ঞায়িত সঙ্গে একটি পরিবর্তনশীল অনির্ধারিত মানvar u = undefined;
সার্জ

পুনঃটুইট করেছেন আপনি যা বলেছেন তা সত্য, যদিও কনভেনশন অনুসারে , "নাল" "(দরকারী) ডেটার অনুপস্থিতি " উপস্থাপন করে । অতএব এটি "ডেটা নেই" হিসাবে বিবেচিত হয়। এবং এটি ভুলে যাবেন না যে এটি "একটি নাল কোলেসিং অপারেটর" সম্পর্কে একটি প্রশ্নের উত্তর; এই প্রসঙ্গে, নালটিকে অবশ্যই "কোনও তথ্য নয়" হিসাবে বিবেচনা করা হবে - এটি অভ্যন্তরীণভাবে কীভাবে উপস্থাপিত হয় তা নির্বিশেষে।
টুলমেকারস্টেভ

4

আপনার স্পষ্টতা পড়ার পরে, @ এটস গোরালের উত্তরটি জাভাস্ক্রিপ্টে আপনি সি # তে যা করছেন একই ক্রিয়াকলাপটি কীভাবে সম্পাদন করবেন তা সরবরাহ করে।

@ গম্বোর উত্তরটি শূন্যতার জন্য যাচাই করার সর্বোত্তম উপায় সরবরাহ করে; তবে, জাভাস্ক্রিপ্টের ==তুলনায় পার্থক্যটি লক্ষ করা গুরুত্বপূর্ণ, বিশেষত যখন এটি পরীক্ষা করার জন্য এবং / অথবা এর ক্ষেত্রে আসে===undefinednull

দুটি পদ পার্থক্য সম্পর্কে একটি সত্যিই ভাল নিবন্ধের এখানে । মূলত, বুঝতে পারুন যে আপনি যদি এর ==পরিবর্তে ব্যবহার করেন তবে ===জাভাস্ক্রিপ্ট আপনার যে মূল্যবোধগুলি তুলনা করছেন তা একত্রিত করার চেষ্টা করবে এবং এই মিলনের পরে তুলনার ফল কী হবে তা ফিরিয়ে দেবে ।


সেই নিবন্ধটি (এবং জ্যাশ) সম্পর্কে আমাকে যে জিনিসগুলি জিজ্ঞাসা করেছিল তা হ'ল একটি অনির্ধারিত উইন্ডো heহেলো সম্পত্তি কোনও কারণে বাতিল হয়ে যায়। পরিবর্তে এটি অপরিজ্ঞাত করা উচিত। এটি ফায়ারফক্স ত্রুটি কনসোল ব্যবহার করে দেখুন এবং নিজের জন্য দেখুন।
এটেস গোলাল

3

নোট করুন যে রিএ্যাক্টের create-react-appসরঞ্জাম-চেইন সংস্করণ 3.3.0 (5.12.2019 প্রকাশিত হয়েছে) থেকে নাল- কোলেসিংকে সমর্থন করে । প্রকাশের নোটগুলি থেকে:

Ptionচ্ছিক চেইনিং এবং নুলিশ কোলেসিং অপারেটর

আমরা এখন alচ্ছিক শৃঙ্খলা এবং নালিশ coalescing অপারেটর সমর্থন!

// Optional chaining
a?.(); // undefined if `a` is null/undefined
b?.c; // undefined if `b` is null/undefined

// Nullish coalescing
undefined ?? 'some other default'; // result: 'some other default'
null ?? 'some other default'; // result: 'some other default'
'' ?? 'some other default'; // result: ''
0 ?? 300; // result: 0
false ?? true; // result: false

এটি বলেছে, আপনি যদি create-react-app3.3.0+ ব্যবহার করেন তবে আপনি আজই আপনার প্রতিক্রিয়া অ্যাপ্লিকেশনগুলিতে নাল-কোলেস অপারেটরটি ব্যবহার শুরু করতে পারেন।


3

হ্যাঁ, এবং এর প্রস্তাব এখন স্টেজ 4 । এর অর্থ হ'ল প্রস্তাবটি আনুষ্ঠানিক ECMAScript মান অন্তর্ভুক্ত করার জন্য প্রস্তুত। আপনি এটি ক্রোম, এজ এবং ফায়ারফক্সের সাম্প্রতিক ডেস্কটপ সংস্করণগুলিতে ইতিমধ্যে ব্যবহার করতে পারেন তবে এই বৈশিষ্ট্যটি ক্রস ব্রাউজারের স্থায়িত্ব না পাওয়া পর্যন্ত আমাদের আরও কিছুক্ষণ অপেক্ষা করতে হবে।

এর আচরণটি প্রদর্শনের জন্য নীচের উদাহরণটি দেখুন:

// note: this will work only if you're running latest versions of aforementioned browsers
const var1 = undefined;
const var2 = "fallback value";

const result = var1 ?? var2;
console.log(`Nullish coalescing results in: ${result}`);

পূর্ববর্তী উদাহরণ এর সমতুল্য:

const var1 = undefined;
const var2 = "fallback value";

const result = (var1 !== null && var1 !== undefined) ?
    var1 :
    var2;
console.log(`Nullish coalescing results in: ${result}`);

নোট করুন যে নালিশ কোয়েলেসিং অপারেটরটি যেভাবে মিথ্যা মূল্যবোধকে হুমকির সম্মুখীন করবে না (এটি কেবলমাত্র এটির জন্য বা এটির জন্য মূল্যায়ন করে), সুতরাং নিম্নলিখিত স্নিপেট নিম্নলিখিত হিসাবে কাজ করবে:||undefinednull

// note: this will work only if you're running latest versions of aforementioned browsers
const var1 = ""; // empty string
const var2 = "fallback value";

const result = var1 ?? var2;
console.log(`Nullish coalescing results in: ${result}`);


টাইপসক্রিপ্ট ব্যবহারকারীদের জন্য, টাইপস্ক্রিপ্ট ৩.7 থেকে শুরু করে , এই বৈশিষ্ট্যটি এখন উপলব্ধ।


2

আশা করা যায় এটি জাভাস্ক্রিপ্টে শীঘ্রই উপলভ্য হবে, যেমন এটি এপ্রিল, ২০২০-এর প্রস্তাব পর্যায়ে রয়েছে comp আপনি এখানে সামঞ্জস্যতা এবং সহায়তার জন্য অবস্থানটি পর্যবেক্ষণ করতে পারেন - https://developer.mozilla.org/en-US/docs/Web/ জাভাস্ক্রিপ্ট / রেফারেন্স / অপারেটর / Nullish_coalescing_operator

টাইপস্ক্রিপ্ট ব্যবহারকারী লোকদের জন্য, আপনি টাইপস্ক্রিপ্ট ৩.7 থেকে নালিশ কোয়েলসিং অপারেটরটি ব্যবহার করতে পারেন

ডক্স থেকে -

এই বৈশিষ্ট্যটি মনে করতে পারেন - ??অপারেটর - হিসাবে "পতনের পিছনে" একটি ডিফল্ট মানে একটি উপায় যখন তার আচরণ nullবা undefined। আমরা যখন কোড লিখি

let x = foo ?? bar();

এটি বলার একটি নতুন উপায় যা মানটি foo"উপস্থিত" থাকাকালীন ব্যবহৃত হবে; তবে যখন এটি nullবা এটির জায়গায় undefinedগণনা করুন bar()


0

ঠিক আছে একটি সঠিক উত্তর

এটি কি জাভাস্ক্রিপ্টে বিদ্যমান? হ্যাঁ এটা করে. কিন্তু। এটি বর্তমানে হিসাবে এর 2020-02-06পর্যায় 3 এবং এখনো সর্বত্র সমর্থিত নয়।নীচে ইউআরএল লিঙ্কটি অনুসরণ করুন এবং এটি কোথায় রয়েছে সে সম্পর্কে আরও তথ্যের জন্য "বিশেষ উল্লেখ" এবং "ব্রাউজারের সামঞ্জস্যতা" শিরোনামে যান।

থেকে উদ্ধৃতি: https://developer.mozilla.org/en-US/docs/Web/ জাভা স্ক্রিপ্ট / রেফারেন্স / অপারেটর / নালিশ_কোলেসিং_অপারেটর

নালিশ Coalescing অপারেটর (??) একটি লজিকাল অপারেটর যা তার ডান হাতের অপারেন্ডটি বাম-হাতের অপারেন্ডটি নাল বা অপরিজ্ঞাতকৃত অবস্থায় ফিরিয়ে দেয় এবং অন্যথায় তার বাম হাতের অপারেন্ডটি দেয়।

লজিক্যাল ওআর (||) অপারেটরের বিপরীতে, যদি এটি মিথ্যা মান হয় যা শূন্য বা অপরিজ্ঞাত নয়, বাম অপারেন্ডটি ফিরে আসে। অন্য কথায়, আপনি যদি ব্যবহার করেন || অন্য ভেরিয়েবল ফু-কে কিছু ডিফল্ট মান সরবরাহ করতে আপনি কিছু মিথ্যা মানগুলি ব্যবহারযোগ্য হিসাবে বিবেচনা করলে (যেমন '' 'বা 0) আপনি অপ্রত্যাশিত আচরণের মুখোমুখি হতে পারেন। আরও উদাহরণের জন্য নীচে দেখুন।

উদাহরণ চান? আমি পোস্ট করা লিঙ্কটি অনুসরণ করুন, এতে সমস্ত কিছু রয়েছে।



এমডিএন লিঙ্কটি সহায়ক তবে এটি একটি সদৃশ উত্তর। পরিবর্তে আপনার ভন এর উত্তরে মন্তব্য করা উচিত।
ক্রিস

@ ক্রিস তাঁর উত্তরটি যথেষ্ট নয়, তাই আমার উত্তর।
কার্ল মরিসন

0

এখন এটির ক্রোম, এজ, ফায়ারফক্স, সাফারি ইত্যাদির মতো বড় ব্রাউজারগুলির সর্বশেষ সংস্করণে সম্পূর্ণ সমর্থন রয়েছে এখানে নাল অপারেটর এবং নুলিশ কোলেসিং অপারেটরের মধ্যে তুলনা করা হয়েছে's

const response = {
        settings: {
            nullValue: null,
            height: 400,
            animationDuration: 0,
            headerText: '',
            showSplashScreen: false
        }
    };
    /* OR Operator */
    const undefinedValue = response.settings.undefinedValue || 'Default Value'; // 'Default Value'
    const nullValue = response.settings.nullValue || 'Default Value'; // 'Default Value'
    const headerText = response.settings.headerText || 'Hello, world!'; //  'Hello, world!'
    const animationDuration = response.settings.animationDuration || 300; //  300
    const showSplashScreen = response.settings.showSplashScreen || true; //  true
    /* Nullish Coalescing Operator */
    const undefinedValue = response.settings.undefinedValue ?? 'Default Value'; // 'Default Value'
    const nullValue = response.settings.nullValue ?? ''Default Value'; // 'Default Value'
    const headerText = response.settings.headerText ?? 'Hello, world!'; // ''
    const animationDuration = response.settings.animationDuration ?? 300; // 0
    const showSplashScreen = response.settings.showSplashScreen ?? true; //  false
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.