1. ประเภทที่ไม่ใช่ตัวเลขถึงค่าตัวเลข
เมื่อใช้ Number() การแปลง:
เมื่อใช้ parseInt() เพื่อแปลง:
var num1 = parseint ("10", 2); // 2 แยกวิเคราะห์ var num2 = parseint ("10", 8); // 8 parse var num3 = parseint ("10", 10); // 10 parse var num4 = parseint ("10", 16); // 16 แยกวิเคราะห์ในหกเหลี่ยม เมื่อใช้การแปลง parseFloat() :
ความแตกต่างครั้งแรกระหว่าง Parsefloat และ ParseInt คือมันพบกับตัวละครตัวเลขลอยที่ไม่ถูกต้องเมื่อวิเคราะห์สตริงซึ่งเป็นมากกว่า ParseInt
ส่งคืน 0 เมื่อแยกวิเคราะห์ค่าเลขฐานสิบหก
var num = parsefloat ("0xa"); // 0var num = parseint ("0xa"); // 10ฟังก์ชั่น parsefloat ไม่มีพารามิเตอร์ที่สองที่ระบุ cardinality ดังนั้นเฉพาะค่าทศนิยมเท่านั้นที่แยกวิเคราะห์
หากสตริงเป็นจำนวนเต็มมันจะส่งคืนจำนวนเต็มแทนหมายเลขจุดลอยตัว
var num = parseFloat("2.125e7"); //31250000
2. ใช้ toString () เพื่อค่าเอาต์พุตในตัวเลขที่แตกต่างกัน
แถบนี้ใช้กับจำนวนเต็มเราสามารถใช้ toString () เพื่อส่งคืนจำนวนเต็มในรูปแบบไบนารีใด ๆ
var num = 10; การแจ้งเตือน (num.toString ()); //""10"alert(num.toString(9)); //"11"Alert(num.toString(16)); // "A"
3. ให้ความสนใจกับน่านและอินฟินิตี้เมื่อผู้ประกอบการบิต
เมื่อใช้ตัวดำเนินการบิตสำหรับ NAN และอินฟินิตี้ค่าทั้งสองจะได้รับการปฏิบัติเป็น 0 ถ้าตัวดำเนินการบิตถูกนำไปใช้กับค่าที่ไม่ใช่ตัวเลขค่าจะถูกแปลงเป็นค่าตัวเลขโดยใช้ฟังก์ชันตัวเลข ()
อีกสิ่งที่ควรทราบคือการเปลี่ยนตัวเลขลบที่ไม่ได้ลงนามและการเลื่อนขวาที่ไม่ได้ลงชื่อคือการเติมพื้นที่ว่างด้วย 0 ซึ่งแตกต่างจากการเลื่อนขวาที่ลงนามด้วยบิตป้ายดังนั้นการเลื่อนขวาที่ไม่ได้ลงนามและการเปลี่ยนแปลงที่ถูกต้องของตัวเลขบวกจะเหมือนกัน การดำเนินการกะขวาที่ไม่ได้ลงนามจะถือว่ารหัสไบนารีเชิงลบเป็นรหัสไบนารีบวกและจำนวนลบจะแสดงในรูปแบบส่วนประกอบซึ่งจะทำให้เกิดผลของการเปลี่ยนแปลงขวาที่ไม่ได้ลงชื่อจะแตกต่างกันมาก
var oldValue = -64; var newValue = oldValue >>> 5
4. การดำเนินการเชิงตัวเลขพิเศษ
สำหรับการดำเนินการเชิงตัวเลขหากมีตัวถูกดำเนินการที่เป็น NAN ผลลัพธ์คือ NAN
ใช้การเพิ่มหรือลบการดำเนินการหนึ่งในหนึ่งในหนึ่ง (+,-, บวกหรือเครื่องหมายลบ) สำหรับค่าที่ไม่ใช่ตัวเลข หากค่าไม่สามารถแปลงเป็นค่าตัวเลข (แปลงโดยใช้หมายเลข ()) NAN จะถูกส่งคืน
var s1 = "01", s2 = "1.1", s3 = "z", b = false, o = {valueof: function () {return -1;}}; s1 = +s1; // 1 + เปลี่ยนเป็น -: -1S2 = + S2; //1.1 -1.1S3 = +S3; // nan nanb = +b; // 0 0o = -o; //-1 1การคูณอินฟินิตี้และ 0 เท่ากับ NAN และการคูณที่ไม่ใช่ 0 คืออินฟินิตี้และ -infinity ขึ้นอยู่กับสัญลักษณ์ของตัวคูณ การคูณอินฟินิตี้และอินฟินิตี้เท่ากับอินฟินิตี้
var num1 = infinity, num2 = 0, num3 = -2, num4 = -infinity; การแจ้งเตือน (num1 * num2); // nanalert (num1 * num3); //-InfinityAlert (NUM1 * NUM4); //-อินฟินิตี้
ศูนย์แบ่งออกเป็นศูนย์และเป็น NAN และตัวเลขที่ไม่ใช่ศูนย์หารด้วยศูนย์คืออินฟินิตี้หรือ -infinity อินฟินิตี้หารด้วยอินฟินิตี้เป็นน่าน
สำหรับการดำเนินการโมดูโลสมการต่อไปนี้ถือ:
อินฟินิตี้%2 = น่าน; 2%-infinity = 2; 0%infinity = 0; // ตราบใดที่ตัวหารคือ 0 ตัวหารไม่ใช่ NAN ผลลัพธ์คือ 0Infinity%0 = NAN; // ตัวหารสามารถเป็นจำนวนใดก็ได้และตราบใดที่ตัวหารคือ 0 ผลที่ได้คือ naninfinity%infinity = nan
การดำเนินการเพิ่มเติม: หากตัวถูกดำเนินการทั้งสองเป็นสตริง + จะกลายเป็นการต่อการต่อสายสตริง หากหนึ่งเป็นสตริงและอื่น ๆ เป็นค่าตัวเลขให้แปลงค่าตัวเลขเป็นสตริงจากนั้นเชื่อมต่อสตริง หากตัวถูกดำเนินการเป็นวัตถุค่าบูลีนจะเรียกวิธีการของพวกเขาก่อน หากไม่มีอะไรให้เรียกวิธีการ ToString จากนั้นขึ้นอยู่กับประเภทค่าส่งคืนให้ตรวจสอบว่าควรเชื่อมต่อเครื่องหมาย + กับสตริงหรือเพิ่ม
Infinity + -infinity = Nan; var p = {valueof: function () {return -1; }}; var num = 1; var result = num +p; การแจ้งเตือน (ผลลัพธ์); // 0 เพิ่ม var p = {valueof: function () {return "not a num"; }}; var num = 1; var result = num +p; การแจ้งเตือน (ผลลัพธ์); // 1 ไม่ได้เชื่อมต่อสตริง NUMการดำเนินการลบ: การดำเนินการลบนั้นคล้ายกับการดำเนินการเพิ่มเติมและการประมวลผลของวัตถุเหมือนกันดังนั้นฉันจะไม่อธิบายอีกต่อไป
Infinity - Infinity = Nan; -infinity - -infinity = Nan;
5. การใช้ตัวดำเนินการเชิงสัมพันธ์
ตัวดำเนินการเชิงสัมพันธ์น้อยกว่า (<) มากกว่า (>) น้อยกว่าหรือเท่ากับ (<=) และมากกว่าหรือเท่ากับ (> =)
ตราบใดที่มีค่าหนึ่งการเปรียบเทียบเชิงตัวเลขจะดำเนินการและอีกค่าไม่ใช่ค่าตัวเลขและจะถูกแปลงเป็นค่าตัวเลข ใช้ค่าแรกสำหรับวัตถุจากนั้นใช้ toString ในความเป็นจริงไม่ว่าวัตถุจะดำเนินการใดก็ตามนี่เป็นเรื่องจริง หากมีค่าของค่าของค่าของการใช้เพื่อส่งคืนค่ามิฉะนั้น toString จะใช้เพื่อส่งคืนค่า
ทั้งสองเป็นสตริงจากนั้นเปรียบเทียบค่าการเข้ารหัสอักขระของสตริง (ค่า ASCII)
เกี่ยวกับอันแรกควรสังเกตว่าเมื่อสตริงเป็นค่าตัวเลขเมื่อสตริงไม่สามารถแปลงเป็นค่าตัวเลขสถานการณ์ต่อไปนี้จะเกิดขึ้นเป็น NAN
var result = "a" <3; // false a แปลง a เป็น nanvar result = "a"> = 3; // เท็จหมายเลขใด ๆ เมื่อเทียบกับ NAN เป็นเท็จ
6. == และ ===
ในจาวาสคริปต์หากทั้งสองด้านของสมการมีประเภทที่แตกต่างกันหรือมีเพียงวัตถุเดียวเท่านั้นที่รวมอยู่ด้วยการเปรียบเทียบจะถูกแบ่งออกเป็นสองสถานการณ์และการเปรียบเทียบหลังจากการแปลงถูกเปรียบเทียบโดยตรงกับการเปลี่ยนแปลง == คือการแปลงก่อนและเปรียบเทียบ === คือการเปรียบเทียบโดยตรงโดยไม่ต้องแปลง สำหรับ === มันจะส่งคืนเท็จตราบใดที่ประเภทไม่เท่ากัน สำหรับ == มันจะถูกแบ่งออกเป็นสถานการณ์ต่อไปนี้:
จริงจะถูกแปลงเป็น 1 เท็จจะถูกแปลงเป็น 0
การเปรียบเทียบสตริงกับค่าตัวเลขสตริงจะถูกแปลงเป็นค่าตัวเลข
หากมีวัตถุเพียงชิ้นเดียวในทั้งสองด้านของสมการวัตถุนี้จะเรียกค่าของค่าเพื่อให้ได้ประเภทพื้นฐานเช่นการเรียกใช้วิธีการ toString โดยไม่มีวิธีการคุ้มค่า หากทั้งสองฝ่ายเป็นวัตถุจะไม่มีการเปลี่ยนแปลงใด ๆ
var p = {"ชื่อ": "a"}; var q = {"ชื่อ": "a"} var o = p; การแจ้งเตือน (q == p); // เท็จที่อยู่ของวัตถุที่ชี้ไปที่ P และ Q นั้นแตกต่างกันแม้ว่าเนื้อหาของวัตถุจะเป็นการแจ้งเตือนเดียวกัน (O == P); //จริงนี่คือการเปรียบเทียบพิเศษ
null == undefined // truenan! = nan // truenan == nan // false "nan" == nan // talledundefined == 0 // falsenull == 0 // false
7. คำสั่งสำหรับ
คำสั่งเอาท์พุทของคำสั่งสำหรับสำหรับไม่สามารถคาดเดาได้และคำสั่งซื้ออาจแตกต่างกันไปขึ้นอยู่กับเบราว์เซอร์
เมื่อตัวแปรที่จะวนซ้ำจะไม่เป็นโมฆะหรือไม่ได้กำหนดข้อผิดพลาดจะไม่ถูกโยนลงไปภายใต้ ECMASCript 5 อีกต่อไป แต่ร่างกายลูปจะไม่ถูกดำเนินการ หากคุณต้องการความเข้ากันได้ไปข้างหน้าคุณจะตัดสินว่ามันไม่ได้เป็นโมฆะหรือไม่ได้กำหนดก่อนลูป
8. คำสั่ง Swethc
สวิตช์สามารถใช้ประเภทข้อมูลใด ๆ
ค่าของเคสอาจเป็นค่าคงที่ตัวแปรและนิพจน์
คำสั่งสวิตช์ใช้ตัวดำเนินการเปรียบเทียบที่สอดคล้องกัน (===) เมื่อเปรียบเทียบค่า
var num = 25; switch (true) {case num <0: การแจ้งเตือน ("น้อยลง 0"); หยุดพัก; กรณีจำนวน> = 0: การแจ้งเตือน ("มากกว่า 0"); หยุดพัก; ค่าเริ่มต้น: การแจ้งเตือน ("ข้อผิดพลาด");}9 การใช้งานฟังก์ชั่น
หากไม่มีคำสั่ง Return ในฟังก์ชั่นหรือผลตอบแทนไม่มีค่าส่งคืนใด ๆ ฟังก์ชั่นจะส่งคืนไม่ได้กำหนด
คำจำกัดความของฟังก์ชั่นไม่สอดคล้องกับพารามิเตอร์ของฟังก์ชันเมื่อเรียกมัน กล่าวอีกนัยหนึ่งพารามิเตอร์ทั้งสอง (พารามิเตอร์อย่างเป็นทางการและพารามิเตอร์จริง) ไม่มีการเชื่อมต่อ ตัวแปรที่ให้ไว้เมื่อกำหนดฟังก์ชั่นจะใช้งานได้ง่ายกว่าเท่านั้น แม้ว่าพวกเขาจะไม่ได้กำหนดพารามิเตอร์ที่ส่งผ่านไปยังฟังก์ชั่นสามารถรับได้ (ผ่านอาร์กิวเมนต์ [])
ฟังก์ชั่น howmanyargs () {alert (arguments.length);} howmanyargs ("a"); // 1HowManyArgs ("A", "B"); // 2HowManyArgs (); // 0ความสัมพันธ์ระหว่างพารามิเตอร์อย่างเป็นทางการและอาร์กิวเมนต์ [] มีดังนี้โดยให้ความสนใจกับความแตกต่างระหว่างโหมดที่เข้มงวดและโหมดที่ไม่ จำกัด
ฟังก์ชั่น HOWMANYARGS (SS) {อาร์กิวเมนต์ [0] = "ทดสอบ"; อาร์กิวเมนต์ [1] = "test2" การแจ้งเตือน (อาร์กิวเมนต์ [0]); // ทดสอบการแจ้งเตือน (อาร์กิวเมนต์ [1]); // test2 Alert (SS); // ทดสอบ} howmanyargs ("a"); ฟังก์ชั่น HOWMANYARGS (SS) {"ใช้อาร์กิวเมนต์ที่เข้มงวด" [0] = "ทดสอบ"; อาร์กิวเมนต์ [1] = "TEST2" การแจ้งเตือน (อาร์กิวเมนต์ [0]); // testalert (อาร์กิวเมนต์ [1]); // test2Alert (SS); // a} howmanyargs ("a");10. การใช้พารามิเตอร์ฟังก์ชัน
เมื่อกำหนดฟังก์ชั่นเราจะเขียนพารามิเตอร์ที่ใช้ลงในวงเล็บของฟังก์ชัน แต่มันจะยืดหยุ่นเพียงพอเมื่อมีพารามิเตอร์ตัวเลือกหลายตัว ในเวลานี้เราสามารถใช้วัตถุเพื่อห่อหุ้มพารามิเตอร์ตัวเลือกหลายตัว
ฟังก์ชั่น displayInfo (args) {var output = ""; if (typeof args.name == "string") {output + = "ชื่อ:" + args.name + "/n"; } if (typeof args.age == "number") {output + = "อายุ:" args.age + "/n"; } การแจ้งเตือน (เอาต์พุต); } displayInfo ({ชื่อ: "Nicholas", อายุ: 29}); displayInfo ({ชื่อ: "greg"});