جاواسکریپت: ۵- اکسپرشن

نوشته حسین بهنودی در ۹ آبان ۱۳۹۹

اِکسپرِشن – 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

  1. تبدیل به عدد: همه آپریتورها
  2. تبدیل به استرینگ: آپریتور + اگر یک از آپرندهایش استرینگ باشد.
  3. تبدیل به بولین: آپریتور بولین
  4. null == undefined
  5. 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 را می‌توانید تغییر دهید.
  • هرگاه روی دکمه‌ها کلیک شد، حاصل عمل روی خانه اول را در خانه دوم بنویسد.