Scope در جاوااسکریپت

از ویکی کد
پرش به ناوبری پرش به جستجو
دورهٔ آموزشی جاوااسکریپت
Javascript.jpg
جاوااسکریپت
موارد آموزشی
۱آموزش جاوااسکریپت
۲مقدمه‌ای بر جاوااسکریپت
۳قوانین و اصول اولیه زبان جاوااسکریپت
۴خروجی جاوااسکریپت
۵عبارت‌ها در جاوااسکریپت
۶شیوهٔ نوشتن دستورات در جاوااسکریپت
۷نظرات یا کامنت‌ها (Comments) در جاوااسکریپت
۸متغیرها در جاوااسکریپت
۹عملگرهای جاوااسکریپت
۱۰عملگرهای ریاضی در جاوااسکریپت
۱۱عملگرهای مقداردهی در جاوااسکریپت
۱۲انواع داده‌ها در جاوااسکریپت
۱۳توابع در جاوااسکریپت
۱۴اشیاء (object) در جاوااسکریپت
۱۵رویدادها در جاوااسکریپت
۱۶رشته‌های متنی (string) در جاوااسکریپت
۱۷متدهای نوع داده متنی یا رشته‌ای در جاوااسکریپت
۱۸اعداد در جاوااسکریپت
۱۹متدهای داده‌های عددی در جاوااسکریپت
۲۰آرایه‌ها در جاوااسکریپت
۲۱متدهای آرایه در جاوااسکریپت
۲۲مرتب‌سازی آرایه‌ها در جاوااسکریپت
۲۳متدهای پیمایش آرایه در جاوااسکریپت
۲۴اشیاء تاریخ و زمان در جاوااسکریپت
۲۵فرمت‌های تاریخ و زمان در جاوااسکریپت
۲۶متدهای دریافت تاریخ و زمان در جاوااسکریپت
۲۷متدهای تنظیم زمان و تاریخ در جاوااسکریپت
۲۸شی ریاضی (Math) در جاوااسکریپت
۲۹ایجاد عدد تصادفی در جاوااسکریپت
۳۰مقادیر بولین (Booleans) در جاوااسکریپت
۳۱عملگرهای منطقی و مقایسه‌ای در جاوااسکریپت
۳۲ساختار if else و else if در جاوااسکریپت
۳۳تکه کد Switch در جاوا اسکریپت
۳۴حلقه For در جاوااسکریپت
۳۵حلقه While در جاوااسکریپت
۳۶کلمات کلیدی Break و Continue در جاوااسکریپت
۳۷تبدیل نوع داده‌ها در جاوااسکریپت
۳۸عملیات‌های بیتی در جاوااسکریپت
۳۹عبارات با قاعده در جاوااسکریپت
۴۰خطاها در جاوااسکریپت - رخ دادن خطا و رفع آن
۴۱Scope در جاوااسکریپت
۴۲Hoisting یا جا به جایی کدها در جاوااسکریپت
۴۳استفاده از مد یا حالت سخت‌گیرانه (use strict) در جاوااسکریپت
۴۴کلمه کلیدی This در جاوااسکریپت
۴۵کلمه کلیدی Let در جاوااسکریپت
۴۶ثابت‌ها در جاوااسکریپت
۴۷تعریف توابع به صورت پیکان
۴۸کلاس‌ها در جاوااسکریپت
۴۹اشکال‌زدایی در جاوااسکریپت
۵۰راهنمای استایل و استانداردهای کدنویسی در جاوااسکریپت
۵۱بهترین تمرینات جاوااسکریپت
۵۲اشتباهات رایج در برنامه‌نویسی جاوااسکریپت
۵۳کارایی در جاوااسکریپت
۵۴کلمات رزرو شده در جاوااسکریپت
۵۵ورژن‌های جاوااسکریپت
۵۶ECMAScript 5 - JavaScript 5
۵۷ECMAScript 6 - ECMAScript 2015
۵۸جیسون (JSON) در جاوااسکریپت
فرم‌ها
۱فرم‌ها در جاوااسکریپت
۲API ارزشیابی در جاوااسکریپت
اشیاء (object) در جاوااسکریپت
۱تست
۲تست
۳تست
۴تست
۵تست
۶تست
۷تست
JS Functions
۱تست
۲تست
۳تست
۴تست
۵تست
۶تست
JS HTML DOM
۱تست
۲تست
۳تست
۴تست
۵تست
۶تست
۷تست
۸تست
۹تست
۱۰تست
۱۱تست
۱۲تست
۱۳تست


Scope میزان دسترسی (میزان قابل مشاهده بودن) متغیرها را مشخص می‌کند. [۱]

Scope تابع‌ها در جاوااسکریپت

در جاوااسکریپت دو نوع Scope وجود دارد:

  • Scope محلی یا local
  • Scope جهانی یا کلی (به انگلیسی: Global)

جاوااسکریپت دارای scope تابع است: هر تابع یک Scope جدید ایجاد می‌کند.

Scope میزان دسترسی (میزان قابل مشاهده بودن) متغیرها را مشخص می‌کند.

متغیرهایی که درون یک تابع تعریف می شونئد از بیرون تابع قابل دسترسی (مشاهده) نیستند.

متغیرهای محلی (به انگلیسی: LOCAL) در جاوااسکریپت

متغیرهایی که درون یک تابع جاوااسکریپت تعریف می‌شوند، برای آن تابع متغیر محلی محسوب می‌شوند.

متغیرهای محلی scope تابع را دارند: آنها تنها می‌توانند از درون خود تابع مورد دسترسی واقع شوند.

مثال

// code here can NOT use carName

function myFunction() {
  var carName = "Volvo";

  // code here CAN use carName

}

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

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

متغیرهای جهانی، کلی (به انگلیسی: Global) در جاوااسکریپت

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

یک متغیر کلی یا جهانی یا global دارای scope جهانی یا global است: تمامی اسکریپت‌ها وتوابع درون یک صفحه وب می‌تواننند به آن دسترسی داشته باشند.

مثال

var carName = "Volvo";

// code here can use carName

function myFunction() {

  // code here can also use carName

}

متغیرهای جاوااسکریپت

در جاوااسکریپت، شی‌ها و توابع نیز متغیر هستند.


متغیر جهانی (به انگلیسی: Global) خودکار

اگر شما مقداری را به یک متغیر که تعریف نشده انتساب دهید، این متغیر به صورت خودکار به عنوان یک متغیر جهانی یا GLOBAL شناخته می‌شود.

This code مثال will declare a global variable carName, even if the value is assigned inside a function.

در مثال زیر، یک متغیر جهانی یا کلی (به انگلیسی: Global) با نام​carName​حتی اگر درون یک تابع مقدار دهی شود، تعریف می‌شود.

مثال

myFunction();

// code here can use carName

function myFunction() {
  carName = "Volvo";
}

مد یا حالت سخت‌گیرانه

تمامی مرورگرهای مدرن جاوااسکریپت را “حالت سخت گیرانه (به انگلیسی: strict mode)” اجرا می‌کنند.

شما مطالب بیشتری را در مورد اینکه چگونه از مد یا حالت سخت گیرانه (strict mode) در فصل‌های آینده از این آموزش خواهید آموخت.


متغیرهای کلی (به انگلیسی: Global) در HTML

در جاوااسکریپت، scope جهانی یا کلی شامل کل محیط جاوااسکریپت می‌شود.

در HTML, scope جهانی یا کلی یا Global شی پنجره یا Window است. تمامی متغیرهای کلی یا Global به شی پنجره یا window وابسته هستند.

مثال

var carName = "Volvo";

// code here can use window.carName

هشدار


حیات متغیرها در جاوااسکریپت

حیات یک متغیر در جاوااسکریپت زمانی آغاز می‌شود که آن متغیر تعریف می‌شود.

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

در نرم‌افزارهای مروگر وب، متغیرهای جهانی یا Global زمانی که شما پنجره مرورگر (و یا زبانه) را می‌بندید حذف می‌شوند اما برای صفحات جدیدی که در پنجره یکسان بارگذاری می‌شوند همچنان در دسترس خواهند بود.

آرگومان‌های توابع

آرگومان‌های تابع (پارامترهای یک تابع) همانند متغیرهای محلی درون یک تابع کار می‌کنند.

منابع آموزشی