راکت

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

9 پاسخ

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

1masoud
1masoud
@masoudproton
ثبت پرسش جدید

پاسخ‌ها

9
علیرضا معمارزاده
علیرضا معمارزاده
@alireza.mzh

تخصص: junior level developer

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

میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

کدهای زیر:

<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

شاید پاسخ شما همین‌جا باشد

میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

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

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

حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

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

1masoud
1masoud
@masoudproton

تخصص: php,laravel

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

حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

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

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

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

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

پیمان معتمدی فر
پیمان معتمدی فر
@peyman1994

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

 تصویر

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

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