CoffeeScript - ตัวดำเนินการและนามแฝง
ตัวดำเนินการ CoffeeScript
ตัวดำเนินการคือสัญลักษณ์ที่บอกให้คอมไพเลอร์ทำหน้าที่ทางคณิตศาสตร์หรือตรรกะเฉพาะ ให้เราใช้สำนวนง่ายๆ4 + 5 is equal to 9. ที่นี่เรียกว่า 4 และ 5operands และ '+' เรียกว่า operator.
ตัวดำเนินการที่ CoffeeScript จัดเตรียมไว้นั้นเหมือนกับใน JavaScript ยกเว้นความแตกต่างเล็กน้อย มีตัวดำเนินการบางอย่างที่มีปัญหาใน JavaScript CoffeeScript ลบออกหรือปรับเปลี่ยนฟังก์ชันการทำงานและยังแนะนำตัวดำเนินการใหม่ ๆ
ต่อไปนี้เป็นรายชื่อตัวดำเนินการที่ CoffeeScript รองรับ
- ตัวดำเนินการเลขคณิต
- ตัวดำเนินการเปรียบเทียบ
- ตัวดำเนินการเชิงตรรกะ (หรือเชิงสัมพันธ์)
- ผู้ดำเนินการมอบหมาย
นามแฝงของ CoffeeScript
นอกจากตัวดำเนินการแล้ว CoffeeScript ยังมีนามแฝง CoffeeScript จัดเตรียมนามแฝงให้กับตัวดำเนินการและสัญลักษณ์ต่างๆเพื่อให้รหัส CoffeeScript ของคุณอ่านได้และเป็นมิตรกับผู้ใช้มากขึ้น
ให้เราดูตัวดำเนินการและนามแฝงทั้งหมดของ CoffeeScript ทีละรายการ
ตัวดำเนินการเลขคณิต
CoffeeScript รองรับตัวดำเนินการเลขคณิตต่อไปนี้ สมมติตัวแปรA ถือ 10 และตัวแปร B ถือ 20แล้ว -
แสดงตัวอย่าง
ส. เลขที่ | ตัวดำเนินการและคำอธิบาย | ตัวอย่าง |
---|---|---|
1 | + (Addition) เพิ่มสองตัวถูกดำเนินการ |
A + B = 30 |
2 | − (Subtraction) ลบตัวถูกดำเนินการที่สองจากตัวแรก |
ก - ข = -10 |
3 | * (Multiplication) คูณตัวถูกดำเนินการทั้งสอง |
A * B = 200 |
4 | / (Division) หารตัวเศษด้วยตัวส่วน |
B / A = 2 |
5 | % (Modulus) แสดงผลส่วนที่เหลือของการหารจำนวนเต็ม |
B% A = 0 |
6 | ++ (Increment) เพิ่มค่าจำนวนเต็มขึ้นหนึ่ง |
A ++ = 11 |
7 | -- (Decrement) ลดค่าจำนวนเต็มลงหนึ่ง |
A - = 9 |
ตัวดำเนินการเปรียบเทียบ
JavaScript รองรับตัวดำเนินการเปรียบเทียบต่อไปนี้ สมมติตัวแปรA ถือ 10 และตัวแปร B ถือ 20แล้ว -
แสดงตัวอย่าง
ส. เลขที่ | ตัวดำเนินการและคำอธิบาย | ตัวอย่าง |
---|---|---|
1 | = = (Equal) ตรวจสอบว่าค่าของตัวถูกดำเนินการสองตัวเท่ากันหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง |
(A == B) ไม่เป็นความจริง |
2 | != (Not Equal) ตรวจสอบว่าค่าของตัวถูกดำเนินการสองตัวเท่ากันหรือไม่หากค่าไม่เท่ากันเงื่อนไขจะกลายเป็นจริง |
(A! = B) เป็นจริง |
3 | > (Greater than) ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง |
(A> B) ไม่เป็นความจริง |
4 | < (Less than) ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง |
(A <B) เป็นจริง |
5 | >= (Greater than or Equal to) ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง |
(A> = B) ไม่เป็นความจริง |
6 | <= (Less than or Equal to) ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง |
(A <= B) เป็นจริง |
ตารางต่อไปนี้แสดงนามแฝงของตัวดำเนินการเปรียบเทียบบางตัว สมมติA ถือ 20 และตัวแปร B ถือ 20.
แสดงตัวอย่าง
ตัวดำเนินการ | นามแฝง | ตัวอย่าง |
---|---|---|
= = (เท่ากัน) | is | A is B ให้คุณเป็นจริง |
! = = (ไม่เท่ากัน) | isnt | A isnt B ให้เท็จ |
ตัวดำเนินการทางตรรกะ
CoffeeScript สนับสนุนตัวดำเนินการเชิงตรรกะต่อไปนี้ สมมติตัวแปรA ถือ 10 และตัวแปร B ถือ 20แล้ว -
แสดงตัวอย่าง
ส. เลขที่ | ตัวดำเนินการและคำอธิบาย | ตัวอย่าง |
---|---|---|
1 | && (Logical AND) ถ้าตัวถูกดำเนินการทั้งสองไม่ใช่ศูนย์เงื่อนไขจะกลายเป็นจริง |
(A && B) เป็นเรื่องจริง |
2 | || (Logical OR) หากตัวถูกดำเนินการสองตัวใดตัวหนึ่งไม่เป็นศูนย์เงื่อนไขจะกลายเป็นจริง |
(A || B) เป็นจริง |
3 | ! (Logical NOT) กลับสถานะตรรกะของตัวถูกดำเนินการ หากเงื่อนไขเป็นจริงตัวดำเนินการ Logical NOT จะทำให้เป็นเท็จ |
! (A && B) เป็นเท็จ |
ตารางต่อไปนี้แสดงนามแฝงสำหรับตัวดำเนินการทางตรรกะบางตัว สมมติX ถือ true และตัวแปร Y ถือ false.
แสดงตัวอย่าง
ตัวดำเนินการ | นามแฝง | ตัวอย่าง |
---|---|---|
&& (ตรรกะ AND) | and | X and Y ให้เท็จ |
|| (ตรรกะหรือ) | or | X or Y ให้คุณเป็นจริง |
! (ไม่ใช่ x) | not | not X ให้เท็จ |
ตัวดำเนินการ Bitwise
CoffeeScript รองรับตัวดำเนินการบิตต่อไปนี้ สมมติตัวแปรA ถือ 2 และตัวแปร B ถือ 3แล้ว -
แสดงตัวอย่าง
ส. เลขที่ | ตัวดำเนินการและคำอธิบาย | ตัวอย่าง |
---|---|---|
1 | & (Bitwise AND) ดำเนินการบูลีน AND กับอาร์กิวเมนต์จำนวนเต็มแต่ละบิต |
(A & B) คือ 2 |
2 | | (BitWise OR) ดำเนินการบูลีนหรือการดำเนินการกับอาร์กิวเมนต์จำนวนเต็มแต่ละบิต |
(A | B) คือ 3 |
3 | ^ (Bitwise XOR) ดำเนินการบูลีนเอกสิทธิ์เฉพาะหรือการดำเนินการกับอาร์กิวเมนต์จำนวนเต็มแต่ละบิต Exclusive OR หมายความว่าตัวถูกดำเนินการตัวใดตัวหนึ่งเป็นจริงหรือตัวถูกดำเนินการสองเป็นจริง แต่ไม่ใช่ทั้งสองอย่าง |
(A ^ B) คือ 1. |
4 | ~ (Bitwise Not) เป็นตัวดำเนินการยูนารีและดำเนินการโดยการย้อนกลับบิตทั้งหมดในตัวถูกดำเนินการ |
(~ B) คือ -4 |
5 | << (Left Shift) มันย้ายบิตทั้งหมดในตัวถูกดำเนินการตัวแรกไปทางซ้ายตามจำนวนตำแหน่งที่ระบุในตัวถูกดำเนินการที่สอง บิตใหม่เต็มไปด้วยศูนย์ การเลื่อนค่าไปทางซ้ายหนึ่งตำแหน่งจะเทียบเท่ากับการคูณด้วย 2 การเลื่อนตำแหน่งสองตำแหน่งจะเท่ากับการคูณด้วย 4 และอื่น ๆ |
(A << 1) คือ 4 |
6 | >> (Right Shift) ตัวดำเนินการกะไบนารีขวา ค่าของตัวถูกดำเนินการด้านซ้ายจะถูกย้ายไปทางขวาตามจำนวนบิตที่ระบุโดยตัวถูกดำเนินการด้านขวา |
(A >> 1) คือ 1 |
ผู้ดำเนินการมอบหมาย
CoffeeScript รองรับตัวดำเนินการกำหนดดังต่อไปนี้ -
แสดงตัวอย่าง
ส. เลขที่ | ตัวดำเนินการและคำอธิบาย | ตัวอย่าง |
---|---|---|
1 | = (Simple Assignment ) กำหนดค่าจากตัวถูกดำเนินการด้านขวาไปยังตัวถูกดำเนินการด้านซ้าย |
C = A + B จะกำหนดค่าของ A + B ให้เป็น C |
2 | += (Add and Assignment) เพิ่มตัวถูกดำเนินการด้านขวาให้กับตัวถูกดำเนินการด้านซ้ายและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย |
C + = A เทียบเท่ากับ C = C + A |
3 | -= (Subtract and Assignment) มันจะลบตัวถูกดำเนินการด้านขวาออกจากตัวถูกดำเนินการด้านซ้ายและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย |
C - = A เทียบเท่ากับ C = C - A |
4 | *= (Multiply and Assignment) มันจะคูณตัวถูกดำเนินการด้านขวาด้วยตัวถูกดำเนินการด้านซ้ายและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย |
C * = A เทียบเท่ากับ C = C * A |
5 | /= (Divide and Assignment) มันแบ่งตัวถูกดำเนินการด้านซ้ายด้วยตัวถูกดำเนินการด้านขวาและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย |
C / = A เทียบเท่ากับ C = C / A |
6 | %= (Modules and Assignment) ใช้โมดูลัสโดยใช้ตัวถูกดำเนินการสองตัวและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย |
C% = A เทียบเท่ากับ C = C% A |
Note - ตรรกะเดียวกันนี้ใช้กับตัวดำเนินการ Bitwise ดังนั้นจึงกลายเป็น << =, >> =, >> =, & =, | = และ ^ =
ตัวดำเนินการความเท่าเทียมกันใน CoffeeScript
ขณะทำงานกับ JavaScript คุณจะพบตัวดำเนินการความเท่าเทียมกันสองประเภท == และ ===.
== ตัวดำเนินการใน JavaScript คือ type coerciveกล่าวคือถ้าประเภทของตัวถูกดำเนินการทั้งสองในการดำเนินการแตกต่างกันประเภทข้อมูลของตัวดำเนินการตัวใดตัวหนึ่งจะถูกแปลงเป็นตัวดำเนินการอื่นจากนั้นจะเปรียบเทียบทั้งสอง
CoffeeScript หลีกเลี่ยงการบีบบังคับที่ไม่พึงปรารถนานี้โดยรวบรวมไฟล์ == ตัวดำเนินการในตัวดำเนินการเปรียบเทียบที่เข้มงวดของ JavaScript ===.
ถ้าเราเปรียบเทียบตัวถูกดำเนินการสองตัวโดยใช้ ===จากนั้นจะกลับมา trueเฉพาะในกรณีที่ทั้งค่าและประเภทข้อมูลเท่ากันมิฉะนั้นจะส่งกลับ false.
ตัวอย่าง
ลองพิจารณาตัวอย่างต่อไปนี้ ที่นี่เรามีสองตัวแปรa และ b. a ถือค่า 21 ของประเภทจำนวนเต็มและ b มีค่าเท่ากัน แต่เป็นของ stringชนิด. ใน CoffeeScript เมื่อเราเปรียบเทียบa และ bผลลัพธ์จะเป็นอย่างไร false. (ตั้งแต่== ตัวดำเนินการของ CoffeeScript ถูกแปลงเป็นไฟล์ === ตัวดำเนินการของ JavaScript)
a=21
b="21"
result = 21=='21'
console.log result
ในการคอมไพล์ CoffeeScript ข้างต้นจะสร้าง JavaScript ดังต่อไปนี้
// Generated by CoffeeScript 1.10.0
(function() {
var a, b, result;
a = 21;
b = "21";
result = a === b;
console.log(result);
}).call(this);
ในการดำเนินการจะสร้างผลลัพธ์ต่อไปนี้
false
ตัวดำเนินการอัตถิภาวนิยม
CoffeeScript มีตัวดำเนินการใหม่ที่เรียกว่าตัวดำเนินการอัตถิภาวนิยมเพื่อตรวจสอบการมีอยู่ของตัวแปร แสดงโดย?. เว้นแต่ตัวแปรเป็นค่าว่างหรือไม่ได้กำหนดตัวดำเนินการอัตถิภาวนิยมจะคืนค่าจริง
ตัวอย่าง
ด้านล่างนี้เป็นตัวอย่างของตัวดำเนินการอัตถิภาวนิยม ที่นี่เรามีสามตัวแปรคือname, ageและ subject และเรากำลังตรวจสอบการมีอยู่ของชื่อตัวแปรและโทรศัพท์โดยใช้ตัวดำเนินการอัตถิภาวนิยม
name="Ramu"
age=24
subject="Engineering"
verify_name = name?
verify_phone = phone?
console.log verify_name
console.log verify_phone
ในการคอมไพล์สิ่งนี้จะสร้างโค้ด JavaScript ต่อไปนี้
// Generated by CoffeeScript 1.10.0
(function() {
var age, name, subject, verify_name, verify_phone;
name = "Ramu";
age = 24;
subject = "Engineering";
verify_name = name != null;
verify_phone = typeof phone !== "undefined" && phone !== null;
console.log(verify_name);
console.log(verify_phone);
}).call(this);
หากเราเรียกใช้ไฟล์ CoffeeScript ด้านบนไฟล์จะสร้างผลลัพธ์ต่อไปนี้
true
false
Note - เรามีตัวแปรการเข้าถึงของตัวดำเนินการอัตถิภาวนิยม ?. เราสามารถใช้แทนไฟล์. ตัวดำเนินการเพื่อค้นหาการอ้างอิงว่าง
การเปรียบเทียบที่ถูกล่ามโซ่
เช่นเดียวกับใน Python เราสามารถใช้ตัวดำเนินการเปรียบเทียบแบบ chain ในนิพจน์เดียวใน CoffeeScript
ตัวอย่าง
ต่อไปนี้เป็นตัวอย่างของการใช้การเปรียบเทียบแบบล่ามโซ่
score = 70
passed = 100 > score > 40
console.log passed
ในการคอมไพล์ตัวอย่าง CoffeeScript จะให้โค้ด JavaScript ต่อไปนี้
// Generated by CoffeeScript 1.10.0
(function() {
var passed, score;
score = 70;
passed = (100 > score && score > 40);
console.log(passed);
}).call(this);
หากคุณรันโค้ด CoffeeScript ข้างต้นจะสร้างผลลัพธ์ต่อไปนี้
true
Note- CoffeeScript ลบตัวดำเนินการ ternary แทนที่จะเป็นเราสามารถใช้ไฟล์inline if คำให้การ.
นามแฝงของ CoffeeScript
โดยทั่วไปแล้ว CoffeeScript จะจัดเตรียมนามแฝงให้กับตัวดำเนินการและสัญลักษณ์ต่างๆเพื่อให้โค้ด CoffeeScript ของคุณอ่านได้และเป็นมิตรกับผู้ใช้มากขึ้น ต่อไปนี้เป็นนามแฝงที่ให้บริการโดย CoffeeScript
ชื่อ | ตัวดำเนินการ / สัญลักษณ์ | นามแฝง |
---|---|---|
ตัวดำเนินการ "เท่ากับ" | == | คือ |
"ไม่เท่ากับ" ตัวดำเนินการ | ! == | ไม่ใช่ |
ตัวดำเนินการ "not" | ! | ไม่ |
ตัวดำเนินการ "และ" | && | และ |
"หรือ" ตัวดำเนินการ | || | หรือ |
ค่าบูลีนเป็นจริง | จริง | จริงใช่บน |
ค่าบูลีนเป็นเท็จ | เท็จ | ปิดไม่ |
วัตถุปัจจุบัน | นี้ | @ |
บรรทัดใหม่ (หรือ) เซมิโคลอน | \ n หรือ; | แล้ว |
ผกผันของ if | ! ถ้า | เว้นแต่ |
เพื่อทดสอบการมีอยู่ของอาร์เรย์ | ใน | |
เพื่อทดสอบการมีอยู่ของวัตถุ | ของ | |
การยกกำลัง | ก**ข | |
การหารจำนวนเต็ม | ก//ข | |
โมดูโลขึ้นอยู่กับเงินปันผล | ก%%ข |
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงวิธีใช้นามแฝงใน CoffeeScript -
a=21; b=21
x = true; y = false
console.log a is b
console.log a isnt b
console.log x and y
console.log x or y
console.log yes or no
console.log on or off
console.log a**b
console.log a//b
console.log a%%b
ในการรวบรวมตัวอย่างข้างต้นจะให้รหัส JavaScript ต่อไปนี้
// Generated by CoffeeScript 1.10.0
(function() {
var a, b, x, y,
modulo = function(a, b) { return (+a % (b = +b) + b) % b; };
a = 21;
b = 21;
x = true;
y = false;
console.log(a === b);
console.log(a !== b);
console.log(x && y);
console.log(x || y);
console.log(true || false);
console.log(true || false);
console.log(Math.pow(a, b));
console.log(Math.floor(a / b));
console.log(modulo(a, b));
}).call(this);
หากคุณเรียกใช้ไฟล์ CoffeeScript ด้านบนไฟล์จะสร้างผลลัพธ์ต่อไปนี้ -
true
false
false
true
true
true
5.842587018385982e+27
1
0