ای سی ایم اسکریپت یکمین عملگر

یک آپریاتر یک پارامتر دارد، یعنی اشیاء یا مقادیری که باید عمل بر روی آنها انجام شود. آنها ساده‌ترین آپریاترها در ECMAScript هستند.

delete

delete آپریاتر قبلی تعریف شده برای ویژگی‌ها یا روش‌های یک اشیاء را حذف می‌کند. به عنوان مثال:

var o = new Object;
o.name = "David";
alert(o.name); // نکالائی دیوید"
delete o.name;
alert(o.name);	// نمودار "undefined"

اس مثال میں، name خاصیت کو حذف کردیا گیا ہے، جس کا معنیًت اس کی مجبورہ اشاریہ نکالنا ہوتا ہے، اس کو undefined (یعنی بولی کئی نہیں کئی گئی متغیر کی قیمتی) رکھ دیا جائے گا۔

delete آپریٹر کو کسی بھی وکٹ کی کسی بھی غیر تعریف شدہ خاصیت یا طریقہ کار کو حذف نہیں کرسکتا۔ مثلاً، درست مندرجہ نمونہ میں، name خاصیت کو حذف کردیا گیا ہے، جس کا معنیًت اس کی مجبورہ اشاریہ نکالنا ہوتا ہے، اس کو undefined (یعنی بولی کئی نہیں کئی گئی متغیر کی قیمتی) رکھ دیا جائے گا۔

delete o.toString;

جب بھی toString کو اصل نام کا نام دیکھا جائے، اس کا کوئی بھی سطر کد خطا کا باعث بنتا ہے، کیونکہ toString() طریقہ کار اصل ECMAScript طریقہ کار ہے، نہ کہ کسی وکٹ کی تعریف کی گئی طریقہ کار۔

وائوڈ

وائوڈ آپریٹر کوئی بھی قیمتی کو undefined واپسی دیتا ہے، جو کچھ کچھ بولیوک میں استعمال کیا جاتا ہے، مثلاً HTML کے <a> علامت سے جی ایس این فونکشن کو بولی سکتا ہے، تاکہ بولی کا کوئی بھی واپسی نہ کیا جائے، جب کچھ کچھ بولی کا کوئی بھی واپسی نہ کیا جائے تو براوی صفحہ خالی کردیا جائے گا، جس میں کوئی بھی نمودار نہیں کیا جائے گا، مثلاً:

<a href="javascript:window.open('about:blank')">کلیک کریں</a>

اگر اس کا کوئی سطر کد HTML پیج میں لگایا جائے تو اس کا کلیک کرنے پر اس میں "[object]" نمودار کیا جائے گا۔TIY

یہ وجہ سے کہ window.open() طریقہ کار نئی کھولی گئی ونڈو کی رفرنسی واپسی کرتا ہے، جس کی بعد سے اس کا اشاریہ وائیو کو بروئی جائے گا اور اس کا اشاریہ شائع کیا جائے گا۔

اس اثر کو روکنا، وائوڈ آپریٹر کا استعمال کرکے window.open() فونکشن کو بولی سکتے ہیں:

<a href="javascript:void(window.open('about:blank'))">کلیک کریں</a>

یہ جس کی وجہ سے window.open() کا استعمال undefined واپسی کرتا ہے، جو اک سچی قیمتی نہیں ہوتا، اس کا نمودار نہیں کیا جائے گا، اس میں نہیں نمودار کیا جائے گا۔

نکات:یاد رکھیئے کہ بغیر کوئی بھی واپسی کا مندوب کا حقیقی طور پر واپسی undefined ہوتا ہے۔

پریفکس اضافی/کُچھ آپریٹر

C (اور Java) سے مستقیم طور پر لیئے گئے دو آپریٹر پریفکس اضافی/کُچھ آپریٹر اور پریفکس کُچھ آپریٹر ہیں۔

پریفکس اضافی/کُچھ آپریٹر کے معنیًت اس کے ہیں کہ اس میں کُچھ کاری کا عمل کُچھ کاری کے آپریشن سے پہلے ہوتا ہے، جس کی شکل میں متغیر کے پچھلے دو اضافی آئیکنز (++) رکھا گیا ہے:

var iNum = 10;
++iNum;

دوسری سطر کد میں iNum کو 11 میں اضافیا گیا ہے، یہ اس کے طور پر تساوی ہے:

var iNum = 10;
iNum = iNum + 1;

اسی طرح، پریفکس کُچھ آپریٹر سے کم کرنا 1 کی صورت میں ہوتا ہے، جس کی شکل میں متغیر کے پچھلے دو منفی آئیکنز (--) رکھا گیا ہے:

var iNum = 10;
--iNum;

اس مثال میں، دوسری سطر کد میں iNum کی قیمت کو 9 سے کم کردیا گیا ہے۔

سابق میں آپ نے پریفکس آپریٹر استعمال کرتے وقت دقت کریں کہ اضافی اور کُچھ کاری آپریٹروں سے پہلے آپریشن میں ہوتا ہے۔ درست مندرجہ نمونہ دیکھیئے:

var iNum = 10;
--iNum;
alert(iNum);	// خروجی "9"
alert(--iNum);	// خروجی "8"
alert(iNum);	// خروجی "8"

کد دوم برای کاهش مقدار iNum استفاده می‌کند، کد سوم نتایج را نمایش می‌دهد ("9"). کد چهارم دوباره برای کاهش مقدار iNum استفاده می‌کند، اما این بار کاهش پیشوندی و عملیات خروجی در یک جمله واحد انجام می‌شود، نتایج نمایش داده شده "8" است. برای اثبات انجام تمامی عملیات کاهش، کد پنجم دوباره نتایج "8" را نمایش می‌دهد.

در جملات ریاضی، اولویت عملگرهای پیشوندی و پیش‌کاهشی یکسان است، بنابراین باید به ترتیب از چپ به راست محاسبه شوند. به عنوان مثال:

var iNum1 = 2;
var iNum2 = 20;
var iNum3 = --iNum1 + ++iNum2;	// مساوی "22"
var iNum4 = iNum1 + iNum2;		// مساوی "22"

در کد قبلی، iNum3 برابر با 22 است زیرا جملات محاسبه شده باید 1 + 21 باشند. متغیر iNum4 نیز برابر با 22 است که 1 + 21 نیز است.

عملگرهای افزایش/کاهش پسوندی

دو عملگر مستقیم از C (و Java) قرض شده‌اند، یعنی عملگرهای افزایش پسوندی و کاهش پسوندی.

عملگر افزایش پسوندی نیز به مقدار عددی یک افزایش می‌دهد و به صورت دو خطی (++) پس از متغیر نوشته می‌شود:

var iNum = 10;
iNum++;

مثل انتظار بود، عملگر کاهش پسوندی نیز از مقدار عددی یک کاهش می‌دهد و به صورت دو خطی (--) پس از متغیر نوشته می‌شود:

var iNum = 10;
iNum--;

کد دوم مقدار iNum را به 9 کاهش می‌دهد.

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

var iNum = 10;
iNum--;
alert(iNum);	// خروجی "9"
alert(iNum--);	// خروجی "9"
alert(iNum);	// خروجی "8"

مانند مثال‌های عملگرهای پیشوند، کد سوم برای کاهش مقدار iNum استفاده می‌کند، کد چهارم نتایج را نمایش می‌دهد ("9"). کد پنجم به نمایش مقدار iNum ادامه می‌دهد، اما این بار عملگر کاهش پسوندی در یک جمله واحد اعمال می‌شود. به دلیل اینکه کاهش پسوندی پس از محاسبه جملات انجام می‌شود، مقدار نمایش داده شده در این جمله "9" است. پس از اجرای کد پنجم، تابع alert مقدار "8" را نمایش می‌دهد، زیرا پس از اجرای کد چهارم و قبل از اجرای کد پنجم، کاهش پسوندی انجام شده است.

در جملات ریاضی، اولویت عملگرهای افزایش و کاهش پسوندی یکسان است، بنابراین باید به ترتیب از چپ به راست محاسبه شوند. به عنوان مثال:

var iNum1 = 2;
var iNum2 = 20;
var iNum3 = iNum1-- + iNum2++;	// مساوی "22"
var iNum4 = iNum1 + iNum2;		// مساوی "22"

在前面的代码中,iNum3 等于 22,因为表达式要计算的是 2 + 20。变量 iNum4 也等于 22,不过它计算的是 1 + 21,因为增量和减量运算都在给 iNum3 赋值后才发生。

一元加法和一元减法

大多数人都熟悉一元加法和一元减法,它们在 ECMAScript 中的用法与您高中数学中学到的用法相同。

一元加法本质上对数字无任何影响:

var iNum = 20;
iNum = +iNum;
alert(iNum);	//输出 "20"

这段代码对数字 20 应用了一元加法,返回的还是 20。

尽管一元加法对数字无作用,但对字符串却有有趣的效果,会把字符串转换成数字。

var sNum = "20";
alert(typeof sNum);	//输出 "string"
var iNum = +sNum;
alert(typeof iNum);	//输出 "number"

这段代码把字符串 "20" 转换成真正的数字。当一元加法运算符对字符串进行操作时,它计算字符串的方式与 parseInt() 相似,主要的不同是只有对以 "0x" 开头的字符串(表示十六进制数字),一元运算符才能把它转换成十进制的值。因此,用一元加法转换 "010",得到的总是 10,而 "0xB" 将被转换成 11。

另一方面,一元减法就是对数值求负(例如把 20 转换成 -20):

var iNum = 20;
iNum = -iNum;
alert(iNum);	//输出 "-20"

与一元加法运算符相似,一元减法运算符也会把字符串转换成近似的数字,此外还会对该值求负。例如:

var sNum = "20";
alert(typeof sNum);	//输出 "string"
var iNum = -sNum;
alert(iNum);		//输出 "-20"
alert(typeof iNum);	//输出 "number"

بالائی کد میں، ایکمائی منفی آپریٹر نے رکنیت