مروان محمود3 نشر 5 سبتمبر 2021 أرسل تقرير نشر 5 سبتمبر 2021 ما الفرق بين let , var في الجافاسكريبت؟ 1 اقتباس
1 شرف الدين حفني نشر 5 سبتمبر 2021 أرسل تقرير نشر 5 سبتمبر 2021 الlet يكون مجاله بداخل القوسين الذي عرف بداخلهم , بينما الvar يكون مجاله ضمن الدالة التي عرف بها, لنفهم هذا الأمر سنكتب الكود التالي كمثال: function print() { var firtname = "sharaf"; let lastname = "ashraf"; console.log(firtname, lastname); // sharaf ashraf { var fname = "sharaf1" let lname = "ashraf1"; console.log(fname, lname); // sharaf1 ashraf1 } console.log(fname); // sharaf1 console.log(lname); // ReferenceError } run(); نﻻحظ ان كلا من المتغيرين fname, lname تم تعريفهم في نفس المجال, لكن على الرغم من ذلك عند طباعتنا لهم خارج الأقواس, يتم طباعة المتغير fname لأنه من النوع var ولكن يحدث خطأ عند محاولة طباعة lname لأنه من النوع let كما بالإضافة إلى أن عند تعريف المتغير من النوع var يتم إعطائه قيمة إبتدائية ب"غير معرف" حتى قبل إنشائه, بينما المتغير let إن حاولنا الوصول إليه قبل تعريف لا يأتينا قيمة "غير معرف" إنما يأتينا خطأ من النوع ReferenceError اقتباس
1 Ziyad Hasan نشر 5 سبتمبر 2021 أرسل تقرير نشر 5 سبتمبر 2021 (معدل) بتاريخ 24 دقائق مضت قال شرف الدين2: الlet يكون مجاله بداخل القوسين الذي عرف بداخلهم , بينما الvar يكون مجاله ضمن الدالة التي عرف بها, لنفهم هذا الأمر سنكتب الكود التالي كمثال: function print() { var firtname = "sharaf"; let lastname = "ashraf"; console.log(firtname, lastname); // sharaf ashraf { var fname = "sharaf1" let lname = "ashraf1"; console.log(fname, lname); // sharaf1 ashraf1 } console.log(fname); // sharaf1 console.log(lname); // ReferenceError } run(); ﻻحظ أن كلا من المتغيرين fname, lname تم تعريفهم في نفس المجال, لكن على الرغم من ذلك عند طباعتنا لهم خارج الأقواس, يتم طباعة المتغير fname لأنه من النوع var ولكن يحدث خطأ عند محاولة طباعة lname لأنه من النوع let كما بالإضافة إلى أن عند تعريف المتغير من النوع var يتم إعطائه قيمة إبتدائية ب"غير معرف" حتى قبل إنشائه, بينما المتغير let إن حاولنا الوصول إليه قبل تعريف لا يأتينا قيمة "غير معرف" إنما يأتينا خطأ من النوع ReferenceError بالأضافة لما قاله شرف الدين يمكنك إستخدام var لبناء property on the global object بينما لا تستطيع أن تستخدم let كما في المثال الأتي var foo = "Foo"; // globally scoped let bar = "Bar"; // globally scoped لن تسمح ب console.log(window.foo); // Foo console.log(window.bar); // undefined و var تسمح لك بإعادة تعريف المتغير بينما let تعطي SyntaxError في "strict mode" كما في المثال الأتي 'use strict'; var foo = "foo1"; var foo = "foo2"; // foo1 سوف تستبدل foo2 لا توجد مشكلة let bar = "bar1"; let bar = "bar2"; // SyntaxError: Identifier 'bar' has already been declared تم التعديل في 5 سبتمبر 2021 بواسطة Ziyad Hasan اقتباس
0 Ali Haidar Ahmad نشر 5 سبتمبر 2021 أرسل تقرير نشر 5 سبتمبر 2021 (معدل) يتم استخدام كل من var و let للإعلان عن المتغير في جافا سكريبت ولكن الاختلاف بينهما هو أن var عبارة عن دالة ذات نطاق مفتوح و let يتم تحديد نطاقها. يمكن القول أن المتغير الذي تم التصريح به باستخدام var يتم تعريفه في جميع أنحاء البرنامج مقارنةً بـ let. مثال سيوضح الفرق بشكل أفضل: مثال عن let: Input: console.log(x); let x=5; console.log(x); Output: Error مثال عن var: Input: console.log(x); var x=5; console.log(x); Output: undefined 5 المتغيرات let لها مناطق ميتة مؤقتة بينما المتغيرات var ليست كذلك. لفهم المنطقة الميتة الزمنية ، دعنا نفحص دورات حياة كل من متغيري var و let ، والتي لها خطوتان: الإنشاء والتنفيذ. أولاً var: في مرحلة الإنشاء ، يقوم محرك JavaScript بتعيين مساحات تخزين لمتغيرات مختلفة ويقوم على الفور بتهيئتها إلى غير محددة. وفي مرحلة التنفيذ ، يخصص محرك JavaScript للمتغيرات var القيم المحددة بواسطة التخصيصات إذا كانت موجودة. خلاف ذلك ، تظل المتغيرات var غير محددة. أما let ففي مرحلة الإنشاء ، يقوم محرك JavaScript بتعيين مساحات تخزين لمتغيرات let ولكن لا يقوم بتهيئة المتغيرات. ستؤدي الإشارة إلى المتغيرات غير المهيأة إلى حدوث خطأ في ReferenceError. المتغيرات let لها نفس مرحلة التنفيذ مثل المتغيرات var. تبدأ المنطقة الميتة الزمنية The temporal dead zoneمن الكتلة حتى تتم معالجة إعلان المتغير Let . بمعنى آخر ، إنه يكون ذلك الموقع حيث لا يمكنك الوصول إلى متغيرات let قبل تحديدها. تم التعديل في 5 سبتمبر 2021 بواسطة Ali Haidar Ahmad اقتباس
السؤال
مروان محمود3
ما الفرق بين let , var في الجافاسكريبت؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.