Javascriptdə null, undefined və ya boş dəyişənləri yoxlamaq üçün standart funksiya varmı?

Bir dəyişənin bir dəyərə malik olduğunu yoxlayır və undefined və ya null olmadığını təmin edən ümumi javascript funksiyası varmı? Bu kodu var, amma əminəm ki, bu, bütün halları əhatə edir:

 function isEmpty(val){ return (val === undefined || val == null || val.length <= 0) ? true : false; } 
1734
01 апр. Alex 01 Aprel tarixində təyin etdi. 2011-04-01 18:14 '11 'də 18:14' də 2011-04-01 18:14
ответ 31 cavab
  • 1
  • 2

Dəyişən truthy olmadığını yoxlamaq olar. Bu, deməkdir

 if( value ) { } 

value olmadıqda true qiymətləndiriləcəkdir:

  • Null
  • undefined
  • NaN
  • boş simli ("")
  • 0
  • bir yalan

Yuxarıda göstərilən siyahı ECMA- / Javascript-da bütün mümkün falsy dəyərləri göstərir. ToBoolean hissəsində spesifikasiyada tapın.

Əlavə olaraq, bir dəyişən olub olmadığını bilmirsinizsə (yəni elan typeof ), typeof operatorla yoxlayın. Məsələn,

 if( typeof foo !== 'undefined' ) { // foo could get resolved and it defined } 

truthy ən azı elan edildiyinə əmin ola bilərsiniz, yuxarıda göstərildiyi kimi bir həqiqətə malik olub olmadığını birbaşa yoxlamalısınız.

Əlavə oxuyun: http://typeofnan.blogspot.com/2011/01/typeof-is-fast.html

3508
01 апр. cavab jAndy 01 Apr verilir 2011-04-01 18:17 '11 at 18:17 2011-04-01 18:17

Bir dəyərin null və ya boş olmadığını yoxlamaq üçün ətraflı metod:

 return value === undefined || value === null; 
border=0

== operatoru da istifadə edə bilərsiniz, ancaq bu, bütün qaydaları bilir.

 return value == null; // also returns true if value is undefined 
164
01 апр. Cavab Salman A 01 apr tərəfindən verilir . 2011-04-01 18:20 '11 at 18:20 'da 2011-04-01 18:20
 function isEmpty(value){ return (value == null || value.length === 0); } 

Bu, həqiqətə dönəcəkdir

 undefined // Because undefined == null null [] "" 

length funksiyası tələb olunan parametrlərin sayı olduğundan, sıfır arqument funksiyası.

Son kateqoriyanı qadağan etmək üçün, sadəcə boş sətirləri yoxlaya bilərsiniz.

 function isEmpty(value){ return (value == null || value === ''); } 
60
01 апр. Apr 01- də Mike Samuel tərəfindən verilmiş cavab 2011-04-01 18:19 '11 at 18:19 2011-04-01 18:19

Bilirəm ki, bu, köhnə bir məsələdir, amma bu, ən təhlükəsiz yoxlama və mən burada dəqiq görmədim:

 if (typeof value != 'undefined'  value) { //deal with value' }; 

Bu, dəyərin heç də müəyyənləşdirilməmiş olduğu hallarda, eləcə də onlardan hər hansı birini əhatə edəcəkdir:

  • Null
  • undefined (müəyyən edilməmiş dəyər heç vaxt müəyyən edilməmiş bir parametrə uyğun gəlmir)
  • 0
  • "" (boş simli)
  • bir yalan
  • NaN

PS dəyərində ciddi bərabərlik tələb olunmur! = 'Undefined'

28
10 нояб. Cavab 10 noyabrda verilir. 2013-11-10 19:13 '13 at 19:13 2013-11-10 19:13

Aşağıdakı faydalı xüsusiyyətləri tapa bilərsiniz:

 function typeOf(obj) { return {}.toString.call(obj).split(' ')[1].slice(0, -1).toLowerCase(); } 

Və ya ES7-də (əlavə təkmilləşdirmələr varsa)

 function typeOf(obj) { const { toString } = Object.prototype; const stringified = obj::toString(); const type = stringified.split(' ')[1].slice(0, -1); return type.toLowerCase(); } 

Nəticələr:

 typeOf(); //undefined typeOf(null); //null typeOf(NaN); //number typeOf(5); //number typeOf({}); //object typeOf([]); //array typeOf(''); //string typeOf(function () {}); //function typeOf(/a/) //regexp typeOf(new Date()) //date typeOf(new WeakMap()) //weakmap typeOf(new Map()) //map 

"Bağlayıcı bəyanat (: :) ES2016 (ES7) və ya ECMAScript standartının bir sonrakı versiyasının bir hissəsidir. Hazırda bu, dilin tətbiqi üçün bir səhnə təklifidir". - Simon Kjelberq. Müəllif kral yüksəlişinin bu gözəl təklifi üçün öz dəstəyini əlavə etmək istəyir.

26
12 февр. cavab Vix 12 fevralda verilir. 2015-02-12 13:32 '15 'da 13:32' de, 2015-02-12 13:32

Ən yaxşı reytinqlə ilk cavab səhvdir. Bu dəyər müəyyənləşdirilmirsə, bu, müasir brauzerlərdə istisna olur. Siz istifadə etməlisiniz:

 if (typeof(value) !== "undefined"  value) 

və ya

 if (typeof value !== "undefined"  value) 
25
19 марта '14 в 16:23 2014-03-19 16:23 Cavab 19 mart '14 'də 16:23' da krupar tərəfindən verilir . 2014-03-19 16:23

!! boş sətirləri yoxlayın (""), null, undefined, false və sayı 0 və NaN. console.log(!name) boş olduğu halda deyək var name = "" , sonra console.log(!name) true qaytarır.

 function isEmpty(val){ return !val; } 

bu funksiya val boş, null, undefined, false, sayı 0, ya da NaN olduqda qaytarır.

16
23 янв. Cavab Arif Jan 23 verilir 2015-01-23 09:56 '15 at 9:56 2015-01-23 09:56

Bir az təəssüf edirsən. Bir dəyişənin müəyyən edilmədiyini yoxlamaq üçün, yalnız müəyyən edilməmiş və null yoxlamaq lazımdır.

 function isEmpty(value){ return (typeof value === "undefined" || value === null); } 

Bu, 0 , "" və obyektlərin (hətta bir boş obyekt və bir sıra) etibarlı "dəyərlər" olduğunu göstərir.

11
01 апр. cavab 01 mart aprecəsinə verilir . 2011-04-01 18:21 '11 at 18:21 'da 2011-04-01 18:21

Burada mənim - dəyər null, undefined, və s. və ya boş (yəni yalnız boşluqlar var):

 function stringIsEmpty(value) { return value ? value.trim().length == 0 : true; } 
9
12 февр. Cavab 12 fevralda DavidWainwright tərəfindən verilir. 2014-02-12 18:45 '14 saat 18:45 'da 2014-02-12 18:45

Sadə javascripti tercih etsəniz, bunu cəhd edin:

   function isEmpty(value) { if (!value) { return true; } if (isArray(value) || isString(value)) { return !value.length; } for (var key in value) { if (hasOwnProperty.call(value, key)) { return false; } } return true; } 

Əks halda altçizgi və ya lövhəni istifadə etsəniz, aşağıdakini cəhd edin:

 _.isEmpty(value) 
7
21 авг. Cavab l3x 21 aug verilir . 2015-08-21 16:39 '15 'da 16:39' da, 2015-08-21 16:39

Bu təsdiqləmə vəziyyəti

 if (!!foo) { //foo is defined } 

- lazım olan hər şey.

6
02 мая '15 в 0:01 2015-05-02 00:01 cavab JerryP 02 May '15 'də verildi 0:01 2015-05-02 00:01

Çox sadədir.

 if(data) { //Comes inside only if the data is not empty and not null } 
5
05 янв. Cavab Siddhu tərəfindən verilir. 05 Yanvar 2015-01-05 10:10 '15 'da 10:10' də 2015-01-05 10:10

Siz istifadə edə bilərsiniz:

Əgər simli və ya dəyərin boş olduğunu yoxlamaq şərtidirsə. məsələn:

 if (someVar.value) { //its not emppty } else { //Its empty } 
4
27 апр. Henrique Mello tərəfindən verilmiş cavab 27 Aprel. 2012-04-27 17:30 '12 saat 17:30 'da 2012-04-27 17:30

Değişken elan edilmədiyse, bir hata mesajı alacağınız üçün müəyyən olmayan funksiyanı yoxlaya bilməyəcəksiniz.

 if (foo) {} function (bar) {}(foo) 

Hər ikisi foo elan edilmədiyi təqdirdə səhv çıxaracaq.

Bir dəyişənin təyin olunduğunu yoxlamaq istəsəniz istifadə edə bilərsiniz

 typeof foo != "undefined" 

foo elan olunub və istifadə edə biləcəyiniz bir dəyərə malik olub olmadığını yoxlamaq istəyirsinizsə

 if (typeof foo != "undefined"  foo) { //code here } 
4
01 апр. cavab 01 avqust. 2011-04-01 18:25 '11 'də 18:25' də 2011-04-01 18:25

Bu faydalı ola bilər.

 [null, undefined, ''].indexOf(document.DocumentNumberLabel) > -1 
4
13 дек. cavab verildi ddagsan 13 dekabr . 2017-12-13 09:09 '17 saat 09:09 'da 2017-12-13 09:09

Varsayılan dəyəri yoxlamaq üçün

 function typeOfVar (obj) { return {}.toString.call(obj).split(' ')[1].slice(0, -1).toLowerCase(); } function isVariableHaveDefaltVal(variable) { if ( typeof(variable) === 'string' ) { // number, boolean, string, object console.log(' Any data Between single/double Quotes is treated as String '); return (variable.trim().length === 0) ? true : false; }else if ( typeof(variable) === 'boolean' ) { console.log('boolean value with default value \'false\''); return (variable === false) ? true : false; }else if ( typeof(variable) === 'undefined' ) { console.log('EX: var a; variable is created, but has the default value of undefined.'); return true; }else if ( typeof(variable) === 'number' ) { console.log('number : '+variable); return (variable === 0 ) ? true : false; }else if ( typeof(variable) === 'object' ) { // -----Object----- if (typeOfVar(variable) === 'array'  variable.length === 0) { console.log('\t Object Array with length = ' + [].length); // Object.keys(variable) return true; }else if (typeOfVar(variable) === 'string'  variable.length === 0 ) { console.log('\t Object String with length = ' + variable.length); return true; }else if (typeOfVar(variable) === 'boolean' ) { console.log('\t Object Boolean = ' + variable); return (variable === false) ? true : false; }else if (typeOfVar(variable) === 'number' ) { console.log('\t Object Number = ' + variable); return (variable === 0 ) ? true : false; }else if (typeOfVar(variable) === 'regexp'  variable.source.trim().length === 0 ) { console.log('\t Object Regular Expression : '); return true; }else if (variable === null) { console.log('\t Object null value'); return true; } } return false; } var str = "A Basket For Every Occasion"; str = str.replace(/\s/g, "-"); //The "g" flag in the regex will cause all spaces to get replaced. 

Nəticəni yoxlayın:

 isVariableHaveDefaltVal(' '); // string isVariableHaveDefaltVal(false); // boolean var a; isVariableHaveDefaltVal(a); isVariableHaveDefaltVal(0); // number isVariableHaveDefaltVal(parseInt('')); // NAN isNAN(' '); - true isVariableHaveDefaltVal(null); isVariableHaveDefaltVal([]); isVariableHaveDefaltVal(/ /); isVariableHaveDefaltVal(new Object('')); isVariableHaveDefaltVal(new Object(false)); isVariableHaveDefaltVal(new Object(0)); typeOfVar( function() {} ); 

Bu tip bir obyekti yoxlamaq üçün @Vix () funksiyasından istifadə etdim.

istifadə edərək,

 var prototypes_or_Literals = function (obj) { switch (typeof(obj)) { // object prototypes case 'object': if (obj instanceof Array) return '[object Array]'; else if (obj instanceof Date) return '[object Date]'; else if (obj instanceof RegExp) return '[object regexp]'; else if (obj instanceof String) return '[object String]'; else if (obj instanceof Number) return '[object Number]'; else return 'object'; // object literals default: return typeof(obj); } }; output test « prototypes_or_Literals( '' ) // "string" prototypes_or_Literals( new String('') ) // "[object String]" Object.prototype.toString.call("foo bar") //"[object String]" 
4
05 окт. cavab 05 yanvar cədvəlinə verilir . 2015-10-05 09:51 '15 at 9:51 am 2015-10-05 09:51

Növü olmayan, qeyri-boş, qeyri-null və qeyri-sıfır kimi yoxlamaq üçün bütün dörd (4) şərtləri yoxlamaq üçün aşağıdakı kodu istifadə edə bilərsiniz, yalnız bu kodu istifadə edin (! (! (Variable))) javascript və jquery.

 function myFunction() { var data; //The Values can be like as null, blank, undefined, zero you can test if(!(!(data))) { alert("data "+data); } else { alert("data is "+data); } } 
3
08 мая '18 в 12:44 2018-05-08 12:44 Cavab Ravikant tərəfindən verilir May 08 '18 12:44 2018-05-08 12:44

TypeScript istifadə TypeScript" false dəyərləri" nəzərə almaq istəmirsinizsə , bu həll sizin TypeScript :

Birincisi: import { isNullOrUndefined } from 'util';

Sonra: isNullOrUndefined(this.yourVariableName)

Qeyd: aşağıda göstərildiyi kimi, indi köhnəlmiş, value === undefined || value === null istifadə edin value === undefined || value === null value === undefined || value === null value === undefined || value === null . ref .

3
28 июня '18 в 18:33 2018-06-28 18:33 Cavab BlackBeard- a 28 iyun 18: 18- də 2018-06-28 18:33 tarixində verilir
 function isEmpty(obj) { if (typeof obj == 'number') return false; else if (typeof obj == 'string') return obj.length == 0; else if (Array.isArray(obj)) return obj.length == 0; else if (typeof obj == 'object') return obj == null || Object.keys(obj).length == 0; else if (typeof obj == 'boolean') return false; else return !obj; } 

ES6-da boşluqlarla işləmə xətləri üçün başa çatdıqda:

 const isEmpty = value => { if (typeof value === 'number') return false else if (typeof value === 'string') return value.trim().length === 0 else if (Array.isArray(value)) return value.length === 0 else if (typeof value === 'object') return value == null || Object.keys(value).length === 0 else if (typeof value === 'boolean') return false else return !value } 
2
18 мая '18 в 16:08 2018-05-18 16:08 Cavab jalescardoso tərəfindən 18 May '18 'də saat 16:08' da 2018-05-18 16:08 'də verilir

Buraya oxşar bir sual üçün gələn hər kəs üçün aşağıdakı əsərlər böyükdür və bu mənim kitabxanamda son illərdə var:

 (function(g3, $, window, document, undefined){ g3.utils = g3.utils || {};  g3.utils.type = function (obj){ if(obj === null) return 'null'; else if(typeof obj === 'undefined') return 'undefined'; return Object.prototype.toString.call(obj).match(/^\[object\s(.*)\]$/)[1].toLowerCase(); }; }(window.g3 = window.g3 || {}, jQuery, window, document)); 
2
02 дек. centurian tərəfindən verilmiş cavab 02 dekabr. 2017-12-02 12:27 '17 də 12:27 2017-12-02 12:27
 return val || 'Handle empty variable' 

Bu, bir çox yerlərdə idarə etmək üçün həqiqətən yaxşı və təmiz bir yoldur və dəyişənləri təyin etmək üçün də istifadə edilə bilər.

 const res = val || 'default value' 
2
04 дек. Cavab kubfox verilir 04 Dekabr. 2018-12-04 15:44 '18 at 3:44 pm 2018-12-04 15:44
 var myNewValue = myObject  myObject.child  myObject.child.myValue; 

Bu heç bir səhv gətirə bilməz. MyObject, uşaq və ya myValue null, myNewValue null olacaq. Heç bir səhv olmayacaq.

1
20 июня '17 в 23:44 2017-06-20 23:44 Cavab Keith Blanchard tərəfindən 20 İyun '17 'də saat 11:44 2017-06-20 23:44' də verilir

Bu, dəyişənin müəyyənləşdirilmədiyi yerin müəyyənləşdirilmədiyini yoxlayacaq

 function Undef(str) { var ary = str.split('.'); var w = window; for (i in ary) { try { if (typeof(w = w[ary[i]]) === "undefined") return true; } catch(e) { return true; } } return false; } if (!Undef("google.translate.TranslateElement")) { 

Google TranslateElement tərcümə funksiyası üçün yuxarıdakı yoxlama. Bu, aşağıdakılara bərabərdir:

 if (!(typeof google === "undefined" || typeof google.translate === "undefined" || typeof google.translate.TranslateElement === "undefined")) { 
1
04 сент. cavab rickdog 04 sep verilir . 2016-09-04 00:49 '16 'da 0:49 2016-09-04 00:49
 function isEmpty(val){ return !val; } 

lakin bu həlli aşırı hazırlanmışdır, əgər maşınlarda model ehtiyacları üçün funksiyanı daha sonra dəyişdirmək istəməsəniz, onda kodu birbaşa istifadə etmək daha təmizdir:

 if(!val)... 
1
02 июня '17 в 11:30 2017-06-02 11:30 Cavab Luca C tərəfindən verildi. 02 iyun 'da 11:30' də 2017-06-02 11:30
 try{ let vari = obj.propTest; // obj may be don't have propTest property ... } catch(NullException){ // do something here } 

Hesab edirəm ki, cəhd edin, tutqun istifadə edərək boşluq və ya JavaScript-də null yoxlama səhvlərindən qaçın. Yalnız sıfır istisnanı seçir və onu idarə edir.

0
01 окт. Cavab verilir: nobjta_9x_tq 01 okt . 2018-10-01 06:42 '18 saat 6:42 'də 2018-10-01 06:42' də

Mən, həqiqətən, xoşuma gəldiyi qeydə alınmış qərarı tərk edəcəyəm:

Birincisi, boş dəyişənin null və ya undefined və ya uzunluğunun sıfıra bərabər olduğunu və ya bir obyekt olduqda, bu düymələri yoxdur:

 function isEmpty (value) { return ( // null or undefined (value == null) || // has length and it zero (value.hasOwnProperty('length')  value.length === 0) || // is an Object and has no keys (value.constructor === Object  Object.keys(value).length === 0) ) } 

Qaytarır:

  • doğru: undefined , null , "" , [] , {}
  • false: true , false , 1 , 0 , -1 , "foo" , [1, 2, 3] , { foo: 1 }
0
13 дек. Alexandre Magro tərəfindən 13 dekabrda verilən cavab. 2018-12-13 00:46 '18 at 0:46 2018-12-13 00:46

Mən istifadə edirəm? operator bir az təmizdir.

 var ? function_if_exists() : function_if_doesnt_exist(); 
0
30 июня '16 в 12:31 2016-06-30 12:31 Cavab Pedro Pereira tərəfindən 30 İyun 2013 tarixində 12:31 2016-06-30 12:31 tarixində verilir

Onların unutduqları köhnə şey olsa da, kodun bloğunu yığmaq və səhvəni tutmaq və sonra da ...

 function checkup( t ){ try{ for(p in t){ if( p.hasOwnProperty( t ) ){ return true; } } return false; }catch(e){ console.log("ERROR : "+e); return e; } } 

Buna görə də, əvvəldən potensial bir problemi yoxlamağa ehtiyacınız yoxdursa, onu tutmaq və istədiyiniz zaman bununla məşğul olmaq lazımdır.

0
10 марта '17 в 12:57 2017-03-10 12:57 Cavab Mark Giblin tərəfindən martın 10-da '17 'də 12:57 2017-03-10 12:57' də verilir

Bu funksiya empty object {} , empty array [] , null , undefinedblank string "" undefined yoxlayır blank string ""

 function isEmpty(val) { //check for empty object {}, array [] if (val !== null  typeof val === 'object') { if (Object.keys(obj).length === 0) { return true; } } //check for undefined, null and "" else if (val == null || val === "") { return true; } return false; } 

var val = {};
isEmpty (val) → doğru
Val = [];
isEmpty (val) → doğru
isEmpty (undefined) → doğru
Boş (null) → doğru
isEmpty ("") → doğru
isEmpty (yanlış) → yanlış
isEmpty (0) → yanlış

-1
28 февр. Cavab JerryGoyal tərəfindən verilir 28 fevral. 2018-02-28 15:41 '18 at 3:41 pm 2018-02-28 15:41

Birbaşa bərabərlik operatorunu istifadə edə bilərsiniz

 <script> var firstName; var lastName = null;  if(firstName == null){ alert('Variable "firstName" is undefined.'); } if(lastName == null){ alert('Variable "lastName" is null.'); } </script> 

demo @ Bir dəyişənin JavaScript istifadə edərək null və ya null olub olmadığını necə müəyyən etmək olar

-1
29 марта '18 в 10:50 2018-03-29 10:50 Cavab 29 mart 18: 00-da 10:50 2018-03-29 10:50 tarixində jonathan klevin tərəfindən verilir
  • 1
  • 2

tags ilə bağlı digər suallar və ya bir sual