@ali.bayat
منظورم اینکه چطور میتونم متغییر hرو در فانکشن bصدا زد
function g() { var rand=Math.floor(Math.random() * vids.length); var h="ggg"; } function b(){ }
@masoudproton
سلام
فکر کنم این کار با ECMA6 امکان پذیر باشه
به این صورت که باید از let به جای var استفاده کنید
کدهای زیر:
<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
توجه کنید که از کلمه ی کلیدی var پیش از نام متغیر h استفاده نکردیم.
اگر استفاده می کردیم، نتیجه مطلوب حاصل نمی شد.
و توجه کنید که اگر به تنهایی تابع b() را صدا بزنیم، درست کار نمی کند، چون متغیر h باید ابتدا هنگام صدا زدن تابع g() ایجاد شود.
سلام اول اینکه شما نباید قادر باشید چنین کاری کنید اصلا
یک بخاطر block Scoping اگر قرار باشه از هر تابعی بشه مقادیر تابع دیگه رو تغییر داد یا بهش دسترسی پیدا کرد مشکلات آنچناااااان عجیب غریبی پیش میاد که بااااید دید .
اگر قراره مقداری رو در چند تابع بهش دسترسی پیدا کنید و مقداری ازش کم یا اضافه کنید بهتره از متغیر global استفاده کنید
@hesammousavi
اینی که شما میگید درسته
خب به جای اینها میشه از سشن استفاده کنم میشه روشش رو بگید چون وقتی من بیرون تابع سشن رو صدا میزنم undifine میده
از یک تابع نمی تونیم و نباید بتونید مقدار متغیری در تابع دیگه رو تغییر بدید بالام گفتم اینو ! چیز کاملا مشخصیه مثل قانون جاذبه زمین !
Scope ها در جاوااسکریپت رو بهتر یاد بگیرید. اِسکوپ ها نباید بتونند به محتویات همدیگه دسترسی داشته باشند و در حالت عادی هم ندارند
@masoudproton
من نمیدونم هدفتون از این کار چیه، ولی در بالا راهکارش رو در جاوااسکریپت نوشتم برای شما.
اینکه دوستان اشاره کردند می تونه مشکلاتی رو ایجاد کنه در کل، درسته. من صرفا راهکار سوال شمارو دادم، نمی دونم مورد استفاده تون چیه.
راهکار عمومی هم اینه که یک متغیر سراسری در ابتدا تعریف کنید و در هر دو تابع می تونید ازش استفاده کنید، کدهای این حالت رو ننوشتم البته، فکر می کنم خودتون بهتر از من این روش رو بلد باشید.
سلام.
شما بصورت قانونی نمیتونی یک متغیر لوکال رو بصورت گلوبال استفاده کنی. یکی از راه ها اینه که یک متغیر گلوبال تعریف کنی ولی اونو مقداردهی نکنی. حالا تو هر فانکشنی که خواستی میتونی به اون متغیر گلوبال مقدار دهی کنی و در سراسر برنامه ازش استفاده کنی.
بطور مثال :
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟