1masoud
6 سال پیش توسط 1masoud مطرح شد
9 پاسخ

چطور میتونم یک متغییر رو در یک فانکشن دیگر استفاده کنم

@ali.bayat
منظورم اینکه چطور میتونم متغییر hرو در فانکشن bصدا زد
function g() { var rand=Math.floor(Math.random() * vids.length); var h="ggg"; } function b(){ } ‍‍


ثبت پرسش جدید
علیرضا معمارزاده
تخصص : junior level developer
@alireza.mzh 6 سال پیش مطرح شد
0

@masoudproton
سلام
فکر کنم این کار با ECMA6 امکان پذیر باشه
به این صورت که باید از let به جای var استفاده کنید


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 6 سال پیش آپدیت شد
0

کدهای زیر:

<html>
<body>
<h2>JavaScript</h2>
<p id="demo"></p>

<script>
function g() { 
   h = 5;
   h++;
}

function b() {
    h++;
    return h;
}

g();
document.getElementById("demo").innerHTML = b();
</script>

</body>
</html>

خروجی:

JavaScript
7

میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 6 سال پیش مطرح شد
0

توجه کنید که از کلمه ی کلیدی var پیش از نام متغیر h استفاده نکردیم.
اگر استفاده می کردیم، نتیجه مطلوب حاصل نمی شد.

و توجه کنید که اگر به تنهایی تابع b() را صدا بزنیم، درست کار نمی کند، چون متغیر h باید ابتدا هنگام صدا زدن تابع g() ایجاد شود.


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 6 سال پیش مطرح شد
1

سلام اول اینکه شما نباید قادر باشید چنین کاری کنید اصلا
یک بخاطر block Scoping اگر قرار باشه از هر تابعی بشه مقادیر تابع دیگه رو تغییر داد یا بهش دسترسی پیدا کرد مشکلات آنچناااااان عجیب غریبی پیش میاد که بااااید دید .
اگر قراره مقداری رو در چند تابع بهش دسترسی پیدا کنید و مقداری ازش کم یا اضافه کنید بهتره از متغیر global استفاده کنید


1masoud
تخصص : php,laravel
@masoudproton 6 سال پیش مطرح شد
0

@hesammousavi
اینی که شما میگید درسته
خب به جای اینها میشه از سشن استفاده کنم میشه روشش رو بگید چون وقتی من بیرون تابع سشن رو صدا میزنم undifine میده


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 6 سال پیش مطرح شد
1

از یک تابع نمی تونیم و نباید بتونید مقدار متغیری در تابع دیگه رو تغییر بدید بالام گفتم اینو ! چیز کاملا مشخصیه مثل قانون جاذبه زمین !


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 6 سال پیش مطرح شد
1

Scope ها در جاوااسکریپت رو بهتر یاد بگیرید. اِسکوپ ها نباید بتونند به محتویات همدیگه دسترسی داشته باشند و در حالت عادی هم ندارند


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 6 سال پیش مطرح شد
0

@masoudproton
من نمیدونم هدفتون از این کار چیه، ولی در بالا راهکارش رو در جاوااسکریپت نوشتم برای شما.
اینکه دوستان اشاره کردند می تونه مشکلاتی رو ایجاد کنه در کل، درسته. من صرفا راهکار سوال شمارو دادم، نمی دونم مورد استفاده تون چیه.

راهکار عمومی هم اینه که یک متغیر سراسری در ابتدا تعریف کنید و در هر دو تابع می تونید ازش استفاده کنید، کدهای این حالت رو ننوشتم البته، فکر می کنم خودتون بهتر از من این روش رو بلد باشید.


پیمان معتمدی فر
@peyman1994 2 سال پیش مطرح شد
0

سلام.
شما بصورت قانونی نمیتونی یک متغیر لوکال رو بصورت گلوبال استفاده کنی. یکی از راه ها اینه که یک متغیر گلوبال تعریف کنی ولی اونو مقداردهی نکنی. حالا تو هر فانکشنی که خواستی میتونی به اون متغیر گلوبال مقدار دهی کنی و در سراسر برنامه ازش استفاده کنی.
بطور مثال :

 تصویر


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام