Javascriptdə sıfır və undefined arasında fərq nədir?

Mən null və javascript ilə undefined arasında fərq bilmək istəyirəm.

894
22 февр. 22 fevral tarixində user605334 tərəfindən təyin olundu 2011-02-22 13:30 '11 saat 13:30 'da 2011-02-22 13:30
@ 32 cavab
  • 1
  • 2

JavaScript-də, undefined dəyişən elan edilmişdir, lakin hələ bir dəyər təyin edilmişdir, məsələn:

 var TestVar; alert(TestVar); //shows undefined alert(typeof TestVar); //shows undefined 

null təyinatın dəyəri. Bir dəyişənə heç bir dəyəri olmayan bir nümayəndəlik kimi təyin edilə bilər:

 var TestVar = null; alert(TestVar); //shows null alert(typeof TestVar); //shows object 

Əvvəlki nümunələrdən aydın olur ki, undefinednull iki undefined : undefined özü (undefined) və null bir obyektdir.

 null === undefined // false null == undefined // true null === null // true 

və həmçinin

 null = 'value' // ReferenceError undefined = 'value' // 'value' 
888
22 февр. Sebastian tərəfindən verilən cavab 22 fevral. 2011-02-22 13:31 '11 saat 13:31 'də 2011-02-22 13:31

Buradan seçdim

Bir dəyişənə bir dəyər təyin edilmədikdə müəyyən olmayan dəyər ibtidai dəyərdir.

Null dəyər boş, boş və ya qeyri-mövcud istinadı təmsil edən ibtidai dəyərdir.

Var vasitəsilə bir dəyişən elan etdikdə və bir dəyər verməyin, dəyəri müəyyən edilməyəcəkdir. WScript.Echo () və ya alert () funksiyasını yerinə yetirməyə çalışarsanız, özünüz də bir şey görməyəcəksiniz. Buna baxmayaraq, bir boş satır əlavə etsəniz, birdən-birə görünəcək:

 var s; WScript.Echo(s); WScript.Echo("" + s); 

Bir dəyişən elan edə bilərsiz, onu null olaraq təyin edə bilərsiniz və davranış eyni olacaq, istisna olmaqla, "null" yazılı "undefined" ilə müqayisədə görəcəksiniz. Bu, həqiqətən, kiçik bir fərqdir.

Hətta sıfır və ya əksinə müəyyənləşdirilməyən dəyişənləri müqayisə edə bilərsiniz və vəziyyət doğru olacaq:

 undefined == null null == undefined 

Lakin, onlar iki müxtəlif növ hesab olunur. Tanımsız bir all-in-one növü olsa da, null xüsusi bir obyekt dəyəri hesab olunur. Sizi typeof () istifadə edərək, dəyişən ümumi tipini təmsil edən simli qaytarır:

 var a; WScript.Echo(typeof(a)); var b = null; WScript.Echo(typeof(b)); 

Yuxarıdakı scriptin işlənməsi aşağıdakı nəticəyə səbəb olacaq:

border=0
 undefined object 

Müxtəlif növ olub-olmamasından asılı olmayaraq, məsələn, hər hansı birinin üzvünə daxil olmağa çalışarsanız, onlar hələ də eyni davranacaqlar. yəni bir istisna meydana gətirəcəklər. WSH ile görsəniz, qorxulan "varname" null və ya bir obyekt deyil və şanslıysanız (ancaq bu başqa bir məqalə üçün bir mövzu).

Bir dəyişənə dəqiq olaraq müəyyən edə bilərsiniz, amma bunu qətiyyətlə məsləhət görürəm. Mən yalnız parametrləri null qoyaraq və müəyyən etməyi unutduğunuz şeylər üçün müəyyən olmayan dəyərdən ayırmanı məsləhət görürəm. Eyni zamanda, həqiqətən, hər bir dəyişənni təyin etmənizi məsləhət görürəm. JavaScript C-stil dillərinə sahib olanlardan fərqli bir zəmanət var, asanlıqla hətta veteran proqramçıları qarışdırır və dəyişənləri sıfıra qoymaq bunun əsasında səhvlərin qarşısını almaq üçün ən yaxşı yoldur.

Belirlenmemiş bir popup penceresini göreceğiniz başqa bir örnek silme operatörünün kullanmasıdır. C-dünyadan olanlar səhv bir obyektin məhv edilməsi kimi şərh edə bilərlər, lakin bu belə deyil. Bu əməliyyat obyektin sıra və ya üzvündən indeksin çıxarılması ilə həyata keçirilir. Dizilər üçün, bu uzunluğu təsir etmir, əksinə, indeks indi müəyyən edilməmişdir.

 var a = [ 'a', 'b', 'c' ]; delete a[1]; for (var i = 0; i < a.length; i++) WScript.Echo((i+".) "+a[i]); 

Nəticədə daha yüksək bir skriptdir:

 0.) a 1.) undefined 2.) c 

Həm də qeyri-müəyyənləşdirilənsiz, heç bir mövcud olmayan bir kataloq və ya üzv oxuduğunuz zaman geri dönəcəksiniz.

Sıfır və qeyri-müəyyənləşdirilən arasındakı fərq bu: JavaScript heç vaxt sıfıra bərabər heç bir şey qoymayacaq, biz adətən bunu edirik. Değişkenleri tanımlanamamış olmasına baxmayaraq, biz null'u tercih edirik, çünki bu, bizim üçün heç bir şey yapılmamış bir şey deyildir. Debug zaman, bu deməkdir ki, boşluq qoyulan hər şey JavaScript deyil, öz fəaliyyətinizə aiddir. Bundan əlavə, bu iki xüsusi dəyər demək olar ki, bərabərdir.

61
22 февр. cavab ayush 22 fevral. 2011-02-22 13:34 '11 at 13:34 2011-02-22 13:34

Null dəyərin olmadığını göstərən xüsusi bir sözdür.

bir məna kimi düşünmək, məsələn:

  • "foo" bir simli
  • doğrudur, boolean,
  • 1234 bir ədəddir
  • null - undefined.

qeyri-müəyyən əmlak dəyərin daxil olmaqla bir dəyişənə təyin edilmədiyini göstərir. Kimi

 var foo; 

null data dəyişən undefined


Hər ikisi də dəyərsiz bir dəyişənin dəyərini təmsil edir .

null əhəmiyyəti olmayan bir simli təmsil etmir - boş bir simli -


Kimi

 var a = ''; console.log(typeof a); // string console.log(a == null); //false console.log(a == undefined); // false 

İndi əgər

 var a; console.log(a == null); //true console.log(a == undefined); //true 

BUT

 var a; console.log(a === null); //false console.log(a === undefined); // true 

Yəni hər kəsin öz istifadə üsulu var

müəyyən olmayan dəyişənlərin məlumat növünü müqayisə etmək üçün istifadə edin.

Null bir dəyişənin dəyərini aradan qaldırmaq üçün istifadə edin

 var a = 'javascript'; a = null ; // will change the type of variable "a" from string to object 
28
25 окт. Mina Qabrielin 25 oktyabr cəzası . 2013-10-25 23:58 '13 at 23:58 2013-10-25 23:58

null : dəyişən üçün heç bir dəyər; undefined : dəyişən özü olmaması;

Burada dəyişən dəyərlə əlaqəli sembolik ismdir.

JS, yeni elan edilmiş dəyişənləri null ilə örtük olaraq başlatmaq üçün kifayət qədər xeyirli ola bilər, lakin bu deyil.

14
03 июля '11 в 16:59 2011-07-03 16:59 Cavab Dmitri Sychov tərəfindən verilir 03 iyul '16' saat 16:59 'da 2011-07-03 16:59

Aşağıdakıları diqqətlə oxuyun. Bu javascript ilə nullundefined arasındakı fərq haqqında bütün şübhələri aradan qaldıracaq. Siz həmçinin tipləri müəyyən etmək üçün aşağıdakı fayda funksiyasından istifadə edə bilərsiniz.

JavaScript-də biz aşağıdakı növ dəyişənlərə sahib ola bilərik.

  • Undeclared dəyişənlər
  • Bəyan edilmiş, lakin atanmamış dəyişənlər
  • Dəyişənlər təyin edilməmişdir
  • Nümunə null ilə təyin olunmuş dəyişənlər
  • Dəyişənlər qeyri-müəyyən və ya nulldan başqa bir şey istifadə edərək təyin olunur

Bu halların hər birinin izahı sonra bir-bir

  • Undeclared dəyişənlər . Qeyd edilməmiş dəyişənlər üçün aşağıdakılar edilir.

    • Yalnız typeof () işarəsi yoxlanılır, bu isə 'undefined'
    • == və ya === və ya şərti operatorla yoxlanılmayıb ? (orijinal səhvi atır)
  • Bəyan edilmiş, lakin atanmamış dəyişənlər

    • typeof 'undefined' simli qaytarır
    • == null ilə qaytarır
    • == müəyyən edilməmiş qaynaqlar ilə
    • === null ilə yanlış qaytarır
    • === müəyyənləşdirilməmiş qayda ilə doğrudur
    • əgər şərti bəyanat ? saxta qaytarır
  • Dəyişənlər təyin edilməmişdir . Bu dəyişənlər elan edilmiş, lakin təyin edilmiş dəyişənlərə bənzəyirlər.

  • Nümunə null ilə təyin olunmuş dəyişənlər

    • typeof 'obyekt' qaynağını qaytarır
    • == null ilə qaytarır
    • == müəyyən edilməmiş qaynaqlar ilə
    • === null ilə bərabərdir
    • === müəyyənləşdirilməmiş qayda ilə yanlışdır
    • əgər şərti bəyanat ? saxta qaytarır
  • Dəyişənlər qeyri-müəyyən və ya nulldan başqa bir şey istifadə edərək təyin olunur

    • typeof aşağıdakı simvollardan birini qaytarır: 'string' , 'number' , 'boolean' , 'function' , 'object ' , ' character'

Aşağıdakı bir dəyişən növü düzgün yoxlamaq üçün alqoritm aşağıdakılardır:

  • Tanınmayan / təyin edilməmiş / typeof istifadə edilməmiş undefined təyin olun . string qaytarıldığı halda ' qaytarılmamış ' olur .
  • === istifadə edərək null yoxlayın. Əgər doğru deyirsinizsə, 'null' olur.
  • Typeof istifadə edərək faktiki növünü yoxlayın. 'obyekt' bərabər deyilsə, qaytarma növü
  • Obyektin faktiki növünü müəyyən etmək üçün Object.prototype.toString.call (o) nı çağırın. Bütün əlaqədar Javascript və ya DOM obyektləri üçün '[Object ObjectType]' tipli bir string qaytarılmalıdır. Istifadəçi obyektləri üçün '[Object Object]'

Növləri müəyyən etmək üçün aşağıdakı kommunal funksiyasından istifadə edə bilərsiniz. Hal-hazırda bütün növ ECMA 262 2017 tipini dəstəkləyir.

 function TypeOf(o,bReturnConstructor) { if(typeof o==='undefined') return 'undefined' if(o===null) return 'null' if(typeof o!=='object') return typeof o var type=Object.prototype.toString.call(o) switch(type) { //Value types:4 case '[object Number]': type='number';break; case '[object String]': type='string';break; case '[object Boolean]': type='boolean';break; case '[object Date]': type='date';break; //Error Types:7 case '[object Error]': type='error';break; case '[object EvalError]': type='evalerror';break; case '[object RangeError]': type='rangeerror';break; case '[object ReferenceError]': type='referenceerror';break; case '[object SyntaxError]': type='syntaxerror';break; case '[object TypeError]': type='typeerror';break; case '[object URIError]': type='urierror';break; //Indexed Collection and Helper Types:13 case '[object Array]': type='array';break; case '[object Int8Array]': type='int8array';break; case '[object Uint8Array]': type='uint8array';break; case '[object Uint8ClampedArray]': type='uint8clampedarray';break; case '[object Int16Array]': type='int16array';break; case '[object Uint16Array]': type='uint16array';break; case '[object Int32Array]': type='int32array';break; case '[object Uint32Array]': type='uint32array';break; case '[object Float32Array]': type='float32array';break; case '[object Float64Array]': type='float64array';break; case '[object ArrayBuffer]': type='arraybuffer';break; case '[object SharedArrayBuffer]': type='sharedarraybuffer';break; case '[object DataView]': type='dataview';break; //Keyed Collection Types:2 case '[object Map]': type='map';break; case '[object WeakMap]': type='weakmap';break; //Set Types:2 case '[object Set]': type='set';break; case '[object WeakSet]': type='weakset';break; //Operation Types case '[object RegExp]': type='regexp';break; case '[object Proxy]': type='proxy';break; case '[object Promise]': type='promise';break; case '[object Object]': type='object'; if(bReturnConstructor  o.constructor) type=o.constructor.toString().match(/^function\s*([^\s(]+)/)[1]; break; default: type=type.split(' ')[1] type=type.substr(0,type.length-1) } return type } 
11
21 сент. Cavab Arup Hore 21 sentyabr tərəfindən verilir. 2016-09-21 16:05 '16 saat 16:05 'da 2016-09-21 16:05

Undefined bir sistemli, gözlənilməz və ya yanlış bir dəyəri olmaması və gözlənilən dəyəri normal səviyyədə və gözlənilən səviyyədə təmsil etmək üçün qeyri-müəyyən edir.

javascript vasitəsilə: son təlimat

8
29 июня '14 в 11:37 2014-06-29 11:37 Cavab Kevin tərəfindən 29 iyun 'da 11:37' də veriləcək 2014-06-29 11:37

nullundefined ümumi iki aşağıdakı obyektlərin iki növü vardır:

  • hər ikisi sırasıyla yalnız bir dəyər, nullundefined ola bilər;
  • hər ikisinin xüsusiyyətləri və ya üsulları yoxdur və hər hansı bir xüsusiyyətləri oxumağa çalışırlarsa ya bir runtime səhvinə gətirib çıxaracaqdır (mövcud olmayan əmlakı oxumağa çalışarsanız, bütün digər obyektlər üçün müəyyənləşdirilməyən dəyəri əldə edəcəksiniz);
  • boşmüəyyən olmayan dəyərlər bir-birinə bərabər sayılır və başqa heç bir şey ==!= operatorlar hesab edilmir.

Lakin oxşarlıqlar burada sona çatır. Bu dəfə açar sözlərin boşmüəyyənləşdirilməmiş necə tətbiq olunmasında əsas fərq var. Bu açıq deyil, lakin aşağıdakı nümunəni nəzərdən keçirin:

 var undefined = "foo"; WScript.Echo(undefined); // This will print: foo 

undefined , NaNInfinity yalnız əvvəlcədən başlamış "superglobal" dəyişənlərin adlarıdır - onlar run vaxtında işə salınır və eyni adla normal bir qlobal və ya yerli dəyişən tərəfindən ləğv edilə bilər.

İndi eyni şeyləri cəhd edək: null :

 var null = "foo"; // This will cause a compile-time error WScript.Echo(null); 

Xəstəlik! Null , doğrusaxta açar sözlər qorunur - derleyici onları dəyişən və ya əmlak adları kimi istifadə etməyə icazə verməyəcək

Başqa bir fərq isə qeyri-müəyyən bir primitiv tipdirnull bir obyekt növüdür (obyekt arayışının olmamasını göstərən). Aşağıdakıları nəzərdən keçirin:

 WScript.Echo(typeof false); // Will print: boolean WScript.Echo(typeof 0); // Will print: number WScript.Echo(typeof ""); // Will print: string WScript.Echo(typeof {}); // Will print: object WScript.Echo(typeof undefined); // Will print: undefined WScript.Echo(typeof null); // (!!!) Will print: object 

Bundan əlavə, nullundefined bir nümunə kontekstində işlənilir şəkildə əhəmiyyətli bir fərq var:

 var a; // declared but uninitialized variables hold the value undefined WScript.Echo(a === undefined); // Prints: -1 var b = null; // the value null must be explicitly assigned WScript.Echo(b === null); // Prints: -1 WScript.Echo(a == b); // Prints: -1 (as expected) WScript.Echo(a >= b); // Prints: 0 (WTF!?) WScript.Echo(a >= a); // Prints: 0 (!!!???) WScript.Echo(isNaN(a)); // Prints: -1 (a evaluates to NaN!) WScript.Echo(1*a); // Prints: -1.#IND (in Echo output this means NaN) WScript.Echo(b >= b); // Prints: -1 (as expected) WScript.Echo(isNaN(b)); // Prints: 0 (b evaluates to a valid number) WScript.Echo(1*b); // Prints: 0 (b evaluates to 0) WScript.Echo(a >= 0  a <= 0); // Prints: 0 (as expected) WScript.Echo(a == 0); // Prints: 0 (as expected) WScript.Echo(b >= 0  b <= 0); // Prints: -1 (as expected) WScript.Echo(b == 0); // Prints: 0 (!!!) 

aritmetik ifadələrdə və ya sayısal müqayisədə istifadə edildikdə null olur - yalan kimi, əsasən xüsusi bir "null" növüdür. digər tərəfdən qeyri-müəyyən , əsl "heç bir şey" deyil və ədədi kontekstdə istifadə etməyə çalışarkən NaN olur ("bir nömrə" deyil).

Nullundefined ==!= Operatorlardan xüsusi bir müalicə alırsınız, ancaq ab nin ədədi bərabərliyini (a >= b a <= b) .

8
16 марта '14 в 7:20 2014-03-16 07:20 Cavab RG 16 mart '14 saat 7:20 'də verilir 2014-03-16 07:20

Undefined dəyişən elan edilmişdir deməkdir, lakin vacib deyil:

 var var1; alert(var1); //undefined alert(typeof var1); //undefined 

Null təyinat:

 var var2= null; alert(var2); //null alert(typeof var2); //object 
8
22 февр. Chris cavab verdi 22 fevral 2011-02-22 13:34 '11 at 13:34 2011-02-22 13:34

Mən undefined , nullUncaught ReferenceError izah Uncaught ReferenceError :

1 - Uncaught ReferenceError : dəyişən skriptinizdə elan edilmədiyindən, bu varaible bağlantısı eksik /

2 - undefined : dəyişən elan edilir, lakin başlanğıc deyil.
3 - null : dəyişən elan edilir və boş bir dəyərdir.

8
10 февр. Cavab BERGUIGA Mohamed Amine verilir 10 fevral. 2016-02-10 18:09 '16 saat 18:09 'da 2016-02-10 18:09

TL; dg

Bildiyiniz bir dəyişən təyin etmək üçün null istifadə edin.

Növü qarışıq olan bir dəyişən təyin etmək üçün istifadə undefined .


Bu, həm də 5 primitivdən istifadə edirəm, həm də obyektin növü olan "precedent" ilə undefined və ya null fərqləri izah edir.

String

Əgər bir dəyişən yalnız bir simli olduğunu və konvensiya ilə bütün həyat dövrünün olduğunu bilirsinizsə, onu başlata bilərsiniz "" :

 ("") ? true : false; // false typeof ""; // "string"; ("Hello World") ? true : false; // true typeof "Hello World"; // "string" 

Sayı

Əgər bir dəyişənin yalnız bir sıra olduğunu bilirsinizsə, bütün ömrü, konvensiyaya əsasən, onu başlaya bilərsiniz 0 (və ya 0 , əgər istifadədə əhəmiyyətli bir dəyərdirsə):

 (0) ? true : false; // false typeof 0; // "number"; (16) ? true : false; // true typeof 16; // "number" 

və ya

 (NaN) ? true : false; // false typeof NaN; // "number"; (16) ? true : false; // true typeof 16; // "number" 

Boolean

Bir dəyişənin yalnız məntiqli olduğunu bilirsinizsə, bütün həyat dövrü, konvensiya ilə, onu başlata bilərsiniz, false :

 (false) ? true : false; // false typeof false; // "boolean"; (true) ? true : false; // true typeof true; // "boolean" 

Obyekt

Əgər bir dəyişənin yalnız bir obyekt olduğunu bilirsinizsə, bütün həyat dövrü kimi, konvensiyaya əsasən, onu nizamlaya bilərsiniz:

 (null) ? true : false; // false typeof null; // "object"; ({}) ? true : false; // true typeof {}; // "object" 

Qeyd: obyektin saxta bir versiyası olmalıdır, çünki obyektin həmişə true , amma typeof null object qaytarır. Bu, typeof myVarObject həm obyekt, həm də sıfır növü üçün ardıcıl dəyəri qaytarması deməkdir.

Bütün

Bir dəyişənin qarışıq növü olduğunu bilirsinizsə (bütün həyat dövründə hər hansı bir növü), konvensiya ilə, onu undefined .

7
19 янв. Cavab Bruno Lesieur tərəfindən verilir 19 yanvar. 2017-01-19 21:15 '17 saat 21:15 'də 2017-01-19 21:15' də

null "dəyərsiz" mənasını verən xüsusi bir dəyərdir. null xüsusi bir obyektdir, çünki typeof null bir "obyekt" verir.

Digər tərəfdən, undefined dəyişən elan edilməmişdir və ya bir dəyər verilmiş deyil deməkdir.

5
22 февр. Cavab Richard H 22 fevralda verilir. 2011-02-22 13:35 '11 'da 13:35' də 2011-02-22 13:35

Fərqi anlamaq üçün ən yaxşı yol ilk olaraq JavaScript-nin daxili işlərini başa düşmək və anlayış arasında olan fərqləri anlamaqdır:

 let supervisor = "None" // I have a supervisor named "None" let supervisor = null // I do NOT have a supervisor. It is a FACT that I do not. let supervisor = undefined // I may or may not have a supervisor. I either don't know // if I do or not, or I am choosing not to tell you. It is // irrelevant or none of your business. 

Bu üç hal arasında bir fərq var və JavaScript son iki halını iki fərqli dəyərlə vurğulayır: nullundefined . Bu dəyərləri köçürmək üçün bu dəyərlərdən sərbəst istifadə edə bilərsiniz.

Belə ki, bu fəlsəfi əsaslardan yaranan JavaScript xüsusiyyətləri hansılardır?

  1. Bir başlanğıc olmadan bir elan dəyişən undefined çünki bu dəyər haqqında heç bir şey undefined .

     let supervisor; assert(supervisor === undefined); 
  2. Əsla qoyulmayan bir obyektin mülkiyyəti kimsənin bu əmlakla əlaqədar heç bir şey undefined səbəbi ilə undefined .

     const dog = { name: 'Sparky', age: 2 }; assert(dog.breed === undefined); 
  3. nullundefined "oxşar", çünki Brendan H deyir. Ancaq bir-birinə tamamilə bərabər gəlmirlər.

     assert(null == undefined); assert(null !== undefined); 
  4. nullundefined xoşbəxtlikdən müxtəlif növ var. null növü Nullundefined tipi undefined Undefined . Bu spesifikasiyadır, amma heç vaxt bilməyəcəksiniz, çünki burada təkrarlanmayacağam ki, qəribəlik typeof .

  5. Bədəninin sonuna çatdıqdan sonra açıq qaytarılma bəyanatına undefined bir funksiya undefined çünki geri undefined barədə heç bir şey bilməyəcəksiniz.

Yeri gəlmişkən, JavaScript-də başqa heç bir "heç bir şey" yoxdur (təhsil fəlsəfəsi yaxşı ...)

  • NaN
  • Bir ReferenceError elan edilməmiş və ya qəbul edilməyən bir dəyişəndən istifadə
  • Müvəqqəti ölü zonasında bir local let or const dəyişən istifadə edərək, ReferenceError əldə edin
  • Sıx arraylarda boş hüceyrələr. Bəli, onlar === müqayisə edilməməsinə baxmayaraq, onlar hələ müəyyənləşdirilmirlər.

     $ node > const a = [1, undefined, 2] > const b = [1, , 2] > a [ 1, undefined, 2 ] > b [ 1, <1 empty item>, 2 ] 
4
21 сент. Cavab Ray Toal tərəfindən verilir. 2018-09-21 20:36 '18 saat 20:36 'də 2018-09-21 20:36

Javascript'te 5 ədəd ibtidai məlumat növləri var: String, Number, Boolean, null və undefined. Mən sadə bir nümunə ilə izah etməyə çalışacağam.

Sadə bir funksiyaya sahibik

  function test(a) { if(a == null){ alert("a is null"); } else { alert("The value of a is " + a); } } 

əgər yuxarıda göstərilən funksiyada (a == null) eyni (! a)

İndi bir parametr keçmədən bu funksiyanı çağırırıq

  test(); it will alert "a is null"; test(4); it will alert "The value of a is " + 4; 

 var a; alert(typeof a); 

bu dəqiqləşdirilməyəcək; biz bir dəyişən elan etdik, lakin ona dəyər vermədik; amma yazsaq

 var a = null; alert(typeof a); will give alert as object 

null bir obyektdir. bu səbəbdən biz 'a'

4
18 февр. cavab verildi dinesh_malhotra Feb 18 2014-02-18 21:52 '14 da 21:52 2014-02-18 21:52

Null dəyərin olmadığını göstərmək üçün yaygın olaraq istifadə edilən xüsusi bir dəyəri qiymətləndirən bir dil açar sözüdür. Nüsrədə typeof operatoru istifadə edərək, "nüsxə" ni göstərən xüsusi bir obyektin dəyəri kimi dəyərləndirilə biləcəyini ifadə edən "obyekt" dır. Amma praktikada sıfır, adətən, öz növündəki yeganə üzv hesab olunur və ədədlər və strings, eləcə də obyektlər üçün "dəyər yoxdur" demək üçün istifadə edilə bilər. Çox proqramlaşdırma dilləri JavaScripts nulluna bərabərdir: null və ya nil kimi tanış ola bilərsiniz.

JavaScript də bir dəyərin olmadığını göstərən ikinci bir dəyərə sahibdir. Belirlenmeyen dəyər, daha dərin bir cür yox. Bu, başlanğıc olmayan dəyişənlərin dəyəri və bir əmlakın dəyərini və ya mövcud olmayan bir obyektin bir sıra sorguladığında əldə etdiyiniz dəyəri. Belirlenmemiş değer, heç bir argüman verilemeyen dönüş değeri ve işlev parametre değerleri olmayan funksiyalarla da geri qaytarılır. undefined müəyyən edilməmiş bir dəyərə əvvəlcədən təyin edilmiş bir qlobal dəyişən (null kimi bir dil açar sözü deyil). ECMAScript 3-də undefined bir oxuma / yazma dəyişəndir və hər hansı bir dəyərə təyin edilə bilər. Bu səhv ECMAScript 5də müəyyənləşdirilib və undefined dilin bu versiyasında oxunur. Typeof operatorunu müəyyən edilməyən dəyərə tətbiq edərsəniz, bu dəyər "xüsusi" tipli yeganə üzv olduğuna işarə edərək "qeyri-müəyyənləşdirilir".

Bu fərqlərə baxmayaraq, null və undefined hər ikisi dəyərin olmamasını göstərir və tez-tez bir-birini əvəz edə bilərlər. Equality operator == onları bərabər hesab edir. (Bu qəti bərabərlik operatoru üçün === istifadə edin). Hər ikisi də saxta dəyərlərdir - boolean dəyər tələb olunduqda yanlış davranırlar. Null və ya müəyyən olmayan xüsusiyyətlər və üsullar yoxdur. Əslində, istifadə. və ya [] bu dəyərlərin əmlakına və ya üsuluna daxil olmaq üçün TypeError səbəb olur.

Вы можете считать undefined представлять системный, неожиданный или ошибочный отсутствие значения и null для представления уровня программы, нормального или ожидаемого отсутствия стоимость. Если вам нужно присвоить одно из этих значений переменной или свойству или передать один из этих значений эти значения для функции, null почти всегда являются правильным выбором.

4
ответ дан Shoib Mohammed A 10 июля '17 в 14:34 2017-07-10 14:34

Хорошо, мы можем запутаться, когда узнаем о null и undefined , но давайте начнем с простого: они оба ложные и во многом схожи, но странная часть JavaScript делает их парой существенных отличий, например, typeof null 'object' то время как typeof undefined равен 'undefined' .

 typeof null; //"object" typeof undefined; //"undefined"; 

Но если вы проверите их с == как показано ниже, вы увидите, что они оба ложные :

 null==undefined; //true 

Также вы можете присвоить значение null свойству объекта или примитиву, в то время как undefined может быть просто достигнута, если ничего не назначать.

Я создаю быстрое изображение, чтобы показать различия для вас с первого взгляда.

2019

ответ дан Alireza 06 июня '17 в 14:02 2017-06-06 14:02

Оба Null и undefined в JavaScript указывают на отсутствие значения.

 var a = null; //variable assigned null value var b; // undefined 

Несмотря на то, что оба существуют для отсутствия значения, но: Undefinedфактически означает, что переменная не инициализирована. Возвращаемые функции ничего и функциональные параметры, для которых не задано значение, Возвращается значение undefined. Используйте строгий оператор равенства === to различать нуль и undefined.

Ссылка: http://www.thesstech.com/javascript/null-and-undefined

3
ответ дан Sohail Arif 24 июня '15 в 0:28 2015-06-24 00:28

Как typeof возвращает undefined, undefined - это тип, где в качестве нулевого значения инициализатор указывает, что переменная не указывает на какой-либо объект (практически все в Javascript является объектом).

2
ответ дан Srinivas Kothuri 06 авг. '12 в 8:00 2012-08-06 08:00

null и undefined оба используются для представления отсутствия какого-либо значения.

 var a = null; 

a инициализируется и определяется.

 typeof(a) //object 

null - это объект в JavaScript

 Object.prototype.toString.call(a) // [object Object] var b; 

b undefined и неинициализированный

undefined Свойства объекта также undefined. Например, "x" не определяется на объекте c, и если вы попытаетесь получить доступ к cx, он вернет undefined.

Обычно мы присваиваем значение null переменным, а не undefined.

2
ответ дан Praveen 08 окт. '13 в 18:55 2013-10-08 18:55

Для типа undefined существует одно и только одно значение: undefined .

Для типа null существует одно и только одно значение: null .

Итак, для обоих из них метка - это как ее тип, так и его значение.

Разница между ними. Məsələn:

  • null - пустое значение
  • undefined отсутствует значение

Və ya:

  • undefined еще не имеет значения
  • null имеет значение и больше не работает

Собственно, null является специальным ключевым словом , а не идентификатором, и поэтому вы не можете рассматривать его как переменную, которую нужно назначить.

Однако undefined является идентификатором . Однако в режиме non-strict и strict вы можете создать локальную переменную имени undefined. Но это одна ужасная идея!

 function foo() { undefined = 2; // bad idea! } foo(); function foo() { "use strict"; undefined = 2; // TypeError! } foo(); 
2
ответ дан zangw 25 дек. '15 в 11:44 2015-12-25 11:44

Когда вы объявляете переменную в javascript, ей присваивается значение undefined . Это означает, что переменная нетронутая и в будущем может быть присвоена любая ценность. Это также означает, что вы не знаете значения, которое эта переменная будет удерживать во время объявления.

Теперь вы можете явно назначить переменную null . Это означает, что переменная не имеет значения. Например - у некоторых людей нет среднего имени. Поэтому в таком случае лучше назначить значение null переменной middlameame объекта person.

Теперь предположим, что кто-то обращается к переменной middlameame вашего объекта person и имеет значение undefined . Он не знал, забыл ли разработчик инициализировать эту переменную или не имел никакого значения. Если он имеет значение null , пользователь может легко заключить, что имя middlen не имеет никакого значения, и оно не является нетронутой переменной.

2
ответ дан Shivank Verma 07 окт. '17 в 12:51 2017-10-07 12:51

Пер Райан Морр подробно описывает эту тему...

"Как правило, если вам нужно присвоить переменную или свойство non-value, передать ее функции или вернуть ее из функции, нуль почти всегда является лучшим вариантом. Проще говоря, JavaScript использует undefined и программисты должны использовать null."

См. Изучение вечной бездны нулей и Undefined

1
ответ дан bholben 08 нояб. '15 в 0:15 2015-11-08 00:15

В javascript все переменные сохраняются как пары значений ключа. Каждая переменная хранится как variable_name: variable_value/reference.

undefined означает, что переменной присваивается пространство в памяти, но ему не присваивается значение. Как наилучшая практика, вы не должны использовать этот тип в качестве назначения.

В этом случае, как обозначить, когда вы хотите, чтобы переменная была без значения в более поздней точке кода? Вы можете использовать тип null , который также является типом, который используется для определения того же объекта, отсутствия значения, но это не то же самое, что и undefined, так как в этом случае вы действительно имеете значение в памяти, Это значение равно null

Оба являются похожими, но использование и значение различны.

1
ответ дан poushy 14 янв. '17 в 6:23 2017-01-14 06:23

В принципе, Undefined - это глобальная переменная, которую javascript создает во время выполнения, означает ли null, что значение не присвоено переменной (фактически null - это сам объект).

Возьмем пример:

  var x; //we declared a variable x, but no value has been assigned to it. document.write(x) //let print the variable x 

Undefined , что вы получите как вывод.

İndi

  x=5; y=null; z=x+y; 

и вы получите 5 в качестве вывода. Главное отличие между Undefined и null

1
ответ дан Zaid Khan 18 дек. '16 в 15:33 2016-12-18 15:33

Разница между undefined и null минимальна, но есть разница. Значение переменной undefined никогда не было инициализировано. Переменная, значение которой null , явно задано значением null , что означает, что в переменной явно указано значение не имеющее значения. Если вы сравниваете undefined и null с помощью выражения null==undefined , они будут равны.

1
ответ дан Stacked 07 авг. '15 в 22:25 2015-08-07 22:25

null - это значение присваивания, которое используется с переменной для представления значения (это объект).

undefined - это переменная, которой не присвоено никакого значения, поэтому JavaScript назначит ей неопределенное значение (это тип данных).

undeclared - если переменная вообще не создается, она называется undeclared.

1
ответ дан Sandip Nirmal 01 февр. '15 в 11:06 2015-02-01 11:06

Если переменная объявлена, но не инициализирована, JavaScript будет считать ее undefined. Если переменной присвоено значение null, она определена и ее значение равно null.

0
ответ дан Hassan Shahzad 03 дек. '17 в 14:50 2017-12-03 14:50
  • undefined означает, что переменная была объявлена, но ей еще не присвоено значение.
  • null - это значение присваивания. Он может быть назначен переменной как представление без значения.
  • undefined и null - два разных типа:

undefined является самим типом (undefined) а null - объект.

  • Неназначенные переменные инициализируются JavaScript со значением по умолчанию undefined.
  • JavaScript никогда не устанавливает значение null. Это должно быть сделано программно.
0
30 сент. Cavab Laxmi 30 Sentyabr verilir. '16 в 13:29 2016-09-30 13:29

Когда значение равно null, оно ничего и ничего не содержит. Пустое значение или переменная все еще заполнено; его просто полно пустоты. Пустота отличается от нуля, а это просто ничего. Например, определение переменной и ее значение для пустой строки выглядит следующим образом:

  var myVariable = ''; 

Переменная myVariable пуста, но она не является нулевой.

Undefined - это состояние, иногда используемое как значение, для представления переменной, которая еще не указала значение. таких как var abcd ;, Это состояние отличается от нуля, хотя оба значения null и undefined могут оцениваться одинаково.

0
ответ дан SantoshK 09 июня '16 в 9:07 2016-06-09 09:07

С JavaScript значение null для объектов, undefined для переменных, свойств и методов.

Чтобы быть нулевым, объект должен быть определен, иначе он будет undefined.

Если вы хотите проверить, существует ли объект, это вызовет ошибку, если объект undefined:

Yanlış:

 if (myObj !== null  typeof myObj !== "undefined") 

Из-за этого вы должны сначала проверить типof():

Правильно:

 if (typeof myObj !== "undefined"  myObj !== null) 
0
ответ дан Ramin Darvishov 25 нояб. '15 в 18:58 2015-11-25 18:58

Если переменная не инициализирована, она undefined. undefined не является объектом. Пример: var MyName; console.log(typeof MyName);

Проверьте консольный журнал в средстве разработки, он будет напечатан как undefined.

null - это объект. Если вы хотите, чтобы какая-либо переменная имела значение null, тогда используется значение null. Необязательная переменная существует, но значение не известно. Оно должно быть присвоено переменной про грамматически. null не инициализируется автоматически.

Пример: var MyName = null; console.log(typeof MyName); Проверьте журнал инструментов в инструменте разработки, это будет объект.

-1
ответ дан NavyaKumar 23 февр. '15 в 4:52 2015-02-23 04:52
  • 1
  • 2

Другие вопросы по меткам или Задайте вопрос