جاوا اسکریپت یک زبان برنامهنویسی سطح بالا و تفسیر شده است که عمدتاً برای ایجاد برنامههای وب تعاملی و پویا استفاده میشود. این زبان بخشی اساسی از توسعه وب است و در کنار HTML و CSS قرار دارد. جاوا اسکریپت در ابتدا توسط برندان ایچ در حین کار در نتاسکیپ توسعه یافت و به زبانی چندمنظوره تبدیل شده است که از سبکهای برنامهنویسی رویداد محور، تابعی و دستوری پشتیبانی میکند. امروزه این زبان بخشی جداییناپذیر از فناوریهای وب است و اکوسیستم وسیعی را شامل میشود که شامل فریمورکها، کتابخانهها و محیطهای اجرایی متعدد، بهویژه Node.js است.
جاوا اسکریپت در سال 1995 تحت نام موکا ایجاد شد، که بعداً به لایو اسکریپت و در نهایت به جاوا اسکریپت تغییر نام داد تا از محبوبیت جاوا بهرهبرداری کند. اولین نسخه آن در نتاسکیپ ناویگیتور 2.0 منتشر شد و به توسعهدهندگان این امکان را داد تا محتوای پویا به صفحات وب اضافه کنند. این زبان در سال 1997 تحت انجمن تولیدکنندگان کامپیوتر اروپا (ECMA) به عنوان ECMAScript استاندارد شد و نسخههای بعدی ویژگیهای کلیدی را معرفی کردند که قابلیتهای آن را گسترش دادند.
تکامل جاوا اسکریپت شامل معرفی ویژگیهایی مانند برنامهنویسی شیگرا و برنامهنویسی ناهمزمان (پروژهها و بازخوردها) بود. بهویژه، ECMAScript 5 (2009) "حالت سخت" را معرفی کرد، پشتیبانی از JSON و بهبود روشهای آرایه، در حالی که ECMAScript 6 (2015)، که به عنوان ES6 یا ECMAScript 2015 نیز شناخته میشود، تغییرات قابل توجهی مانند توابع پیکانی، کلاسها و ماژولها را به ارمغان آورد. انتشار ES6 یک تغییر پارادایمی را نشان داد، زیرا جاوا اسکریپت را به زبانی قویتر تبدیل کرد که برای توسعه برنامههای بزرگ مقیاس مناسب بود.
امروزه، جاوا اسکریپت در توسعه وب همهجا حاضر است و فریمورکهای فرانتاند مانند React، Angular و Vue.js را قدرت میبخشد و همچنین توسعه بکاند از طریق Node.js را امکانپذیر میسازد. این زبان همچنان با انتشار سالانه ECMAScript در حال تکامل است و ویژگیها و بهبودهای جدیدی را معرفی میکند. با افزایش استفاده از جاوا اسکریپت در توسعه برنامههای موبایل، برنامههای دسکتاپ (با استفاده از Electron) و حتی برنامههای سطح سازمانی، اهمیت و اعتبار آن در چشمانداز توسعه نرمافزار همچنان قوی باقی مانده است.
جاوا اسکریپت یک زبان نوعگذاری پویا است که به متغیرها اجازه میدهد مقادیر هر نوعی را بدون اعلام نوع صریح نگهداری کنند.
let example = "Hello, World!";
example = 42; // بدون خطا، example میتواند نوعها را تغییر دهد
توابع در جاوا اسکریپت شهروندان درجه یک هستند، به این معنی که میتوانند به متغیرها اختصاص داده شوند، به عنوان آرگومانها منتقل شوند و از توابع دیگر بازگردانده شوند.
const greet = function(name) {
return `Hello, ${name}`;
};
console.log(greet("Alice")); // خروجی: Hello, Alice
توابع پیکانی که در ES6 معرفی شدند، نحوی مختصرتر برای نوشتن توابع ارائه میدهند و this
خود را متصل نمیکنند.
const add = (a, b) => a + b;
console.log(add(2, 3)); // خروجی: 5
وعدهها برنامهنویسی ناهمزمان را با نمایندگی از یک مقدار که ممکن است در آینده در دسترس باشد، ساده میکنند.
const fetchData = () => {
return new Promise((resolve, reject) => {
// شبیهسازی یک تماس API
setTimeout(() => resolve("Data received!"), 1000);
});
};
fetchData().then(data => console.log(data)); // خروجی پس از 1 ثانیه: Data received!
الگوهای متنی امکان درج آسان رشتهها و رشتههای چندخطی را فراهم میکنند.
const name = "Alice";
const greeting = `Hello, ${name}!`;
console.log(greeting); // خروجی: Hello, Alice!
انتساب تخریب استخراج مقادیر از آرایهها یا ویژگیها از اشیاء را ساده میکند.
const person = { name: "Alice", age: 25 };
const { name, age } = person;
console.log(name, age); // خروجی: Alice 25
عملگر گسترش (...
) به گسترش عناصر از یک iterable اجازه میدهد، در حالی که عملگر استراحت عناصر باقیمانده را به یک آرایه جمعآوری میکند.
const numbers = [1, 2, 3];
const moreNumbers = [...numbers, 4, 5]; // خروجی: [1, 2, 3, 4, 5]
const sum = (...args) => args.reduce((a, b) => a + b, 0);
console.log(sum(1, 2, 3)); // خروجی: 6
جاوا اسکریپت از برنامهنویسی شیگرا مبتنی بر کلاس با نحو class
که در ES6 معرفی شده است، پشتیبانی میکند.
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a noise.`);
}
}
const dog = new Animal("Dog");
dog.speak(); // خروجی: Dog makes a noise.
جاوا اسکریپت از برنامهنویسی مدولار از طریق ماژولهای ES6 که از کلیدواژههای import
و export
استفاده میکنند، پشتیبانی میکند.
// module.js
export const name = "Alice";
export function greet() {
console.log("Hello!");
}
// main.js
import { name, greet } from './module.js';
console.log(name); // خروجی: Alice
greet(); // خروجی: Hello!
نحو async/await کار با وعدهها را ساده میکند و کد ناهمزمان را شبیه به کد همزمان میکند.
const fetchData = async () => {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
return data;
};
fetchData().then(data => console.log(data));
جاوا اسکریپت در محیطهای مختلف اجرا میشود، با موتورهای مرورگری مانند V8 (کروم) و SpiderMonkey (فایرفاکس) که از برجستهترین آنها هستند. Node.js به جاوا اسکریپت اجازه میدهد تا در سمت سرور اجرا شود و به توسعهدهندگان این امکان را میدهد که برنامههای وب کامل را با یک زبان واحد در هر دو سمت کلاینت و سرور بسازند.
IDEها و ویرایشگرهای کد رایج برای جاوا اسکریپت شامل Visual Studio Code، WebStorm، Atom و Sublime Text هستند. این ابزارها ویژگیهایی مانند هایلایت نحوی، تکمیل کد هوشمند و پشتیبانی از اشکالزدایی را فراهم میکنند.
برای راهاندازی یک پروژه جاوا اسکریپت، توسعهدهندگان معمولاً از مدیران بسته مانند npm یا yarn برای مدیریت وابستگیها استفاده میکنند. ساختار معمول یک پروژه شامل یک فایل index.html
برای رابط وب، یک فایل جاوا اسکریپت اصلی (معمولاً main.js
) و احتمالاً یک فایل package.json
برای مدیریت بستهها است.
npm init -y # راهاندازی یک پروژه جدید جاوا اسکریپت با تنظیمات پیشفرض
npm install express # نصب فریمورک Express
جاوا اسکریپت در کاربردهای متعددی استفاده میشود، از جمله:
رقبای اصلی و جایگزینهای جاوا اسکریپت شامل:
هر زبان نقاط قوت و ضعف خاص خود را بسته به نیازهای خاص یک پروژه یا برنامه دارد.
برای ترجمه کد جاوا اسکریپت به سایر زبانها یا برعکس، میتوان از ابزارهایی مانند Babel (برای تبدیل جاوا اسکریپت مدرن به نسخههای قدیمیتر) یا TypeScript (برای بررسی نوع و تبدیل به جاوا اسکریپت) استفاده کرد. کتابخانههایی مانند jQuery نیز میتوانند در دستکاری DOM در محیطهای مختلف با ارائه یک API یکسان کمک کنند.
علاوه بر Babel و TypeScript، ابزارهای دیگری نیز میتوانند در ترجمه یا تبدیل کد جاوا اسکریپت کمک کنند: