توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : export کردن تابع و متغییر در es6
<?php?>
April 11th, 2019, 15:46
به کد زیر توجه کنید :
فایل style2.js ::::::::::
var a=20;
var num=30;
function num(){
alert('hi');
}
export {a,num}
فایل style.js :::::
import * as style2 from './style2';
style2.num(); // کار نمیکنه
alert(style2.num); // کار میکنه
من یک متغییر با نام num و یک تابع با نام num دارم ( هم نام هستند :39: )
وقتی داخل style2.js اطلاعات style.js رو import میکنم , فقط میتونم از متغییر num استفاده کنم و نمیتونم از تابع num استفاده بکنم .
چون اسم تابع و متغییر هم نام هست مشکل ایجاد میشه
تشکر از دوستان
T.Toosi
April 11th, 2019, 18:01
باسلام، برای درک این موضوع ابتدا باید با رفتار hoisting در جاوا اسکریپت آشنا باشید سپس باید بدانید در بالای scope ابتدا function ها سپس variable ها ساخته و تعریف می شوند به همین دلیل num شما overwrite و مقدار 30 را گرفته.
<?php?>
April 12th, 2019, 18:04
باسلام، برای درک این موضوع ابتدا باید با رفتار hoisting در جاوا اسکریپت آشنا باشید سپس باید بدانید در بالای scope ابتدا function ها سپس variable ها ساخته و تعریف می شوند به همین دلیل num شما overwrite و مقدار 30 را گرفته. ممنون بابت پاسختون . راهکاری وجود داره که من بتونم تابعی با نام num و هم متغییری با نام num داشته باشم و بتونم از هردوشون استفاده بکنم ؟ درواقع در php این امکان وجود داره یعنی شما یک متغییر با نام num و یک تابع با نام num میسازید > هر وقت نوشتید num() تابع صدا زده میشه و هر وقت گفتید num متغییر صدا زده میشه .
T.Toosi
April 12th, 2019, 22:12
ممنون بابت پاسختون . راهکاری وجود داره که من بتونم تابعی با نام num و هم متغییری با نام num داشته باشم و بتونم از هردوشون استفاده بکنم ؟ درواقع در php این امکان وجود داره یعنی شما یک متغییر با نام num و یک تابع با نام num میسازید > هر وقت نوشتید num() تابع صدا زده میشه و هر وقت گفتید num متغییر صدا زده میشه .
باسلام، در جاوا اسکریپت همه چی object است و با php تفاوت دارد، پی اچ پی به قول معروف fully object oriented نیست و فقط feature هایی مثل class، object, constructors, destructors و .. را پشتیبانی می کند. در نتیجه تنها راهی که شما دارید یک چیزی مثل زیر است :
var a=20;
function num(){
alert('hi');
}
num.num=30
export {a,num}
import * as style2 from './style2';
style2.num();
alert(style2.num.num);