কেন জাভাস্ক্রিপ্ট null
একটি বিবেচনা করা object
হয়?
চেক করছে
if ( object == null )
Do something
হিসাবে একই
if ( !object )
Do something
?
এবং আরো:
মধ্যে পার্থক্য কি null
এবং undefined
?
কেন জাভাস্ক্রিপ্ট null
একটি বিবেচনা করা object
হয়?
চেক করছে
if ( object == null )
Do something
হিসাবে একই
if ( !object )
Do something
?
এবং আরো:
মধ্যে পার্থক্য কি null
এবং undefined
?
উত্তর:
(name is undefined)
তুমি: কি name
? (*)
Javascript: name
? কি name
? আমি জানি না আপনি কী বিষয়ে কথা বলছেন। আপনি এর name
আগে কখনও উল্লেখ করেন নি। আপনি কি (ক্লায়েন্ট-) পাশের কিছু অন্যান্য স্ক্রিপ্টিং ভাষা দেখছেন?
name = null;
তুমি: কি name
?
জাভাস্ক্রিপ্ট: আমি জানি না।
সংক্ষেপে; undefined
জিনিসটির কোন ধারণা বিদ্যমান নেই; এটির কোনও প্রকার নেই, এবং এর আগে আগে কখনও তা উল্লেখ করা হয়নি; null
জিনিসটি অস্তিত্বের জন্য পরিচিত, তবে মানটি কী তা তা জানা যায়নি।
একটা জিনিষ মনে রাখা যে null
, যেমন একই, নয় ধারণার দিক থেকে false
বা ""
বা এই ধরনের, এমনকি যদি তারা টাইপ ঢালাই, অর্থাত্ পর সমার্থক
name = false;
তুমি: কি name
?
জাভাস্ক্রিপ্ট: বুলিয়ান মিথ্যা।
name = '';
তুমি: কি name
?
জাভাস্ক্রিপ্ট: খালি স্ট্রিং
*: name
এই প্রসঙ্গে একটি পরিবর্তনশীল হিসাবে বোঝানো হয় যা কখনও সংজ্ঞায়িত হয় নি। এটি কোনও অপরিবর্তিত ভেরিয়েবল হতে পারে, তবে নামটি প্রায় কোনও এইচটিএমএল ফর্ম উপাদানগুলির সম্পত্তি। এটি পথে ফিরে যায় এবং আইডির আগে ভাল প্রতিষ্ঠিত হয়েছিল। এটি কার্যকর কারণ আইডস অবশ্যই অনন্য হতে পারে তবে নাম থাকতে হবে না।
null
"কিছুই না" বলব । নাল নির্ভুলভাবে কোনও মান হিসাবে সংজ্ঞায়িত করা হয়। শূন্য, শূন্য, নদা। কিছুই নেই।
name
আগে কখনও কোনও উল্লেখ করেননি " সত্য। যাইহোক, এটির ( var somevar;
) মূল্য নির্ধারিত না করে ভেরিয়েবল ঘোষণার ফলে অবাক হওয়ার মতো অবাক হতে পারে undefined
।
পার্থক্যটি এই স্নিপেটে সংক্ষিপ্ত করা যেতে পারে:
alert(typeof(null)); // object
alert(typeof(undefined)); // undefined
alert(null !== undefined) //true
alert(null == undefined) //true
পরীক্ষা করা হচ্ছে
object == null
চেক করা পৃথক if ( !object )
।
পরেরটি সমান ! Boolean(object)
, কারণ অ্যানারি !
অপারেটর স্বয়ংক্রিয়ভাবে ডান অপারেণ্ডকে একটি বুলিয়ানে ফেলে দেয়।
যেহেতু Boolean(null)
তখন মিথ্যা সমান !false === true
।
তাই আপনি যদি আপনার অবজেক্ট নাল না , কিন্তু মিথ্যা বা 0 বা "" চেক কারণ পাস হবে:
alert(Boolean(null)) //false
alert(Boolean(0)) //false
alert(Boolean("")) //false
String(null)
কাস্টিংয়ের আরও একটি উদাহরণ দেখার চেষ্টা করুন । আপনি এমনকি মূর্খ জিনিসগুলি করতে পারেন Number(null + 2)
... তবে আপনার উচিত নয় :-)। কেন্তারোমিউরা থেকে দুর্দান্ত উত্তর
typeof
একজন অপারেটর। আপনি যে কারণে লিখবেন না সেই কারণেই আপনি প্রথম বন্ধনীতে অপারেন্ডটি মোড়বেন না var sum = 1 +(1);
।
null
এটি কোনও বস্তু নয় , এটি একটি আদিম মান । উদাহরণস্বরূপ, আপনি এটিতে বৈশিষ্ট্য যুক্ত করতে পারবেন না। কখনও কখনও লোকেরা ভুলভাবে ধরে নেয় যে এটি একটি বস্তু, কারণ typeof null
ফিরে আসে "object"
। তবে এটি আসলে একটি বাগ (এটি এমনকি ECMAScript 6 এ সংশোধন করা যেতে পারে)।
null
এবং এর মধ্যে পার্থক্য undefined
নিম্নরূপ:
undefined
: জাভাস্ক্রিপ্ট দ্বারা ব্যবহৃত এবং এর অর্থ "কোনও মূল্য নেই"। একীকরণবিহীন ভেরিয়েবল, অনুপস্থিত পরামিতি এবং অজানা ভেরিয়েবলের সেই মান রয়েছে।
> var noValueYet;
> console.log(noValueYet);
undefined
> function foo(x) { console.log(x) }
> foo()
undefined
> var obj = {};
> console.log(obj.unknownProperty)
undefined
অজানা ভেরিয়েবল অ্যাক্সেস একটি ব্যতিক্রম উত্পাদন করে:
> unknownVariable
ReferenceError: unknownVariable is not defined
null
: প্রোগ্রামাররা "কোনও মূল্য নেই", উদাহরণস্বরূপ কোনও ফাংশনের প্যারামিটার হিসাবে চিহ্নিত করতে ব্যবহার করে।
একটি ভেরিয়েবল পরীক্ষা করা:
console.log(typeof unknownVariable === "undefined"); // true
var foo;
console.log(typeof foo === "undefined"); // true
console.log(foo === undefined); // true
var bar = null;
console.log(bar === null); // true
একটি সাধারণ নিয়ম হিসাবে আপনার জাভাস্ক্রিপ্টে সর্বদা === এবং কখনই == ব্যবহার করা উচিত (== সমস্ত ধরণের রূপান্তর সম্পাদন করে যা অপ্রত্যাশিত ফলাফল আনতে পারে)। চেক x == null
, একটি প্রান্ত ক্ষেত্রে দেখা যায়, কারণ এটি উভয়ের জন্য কাজ করে null
এবং undefined
:
> null == null
true
> undefined == null
true
কোনও ভেরিয়েবলের মান রয়েছে কিনা তা যাচাইয়ের একটি সাধারণ উপায় হ'ল এটিকে বুলেয়ানে রূপান্তর করা এবং এটি কিনা তা দেখুন true
। এই রূপান্তরটি if
বিবৃতি এবং বুলেট অপারেটর দ্বারা সম্পাদিত হয় ! ("না").
function foo(param) {
if (param) {
// ...
}
}
function foo(param) {
if (! param) param = "abc";
}
function foo(param) {
// || returns first operand that can't be converted to false
param = param || "abc";
}
এই পদ্ধতির ত্রুটি: নিম্নলিখিত সমস্ত মানগুলি মূল্যায়ন করে false
, তাই আপনাকে সতর্কতা অবলম্বন করতে হবে (উদাহরণস্বরূপ, উপরের চেকগুলি undefined
এবং এর মধ্যে পার্থক্য করতে পারে না 0
)।
undefined
, null
false
+0
, -0
,NaN
""
আপনি Boolean
কোনও ফাংশন হিসাবে ব্যবহার করে বুলেয়ান রূপান্তরটি পরীক্ষা করতে পারেন (সাধারণত এটি ব্যবহারকারীর সাথে ব্যবহার করা হয় new
):
> Boolean(null)
false
> Boolean("")
false
> Boolean(3-3)
false
> Boolean({})
true
> Boolean([])
true
+0
এবং -0
পৃথকভাবে যদি +0 === -0
?
+0
এবং -0
: 1/+0 !== 1/-0
।
নাল এবং অপরিজ্ঞাত মধ্যে পার্থক্য কি ??
কোনও সম্পত্তি যখন এর কোনও সংজ্ঞা থাকে না, তা সংজ্ঞায়িত হয়। নাল একটি বস্তু। এর ধরণটি অবজেক্ট। নাল একটি বিশেষ মান যার অর্থ "কোন মূল্য নেই ef
আপনি একটি ভেরিয়েবল ঘোষণা করতে পারেন, এটিকে শূন্যতে সেট করতে পারেন এবং আচরণটি অভিন্ন হিসাবে আপনি "নাল" মুদ্রিত বনাম "অপরিজ্ঞাত" দেখতে পাবেন। আপনি এমন কোনও পরিবর্তনশীলকেও তুলনা করতে পারবেন যা শূন্য বা বিপরীতে সংজ্ঞায়িত এবং শর্তটি সত্য হবে:
undefined == null
null == undefined
আরও বিশদ জন্য জাভাস্ক্রিপ্ট পার্থক্য দেখুন নাল এবং অপরিবর্তিত ।
এবং আপনার নতুন সম্পাদনা হ্যাঁ
if (object == null) does mean the same if(!object)
বস্তুটি মিথ্যা কিনা তা পরীক্ষা করার সময়, উভয়ই কেবল মিথ্যা হিসাবে পরীক্ষা করার সময় শর্তটি পূরণ করে , তবে সত্য না হলে
এখানে চেক করুন: জাভাস্ক্রিপ্ট গেটচা
null
কোন বস্তু নয়। এটি typeof null == 'object';
সত্য প্রত্যাবর্তন জাভাস্ক্রিপ্টে স্থির করা যায় না এমন বাগের কারণে (বর্তমানে, তবে ভবিষ্যতে পরিবর্তিত হতে পারে)।
প্রশ্নের প্রথম অংশ:
কেন নালকে জাভাস্ক্রিপ্টে একটি বস্তু হিসাবে বিবেচনা করা হয়?
এটি একটি জাভাস্ক্রিপ্ট ডিজাইনের ত্রুটি যা তারা এখনই ঠিক করতে পারে না। এটি টাইপ নাল হওয়া উচিত ছিল, অবজেক্ট টাইপ করা উচিত ছিল না, বা এটি মোটেও নেই। সত্যিকারের বস্তুগুলি সনাক্ত করার সময় এটি অতিরিক্ত চেকের প্রয়োজন হয় (কখনও কখনও ভুলে যায়) এবং এটি বাগের উত্স।
প্রশ্নের দ্বিতীয় অংশ:
if (object == null)
Do something
হিসাবে একই পরীক্ষা করা হয়
if (!object)
Do something
দুটি চেক সর্বদা উভয়ই মিথ্যা থাকে ব্যতীত:
অবজেক্টটি অপরিজ্ঞাত বা নাল: উভয়ই সত্য।
অবজেক্টটি আদিম, এবং 0, ""
বা মিথ্যা: প্রথমে মিথ্যা, দ্বিতীয় সত্যটি পরীক্ষা করুন।
বস্তুর একটি আদিম নয়, কিন্তু একটি বাস্তব বস্তু, যদি চান তাহলে new Number(0)
, new String("")
বা new Boolean(false)
, তারপর উভয় চেক মিথ্যা।
সুতরাং যদি 'অবজেক্ট' এর অর্থ একটি আসল অবজেক্ট হিসাবে বোঝানো হয় তবে উভয় চেক সবসময় একই থাকে। যদি আদিমদের অনুমতি দেওয়া হয় তবে চেকগুলি 0 ""
, এবং মিথ্যা হিসাবে পৃথক।
যেমন ক্ষেত্রে object==null
, অদ্বিতীয় ফলাফলগুলি বাগের উত্স হতে পারে। ব্যবহারের ==
পরামর্শ দেওয়া হয় না, ===
পরিবর্তে ব্যবহার করুন।
প্রশ্নের তৃতীয় অংশ:
এবং এছাড়াও:
নাল এবং অপরিজ্ঞাত মধ্যে পার্থক্য কি?
জাভাস্ক্রিপ্টে, একটি পার্থক্য হ'ল নাল টাইপ অবজেক্টের এবং অপরিজ্ঞাত টাইপ অপরিজ্ঞাত ined
জাভাস্ক্রিপ্টে, null==undefined
এটি সত্য এবং টাইপ উপেক্ষা করা হলে সমান বলে বিবেচিত হবে। কেন তারা সিদ্ধান্ত নিয়েছে তবে 0, ""
এবং মিথ্যা সমান নয়, আমি জানি না। এটি একটি নির্বিচার মতামত বলে মনে হচ্ছে।
জাভাস্ক্রিপ্টে, null===undefined
টাইপটি একই রকম হওয়া উচিত বলে এটি সত্য নয় ===
।
বাস্তবে, নাল এবং অপরিজ্ঞাত অভিন্ন, যেহেতু তারা উভয়ই অস্তিত্বের প্রতিনিধিত্ব করে। সুতরাং 0 করুন, এবং ""
সেই বিষয়েও এবং সম্ভবত খালি পাত্রে []
এবং {}
। একই ধরণের অনেক ধরণের জিনিস বাগগুলির জন্য একটি রেসিপি। এক প্রকার বা কিছুই মোটেই ভাল নয়। আমি যতটা সম্ভব ব্যবহার করার চেষ্টা করব।
'মিথ্যা', 'সত্য', এবং '!' কীটগুলির আরও একটি ব্যাগ যা সরল করা যেতে পারে, উদাহরণস্বরূপ, if(!x)
এবং if(x)
একা যথেষ্ট, আপনার সত্য এবং মিথ্যা দরকার নেই।
কোনও ঘোষিত var x
হ'ল টাইপ অপরিজ্ঞাত যদি কোনও মান না দেওয়া হয় তবে এটি এমন হওয়া উচিত যেন x কখনই ঘোষণা করা হয়নি। অন্য একটি বাগ উত্স খালি কিছুই ধারক। সুতরাং এটির ঘোষণা এবং সংজ্ঞা দেওয়া ভাল, পছন্দ করুন var x=1
।
লোকেরা চেনাশোনাগুলিতে ঘুরে বেড়াচ্ছে এই সমস্ত বিভিন্ন ধরণের কিছুই আবিষ্কার করার চেষ্টা করছে না, তবে জটিল বিভিন্ন পোশাকের মধ্যে এটি কেবল একই জিনিস। বাস্তবতা হচ্ছে
undefined===undeclared===null===0===""===[]==={}===nothing
এবং সম্ভবত সবার ব্যতিক্রম ছুঁড়ে ফেলা উচিত।
[]
বোধগম্যভাবে একটি .push()
ফাংশন রয়েছে , সুতরাং [] নাল হওয়ার পক্ষে কোনও ভাল যুক্তি নেই। $ 0.02।
var x = null;
x নাল হিসাবে সংজ্ঞায়িত করা হয়
y সংজ্ঞায়িত হয় না; // কারণ আমি এটি সংজ্ঞায়িত করি নি
if (!x)
নালকে মিথ্যা হিসাবে মূল্যায়ন করা হয়
নাল এবং অপরিজ্ঞাত বোধ করার একটি উপায় হ'ল প্রতিটি কোথায় ঘটে তা বোঝা।
নিম্নলিখিত পরিস্থিতিতে একটি নাল প্রত্যাবর্তন মান আশা করুন:
পদ্ধতিগুলি যা ডিওএমকে জিজ্ঞাসা করে
console.log(window.document.getElementById("nonExistentElement"));
//Prints: null
একটি অ্যাজাক্স অনুরোধ থেকে জেএসএন প্রতিক্রিয়া পেয়েছে
{
name: "Bob",
address: null
}
নতুন কার্যকারিতা যা প্রবাহের অবস্থায় রয়েছে। নিম্নলিখিত রিটার্নগুলি নাল:
var proto = Object.getPrototypeOf(Object.getPrototypeOf({}));
// But this returns undefined:
Object.getOwnPropertyDescriptor({}, "a");
অ-অস্তিত্বের অন্যান্য সমস্ত ক্ষেত্রে অপরিবর্তিত (@ অ্যাক্সেল দ্বারা উল্লিখিত) দ্বারা চিহ্নিত করা হয়। নিম্নলিখিত প্রতিটি মুদ্রণ "অপরিজ্ঞাত":
var uninitalised;
console.log(uninitalised);
var obj = {};
console.log(obj.nonExistent);
function missingParam(missing){
console.log(missing);
}
missingParam();
var arr = [];
console.log(arr.pop());
অবশ্যই যদি আপনি var ইউনিটিয়ালাইজড = নাল লেখার সিদ্ধান্ত নেন; অথবা কোনও পদ্ধতি থেকে নিজেই নালায় ফিরে আসুন তবে আপনার অন্যান্য পরিস্থিতিতেও নালার ঘটনা ঘটবে। তবে এটি বেশ সুস্পষ্ট হওয়া উচিত।
তৃতীয় কেসটি হ'ল আপনি যখন কোনও ভেরিয়েবল অ্যাক্সেস করতে চান তবে এটি ঘোষণা করা হয়েছে কিনা তা আপনি জানেন না। সেক্ষেত্রে একটি রেফারেন্স ত্রুটি এড়াতে টাইপ অফ ব্যবহার করুন:
if(typeof unknown !== "undefined"){
//use unknown
}
আপনি যখন ডিওএম নিয়ে চালাচ্ছেন, অ্যাজাক্সের সাথে লেনদেন করছেন, বা নির্দিষ্ট কিছু ECMAScript 5 বৈশিষ্ট্য ব্যবহার করছেন তখন সংক্ষিপ্তসার পরীক্ষা করুন। অন্যান্য সমস্ত ক্ষেত্রে কঠোর সাম্যের সাথে অপরিজ্ঞাত জন্য পরীক্ষা করা নিরাপদ:
if(value === undefined){
// stuff
}
জাভাস্ক্রিপ্টে অনেকগুলি নাল চেকের তুলনা:
http://jsfiddle.net/aaronhoffman/DdRHB/5/
// Variables to test
var myNull = null;
var myObject = {};
var myStringEmpty = "";
var myStringWhiteSpace = " ";
var myStringHello = "hello";
var myIntZero = 0;
var myIntOne = 1;
var myBoolTrue = true;
var myBoolFalse = false;
var myUndefined;
...trim...
http://aaron-hoffman.blogspot.com/2013/04/javascript-null-checking-undefined-and.html
নাল এবং অপরিজ্ঞাত উভয়ই মান সমতার জন্য মিথ্যা (নাল == অপরিবর্তিত): তারা উভয়ই বুলিয়ান মিথ্যাতে পতিত হয়। এগুলি একই জিনিস নয় (নাল! == অপরিবর্তিত)।
অপরিবর্তিত বিশ্বব্যাপী অবজেক্ট (ব্রাউজারগুলিতে "উইন্ডো") এর সম্পত্তি, তবে এটি একটি আদিম ধরণের এবং নিজেই কোনও বস্তু নয়। এটি রিটার্নের স্টেটমেন্ট ছাড়াই অবিচ্ছিন্ন ভেরিয়েবল এবং ফাংশনগুলির জন্য ডিফল্ট মান।
নাল হ'ল অবজেক্টের উদাহরণ। নালটি ডিওএম পদ্ধতিগুলির জন্য ব্যবহৃত হয় যা সংগ্রহের অবজেক্টগুলি খালি ফলাফল নির্দেশ করার জন্য ফিরিয়ে দেয়, যা কোনও ত্রুটি নির্দেশ না করে একটি মিথ্যা মান সরবরাহ করে।
কিছু নির্ভুলতা:
নাল ও অনির্ধারিত হয় দুটি ভিন্ন মান। একটি হ'ল নামের জন্য একটি অনুপস্থিতির প্রতিনিধিত্ব করছে এবং অন্যটি নামের অনুপস্থিতির প্রতিনিধিত্ব করছে।
if
নিম্নরূপে যা ঘটে তা নিম্নরূপ if( o )
:
প্রথম বন্ধনী ণ মত প্রকাশের মূল্যায়ন করা হয়, এবং তারপর if
টাইপ-উপর চাপ বন্ধনীর মধ্যে মত প্রকাশের মান কিক - আমাদের ক্ষেত্রে o
।
জাভাস্ক্রিপ্ট মধ্যে Falsy (যে মিথ্যাতে বাধ্য পাবেন) মান হল: '', নাল, অনির্দিষ্ট, 0, এবং মিথ্যা ।
এই পৃষ্ঠায় জাভাস্ক্রিপ্ট সংজ্ঞা গাইড 6th ষ্ঠ সংস্করণ থেকে এবং এর মধ্যে স্বতন্ত্রতা কী তাundefined
null
উত্তর যুক্ত করতে :
আপনি
undefined
সিস্টেম-স্তর, অপ্রত্যাশিত, বা ত্রুটির মতো মানের অনুপস্থিতিকেnull
উপস্থাপন এবং প্রোগ্রাম-স্তর, সাধারণ বা প্রত্যাশিত মানের প্রতিনিধিত্ব করতে বিবেচনা করতে পারেন । আপনার যদি কোনও ভেরিয়েবল বা সম্পত্তিতে এই মানগুলির একটি নির্ধারণ করতে হয় বা এই কোনও মানকে কোনও ফাংশনে পাস করতেnull
হয় তবে প্রায়শই সঠিক পছন্দ।
null
একটি বস্তু। এটির ধরণটি নাল। undefined
কোন বস্তু নয়; এটির ধরণ নির্ধারিত।
null
এবং undefined
আদিম মান - typeof null === 'object'
এটি একটি ভাষা বাগ, কারণObject(null) !== null
নিম্নলিখিত ফাংশনটি দেখায় যে এবং কেন পার্থক্যটি কাজ করার জন্য সক্ষম:
function test() {
var myObj = {};
console.log(myObj.myProperty);
myObj.myProperty = null;
console.log(myObj.myProperty);
}
ফোন দিলে
test();
আপনি পাচ্ছেন
অনির্দিষ্ট
খালি
এটি এখনও সংজ্ঞায়িত না হওয়ার সময় প্রথমটি console.log(...)
থেকে পাওয়ার চেষ্টা করে - সুতরাং এটি "অপরিজ্ঞাত" ফিরে আসে। এটিকে নাল নির্ধারণের পরে, দ্বিতীয়টি স্পষ্টতই "নাল" প্রত্যাবর্তন করবে কারণ এটি বিদ্যমান, তবে এটির জন্য এটি নির্ধারিত মান রয়েছে ।myProperty
myObj
console.log(...)
myProperty
null
এই পার্থক্যটি জিজ্ঞাসা করতে সক্ষম হওয়ার জন্য, জাভাস্ক্রিপ্টটিতে রয়েছে null
এবং undefined
: যদিও null
অন্যান্য ভাষাগুলির মতো কোনও বস্তুও undefined
কোনও বস্তু হতে পারে না কারণ কোনও উদাহরণ নেই (এমনকি একটি null
উদাহরণও নেই) উপলভ্য।
উদাহরণস্বরূপ window.someWeirdProperty
, তাই না
"window.someWeirdProperty === null"
মিথ্যা যাও যখন মূল্যায়ন
"window.someWeirdProperty === undefined"
সত্য মূল্যায়ন।
তদুপরি চেকিফ if (!o)
হওয়ায় যাচাই if (o == null)
করার o
মতো নয় false
।
অপরিশোধিত তুলনায় নাল সম্পর্কে অন্য মজাদার জিনিসটি এটি বাড়ানো যেতে পারে।
x = undefined
x++
y = null
y++
console.log(x) // NaN
console.log(y) // 0
এটি কাউন্টারগুলির জন্য ডিফল্ট সংখ্যাসূচক মান নির্ধারণের জন্য দরকারী। এর ঘোষণায় আপনি কতবার একটি পরিবর্তনশীল -১ এ সেট করেছেন?
এটা দেখ:
<script>
function f(a){
alert(typeof(a));
if (a==null) alert('null');
a?alert(true):alert(false);
}
</script>
//return:
<button onclick="f()">nothing</button> //undefined null false
<button onclick="f(null)">null</button> //object null false
<button onclick="f('')">empty</button> //string false
<button onclick="f(0)">zero</button> //number false
<button onclick="f(1)">int</button> //number true
<button onclick="f('x')">str</button> //string true
নিকোলাস সি জাকাস রচিত "অবজেক্ট-ওরিয়েন্টেড জাভাস্ক্রিপ্টের নীতিগুলি" থেকে
তবে কোনও জিনিস যখন টাইপটি নাল হয় তখন কেন? (আসলে, এটি টিসি 39, একটি কমিটি যা জাভাস্ক্রিপ্ট ডিজাইন করে এবং রক্ষণাবেক্ষণ করে এটি একটি ত্রুটি হিসাবে স্বীকৃতি দিয়েছে You আপনি নাল একটি খালি অবজেক্ট পয়েন্টার হিসাবে যুক্ত করতে পারেন, "অবজেক্ট" কে লজিক্যাল রিটার্ন মান হিসাবে তৈরি করেছেন, তবে এটি এখনও বিভ্রান্তিকর।
জাকাস, নিকোলাস সি। (2014-02-07)। অবজেক্ট-ওরিয়েন্টেড জাভাস্ক্রিপ্টের মূলনীতি (কিন্ডল লোকেশন 226-227)। স্টার্ক প্রেস নেই। কিন্ডলে সংস্করণ.
বলেছিল:
var game = null; //typeof(game) is "object"
game.score = 100;//null is not an object, what the heck!?
game instanceof Object; //false, so it's not an instance but it's type is object
//let's make this primitive variable an object;
game = {};
typeof(game);//it is an object
game instanceof Object; //true, yay!!!
game.score = 100;
অপরিজ্ঞাত কেস:
var score; //at this point 'score' is undefined
typeof(score); //'undefined'
var score.player = "felix"; //'undefined' is not an object
score instanceof Object; //false, oh I already knew that.
'নাল' সম্পর্কে ভাবার সর্বোত্তম উপায় হ'ল ডাটাবেসগুলিতে অনুরূপ ধারণাটি কীভাবে ব্যবহৃত হয় তা স্মরণ করা, যেখানে এটি নির্দেশ করে যে কোনও ক্ষেত্রে "কোনও মূল্য নেই।"
এটি সহজেই ডিবাগ করা প্রোগ্রামগুলি লেখার জন্য খুব দরকারী কৌশল। একটি 'অনির্ধারিত' পরিবর্তনশীল একটি বাগ ... ফলও হতে পারে (যদি আপনি কিভাবে জানতে চাই?) ... কিন্তু যদি পরিবর্তনশীল মান রয়েছে 'নাল, তুমি কি এই প্রোগ্রামে যে, "কেউ, কোথাও কি জানেন, এটি সেট করতে 'নাল।' "অতএব, আমি আপনাকে পরামর্শ দিচ্ছি যে, যখন আপনাকে কোনও ভেরিয়েবলের মান থেকে মুক্তি দিতে হয়, তখন" মুছুন "না ... এটিকে 'নাল' এ সেট করুন। পুরানো মান এতিম হবে এবং শীঘ্রই আবর্জনা সংগ্রহ করা হবে; নতুন মানটি হ'ল, "এর কোনও মান নেই (এখন)।" উভয় ক্ষেত্রেই ভেরিয়েবলের অবস্থা নিশ্চিত: "এটি স্পষ্টতই, ইচ্ছাকৃতভাবে, সেভাবেই পেল।"
2. অপরিবর্তিত একটি নিজেই টাইপ হয় যখন নুল একটি বস্তু।
৩. জাভাস্ক্রিপ্ট নিজেই কোনও নির্ধারিত ভেরিয়েবলকে অপরিজ্ঞাতভাবে আরম্ভ করতে পারে তবে এটি কোনও ভেরিয়েবলের মানকে কখনই নালায় সেট করতে পারে না। এটি অগ্রগতি সম্পন্ন করতে হবে।