ผู้ดำเนินการ Unary
ผู้ประกอบการที่สามารถใช้งานค่าเดียวได้เพียงหนึ่งเดียวเรียกว่าตัวดำเนินการ Unary
ตัวดำเนินการ Unary เป็นตัวดำเนินการที่ง่ายที่สุดใน eCmascript
1. ตัวดำเนินการที่เพิ่มขึ้นและลดลง
ตัวดำเนินการที่เพิ่มขึ้นและลดลงโดยตรงยืมจาก C และแต่ละรุ่นมีสองเวอร์ชัน: pre-type และ post-type Gu Mingsi กล่าวว่าประเภทก่อนควรหลีกเลี่ยงตัวแปรที่จะดำเนินการในขณะที่ควรตามหลังด้วยตัวแปรที่จะดำเนินการ
ประเภทด้านหน้า:
var num1 = 1; var num2 = 2; var num3 = ++ num1 +num2; // 4
ประเภทหลัง:
var num1 = 1; var num2 = 2; var num3 = num1 +++ num2; // 3
สองรหัสข้างต้นมีผลลัพธ์ที่แตกต่างกันเนื่องจากมีความแตกต่างที่สำคัญมากระหว่างการโพสต์และการเพิ่มขึ้นก่อนและการลดลงนั่นคือการดำเนินการหลังการเพิ่มและลดการดำเนินการจะดำเนินการหลังจากการประเมินคำสั่งที่มีพวกเขาได้รับการประเมิน
ขอบเขตของแอปพลิเคชัน:
ผู้ประกอบการทั้งสี่คนที่มีค่าใช้จ่ายล่วงหน้า เมื่อนำไปใช้กับค่าที่แตกต่างกันตัวดำเนินการนี้จะแปลงค่าเช่นฟังก์ชันการแปลงตัวเลข () และเพิ่มและลบ 1 หลังจากการแปลง
2. ตัวดำเนินการเพิ่มเติมและการลบทางเดียว
ตัวดำเนินการเพิ่มเติมและการลบส่วนใหญ่ใช้สำหรับการดำเนินการทางคณิตศาสตร์ขั้นพื้นฐานและยังสามารถใช้ในการแปลงชนิดข้อมูล (ตัวดำเนินการแปลงค่านี้เช่นฟังก์ชันการแปลงตัวเลข ())
ผู้ให้บริการบูลีน
มีตัวดำเนินการบูลีนสามตัว: ไม่ใช่ (ไม่ใช่) และ (และ) หรือ (หรือ)
1. ลอจิคัลไม่มีเหตุผล
ตรรกะที่ไม่ใช่ตัวดำเนินการจะถูกแสดงด้วยเครื่องหมายอัศเจรีย์ (!) และสามารถนำไปใช้กับค่าใด ๆ ใน eCmascript โดยไม่คำนึงถึงประเภทข้อมูลค่านี้คือตัวดำเนินการนี้จะส่งคืนค่าบูลีน
การใช้สองตรรกะที่ไม่ใช่ผู้ดำเนินการในเวลาเดียวกันจะจำลองพฤติกรรมของฟังก์ชั่นการแปลงบูลีน ()
2. ตรรกะและ
ตรรกะและตัวดำเนินการแสดงโดยสองจำนวน (&&) และมีตัวถูกดำเนินการสองตัวและสามารถนำไปใช้กับตัวถูกดำเนินการทุกประเภท การดำเนินการตรรกะและการลัดวงจรนั่นคือถ้าตัวถูกดำเนินการแรกได้รับการประเมินเป็นเท็จแล้วตัวถูกดำเนินการที่สองจะไม่ได้รับการประเมิน
เมื่อค่าทั้งสองเป็นจริงผลลัพธ์จะเป็นจริง เมื่อค่าสองค่าเป็นจริงและเท็จผลลัพธ์เป็นเท็จ ส่งคืนเท็จเมื่อค่าทั้งสองเป็นเท็จ
เมื่อค่าใดค่าหนึ่งไม่ใช่บูลีน: ทำตามกฎต่อไปนี้
ตัวถูกดำเนินการแรกเป็นเท็จและอันแรกจะถูกส่งคืน;
เมื่อตัวถูกดำเนินการแรกเป็นจริงรายการที่สองจะถูกส่งคืน
หากตัวถูกดำเนินการแรกเป็นวัตถุตัวถูกดำเนินการที่สองจะถูกส่งคืน
var a = {b: 1}; a && 'ss' // "ss"หากตัวถูกดำเนินการที่สองเป็นวัตถุวัตถุจะถูกส่งคืนเฉพาะเมื่อผลการประเมินผลของตัวถูกดำเนินการแรกเป็นจริง
'ss' && a // object {b: 1}หากตัวถูกดำเนินการทั้งสองเป็นวัตถุตัวถูกดำเนินการที่สองจะถูกส่งคืน
var c = {d: 2}; c && a // object {b: 1}(1) หากตัวถูกดำเนินการเป็นโมฆะให้ส่งคืนค่า null
(2) หากมีตัวถูกดำเนินการที่เป็นน่านแล้วน่านจะถูกส่งคืน
(3) หากตัวถูกดำเนินการไม่ได้กำหนดให้ส่งคืนที่ไม่ได้กำหนด
3. ตรรกะหรือ
เช่นเดียวกับตรรกะและตัวดำเนินการตรรกะหรือตัวดำเนินการยังเป็นตัวดำเนินการลัดวงจร กล่าวคือหากผลการประเมินของตัวถูกดำเนินการครั้งแรกเป็นจริงการประเมินผลของตัวถูกดำเนินการที่สองจะไม่ถูกดำเนินการ
(1) ตัวถูกดำเนินการแรกเป็นจริงกลับมาครั้งแรก
(2) ตัวถูกดำเนินการครั้งแรกเป็นเท็จส่งคืนที่สอง
ผู้ประกอบการคูณ
Ecmascript กำหนด 3 ตัวดำเนินการคูณ: การคูณการหารและโมดูล
Infinity*0 // nan0/0 // naninfinity/infinity // nan
ผู้ประกอบการเพิ่มเติม
1. เพิ่มเติม (เทิร์นสตริง)
ผู้ให้บริการทั้งสองเป็นค่าตัวเลข
ทำการคำนวณเพิ่มเติมเป็นประจำ
Infinity + -infinity // Nan
หากตัวถูกดำเนินการเป็นสตริง
หากผู้ให้บริการทั้งสองเป็นสตริงผู้ให้บริการรายที่สองจะถูกเชื่อมต่อกับตัวดำเนินการรายแรก
หากผู้ให้บริการเพียงรายเดียวคือสตริงให้แปลงตัวถูกดำเนินการอื่นเป็นสตริงแล้วแยกสายสองสายเข้าด้วยกัน
หากตัวถูกดำเนินการนี้เป็นวัตถุตัวเลขหรือบูลีนให้เรียกใช้วิธี TOSTRING () ของพวกเขาเพื่อรับค่าสตริงที่เกี่ยวข้องแล้วใช้กฎก่อนหน้าเกี่ยวกับสตริง สำหรับโมฆะและไม่ได้กำหนดฟังก์ชันสตริง () เรียกว่าและสตริง "ไม่ได้กำหนด" และ "null" จะได้รับตามลำดับ
2 + '' // "2"
2. การลบ (กลับไปที่ค่า)
หากตัวถูกดำเนินการทั้งสองเป็นตัวเลข
ดำเนินการลบเลขคณิตปกติและส่งคืนผลลัพธ์ หากตัวถูกดำเนินการเป็นน่านผลลัพธ์คือน่าน
อินฟินิตี้ - อินฟินิตี้ // น่าน
หากมีตัวถูกดำเนินการที่ไม่ใช่ค่าตัวเลข
หากตัวถูกดำเนินการเป็นสตริงบูลีนโมฆะหรือไม่ได้กำหนดจำนวนฟังก์ชั่น () จะเรียกว่าในพื้นหลังเพื่อแปลงเป็นค่าตัวเลขจากนั้นทำการคำนวณการลบตามกฎก่อนหน้า หากผลลัพธ์ของการแปลงเป็น NAN ผลลัพธ์ของการลบคือ NAN
หากตัวถูกดำเนินการเป็นวัตถุวิธีการ valueof () ของวัตถุจะถูกเรียกให้รับค่าที่แสดงถึงวัตถุ หากค่าที่ได้คือ NAN ผลลัพธ์ของการลบคือ NAN หากวัตถุไม่มีวิธีการ valueof () วิธี toString () ของมันจะถูกเรียกและสตริงผลลัพธ์จะถูกแปลงเป็นค่าตัวเลข
5 - จริง // 4
ผู้ประกอบการเชิงสัมพันธ์
หากตัวถูกดำเนินการทั้งสองเป็นค่าตัวเลขให้ทำการเปรียบเทียบเชิงตัวเลข
หากตัวถูกดำเนินการทั้งสองเป็นสตริงให้เปรียบเทียบค่าการเข้ารหัสอักขระที่สอดคล้องกับสองสตริง
หากตัวถูกดำเนินการหนึ่งเป็นค่าตัวเลขให้แปลงตัวถูกดำเนินการอื่นเป็นค่าตัวเลขและทำการเปรียบเทียบตัวเลข
var result = '23' <'3' // TrueVar result = '23' <3 // false
ตัวดำเนินการเท่ากัน
1. เท่ากันและไม่เท่ากัน
แปลงก่อนแล้วเปรียบเทียบ
(1) หากตัวถูกดำเนินการเป็นค่าบูลีนให้แปลงเป็นค่าตัวเลขก่อนเปรียบเทียบความเท่าเทียมกัน
(2) หากมีตัวถูกดำเนินการที่เป็นสตริงและตัวถูกดำเนินการอื่นเป็นค่าตัวเลขให้แปลงเป็นค่าตัวเลขก่อน
(3) หากตัวถูกดำเนินการหนึ่งเป็นวัตถุและอีกอย่างหนึ่งไม่ได้เป็นวิธีการที่เรียกค่า () ของวัตถุและค่าประเภทพื้นฐานที่ได้รับจะถูกเปรียบเทียบตามกฎพื้นฐานก่อนหน้านี้
NULL และ Undefined มีค่าเท่ากัน
คุณไม่สามารถแปลง NULL และไม่ได้กำหนดเป็นค่าอื่น ๆ ก่อนที่จะเปรียบเทียบความเท่าเทียมกัน
หากตัวถูกดำเนินการทั้งสองเป็น NAN ตัวดำเนินการที่เท่าเทียมกันก็จะส่งคืนเท็จ ตามกฎแล้วน่านไม่เท่ากับน่าน
2. สอดคล้องและไม่สมบูรณ์
เปรียบเทียบเท่านั้นไม่แปลง
"55"! == 55 // จริง
ผู้ให้บริการตามเงื่อนไข
ตัวแปร = boolean_expression? true_value: false_value
โดยพื้นฐานแล้วความหมายของรหัสนี้คือการกำหนดค่าใดกับตัวแปรตัวแปรตามผลลัพธ์ของการประเมิน boolean_expression หากผลการประเมินเป็นจริงให้กำหนด true_value ให้กับตัวแปร; หากผลการประเมินเป็นเท็จให้กำหนด false_value ให้กับตัวแปรตัวแปร
กำหนดโอเปอเรเตอร์
ตัวดำเนินการที่ได้รับมอบหมายอย่างง่ายจะแสดงด้วยเครื่องหมายที่เท่าเทียมกันและฟังก์ชั่นของมันคือการกำหนดค่าทางด้านขวาไปยังตัวแปรทางด้านซ้าย
ผู้ให้บริการเครื่องหมายจุลภาค
ตัวดำเนินการเครื่องหมายจุลภาคส่วนใหญ่ใช้เพื่อประกาศตัวแปรหลายตัว แต่นอกจากนี้ตัวดำเนินการเครื่องหมายจุลภาคยังใช้เพื่อกำหนดค่า เมื่อใช้สำหรับการมอบหมายตัวดำเนินการเครื่องหมายจุลภาคจะส่งคืนรายการสุดท้ายในนิพจน์เสมอ