ก่อนอื่นมาทำคำถามก่อน! เพื่อที่จะรวมกันฉันจะไม่ผสมคำถามเหล่านี้ ในคำถามสัมภาษณ์ฉันมักจะผสมคำถามเหล่านี้ซึ่งจะทำให้คุณสับสนมากขึ้น เพื่อให้สะดวกยิ่งขึ้นสำหรับการสาธิตฉันได้เขียนคำถามบางอย่างเป็นโมดูลที่นี่เพื่อให้คุณสามารถอ่านได้!
การแปลงสตริงของโอเปอเรเตอร์โดยนัย
การคูณ
console.dir ("----------------------"); console.dir (5*"5"); console.dir (5*"a"); console.dir (5*nan); console.dir (5*null); console.dir (5*ไม่ได้กำหนด); console.dir (5*5); console.dir ("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------แผนก
console.dir ("----------------------"); console.dir (5/"5"); console.dir (5/"A"); console.dir (5/nan); console.dir (5/null); console.dir (null/5); console.dir (5/ไม่ได้กำหนด); console.dir (5/5); console.dir (5/0); console.dir (0/5); console.dir (0/0); console.dir ("------------------------"); console.dir ("-------------------------");ใช้เวลาที่เหลือและค้นหาแบบจำลอง
console.dir ("-----------------------"); console.dir (16%"5"); console.dir (5%"a"); console.dir (5%nan); console.dir (5%null); console.dir (null%5); console.dir (ไม่ได้กำหนด 5%); console.dir (5%5); console.dir (5%0); console.dir (0%5); console.dir (0%0); console.dir ("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ส่วนที่เพิ่มเข้าไป
console.dir ("-----------------------"); console.dir (16+ "5"); console.dir (5+ "A"); console.dir (5+nan); console.dir (5+null); console.dir (5+ไม่ได้กำหนด); console.dir (5+5); console.dir ("ผลรวมของสองตัวเลขคือ"+5+5); console.dir ("ผลรวมของสองตัวเลขคือ"+(5+5)); console.dir ("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------การลบ
console.dir ("----------------------"); console.dir (16- "5"); console.dir (5- "a"); console.dir (5-nan); console.dir (5-null); console.dir (5-undefined); console.dir (5-5); console.dir (5-true); console.dir (5- "จริง); console.dir (5-" "); console.dir (" ความแตกต่างระหว่างสองตัวเลขคือ "+5-5); console.dir (" ความแตกต่างระหว่างสองตัวเลขคือ "+(5-5)); console.dir (" -------------- "); console.dir ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ผู้ประกอบการเชิงสัมพันธ์
console.dir ("--------------------"); console.dir (16> "5"); console.dir ("16"> "5"); console.dir (5 <"a"); console.dir (5> = nan); console.dir (5 <nan); console.dir (nan> = nan); console.dir (5> = null); console.dir (5> = ไม่ได้กำหนด); console.dir (5> = 5); console.dir (5> = true); console.dir (5> = "true"); console.dir (5> = ""); console.dir ("อิฐ"> "ตัวอักษร"); console.dir ("อิฐ"> "ตัวอักษร"); console.dir ("-----------------");การคูณ
console.dir (5*"5"); // 25 console.dir (5*"a"); // nan console.dir (5*nan); // nan console.dir (5*null); 0 console.dir (5*undefined); // nan console.dir (5*5);
มาพูดคุยเกี่ยวกับหลักการของการแปลงการคูณโดยนัย:
1. หากทั้งสองค่าเป็นตัวเลขให้ดำเนินการคูณการคูณโดยตรง (ฉันเชื่อว่าทุกคนสามารถทำได้เช่นเดียวกับคณิตศาสตร์ของโรงเรียนประถมศึกษาและคุณควรให้ความสนใจกับสัญลักษณ์ของตัวเลข) หากค่าผลิตภัณฑ์เกินช่วงการแสดงตัวเลขของ ECMASCript ให้ส่งคืนอนันต์ (ไม่มีอนันต์บวก) หรือ -infinity (ลบไม่สิ้นสุด)
2. ถ้าตัวเลขเป็น NAN ผลลัพธ์ก็คือ NAN
3. ถ้าอินฟินิตี้คูณด้วย 0 ผลลัพธ์คือ NAN
4. หากผู้ให้บริการรายหนึ่งเป็นตัวเลขและอีกตัวหนึ่งไม่ใช่ค่าตัวเลขให้ใช้ฟังก์ชันตัวเลข () ก่อนเพื่อแปลงและคูณค่าที่แปลงด้วยตัวเลข หากผลลัพธ์ที่ได้รับการแปลงปรากฏขึ้น NAN ผลลัพธ์คือ NAN
แผนก
console.dir (5/"5"); // 1 แปลงอักขระเป็นตัวเลขและแบ่งคอนโซล. dir (5/"a"); // nan console.dir (5/nan); // nan console.dir (5/null); // infinity null converts 0/5 คือ 0 console.dir (5/undefined); // nan ที่ไม่ได้กำหนดค่าเปลี่ยนด้วยหมายเลข () และผลลัพธ์คือ Nan Console.dir (5/5); // 1 console.dir (5/0); // Infinity Console.dir (0/5); // 0 console.dir (0/0);
พูดคุยเกี่ยวกับหลักการแปลงโดยนัยของการแบ่ง:
เช่นเดียวกับการคูณอีกครั้งหนึ่งคือผลลัพธ์ 0/0 คือ NAN
ใช้เวลาที่เหลือและค้นหาแบบจำลอง
สิ่งที่ใช้กันทั่วไปที่สุดในโครงการคือการหาคี่และตัวเลข เรามักจะใช้ตัวเลขที่มี 2 เพื่อคำนวณยอดคงเหลือ หากผลลัพธ์คือ 0 ดังนั้นตัวเลขจะเป็นตัวเลขที่สม่ำเสมอและหากผลลัพธ์คือ 1 แล้วตัวเลขจะเป็นหมายเลขคี่
ตรวจสอบหัวข้อด้านบน:
console.dir (16%"5"); // 1 แปลงสตริง 5 ถึง 5 ถึงจำนวน () จากนั้นคำนวณคอนโซลที่เหลืออยู่ dir (5%"a"); // nan console.dir (5%nan); // nan console.dir (5%null); // NAN แปลง NULL ผ่านหมายเลข () ผลลัพธ์คือ 0 จากนั้นคำนวณ 5%0 ผลลัพธ์คือ NAN console.dir (NULL%5); // 0 เท่าที่ข้างต้น 0%5 ผลลัพธ์คือ 0 console.dir (ไม่ได้กำหนด 5%); // nan console.dir (5%5); // 0 console.dir (5%0); // nan console.dir (0%5); // 0 console.dir (0%0); // nanconsole.dir (อินฟินิตี้%อินฟินิตี้); // nanconsole.dir (5%อินฟินิตี้); // 5 console.dir (infinity%5); // น่าน
มาพูดคุยเกี่ยวกับหลักการของการแปลงที่เหลือโดยนัย:
เช่นการคูณให้ฉันพูดถึงสิ่งที่พิเศษ! เราทุกคนรู้แนวคิดเรื่องเงินปันผลและตัวหารซึ่งเราได้เรียนรู้ในโรงเรียนประถมศึกษา
1. เงินปันผลไม่มีที่สิ้นสุดและเงินปันผลเป็นค่า จำกัด ดังนั้นผลลัพธ์คือ NAN
2. ตัวหารมีค่า จำกัด และตัวหารคือ 0 จากนั้นผลลัพธ์คือน่าน
3. อินฟินิตี้%ผลลัพธ์อินฟินิตี้คือน่าน
4. เงินปันผลเป็นค่า จำกัด การจ่ายเงินปันผลเป็นค่าที่ไม่มีที่สิ้นสุดและผลลัพธ์คือตัวหาร
5. จำนวนหารคือ 0 ผลลัพธ์คือ 0
การลบ
ดูตัวอย่างด้านบน!
console.dir (16- "5"); // 11 console.dir (5- "a"); // nan console.dir (5-nan); // nan console.dir (5-null); // 5 console.dir (5-undefined); // nan console.dir (5-5); console.dir (5- "true"); // nan console.dir (5-""); // 5 console.dir (5-infinity); //-Infinity Console.dir (Infinity-infinity); // nan console.dir ("ความแตกต่างระหว่างสอง/5) ตัวเลขคือ 0มาพูดคุยเกี่ยวกับหลักการของการแปลงโดยนัยของการลบ:
เช่นเดียวกับข้างต้นฉันจะไม่พูดถึงสิ่งเดียวกันฉันจะพูดถึงการลบที่ไม่ซ้ำกัน
1. ผลลัพธ์อินฟินิตี้-อินฟินิตี้คือน่าน
2. -infinity -Infinity ผลลัพธ์คือ -infinity
3. ผลลัพธ์ของจำนวนลบไม่มีอินฟินิตี้คือ - อินฟินิตี้
4. อินฟินิตี้-(-อินฟินิตี้) ผลลัพธ์คืออินฟินิตี้
5. ถ้าตัวถูกดำเนินการเป็นวัตถุวิธีการค่าวัตถุของวิธีการเรียก หากผลลัพธ์คือ NAN ผลลัพธ์คือ NAN หากไม่มีวิธีการค่าของวิธีการเรียกใช้ toString () และแปลงสตริงผลลัพธ์เป็นค่าตัวเลข
ผู้ประกอบการเชิงสัมพันธ์
ผู้ประกอบการเชิงสัมพันธ์ส่งคืนจริงหรือเท็จอย่างสม่ำเสมอ
console.dir (16> "5"); // true console.dir ("16"> "5"); // false console.dir (5 <"a"); // false console.dir (5> = nan); // false console.dir (5 <nan); // false console.dir (nan> = nan); console.dir (5> = undefined); // false console.dir (5> = 5); // จริง console.dir (5> = true); // true console.dir (5> = undefined); // console.dir (5> = 5); console.dir (5> = ""); // true console.dir ("อิฐ"> "ตัวอักษร"); // เท็จค่าการเข้ารหัสสตริงของ b คือ 66 ในขณะที่การเข้ารหัสสตริงของ A คือ 97 ดังนั้นคอนโซลเท็จมาพูดคุยเกี่ยวกับหลักการแปลงโดยนัยของผู้ประกอบการเชิงสัมพันธ์:
มันยังคงเหมือนกับข้างต้นฉันจะไม่พูดในสิ่งเดียวกัน
หากตัวเลขทั้งสองเปรียบเทียบคือสตริงค่าสตริงที่เข้ารหัสที่สอดคล้องกับสตริงจะถูกเปรียบเทียบ
การดำเนินการเพิ่มเติม
เหตุผลที่ในที่สุดฉันก็บอกว่าการแปลงโดยนัยของการดำเนินการเพิ่มเติมคือการแปลงโดยนัยของการดำเนินการเพิ่มเติมนั้นแตกต่างจากการดำเนินการก่อนหน้านี้ สัญลักษณ์ตัวดำเนินการก่อนหน้าทั้งหมดทั้งหมดตราบใดที่หนึ่งคือตัวเลขอีกตัวหนึ่งยังใช้หมายเลข () เพื่อแปลงตัวเลขตามค่าเริ่มต้น การดำเนินการเพิ่มเติมนั้นแตกต่างกัน ตราบใดที่หนึ่งในการดำเนินการเพิ่มเติมคือสตริงอีกอันหนึ่งจะถูกแปลงเป็นสตริงแล้วทำการประกบสตริง!
console.dir (16+ "5"); // 156 console.dir (5+ "a"); // 5a console.dir (5+nan); // nan console.dir (5+null); // 5 console.dir ('5'+null); // 5null console.dir (5+ไม่ได้กำหนด) console.dir (5+5); // 10 console.dir ("ผลรวมของสองตัวเลขคือ"+5+5); // ผลรวมของสองตัวเลขคือ 55 console.dir ("ผลรวมของสองตัวเลขคือ"+(5+5)); // ผลรวมของสองตัวเลขคือ 10มาพูดคุยเกี่ยวกับหลักการแปลงโดยนัยของผู้ประกอบการเพิ่มเติม:
1. หนึ่งคือสตริงและอีกอันหนึ่งจะถูกแปลงเป็นสตริงสำหรับการประกบ หากหนึ่งเป็นสตริงและอื่น ๆ เป็นโมฆะหรือไม่ได้กำหนดแล้วการเพิ่มการเพิ่มหรือไม่ได้กำหนดจะเรียกเมธอดสตริง () เพื่อให้ได้สตริง "null" หรือ "ไม่ได้กำหนด" แล้วประกบกัน
2. หากมีการเพิ่มตัวเลขด้วย null หรือ undefined ดังนั้น null หรือ undefined จะถูกแปลงเป็น number () แล้วเพิ่ม
3. หลักการที่เหลือคล้ายกับคนอื่น ๆ ดังนั้นฉันจะไม่พูดอะไรมาก
การแปลงโดยนัยของ Biequal
เรียกใช้รหัสต่อไปนี้หนึ่งครั้งและฉันเชื่อว่าคุณจะเข้าใจมันตามธรรมชาติ ~
var a; console.dir (0 == false); // trueconsole.dir (1 == true); // trueconsole.dir (2 == {valueof: function () {return 2}}); // trueconsole.dir (a == nan); undefined); // falseconsole.dir (1 == undefined); // falseconsole.dir (2 == {toString: function () {return 2}}); // trueconsole.dir (undefined == null); toString: function () {return 1}, valueof: function () {return []}} == 1); // trueconsole.dir (1 == "1"); // trueconsole.dir (1 === "1");