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




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

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

var ? function_if_exists() : function_if_doesnt_exist();

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

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

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

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