جاواسکریپت: ۵- اکسپرشن
اِکسپرِشن – Expression
تصویر زیر را ببینید و با چند اصطلاح آشنا شوید.
- اِکسپرِشن (Expression): قطعهای از کد که عملیاتی یا محاسباتی را انجام می دهد تا یک مقدار را بدست آورد.
- آپِرِیتور (Operator): یا عملگر مثل جمع یا ضرب عملی است که روی مقادیر انجام میگیرد و نتیجهای به دست میآید.
- آپِرَند (Operand): یا عملوند مقادیر اولیهای هستند که عملیات روی آنها انجام میشود.
آپریتورهای استرینگ
پیوستن
a = "my" + "String"; // myString Concatenate
مقادیر با نوع متفاوت را به استرینگ تبدیل میکند.
a = "5" + 2; // "52"
a = 2 + "5"; // "25"
a = "5" + 2 + 1; // "521"
a = 2 + 1 + "5"; // "35"
a = true + "5"; // "true5"
a = false + "5"; // "false5"
a = null + "5"; // "null5"
a = undefined + "5"; // "undefined5"
a = Infinity + "5"; // "Infinity5"
a = NaN + "5"; // "NaN5"
تمرین ۱
- این فایل را دانلود کنید.
- آن را در فولدر js1 باز کنید.
- تنها فایل script.js را میتوانید تغییر دهید.
- هرگاه روی دکمه + کلیک شد، مقدار دو خانه اول و دوم را پشت هم در خانه سوم بنویسد.
آپریتورهای حساب
ساده
a = 1 + 2; // 3 Addition
a = 5 - 2; // 3 Subtraction
a = 2 * 3; // 6 Multiplication
a = 6 / 2; // 3 Division
a = 5 % 3; // 2 Modulus
a = 2 ** 3; // 8 Exponentiation
مقادیر با نوع متفاوت را به عدد تبدیل میکند.
a = +"1" + +"2"; // 3
a = "5" - "3"; // 2
a = "2" * "3"; // 6
a = "6" / "2"; // 3
a = "5" % "3"; // 2
a = "2" ** "3"; // 8
a = true + true; // 2
a = 3 - true; // 2
a = false * 5; // 0
a = 5 ** false; // 1
a = 2 + null; // 2
a = 2 + undefined; // NaN
تمرین ۲
- این فایل را دانلود کنید.
- آن را در فولدر js1 باز کنید.
- تنها فایل script.js را میتوانید تغییر دهید.
- هرگاه روی دکمهها کلیک شد، حاصل عمل روی خانه اول و دوم را در خانه سوم بنویسد.
تک آپرند
a = 2; ++a; // a = 3; a = a + 1; Pre-Increment
a = 2; a++; // a = 3; a = a + 1; Post-Increment
a = 2; --a; // a = 1; a = a - 1; Pre-Decrement
a = 2; a--; // a = 1; a = a - 1; Post-Decrement
//=========================================================
a = 2; b = 5 + ++a; // a = 3; b = 8; b = 5 + (a + 1);
a = 2; b = 5 + a++; // a = 3; b = 7; b = 5 + a;
a = 2; b = 5 + --a; // a = 1; b = 6; b = 5 + (a - 1);
a = 2; b = 5 + a--; // a = 1; b = 7; b = 5 + a;
محاسبه درجا
a = 6; a += 2; // a = 8; a = a + 2;
a = 6; a -= 2; // a = 4; a = a - 2;
a = 6; a *= 2; // a = 12; a = a * 2;
a = 6; a /= 2; // a = 3; a = a / 2;
a = 5; a %= 2; // a = 1; a = a % 2;
a = 2; a **= 3; // a = 8; a = a ** 3;
//---------------------------------------------------------------
a = "my"; a += "String" // a = "myString"; a = a + "String";
آپریتورهای بولیَن
ساده
// And ----------------------------------
a = true && true; // a = true;
a = true && false; // a = false;
a = false && true; // a = false;
a = false && false; // a = false;
// Or -----------------------------------
a = true || true; // a = true;
a = true || false; // a = true;
a = false || true; // a = true;
a = false || false; // a = false;
// Not ----------------------------------
a = ! true; // a = false;
a = ! false; // a = true;
مقادیر با نوع متفاوت را به بولین تبدیل میکند.
// And -----------------------------------
a = true && 5; // a = 5;
a = true && "Str"; // a = "Str";
a = false && 5; // a = false;
a = false && "Str"; // a = false;
// Or ------------------------------------
a = true || 5; // a = true;
a = true || "Str"; // a = true;
a = false || 5; // a = 5;
a = false || "Str"; // a = "Str";
// Not -----------------------------------
a = ! 0; // a = true;
a = ! 5; // a = false; Any non-zero number
a = ! ""; // a = true;
a = ! " "; // a = false; Any non-zero string
a = ! null; // a = true;
a = ! undefined; // a = true;
a = ! NaN; // a = true;
تمرین ۳
- این فایل را دانلود کنید.
- آن را در فولدر js1 باز کنید.
- تنها فایل script.js را میتوانید تغییر دهید.
- هرگاه روی دکمهها کلیک شد، حاصل عمل روی خانه اول و دوم را در خانه سوم بنویسد.
آپریتورهای مقایسه
مقایسه عددها
r = 2 == 2; // r = true; Equal to
r = 2 != 2; // r = false; Not Equal
r = 2 < 3; // r = true; Less than
r = 2 > 2; // r = false; Greater than
r = 2 <= 2; // r = true; Less than or Equal to
r = 2 >= 3; // r = false; Greater than or Equal to
مقایسه استرینگها
r = "B" == "B"; // r = true; Equal to
r = "B" != "B"; // r = false; Not Equal
r = "B" < "C"; // r = true; Less than
r = "B" > "B"; // r = false; Greater than
r = "B" <= "B"; // r = true; Less than or Equal to
r = "B" >= "C"; // r = false; Greater than or Equal to
مقایسه بولین
r = true == true; // r = true; Equal to
r = true != true; // r = false; Not Equal
r = false < true; // r = true; Less than
r = false > true; // r = false; Greater than
r = false <= false; // r = true; Less than or Equal to
r = false >= true; // r = false; Greater than or Equal to
مقایسه مقادیر با نوع متفاوت را به عدد تبدیل میکند.
r = "002" == 2; // r = true; "002" -> 2
r = "2" != 2; // r = false; "2" -> 2
r = "2" < 3; // r = true; "2" -> 2
r = "2" > 2; // r = false; "2" -> 2
r = "02" <= 2; // r = true; "02" -> 2
r = "2" >= 3; // r = false; "2" -> 2
r = "" == 0; // r = true; "" -> 0
r = false == ""; // r = true; false -> 0, "" -> 0
r = false == "0"; // r = true; false -> 0, "0" -> 0
r = true == "1"; // r = true; true -> 1, "1" -> 1
تمرین ۴
- این فایل را دانلود کنید.
- آن را در فولدر js1 باز کنید.
- تنها فایل script.js را میتوانید تغییر دهید.
- هرگاه روی دکمهها کلیک شد، حاصل عمل روی خانه اول و دوم را در خانه سوم بنویسد.
مقایسه null
// null equal to
r = null == null; // r = true;
r = null == undefined; // r = true;
// null not-equal to
r = null != 0; // r = true;
r = null != ""; // r = true;
r = null != false; // r = true;
// null vs 0, "", false
r = null == 0; // r = false;
r = null < 0; // r = false;
r = null > 0; // r = false;
r = null <= 0; // r = true;
r = null >= 0; // r = true;
r = null != 0; // r = true;
مقایسه undefined
// undefined equal to
r = undefined == null; // r = true;
r = undefined == undefined; // r = true;
// undefined not-equal to
r = undefined != 0; // r = true;
r = undefined != ""; // r = true;
r = undefined != false; // r = true;
// undefined vs 0, "", false
r = undefined == 0; // r = false;
r = undefined < 0; // r = false;
r = undefined > 0; // r = false;
r = undefined <= 0; // r = false;
r = undefined >= 0; // r = false;
r = undefined != 0; // r = true;
مقایسه NaN
// NaN not-equal to anything.
r = NaN != 0; // r = true;
r = NaN != ""; // r = true;
r = NaN != false; // r = true;
r = NaN != null; // r = true;
r = NaN != undefined; // r = true;
r = NaN != NaN; // r = true;
// x is whatever
r = NaN == x; // r = false;
r = NaN < x; // r = false; r = NaN > x; // r = false;
r = NaN <= x; // r = false; r = NaN >= x; // r = false;
r = NaN != x; // r = true;
مقایسه نوع و مقدار
r = "2" == 2; // r = true; Value
r = "2" === 2; // r = false; Value & type
//-------------------------------------------------------
r = "2" != 2; // r = false; Value
r = "2" !== 2; // r = true; Value & Type
//-------------------------------------------------------
r = true !== 1; // r = true; Value & Type
r = false !== 0; // r = true; Value & Type
//-------------------------------------------------------
r = null !== undefined; // r = true; Value & Type
TL;DR
- تبدیل به عدد: همه آپریتورها
- تبدیل به استرینگ: آپریتور + اگر یک از آپرندهایش استرینگ باشد.
- تبدیل به بولین: آپریتور بولین
- null == undefined
- NaN با هیچ چیزی مساوی نیست.
الویت آپریتورها
1 ( )
2 ++ --
3 **
4 * / %
5 + -
6 < > <= >=
7 == != === !==
8 &&
9 ||
10 = += -= *= /= %=
Number
آبجکت Number با مقادیر عددی کار میکند.
Number.isNaN(x)
این متد مشخص میکند، x معادل NaN است یا نه.
// Numbers
Number.isNaN(NaN); // true
Number.isNaN(5); // false
Number.isNaN(Infinity); // false
// Strings
Number.isNaN("5"); // false
Number.isNaN("Infinity"); // false
Number.isNaN("NaN"); // false
Number.isNaN(""); // false
Number.isNaN(" "); // false
Number.isNaN("12n"); // false
Number.isNaN("true"); // false
// Boolean
Number.isNaN(true); // false
Number.isNaN(false); // false
// Null
Number.isNaN(null); // false
// undefined
Number.isNaN(undefined); // false
Number.isFinite(x)
این متد مشخص میکند، x عدد محدود است یا نه.
// Numbers
Number.isFinite(5); // true
Number.isFinite(0); // true
Number.isFinite(5.2); // true
Number.isFinite(-5.2); // true
Number.isFinite(Infinity); // false
Number.isFinite(NaN); // false
// Strings
Number.isFinite("5"); // false
Number.isFinite(""); // false
Number.isFinite(" "); // false
Number.isFinite("true"); // false
// Boolean
Number.isFinite(true); // false
Number.isFinite(false); // false
// Null
Number.isFinite(null); // false
// undefined
Number.isFinite(undefined); // false
Number.isInteger(x)
این متد مشخص میکند، x عدد صحیح است یا نه.
// Numbers
Number.isInteger(5); // true
Number.isInteger(0); // true
Number.isInteger(-5); // true
Number.isInteger(5.2); // false
Number.isInteger(Infinity); // false
Number.isInteger(NaN); // false
// Strings
Number.isInteger("5"); // false
Number.isInteger(""); // false
Number.isInteger(" "); // false
Number.isInteger("true"); // false
// Boolean
Number.isInteger(true); // false
Number.isInteger(false); // false
// Null
Number.isInteger(null); // false
// undefined
Number.isInteger(undefined); // false
تمرین ۵
- این فایل را دانلود کنید.
- آن را در فولدر js1 باز کنید.
- تنها فایل script.js را میتوانید تغییر دهید.
- هرگاه روی دکمهها کلیک شد، حاصل عمل روی خانه اول را در خانه دوم بنویسد.