Vraag Is er een standaardfunctie om te controleren op nul, niet-gedefinieerde of lege variabelen in JavaScript?


Is er een universele JavaScript-functie die controleert of een variabele een waarde heeft en ervoor zorgt dat dat niet zo is? undefined of null? Ik heb deze code, maar ik weet niet zeker of deze alle gevallen omvat:

function isEmpty(val){
    return (val === undefined || val == null || val.length <= 0) ? true : false;
}

1601
2018-04-01 15:14


oorsprong


antwoorden:


U kunt gewoon controleren of de veranderlijk heeft een truthy waarde of niet. Dat betekent

if( value ) {
}

zal evalueren naar true als value is niet:

  • nul
  • onbepaald
  • NaN
  • lege tekenreeks ("")
  • 0
  • vals

De bovenstaande lijst vertegenwoordigt alles mogelijk falsy waarden in ECMA- / Javascript. Zoek het in de specificatie bij de ToBoolean sectie.

Verder, als je dat niet doet weten of een variabele bestaat (dat betekent, als het was verklaard) moet u contact opnemen met de typeof operator. Bijvoorbeeld

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

Als je zeker weet dat a veranderlijk wordt op zijn minst aangegeven, moet je direct controleren of het een heeft truthy waarde zoals hierboven weergegeven.

Verder lezen: http://typeofnan.blogspot.com/2011/01/typeof-is-fast.html


3296
2018-04-01 15:17



De uitgebreide methode om te controleren of waarde undefined of null is, is:

return value === undefined || value === null;

U kunt ook de == operator maar dit verwacht iemand ken alle regels:

return value == null; // also returns true if value is undefined

150
2018-04-01 15:20



function isEmpty(value){
  return (value == null || value.length === 0);
}

Dit zal terugkeren waar voor

undefined  // Because undefined == null

null

[]

""

en nul argumentfuncties sinds een functie length is het aantal aangegeven parameters.

Om deze laatste categorie niet toe te staan, wilt u misschien gewoon controleren op lege reeksen

function isEmpty(value){
  return (value == null || value === '');
}

55
2018-04-01 15:19



Ik weet dat dit een oude vraag is, maar dit is de veiligste controle en ik heb het hier niet precies zo zien staan:

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

Het zal betrekking hebben op gevallen waar waarde werd nooit gedefinieerd, en ook niet:

  • nul
  • undefined (waarde van undefined is niet hetzelfde als een parameter die nooit is gedefinieerd)
  • 0
  • "" (lege reeks)
  • vals
  • NaN

Postscriptum geen behoefte aan strikte gelijkheid in typeof value! = 'undefined'


26
2017-11-10 16:13



Het eerste antwoord met de beste beoordeling is fout. Als de waarde undefined is, genereert deze een uitzondering in moderne browsers. Je moet gebruiken:

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

of

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

25
2018-03-19 13:23



Mogelijk vindt u de volgende functie handig:

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

Of in ES7 (commentaar als verdere verbeteringen)

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

  return type.toLowerCase();
}

resultaten:

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

"Merk op dat de bind-operator (: :) geen deel uitmaakt van ES2016 (ES7) noch enige latere editie van de ECMAScript-standaard, het is momenteel een fase 0 (strawman) -voorstel om in de taal te worden geïntroduceerd." - Simon Kjellberg. de auteur wil zijn steun toevoegen aan dit prachtige voorstel om koninklijke hemelvaart te ontvangen.


23
2018-02-12 10:32



! controleer op lege reeksen (""), null, undefined, false en het nummer 0 en NaN. Stel dat een string leeg is var name = "" dan console.log(!name) komt terug true.

function isEmpty(val){
  return !val;
}

deze functie retourneert true als val is leeg, null, undefined, false, het nummer 0 of NaN.


16
2018-01-23 06:56



Je bent een beetje overdreven. Om te controleren of een variabele geen waarde krijgt, zou je alleen moeten controleren tegen undefined en null.

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

Dit gaat ervan uit 0, ""en objecten (zelfs leeg object en array) zijn geldige 'waarden'.


10
2018-04-01 15:21



Hier is de mijne - geeft als resultaat true als de waarde null, undefined, etc of blank is (dwz bevat alleen lege spaties):

function stringIsEmpty(value) {

    return value ? value.trim().length == 0 : true;

}

9
2018-02-12 15:45