اذهب إلى المحتوى

السؤال

نشر

لماذا عندما اقوم بوضع " " وهي فارغة يعطيني this is not valid بالرغم من تحديدي لانه ان لم يكن طوله 2 ( الاسم الاول + ال2 ) فلماذا هذه المشكلة

اقتباس

const products = {

    firsPrice: "twenty",

    secendOne: "thirty",

    get fullProducts() {

        return `${products.firsPrice} ${products.secendOne}`

    },

    set fullProducts(value) {

        if (value !== 'string')

            throw new Error('this is not valid.');



        const parts = value.split(" ");

        if (parts.length !== 2)

            throw new Error('please Enter a first and second name.');



        this.firsPrice = parts[0];

        this.secendOne = parts[1];

    }

};



try {

    products.fullProducts = 'm'; 

}

catch (e) {

    alert(e);

}

 

 

Recommended Posts

  • 0
نشر
بتاريخ 9 ساعات قال محمد حسن21:

لماذا عندما اقوم بوضع " " وهي فارغة يعطيني this is not valid بالرغم من تحديدي لانه ان لم يكن طوله 2 ( الاسم الاول + ال2 ) فلماذا هذه المشكلة

 

السبب في ذلك هو أنك في الكود التالي تقوم بمقارنة ال value مع كلمة string نفسها:

if (value !== 'string'){
  throw new Error('this is not valid.');
}

بالتالي إذا كانت ال value مساوية ل 'm' سيكون ناتج الشرط المستخدم في if هو true لأن حرف ال m لايساوي string 

و نفس الشيء في حالة " ". و بما أن ناتج الجملة الشرطية true سيتم تنفيذ الأكواد التي بداخلها.

إذا أردت التحقق من ما إذا كان نوع value هو string يمكنك استخدام 

 typeof operator حيث يقوم هذا ال operator بإرجاع string بنوع البيانات الموجودة في المتغير, فمثلًا:

var booleanValue = true; 
var numericalValue = 354;
var stringValue = "This is a String";
var stringObject = new String( "This is a String Object" );
alert(typeof booleanValue) 			//   "boolean" يُظهر 
alert(typeof numericalValue) 	    //   "number"  يُظهر
alert(typeof stringValue) 			//   "string"  يُظهر
alert(typeof stringObject)		 	//   "object"  يُظهر

فبالتالي يمكنك استخدام التالي في الكود الخاص بك:

if ( typeof value !== 'string') {
  throw new Error('this is not valid.');
}

لمزيد من التوضيح يمكنك قراءة هذا المقال.

  • 0
نشر

أهلاً بك ،  

المشكلة لديك  هي في ( !== )، حيث يجب أن تكون  = واحدة و ليس == اثنتين، ففي لغة الجافا سكريبت تكون المساواه واحد للقيمة و واحدة أخرى للنوع  (string ,  int , double ) فأنت تقارن القيمة و النوع مع علامة النفي مرة واحدة و هذه غير صحيح في الجافا سكريبت ،  لذلك قم بإزالة المساواه و سيعمل معك البرنامج .  

const products = {

    firsPrice: "twenty",

    secendOne: "thirty",

    get fullProducts() {

        return `${products.firsPrice} ${products.secendOne}`

    },

    set fullProducts(value) {

        if (value != 'string')

            throw new Error('this is not valid.');

 

        const parts = value.split(" ");

        if (parts.length != 2)

            throw new Error('please Enter a first and second name.');

 

        this.firsPrice = parts[0];

        this.secendOne = parts[1];

    }

};

 

try {

    products.fullProducts = 'm'; // wont have an effect

}

catch (e) {

    alert(e);

}


شكراً  لك  

 

  • 0
نشر
بتاريخ 34 دقائق مضت قال محمد حسن21:

لماذا عندما اقوم بوضع " " وهي فارغة يعطيني this is not valid بالرغم من تحديدي لانه ان لم يكن طوله 2 ( الاسم الاول + ال2 ) فلماذا هذه المشكلة

 

مرحباً محمد: 
لديك خطأ في الكود الذي قمت بكتابته 
 حيث أنك في هذا السطر تقول 

// لو القيمة التي ستأتي لا تساوي كلمة string 
// فقم بإظهار خطأ ---------- وهذا خطأ برمجي 
if (value != 'string')

  throw new Error('this is not valid.');


// ==================== الصح ===========
// يجب أن تفحص القيمة التي ستدخل هل هي من نوع string أم لا
// فإذا لم تكن من نوع string أو نص فقم بإظهار خطأ
if (typeof value !== 'string')

  throw new Error('this is not valid.');

شكراً لك 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...