javascript - سكربت - شرح جافا سكريبت




هل توجد وظيفة قياسية للبحث عن متغيرات فارغة أو غير محددة أو فارغة في JavaScript؟ (18)

هل هناك وظيفة JavaScript عامة تتحقق من أن المتغير له قيمة ويضمن أنه غير undefined أو null ؟ لقد حصلت على هذا الرمز ، لكنني لست متأكدًا إذا كان يغطي جميع الحالات:

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

أعتقد باستخدام؟ المشغل هو أنظف قليلا.

var ? function_if_exists() : function_if_doesnt_exist();

أعلم أن هذا سؤال قديم ، ولكن هذا هو الاختيار الأكثر أمانًا ولم أراه المنشور هنا تمامًا:

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

سيغطي الحالات التي لم يتم فيها تحديد القيمة أبدًا ، وأي من الحالات التالية:

  • لا شيء
  • غير محدد (قيمة غير معرفة ليست هي نفس المعلمة التي لم يتم تعريفها)
  • 0
  • "" (سلسلة فارغة)
  • خاطئة
  • نان

PS لا حاجة للمساواة الصارمة في قيمة typeof! = 'غير محدد'


إذا كنت تفضل جافا سكريبت عادي ، فجرّب هذا:

  /**
   * Checks if `value` is empty. Arrays, strings, or `arguments` objects with a
   * length of `0` and objects with no own enumerable properties are considered
   * "empty".
   *
   * @static
   * @memberOf _
   * @category Objects
   * @param {Array|Object|string} value The value to inspect.
   * @returns {boolean} Returns `true` if the `value` is empty, else `false`.
   * @example
   *
   * _.isEmpty([1, 2, 3]);
   * // => false
   *
   * _.isEmpty([]);
   * // => true
   *
   * _.isEmpty({});
   * // => true
   *
   * _.isEmpty('');
   * // => true
   */

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;
  }

بخلاف ذلك ، إذا كنت تستخدم تسطيرًا أو تسطيرًا بالفعل ، فحاول:

_.isEmpty(value)

إذا لم يتم الإعلان عن المتغير ، فلن تتمكن من اختبار غير محدد باستخدام وظيفة لأنك ستحصل على خطأ.

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

كلاهما سيولد خطأ إذا لم يتم إعلان فو.

إذا كنت ترغب في اختبار ما إذا تم الإعلان عن متغير يمكنك استخدامه

typeof foo != "undefined"

إذا كنت تريد اختبار ما إذا كان foo قد تم الإعلان عنه وله قيمة يمكنك استخدامها

if (typeof foo != "undefined" && foo) {
    //code here
}

بالنسبة إلى جميع الحضور إلى هنا بسبب سؤال مماثل ، فإن الأعمال التالية رائعة ولديها في مكتبتي في السنوات الأخيرة:

(function(g3, $, window, document, undefined){
   g3.utils = g3.utils || {};
/********************************Function type()********************************
* Returns a lowercase string representation of an object's constructor.
* @module {g3.utils}
* @function {g3.utils.type}
* @public
* @param {Type} 'obj' is any type native, host or custom.
* @return {String} Returns a lowercase string representing the object's 
* constructor which is different from word 'object' if they are not custom.
* @reference http://perfectionkills.com/instanceof-considered-harmful-or-how-to-write-a-robust-isarray/
* http://.com/questions/3215046/differentiating-between-arrays-and-hashes-in-javascript
* http://javascript.info/tutorial/type-detection
*******************************************************************************/
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));

تقوم هذه الوظيفة بالتحقق من empty object {} ، empty array [] ، null ، undefined ، undefined 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) -> true
فال = []؛
isEmpty (val) -> true
isEmpty (غير محدد) -> صحيح
isEmpty (خالية) -> صحيح
isEmpty ("") -> true
isEmpty (false) -> false
isEmpty (0) -> false


على الرغم من أن oldie ، ما ننسى أنه ينبغي لهم التفاف كتلة كود الخاصة بهم ومن ثم التقاط الخطأ ثم اختبار ...

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

لذلك ليس عليك التحقق من مشكلة محتملة من قبل ، يمكنك ببساطة التقاطها ثم التعامل معها بالطريقة التي تريدها.


في حالة وجود أكثر من قيمة ، ضع "&&" بين كل قيم.

if( var1 && var2 && var3) {
  //to do...
}

قد يكون من المفيد.

[null, undefined, ''].indexOf(document.DocumentNumberLabel) > -1

لحالتي حاولت مع إذا ، "،" ، متغير ، لكنها لم تنجح.

انظر الرمز أدناه للحصول على النص من حقل html

var status=$(this).text(); //for example (for my case)

إذا لم يكن هناك قيمة (لا يوجد نص) في متغير الحالة ، كنت أحاول تعيين القيمة "novalue" إلى متغير الحالة.

تعمل التعليمة البرمجية التالية.

if(status == false)
{
   status='novalue';
} 

عندما لم يتم العثور على نص لمتغير satus ، تم تعيين التعليمة البرمجية أعلاه "novalue" إلى متغير الحالة


هذا الشرط الاختيار

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

هو كل ما تحتاجه.


هذا هو واحد بسيط جدا.

if(data) {
  //Comes inside only if the data is not empty and not null 
}

يمكنك فقط معرفة ما إذا كان المتغير لديه قيمة truthy أم لا. هذا يعني

if( value ) {
}

سيتم تقييمه إلى true إذا لم تكن value :

  • لا شيء
  • غير محدد
  • نان
  • سلسلة فارغة ("")
  • 0
  • خاطئة

تمثل القائمة أعلاه جميع القيم falsy الممكنة في ECMA- / Javascript. العثور عليه في specification في قسم ToBoolean .

علاوة على ذلك ، إذا كنت لا تعرف ما إذا كان هناك متغير (وهذا يعني ، إذا تم الإعلان عنه ) ، فيجب عليك التحقق من عامل التشغيل typeof . على سبيل المثال

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

إذا تأكدت من تحديد متغير على الأقل ، فيجب عليك التحقق مباشرة مما إذا كان يحتوي على قيمة truthy كما هو موضح أعلاه.

اقرأ كذلك: http://typeofnan.blogspot.com/2011/01/typeof-is-fast.html



! تحقق من وجود سلاسل فارغة ("") ، و null ، و undefined ، و false ، ورقم 0 ، و NaN. قل ، إذا كانت سلسلة فارغة var name = "" ثم console.log(!name) بإرجاع true .

function isEmpty(val){
  return !val;
}

ستعود هذه الوظيفة true إذا كانت val فارغة أو خالية أو غير محددة أو false أو الرقم 0 أو NaN .


// value is undefined or null
return value === undefined || value === null;

جافا سكريبت ninjas يمكن أن تستخدم == المشغل:

return value == null;

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

هذا سيعود صحيح ل

undefined  // Because undefined == null

null

[]

""

ودالات الوسيطة صفر لأن length الدالة هو عدد المعلمات المعلنة التي يستغرقها.

لعدم السماح للفئة الأخيرة ، قد تحتاج فقط إلى البحث عن سلاسل فارغة

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

var myNewValue = myObject && myObject.child && myObject.child.myValue;

هذا لن يرمي خطأ. إذا كانت myObject أو child أو myValue خالية ، فسيكون myNewValue خاليًا. سوف يتم طرح أي أخطاء







undefined