คำก่อนหน้านี้
มีผู้ให้บริการ 46 รายใน JavaScript นอกเหนือจากตัวดำเนินการทางคณิตศาสตร์ผู้ประกอบการเชิงสัมพันธ์ตัวดำเนินการบิตและตัวดำเนินการเชิงตรรกะที่กล่าวถึงก่อนหน้านี้มีผู้ให้บริการจำนวนมาก บทความนี้จะแนะนำผู้ประกอบการแบบมีเงื่อนไขผู้ประกอบการเครื่องหมายจุลภาคผู้ประกอบการที่ได้รับมอบหมาย () และผู้ให้บริการโมฆะ
ผู้ให้บริการตามเงื่อนไข
ตัวดำเนินการแบบมีเงื่อนไขเป็นตัวดำเนินการแบบไตรภาค (สามตัวถูกดำเนินการ) ใน JavaScript และบางครั้งเรียกว่า 'ตัวดำเนินการไตร่ตรอง' โดยตรง โดยปกติแล้วผู้ประกอบการนี้จะถูกเขียนเป็น '?:' แน่นอนว่ามันมักจะไม่ย่อในรหัสเพราะตัวดำเนินการนี้มีตัวถูกดำเนินการสามตัวถูกดำเนินการแรกก่อนหน้านี้ '?' ตัวถูกดำเนินการที่สองอยู่ระหว่าง '?' และ ':' และตัวถูกดำเนินการที่สามคือหลังจาก ':'
ตัวแปร = boolean_expression? true_value: talse_value;
โดยพื้นฐานแล้วสิ่งนี้ขึ้นอยู่กับผลลัพธ์ของการประเมิน boolean_expression ซึ่งกำหนดค่าใดกับตัวแปรตัวแปร หากผลการประเมินเป็นจริงตัวแปรตัวแปรตัวแปรจะถูกกำหนด True_value; หากผลการประเมินเป็นเท็จตัวแปรตัวแปรจะถูกกำหนด talse_value_value
ตัวถูกดำเนินการของตัวดำเนินการแบบมีเงื่อนไขสามารถเป็นประเภทใดก็ได้ตัวถูกดำเนินการแรกจะถือว่าเป็นค่าบูลีนและหากเป็นจริงตัวถูกดำเนินการที่สองจะถูกคำนวณและผลการคำนวณจะถูกส่งกลับ มิฉะนั้นหากตัวถูกดำเนินการแรกเป็นค่าเท็จตัวถูกคำนวณที่สามจะถูกคำนวณและผลการคำนวณจะถูกส่งคืน ตัวถูกดำเนินการที่สองและสามคำนวณหนึ่งในนั้นเสมอและเป็นไปไม่ได้ที่จะดำเนินการทั้งสองในเวลาเดียวกัน
ในความเป็นจริงการใช้คำสั่งหากจะนำเอฟเฟกต์เดียวกันมาใช้ '?:' ตัวดำเนินการเท่านั้นให้รูปแบบการจดชวเลขเท่านั้น นี่คือสถานการณ์แอปพลิเคชันทั่วไปสำหรับ '?:' เพื่อพิจารณาว่าตัวแปรถูกกำหนด (และมีค่าความจริงที่มีความหมาย) ใช้ถ้ามีคำจำกัดความและใช้ค่าเริ่มต้นหากไม่มีคำจำกัดความ:
Greeting = 'Hello' + (ชื่อผู้ใช้ชื่อผู้ใช้: 'มี');
สิ่งนี้เทียบเท่ากับรหัสด้านล่างโดยใช้คำสั่ง IF แต่เห็นได้ชัดว่ารหัสข้างต้นมีความรัดกุมมากกว่า:
คำทักทาย = 'สวัสดี'; ถ้า (ชื่อผู้ใช้) ทักทาย += ชื่อผู้ใช้; อื่น ๆ ทักทาย += 'มี';
การแสดงออกตามเงื่อนไขแบบไตรภาคมีเอฟเฟกต์การแสดงออกเช่นเดียวกับคำสั่ง IF ... อื่น ๆ แต่มีความแตกต่างอย่างมีนัยสำคัญระหว่างทั้งสอง ถ้า ... อื่นเป็นคำสั่งและไม่มีค่าส่งคืน การแสดงออกตามเงื่อนไขแบบไตรภาคเป็นนิพจน์และมีค่าส่งคืน ดังนั้นในกรณีที่จำเป็นต้องมีค่าคืนคุณสามารถใช้การแสดงออกตามเงื่อนไขแบบไตรภาคเท่านั้นและไม่ใช่ถ้า ... อื่น
console.log (จริง? 't': 'f');
ในรหัสข้างต้นพารามิเตอร์ของเมธอด log จะต้องเป็นนิพจน์และสามารถใช้การแสดงออกตามเงื่อนไขแบบไตรมาสเท่านั้น
ผู้ให้บริการเครื่องหมายจุลภาค
ผู้ให้บริการเครื่องหมายจุลภาคเป็นผู้ให้บริการไบนารีและตัวถูกดำเนินการอาจเป็นประเภทใดก็ได้ ก่อนอื่นจะคำนวณตัวถูกดำเนินการด้านซ้ายจากนั้นคำนวณตัวถูกดำเนินการด้านขวาและในที่สุดก็ส่งคืนค่าของตัวถูกดำเนินการด้านขวา ใช้ตัวดำเนินการเครื่องหมายจุลภาคเพื่อดำเนินการหลายรายการในคำสั่ง
i = 0, j = 1, k = 2; // ผลการคำนวณคือ 2 ซึ่งโดยทั่วไปเทียบเท่ากับรหัสด้านล่าง i = 0; J = 1; k = 2;
ตัวดำเนินการเครื่องหมายจุลภาคมักจะใช้เพื่อประกาศตัวแปรหลายตัว
var inum1 = 1, inum = 2, inum3 = 3;
สถานการณ์ที่พบบ่อยที่สุดสำหรับผู้ให้บริการเครื่องหมายจุลภาคคือสำหรับการวนรอบซึ่งมักจะมีตัวแปรลูปหลายตัว:
// เครื่องหมายจุลภาคครั้งแรกในการวนรอบเป็นส่วนหนึ่งของคำสั่ง VAR // เครื่องหมายจุลภาคที่สองคือตัวดำเนินการเครื่องหมายจุลภาค // มันวางสองนิพจน์ (i ++ และ j--) ในคำสั่งสำหรับ (var i = 0, j = 10; i <j; i ++, j-) {console.log (i+j);};ผู้ให้บริการเครื่องหมายจุลภาคยังสามารถใช้สำหรับการมอบหมายและเมื่อใช้สำหรับการมอบหมายผู้ดำเนินการเครื่องหมายจุลภาคจะส่งคืนรายการสุดท้ายในนิพจน์เสมอ
var num = (1,2,3,4,5); console.log (num); // 5
[หมายเหตุ] ลบวงเล็บและจะรายงานข้อผิดพลาด
ผู้ดำเนินการที่ได้รับมอบหมาย
ตัวดำเนินการที่ได้รับมอบหมายอย่างง่ายจะถูกแทนด้วยเครื่องหมายที่เท่ากัน '=' ซึ่งกำหนดค่าไปทางขวาของเครื่องหมายเท่ากันกับตัวแปรหรือแอตทริบิวต์ทางด้านซ้ายของเครื่องหมายเท่ากัน
i = o; ox = 1;
ตัวดำเนินการ '=' คาดว่าตัวถูกดำเนินการด้านซ้ายจะเป็น lvalue: แอตทริบิวต์ตัวแปรหรือวัตถุ (หรือองค์ประกอบอาร์เรย์) ตัวถูกดำเนินการที่ถูกต้องอาจเป็นค่าใด ๆ ทุกประเภท ค่าของนิพจน์การมอบหมายคือค่าของตัวถูกดำเนินการที่ถูกต้อง
แม้ว่าการแสดงออกที่ได้รับมอบหมายมักจะง่ายมาก แต่บางครั้งคุณจะยังเห็นการแสดงออกที่ซับซ้อนบางอย่างที่มีนิพจน์การมอบหมาย ตัวอย่างเช่นคุณสามารถใส่การมอบหมายและตัวดำเนินการเชิงสัมพันธ์ในการแสดงออกเดียวเช่นนี้:
(a = b) == 0
หากคุณทำสิ่งนี้คุณควรทราบความแตกต่างระหว่างตัวดำเนินการ '=' และ '==' อย่างชัดเจน '=' มีความสำคัญต่ำมาก โดยปกติเมื่อมีการใช้ค่าของคำสั่งการกำหนดในการแสดงออกที่ยาวขึ้นต้องเพิ่มวงเล็บเพื่อให้แน่ใจว่าลำดับการดำเนินการที่ถูกต้อง
ลักษณะการผูกมัดของผู้ดำเนินการที่ได้รับมอบหมายนั้นมาจากขวาไปซ้ายนั่นคือหากผู้ให้บริการที่ได้รับมอบหมายหลายรายปรากฏในนิพจน์คำสั่งการดำเนินการจะมาจากขวาไปซ้าย ดังนั้นสามารถกำหนดตัวแปรหลายตัวด้วยวิธีต่อไปนี้:
i = j = k = 0; // เริ่มต้นตัวแปรสามตัวเป็น 0
JavaScript ยังมีผู้ประกอบการที่ได้รับมอบหมาย 11 คน ผู้ประกอบการที่ได้รับมอบหมายสารประกอบเหล่านี้เป็นการดำเนินการที่ระบุทั้งหมดก่อนจากนั้นส่งคืนค่าที่ได้รับไปยังตัวแปรทางด้านซ้าย
[หมายเหตุ] วัตถุประสงค์ของการออกแบบผู้ให้บริการเหล่านี้คือการทำให้การดำเนินงานที่ได้รับมอบหมายง่ายขึ้นและการใช้พวกเขาจะไม่นำการปรับปรุงประสิทธิภาพใด ๆ
รวม + = sales_tax; // เทียบเท่ากับทั้งหมด = ทั้งหมด + sales_tax;
ตัวอย่างผู้ประกอบการเทียบเท่ากับ+= a+= ba = a+b- = a- = ba = ab*= a*= ba = a*b/= a/= ba = a/b%= a%= ba = a%b << = a << = ba = a << b >> a & = ba = a & b | = a | = ba = a | b^= a^= ba = a^b
ในกรณีส่วนใหญ่การแสดงออกคือ:
a op = b
ที่นี่ OP แสดงถึงตัวดำเนินการและนิพจน์นี้เทียบเท่ากับนิพจน์ต่อไปนี้
a = a op b
ในบรรทัดแรกนิพจน์ A จะถูกคำนวณหนึ่งครั้งและในบรรทัดที่สองนิพจน์ A จะถูกคำนวณสองครั้ง เฉพาะเมื่อมีการแสดงออกที่มีผลข้างเคียง (เช่นการเรียกใช้ฟังก์ชันและการดำเนินการที่ได้รับมอบหมาย) ทั้งสองจะเป็นความไม่เท่าเทียมกัน
ข้อมูล [i ++]*= 2; data [i ++] = data [i ++]*2;
ผู้ประกอบการวงเล็บ
มีการใช้สองตัวของตัวดำเนินการวงเล็บ: หากการแสดงออกถูกวางไว้ในวงเล็บฟังก์ชั่นคือการประเมิน; หากตามด้วยฟังก์ชั่นฟังก์ชั่นคือการเรียกใช้ฟังก์ชัน
ใส่นิพจน์ในวงเล็บและส่งคืนค่าของนิพจน์
console.log ((1)); //1console.log(('a ')); //'a'console.log((1+2)); // 3การวางวัตถุในวงเล็บจะส่งคืนค่าของวัตถุนั่นคือวัตถุเอง
var o = {p: 1}; console.log ((o)); // object {p: 1}การวางฟังก์ชั่นในวงเล็บส่งคืนฟังก์ชั่นเอง หากวงเล็บทำตามฟังก์ชั่นมันหมายถึงการเรียกใช้ฟังก์ชันนั่นคือการประเมินฟังก์ชั่น
ฟังก์ชั่น f () {return 1;} console.log ((f)); // function f () {return 1;} console.log (f ()); // 1เนื่องจากวัตถุประสงค์ของวงเล็บคือการประเมินหากคำสั่งถูกวางไว้ในวงเล็บจึงมีการรายงานข้อผิดพลาดเนื่องจากคำสั่งไม่ส่งคืนค่า
console.log (var a = 1); // syntaxerror: โทเค็น token varconsole.log ((var a = 1)); // syntaxerror: โทเค็นที่ไม่คาดคิด
ตัวดำเนินการเป็นโมฆะ
Void เป็นตัวดำเนินการที่ไม่ได้รับ มันจะปรากฏขึ้นก่อนตัวถูกดำเนินการ ตัวถูกดำเนินการสามารถเป็นประเภทใดก็ได้ ตัวถูกดำเนินการจะถูกคำนวณตามปกติ แต่ผลการคำนวณจะถูกละเว้นและไม่ได้กำหนดจะถูกส่งคืน เนื่องจาก Void ละเว้นค่าของตัวถูกดำเนินการให้ใช้โมฆะเมื่อตัวถูกดำเนินการมีผลข้างเคียงเพื่อทำให้โปรแกรมมีความหมายมากขึ้น
console.log (เป็นโมฆะ 0); // undefinedConsole.log (เป็นโมฆะ (0)); // ไม่ได้กำหนด
【ฟังก์ชั่น 1 】แทนที่ไม่ได้กำหนด
เนื่องจากไม่ได้กำหนดไม่ใช่คำหลักจึงจะถูกเขียนใหม่ใน IE8-Browser และในขอบเขตของฟังก์ชั่นรุ่นที่สูงขึ้น ดังนั้นจึงไม่สามารถกำหนดได้ด้วยโมฆะ 0
var undefined = 10; console.log (undefined); // ie8-it คือ 10 ภายใต้เบราว์เซอร์และฟังก์ชันที่ไม่ได้กำหนด t () {var undefined = 10; console.log (undefined);} console.log (t ()); // เป็น 10 ภายใต้เบราว์เซอร์ทั้งหมด【บทบาท 2 】 URL ลูกค้า
ตัวดำเนินการนี้ใช้กันมากที่สุดใน URL ไคลเอนต์ - JavaScript: URL การแสดงออกที่มีผลข้างเคียงสามารถเขียนได้ใน URL ในขณะที่ Void อนุญาตให้เบราว์เซอร์หลีกเลี่ยงการแสดงผลการคำนวณของนิพจน์นี้ ตัวอย่างเช่นตัวดำเนินการโมฆะมักใช้ในแท็ก <a> ในรหัส HTML
<a href = "JavaScript: void window.open ();"> เปิดหน้าต่างใหม่ </a>
【เอฟเฟกต์สามเหตุการณ์เริ่มต้น
วิธีการบล็อกเหตุการณ์เริ่มต้นคือการตั้งค่าการส่งคืนเป็นเท็จ
// วิธีการเขียนทั่วไป <a href = "http://example.com" onclick = "f (); return false;"> ข้อความ </a>
ใช้ตัวดำเนินการช่องว่างเพื่อแทนที่วิธีการเขียนด้านบน
<a href = "JavaScript: void (f ())"> ข้อความ </a>
บทความข้างต้นกล่าวถึงผู้ประกอบการ JavaScript สั้น ๆ - เงื่อนไข, เครื่องหมายจุลภาค, การมอบหมาย, () และตัวดำเนินการเป็นโมฆะเป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น