Con trỏ đến Struct - Toán tử truy xuất các thành viên con trỏ. Cũng giống như con trỏ trong các kiểu dữ liệu có sẵn. tuy nhiên thêm 1 điều kiện là - Struct không chứa bất kì kiểu tham chiếu nào.Do con trỏ không thể trỏ đến bất kì kiểu tham chiếu nào. để tránh điều này , trình biên dịch sẽ phất cờ lỗi nếu Một cây ná ép buộc vào kiểu bắn PFS sẽ như thế nào? Thread starter AmateurSlingshotter; Ngày gửi 25/12/18; A. AmateurSlingshotter New member. 25/12/18 #1. 25/12/18 #1 - Khối lượng chạc nặng để ít bị rung động trong khi ngắm và bắn. - Lòng chạc rất hẹp, nhỏ hơn kích thước đạn Kết quả của phép so sánh trong javascript là Boolean (true/false) So sánh bằng ta dùng toán tử == toán tử này giúp ép kiểu dữ liệu khi so sánh. if(9 == 9) if(9 == '9') if(9 == '09') if(0 == false) if(false == -10) So sánh bằng ta cũng có thể dùng toán tử === toán tử này sẽ không ép kiểu dữ liệu khi so sánh. Máy ép chậm Philips HR1889/70 The store will not work correctly in the case when cookies are disabled. Dụng cụ tạo kiểu tóc; Cân sức khoẻ Chỉ cần đẩy rau và trái cây vào trong ống ép, bạn sẽ có được một ly nước ép bổ sung dinh dưỡng mỗi ngày. Khả năng ép xung vô song: Vi xử lý Intel Core thế hệ 13 cung cấp trải nghiệm ép xung chưa từng có đến tất cả người dùng, từ các chuyên gia cho đến người mới. Người dùng sử dụng vi xử lý Intel Core thế hệ 13 có thể dễ dàng nhận ra tốc độ ép xung trung bình ở P-core, E Serialization trong Java là cơ chế chuyển đổi trạng thái của một đối tượng (giá trị các thuộc tính trong object) thành một chuỗi byte sao cho chuỗi byte này có thể chuyển đổi ngược lại thành một đối tượng. Quá trình chuyển đổi chuỗi byte thành đối tượng gọi là JnOM. Variable TypesCác kiểu giá trị trong JavaScriptNhững giá trị được coi là falsetrue or not true?Loose ComparisonsMột số quy tắcMột số chú ýThe Answers Có người vẫn nói vui rằng JavaScript là “The World’s Most Misunderstood Programming Language”, bởi có rất nhiều lập trình viên Web vẫn đang làm việc, thậm chí là làm việc rất nhiều, và rất tốt với JavaScript nhưng lại không thể hiểu rõ căn bản của nó. JavaScript quả thật tuy là gần gũi, quen thuộc thật đấy nhưng đôi khi lại rất xa lạ với chúng ta ở vài mặt nào đó. Bài viết này xin được giới thiệu về một trong những mặt có phần “xa lạ” đó của JavaScript. Trước tiên, mình xin có một vài câu đố nhỏ cho các bạn. Câu hỏi rất đơn giản thôi “Các phép toán dưới đây trả về true hay false“. Bạn có thể kiểm tra câu trả lời một cách dễ dàng bằng cách mở console của trình duyệt lên và gõ câu lệnh vào đó, hoặc xem ở cuối bài viết này. false == false // It will return true. Too easy, right ? D // But how about the following ? TRUE or FALSE ? // Các phép so sánh sau trả về true hay false null == undefined null == false undefined == false NaN == NaN NaN == false NaN == true 63 == false 63 == true 0 == false "63" == true "63" == false "0" == true "0" == false !"0" == !false "" == false [] == "" [] == false [] == "0" [] == 0 [] == ![] "0" == !"0" 0 == {} [1] b a == b a = b Code language JavaScript javascript Nếu bạn có thể trả lời đúng hết, và hiểu được bản chất tại sao nó lại như vậy thì có lẽ bạn cũng đã nắm rõ hết được những gì mà bài viết này đề sẽ cập đến rồi. Còn ngược lại, hãy dành chút thời gian để đọc và tìm hiểu về những điều sẽ được giới thiệu dưới đây, và bạn sẽ tự tìm được lời giải thích cho từng đáp án. Let’s start! honho Variable Types Để trả lời được những câu hỏi trên thì trước hết ta cần phải tìm hiểu và nắm rõ được về những kiểu giá trị có trong Javascipt. Các kiểu giá trị trong JavaScript Trong Javascript phiên bản phiên bản mới nhất tính đến thời điểm thực hiện bài viết này 5/2015, có những kiểu giá trị sau booleannullundefinedstringnumberobject Ngoài ra còn một kiểu giá trị nữa, sẽ được đưa vào phiên bản tiếp theo của Javascript ES6, đó là symbol Tất các các kiểu dữ liệu khác Object được gọi là giá trị “nguyên thủy”, Primitive. Một số điều cần lưu ý Kiểu Boolean gồm 2 giá trị là true và Null chỉ gồm duy nhất một giá trị là Undefined chỉ gồm duy nhất một giá trị là undefined. Như đã biết thì để so sánh “bằng” trong Javascript, ta có thể dùng == và ===. ===, Strict Comparison hay Strict Equal, sẽ so sánh cả kiểu giá trị của 2 bên. Nếu 2 bên có kiểu giá trị khác nhau thì phép toán sẽ trả về giá trị false. Phép toán === là rất minh bạch và dễ sử dụng, ít gây hiểu nhầm hay khó khăn gì cho lập trình viên. Còn phép so sánh ==, Loose Comparison hay Loose Equal, thì sẽ tìm cách đưa một trong 2 bên về cùng kiểu giá trị với bên kia rồi thực hiện phép so sánh. Có rất nhiều cách để ép một giá trị từ kiểu này về kiểu kia, một trong những cách đơn giản nhất là sử dụng các hàm có sẵn của Javascript là Boolean, String, Number, Object … Boolean1 // true Stringnull // "null" Number" // Number"1string" // NaN String[1, 2, "string"] // "1,2,string" Code language JavaScript javascript Những giá trị được coi là false Đó là những giá trị khi được ép về kiểu Boolean sẽ cho giá trị là false. Bao gồm falseundefinednull0 Gồm cả +0 và -0NaN Not A Number"" Empty String Vậy những giá trị nào khi ép về kiểu Boolean sẽ cho giá trị là true ? Câu trả lời rất đơn giản những giá trị không nằm trong list các giá trị đã kể ở phía trên tức là ngoài false, undefined, null, 0, NaN và "" ra. true or not true? Trong các phép toán điều kiện như if, else, when … , nếu không sử dụng các toán tử so sánh, mà chỉ có biến số hay giá trị ở trong đó thì nó sẽ được ép về kiểu boolean, ví dụ if null { // It will not reach here } else if 0 { // It will not reach here } else if "" { // It will not reach here } else if 1 { // REACH here } Code language JavaScript javascript Đến đây, hãy nhìn lại list các câu hỏi được đưa ra ở đầu bài một chút. Ta có phép toán "0" == true chẳng hạn. Hãy so sánh 2 trường hợp sau nhé if "0" { // It WILL reach here } if "0" == true { // It will NOT reach here } Code language PHP php Vâng, một cái bẫy mà Javascript đã giăng ra dành cho các lập trình viên mà không phải ai cũng biết, và có thể đã mắc phải mà không hề hay. "0" cho giá trị Boolean là true, nhưng lại trả về false trong phép so sánh == với true. Vậy đâu là nguyên nhân, hãy tìm hiểu các quy tắc trong phép so sánh ở phần dưới đây. Loose Comparisons Một số quy tắc Khi thực hiện so sánh bằng phép toán ==, trong trường hợp 2 vế có giá trị thuộc những kiểu khác nhau thì sẽ có một số các quy tắc sau được áp dụng. Việc suy nghĩ cả 2 vế đều được ép về kiểu Boolean và so sánh 2 giá trị Boolean là một sai lầm. null chỉ == chính nó hoặc undefined và ngược lại. Từ quy tắc này ta thấy được phép toán null == false hay undefined == false sẽ trả về false!Khi so sánh một String với một Number thì giá trị String sẽ bị ép về kiểu Number để so so sánh một giá trị thuộc kiểu Boolean với một giá trị thuộc kiểu khác thì giá trị thuộc kiểu Boolean sẽ được ép về kiểu Number để so trị true sẽ được ép thành 1, giá trị false sẽ được ép thành lại với ví dụ là phép toán "0" == true. Đầu tiên true sẽ được chuyển thành 1, phép toán trở thành "0" == đến String "0" được ép về kiểu Number thành 0 để ta có được phép toán 0 == 1. Rõ ràng nó sẽ trả về "0" có giá trị Boolean là true, nhưng phép toán "0" == true sẽ trả về so sánh một biến có kiểu Object với một biến không phải là Object tức một giá trị thuộc nhóm Primitive boolean, number, string, null, undefined thì giá trị của Object sẽ là giá trị trả về của hàm valueOf, nếu nó là lại, nếu hàm valueOf không được định nghĩa, hoặc nó trả về giá trị không phải là Primitive, thì giá trị của Object sẽ là giá trị trả về từ hàm hàm toString cũng trả về một giá trị không phải là Primitive thì sẽ xảy ra lỗi TypeError [63] == "63" // true [3, 10] == "3,10" // true var num = { valueOf function { return 1; }, toString function { return "2"; } }; num == "1" // true num == 2 // false var num = { valueOf function { return [1]; }, toString function { return 2; } }; num == "1" // false num == 2 // true var num = { valueOf function { return [1]; }, toString function { return [2]; } }; num == "1" // TypeError Cannot convert object to primitive value Code language JavaScript javascript Hai biến cùng thuộc loại Object chỉ bằng nhau nếu chúng cùng trỏ đến một Object. [1] == [1] // false {a 1} == {a 1} // false var x = [1]; var y = [1]; x == y // false var x = y = [1]; x == y // true var x = {a 1}; var y = x; x == y // true Code language JavaScript javascript Một số chú ý NaN không bằng chính nó. Phép toán NaN == NaN hay NaN === NaN đều trả về false. NaN được thiết kế để mọi phép so sánh ==, >, =, = thực sự là một cái bẫy nữa. Như trong tiếng Việt thì ta sẽ gọi đó là phép toán lớn hơn hoặc bằng, tuy nhiên thực tế Javascript lại không dịch như vậy, nó hiểu >= là phép toán không nhỏ phép toán a >= b không phải tương đương với a > b a == b, mà nó tương đương với !a b // false a == b // false a = b // trueCode language JavaScript javascript Nguồn Các bạn có thể tham khảo các bài viết hay về JavaScript tại đây. Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm. Có hai loại ép kiểu trong JavaScript. Ép kiểu ngầm định Implicit Conversion Ép kiểu tường minh Explicit Conversion Ví dụ alert sẽ tự động chuyển bất kỳ kiểu dữ liệu nào về string để hiển thị chún Domain Liên kết Bài viết liên quan ép kiểu trong javascript JavaScript Ép kiểu Các kiểu dữ liệu cơ bản trong JavaScript. ... JavaScript Kiểu dữ liệu số. JavaScript Toán tử. JavaScript Symbol. JavaScript Ép kiểu. Mảng trong Javascript. ... JavaScript Mảng đa chiều. Kiểm soát Xem thêm Chi Tiết Trong bài này chúng ta sẽ tìm hiểu về chuỗi string trong Javascript, qua đó bạn sẽ biết được cách tạo và nối chuỗi cũng như ép kiểu dữ liệu sang viết này được đăng tại không được copy dưới mọi hình thức. Chuỗi là một loại kiểu dữ liệu quan trọng và thông dụng trong thực tế. Khi bạn cần lưu trữ thông tin vào trong cơ sở dữ liệu thì hơn 90% sẽ được lưu dưới dạng chuỗi. Chính vì vậy bạn cần phải tìm hiểu thật kỹ về các thao tác cũng như những hàm xử lý chuỗi đang có sẵn trong js. Ở các bài trước chúng ta đã thực hiện khá nhiều ví dụ có sử dụng chuỗi nhưng chưa tìm hiểu về nó nên bây giờ ta tìm hiểu định nghĩa chính xác. 1. Chuỗi string trong Javascript là gì? Chuỗi là một đoạn text có thể có một hoặc nhiều ký tự và thông thường chúng ta sẽ lưu trữ nó vào một biến, biến này ta sẽ gọi là biến có kiểu dữ liệu là String chuỗi. Tất cả các chuỗi đều phải được bao quanh bằng cặp dấu nháy đơn ' hoặc nháy kép ".Bài viết này được đăng tại [free tuts .net] Ví dụ Khai báo biến và gán chuỗi string JS var website = "website học javascript quá sướng"; var email = 'thehalfheart Trường hợp trong chuỗi cũng có xuất hiện dấu nháy đơn hoặc nháy đôi thì bắt buộc bạn phải thêm ký tự \ đằng trước dấu nháy đó, nếu không sẽ bị lỗi về cũ pháp. Ví dụ Trong chuỗi string có dấu nháy var message = "Học lập trình tại \" quá sướng"; var domain = ' - 'web học lập trình''; Ngoài ra còn nhiều ký hiệu kết hợp với dấu \ nữa như trong bảng dưới đây Code Kết quả ' single quote \" double quote \\ backslash \n new line \r carriage return \t tab \b backspace \f form feed 2. Cách nối chuỗi string trong Javascript Để nối chuỗi string trong JS thì chúng ta sử dụng dấu + để gép hai chuỗi hoặc biến kiểu String Object lại với nhau. Ví dụ Ghép hai string lại rồi gán vào biến message. var message = "chào mừng bạn" + "đến với Hoặc var message1 = "chào mừng bạn"; var message2 = "đến với // Nối hai chuỗi var message = message1 + message2; 3. Xử lý string trên nhiều dòng trong Javascript Khi bạn muốn Enter xuống hàng một chuỗi trong Javascript thì bắt buộc phải sử dụng dấu + để nối chuỗi, nếu không sẽ bị lỗi cú pháp. Ví dụ Dùng dấu + để nối chuỗi // Đúng var message = "Chào mừng bạn đến với" + " // Sai var message = "Chào mừng bạn đến với Nếu bạn muốn viết gọn hơn thì sử dụng dấu \ để báo cho trình duyệt biết là có xuống hàng. Ví dụ Dùng ký tự \ để khai báo chuỗi trên nhiều dòng. var message = "Chào mừng bạn đến với \ Hoặc bạn cũng có thể sử dụng dấu `nội dung chuỗi` để khai báo. Ví dụ Dùng cặp dấu ``. var message = `Chào mừng bạn đến với 4. Ép chuỗi string trong javascript Nếu bạn muốn ép một giá trị nào đó sang kiểu chuỗi thì có thể sử dụng cú pháp // Trước khi chuyển đổi var number = 12; alerttypeof number; // Sau khi chuyển đổi number = alerttypeof number; Từ khóa typeof vars sẽ trả về kiểu dữ liệu của biến vars. Ngoài cách trên bạn có thể sử dụng đối tượng String để tạo hoặc ép chuỗi, và vì là đối tượng nên nó phải có từ khóa new đặt đằng trước. Ví dụ Sử dụng String object hoặc String function. // String object var message = new String"chào mừng bạn đến với // String function var message = String"chào mừng bạn đến với Lúc này dù bạn truyền vào là kiểu gì đi nữa thì kết quả nó vẫn trả về kiểu string. Tuy nhiên người ta khuyến khích bạn không nên sử dụng cách này bởi vì chương trình sẽ chạy chậm hơn. 5. Một số hàm xử lý string trong Javascript Sau đây mình xin tổng hợp một số hàm / phương thức / thuộc tính dùng để xử lý chuỗi string trong JS. Đếm số ký tự trong chuỗi Để đếm tổng số ký tự trong chuỗi string thì ta sử dụng thuộc tính length. var txt = " var sln = // Kết quả 12 Tìm kiếm chuỗi trong chuỗi Nếu muốn tìm kiếm một chuỗi bên trong một chuỗi khác thì dùng hàm indexOf. Nếu tìm thấy thì nó sẽ trả về vị trí xuất hiện đầu tiên của chuỗi con. Nếu không tìm thấy thì tra về -1. var str = "Please locate where 'locate' occurs!"; var pos = // Kết quả 7 Nếu muốn tìm vị trí xuất hiện cuối cùng của chuỗi con thì dùng hàm lastIndexOf. var str = "Please locate where 'locate' occurs!"; var pos = // Kết quả 21 - là vị trí locate cuối cùng Ngoài ra bạn cũng có thể sử dụng hàm search, nó có công dụng giống như hàm indexOf. var str = "Please locate where 'locate' occurs!"; var pos = Lời kết Như vậy là chúng ta đã học xong cách xử lý chuỗi string trong Javascript, qua bày này hy vọng bạn hiểu cú pháp / cách tạo chuỗi / các thao tác thường dùng trên chuỗi. Chúng ta đã cùng nhau tìm hiểu các kiểu dữ liệu có trong JavaScript ở bài trước, tuy nhiên chúng ta vẫn chưa biết cách thao tác với chúng như thế nào trong JavaScript, nó có hổ trợ các phương thức nào hay không? Vấn đề đó, chúng ta sẽ cùng nhau tìm hiểu trong bài này nhé 😉.I. không giống như nhiều ngôn ngữ lập trình khác, nó không có kiểu dữ liệu dành cho số như integer, short, long, float, double, ... mà nó chỉ có mỗi kiểu với số nguyên trong JavaScript nó có độ chính xác đến 15 con số, cụ thể như saulet a = 999999999999999; // Giá trị của a lúc này là à 999999999999999 let b = 9999999999999999; // Đối với giá trị vượt quá 15 số thì b lúc này là 10000000000000000Ngoài ra, số thập phân cũng có giới hạn của nó là 17 số. Tuy nhiên việc tính toán với số thập phân trong JavaScript không phải lúc nào cũng chính xác, cụ thể như saulet a = + //-> Bạn nghĩ rằng a = //-> Output a = biết nguyên nhân tại sao bạn tìm hiểu khái niệm floating-point nhé 😉.Để khắc phục vấn đề này ta có thể nhân số thập phân với số nguyên rồi mới thực hiện phép tính, cụ thể như saulet total = * 10 + * 10/10 //->Output total = ý Trong JavaScript, việc cộng 2 số với nhau tất nhiên sẽ cho kết quả là số, tuy nhiên cộng số với chuỗi thì JavaScript sẽ tự động convert số thành chuỗi và cộng 2 chuỗi với nhau, kết quả cuối cùng sẽ là một chuỗi đó nhé 🤭. Do đó trước khi tính toán, chúng ta cần convert hết qua thành số rồi làm gì thì làm nhé 😁.1. Convert number to muốn chuyển đổi từ kiểu number sang string, ta có thể sử dụng phương thức toString, cụ thể như saulet num = 2021; //->Output "2021"Ngoài ra ta còn có thể convert từ number sang string ở dạng nhị phân, bát phân, thập phân và thập lục phân đó 😉let num = 240; //Nhị phân //->Output "11110000" //Bát phân //->Output "360" //Thập phân //->Output "240" //Thập lục phân //->Output "f0"2. Infinity - Dương vô hay dương vô cực cũng thuộc kiểu dữ liệu number. Khi một biến chứa giá trị mà vượt mức lưu trữ cho phép thì biến đó có giá trị là Infinity. Nó cũng là một giá trị nên ta có đem đi so sánh Infinity; //-> Output "number" let a = 5/ 0; //-> Output a = Infinity let num = 5; whilenum != Infinity { num = num * num; } //-> Output /* 25 625 390625 152587890625 Infinity */Vậy âm vô cực thì sao??? Thì là -Infinity đó 😁let num = 4 / 0; //-> Output -Infinity3. NaN - Not a là một giá trị có trong JavaScript, nó dùng để xác định một số không phải là số hợp lệ. Nếu bạn thực hiện các phép tính với number mà bằng cách nào đó nó vi phạm quy tắc tính toán của JavaScript thì nó sẽ trả về kết quả là dụ ta chia một số cho một chuỗi chẳng hạn 🤭.let total = 200 / "Hai trăm"; //->Output NaN typeof NaN; //-> Output "number"Để kiểm tra một biến có phải là NaN hay không ta sử dụng phương thức isNaN, nếu đúng thì return true ngược lại return x = 199 / "Not a number"; isNaNx; //-> Output true4. Ép kiểu sang làm việc với JavaScript chắc chắn sẽ có lúc có data bạn cần phải convert từ kiểu string sang kiểu number, lúc này ta có 3 cách để ép kiểuNumber Chuyển đổi giá trị về kiểu Chuyển đổi giá trị sang số Chuyển đổi giá trị sang số thập //-> 200 Number //-> Number2,2; //-> NaN Number2 2; //-> NaN Number"Alice"; //-> NaN Numbertrue; //-> 1 Numberfalse; //-> 0parseInt"123"; //-> 123 parseInt" //-> 9 parseInt"10 20 30"; //-> 10 parseInt"100 years"; //-> 100 parseInt"years 10"; //-> NaNparseFloat"10"; //-> 10 parseFloat" //-> parseFloat"10 20 30"; //-> 10 parseFloat"10 years"; //-> 10 parseFloat"years 10"; //-> NaN5. Làm tròn khi những tính toán cho kết quả không mong muốn như cho ra kết quả dạng tập phân và bạn muốn làm tròn con số đó lên, trong JavaScript bạn có thể sử dụng phương thức toFixed để làm tròn các con số x = //-> 10 //-> //-> //-> là một loại dữ liệu khá phổ biến trong JavaScript, một biến chứa các giá trị là các ký tự và được đặt trong dấu nhấy đơn '' hay dấu nháy kép "".let mess = 'Welcome to 200Lab'; let say = "Hello!";Một lưu ý cho các bạn, khi trong chuỗi bắt buộc có dấu nhấy đơn hoặc nhấy kép thì bạn phải thêm ký tự \ ở trước dấu nhấy đó, như ví dụ bên txt = "\"200Lab Education\" Học viện đào tạo kỹ sư phần mềm chuyên sâu qua dự án thực tế";Ngoài ra trong chuỗi còn có các dấu, support cho các vấn đề khác mà bạn có thể quan tâm như Code Kết quả ' single quote - Dấu nhấy đơn \" double quote - Dấu nhấy kép \\ backslash - Dấu chéo ngược \n new line - Xuống dòng mới \r carriage return \t tab \b backspace - Tạo khoảng trống \f form feed 1. Lấy độ dài của có thể lấy độ dài của một chuỗi bằng phương thức text = "200Lab"; //-> 62. Tìm kiếm chuỗi con trong một có thể sử dụng hàm indexOf để tìm một chuỗi con trong một chuỗi tìm thấy, nó sẽ trả về vị trí đầu tiên của ký tự có trong chuỗi không tìm thấy, nó sẽ trả về -1let mess = "JS is a programming language"; //-> 8 //-> -1Ngoài ra, nếu bạn muốn tìm vị trí cuối cùng của chuỗi con thì bạ có thể sử dụng lastIndexOflet mess = "JS is a programming language pro"; //-> 29À vị trí bắt đầu trong chuỗi là 0 nha 😁.3. Tách việc với chuỗi thì chắc chắn bạn sẽ phải không ít thì nhiều lần phải tách một chuỗi thành nhiều chuỗi theo mục đích của mình. Trong JavaScript, nó có 3 cách để tách dụng hàm slicestart, end, nó sẽ tách chuỗi từ vị trí start đến end-1let mess = "JS is a programming language pro"; 19; //-> "programming" // Nếu tham số là số âm thì nó sẽ đếm từ phía cuối chuỗi đến đầu chuỗi -13; //-> "programming" // Nếu không có tham số end thì nó sẽ tính từ start đến hết chuỗi //-> "programming language pro" //-> "programming language pro"Sử dụng subString, nó giống với slice, tuy nhiên lại không chơi với giá trị mess = "JS is a programming language pro"; 19; //-> "programming"substr cũng tương tự như slice nhưng không có tham số end, tham số thứ hai là độ dài của chuỗi bạn muốn cắt. Nó cũng nhận tham số bắt đầu là số âm, nếu không xác định độ dài chuỗi muốn cắt thì nó sẽ tính từ vị trí bắt đầu ta truyền vào cho đến hết mess = "JS is a programming language pro"; 11; //-> "programming" //-> "programming language pro" //-> "pro"4. Thay thế quá trình taho tác với chuỗi, nếu muốn thay thế một đoạn chuỗi nhỏ nào đó trong một chuỗi lớn thì ta có thể dùng hàm replace.var str = 'Please visit Microsoft and Microsoft!'; var n1 = 'W3Schools'; var n2 = "W3Schools"; //-> "Please visit W3Schools and Microsoft!" //-> "Please visit W3Schools and W3Schools!"5. Chuyển sang chuỗi hoa hoặc chuỗi chuyển đoạn chuỗi sang chuỗi in hoa ta sử dụng phương thức toUpperCase, in thường dùng toLowerCase.var text = 'Hello World!'; var textUp = //-> "HELLO WORLD!" var textLow = //-> "hello world!"6. Nối nối chuỗi ta sử dụng hàm concatlet text1 = 'Hello' let text2 = 'World' let merText = ', text2 //-> "Hello World"Ngoài ra còn một cách đơn giản là ta sử dụng dấu + 😁.let text1 = 'Hello' let text2 = 'World' let merText = text1 + ' ' + text2; //-> "Hello World"7. Xóa khoảng trắng hai bên xóa khoảng trắng hai bên chuỗi ta dùng hàm trim. Thường ta có thể dùng phương thức để xóa các khoảng trống mà người dùng nhập thừa đấy 😉.let str = ' 200Lab '; let newStr = //-> "200Lab"8. Cách lấy từng giá trị trong chuỗi thì chung quy lại nó cũng chỉ là một mảng chứa các ký tự, do đó để lấy các giá trị trong chuỗi ta dùng [] hoặc hàm charAt.let str = "200Lab"; //-> "2" str[3]; //-> "L"9. Lấy UTF-16 code tại vị trí bất kì trong lấy bất kỳ các code UTF-16 tại các vị trí bất kỳ trong chuỗi ta dùng hàm charCodeAt.let str = "JS basic!"; //-> 7410. Chuyển chuỗi sang chuyển một chuỗi sang dạng mảng ta sử dụng hàm split, tham số đầu vào của hàm là một chuỗi để ngăn str = "200lab Education", str1 = "a,b,c,d,e,f,g,h"; let arrStr1 = //-> ["a", "b", "c", "d", "e", "f", "g", "h"] // Nếu tham số là rỗng thì sẽ return về mảng từng ký tự let arrStr = //-> ["2", "0", "0", "l", "a", "b", " ", "E", "d", "u", "c", "a", "t", "i", "o", "n"]III. hay mảng là một tập hợp các phần tử, mỗi phần tử sẽ được đánh dấu thứ tự bằng chỉ mục hay index và index bắt đầu từ Lấy độ dài của tự chuỗi, để lấy độ dài của mảng ta dùng phương thức arr = [1, 2, 3, 4, 5]; //-> 52. Kiểm tra biến có chứa dữ liệu dạng mảng hay check xem một biến có chứa data dạng mảng hay không, ta dùng hàm isArray hoặc fruits = ['Banana', 'Orange', 'Apple', 'Mango'] //-> true fruits instanceof Array //-> true3. Chuyển mảng sang chuyển một mảng sang một chuỗi ta dùng hàm toString hoặc joinconst cars = ['Honda', 'Hyundai', 'Ford', 'Toyota']; const str1 = //-> "Honda,Hyundai,Ford,Toyota" const str2 = //-> "Honda-Hyundai-Ford-Toyota"4. Thêm phần tử vào cuối một phần tử mới vào mảng ta sử dụng hàm push, ngoài add thêm phần tử vào mảng nó còn return lại độ dài của mảng cars = ['Honda', 'Hyundai', 'Ford', 'Toyota']; const x = //-> 5 //-> ["Honda", "Hyundai", "Ford", "Toyota", "Suzuki"]5. Xóa phần tử ở cuối xóa một phần tử ở cuối mảng, ta dùng hàm pop và nó return lại giá trị mà nó vừa cars = ['Honda', 'Hyundai', 'Ford', 'Toyota']; const x = //-> "Toyota" //-> ["Honda", "Hyundai", "Ford"]6. Thêm phần tử vào đầu cho phép ta thêm 1 phần tử mới vào đầu mảng và return lại chiều dài mảng cars = ['Honda', 'Hyundai', 'Ford', 'Toyota']; const x = //-> 5 //-> ["Suzuki", "Honda", "Hyundai", "Ford", "Toyota"]7. Xóa phần tử ở đầu hàm shift ta có thể xóa phần tử đầu tiên của mảng và đồng thời return lại phần tử vừa cars = ['Honda', 'Hyundai', 'Ford', 'Toyota']; const x = //-> "Honda" //-> ["Hyundai", "Ford", "Toyota"]Lưu ý ta cũng có thể dùng delete operator để xóa bất kỳ phần tử nào có trong mảng. Tuy nhiên chỉ giá trị của phần tử được xóa nên lại để lại một khoảng trống trong mảng. Khi ta truy xuất đến khoảng trống này, ta nhận được giá trị của nó là cars = ['Honda', 'Hyundai', 'Ford', 'Toyota']; delete cars[0]; //-> [empty, "Hyundai", "Ford", "Toyota"] //-> undefined8. Thêm hoặc xóa nhiều phần tử trong 1 hàm splice, ta có thể thêm hoặc xóa nhiều phần tử trong mảng và return lại mảng với các phần tử mà ta đã pháp của nó như sau splicevị trí thêm, số lượng cần xóa, … phần tử thêmconst cars = ['Honda', 'Hyundai', 'Ford', 'Toyota']; //Thêm vào vị trí thứ 2 const x = 0, 'Suzuki', 'Isuzu'; //-> [] Vì ta không xóa nên mảng sẽ là rỗng //-> ["Honda", "Hyundai", "Suzuki", "Isuzu", "Ford", "Toyota"]const cars = ['Honda', 'Hyundai', 'Ford', 'Toyota']; // Xóa 1 phần tử tại vị trí số 0 const x = 1 //-> [ "Honda" ] //-> ["Hyundai", "Ford", "Toyota"]9. Ghép concat cũng có thể ghép 2 mảng lại với myGirls = ['Alice Rondo', 'Luminous Valentine']; const myBoys = ['Diablo', 'Guy Crimson', 'Leon Cromwell']; const myChildren = //-> ["Alice Rondo", "Luminous Valentine", "Diablo", "Guy Crimson", "Leon Cromwell"]10. Tách mảngMuốn tách mảng thì ta sử dụng hàm slice, với cú phápslicevị trí bắt đầu, vị trí kết thúcconst cars = ['Honda', 'Hyundai', 'Ford', 'Toyota']; //Tách từ vị trí đầu đến hết mảng. const x = //-> ["Hyundai", "Ford", "Toyota"] //tách ra 1 mảng mới bắt đầu tại vị trí 1 đến 2 3-1 const y = 3; //-> ["Hyundai", "Ford"]11. Spread là một khái niệm mới đây, được ra mắt từ ES6 ES2015, nó phân rã mảng object thành từng phần tử nhỏ ví dụ [1,2,3] => 1,2,3.const nums_1 = [1, 2, 3]; const nums_2 = [3, 4, 5]; // Nối mảng const newNums = [...nums_1, ...nums_2]; //- trueHiện nay Spread operator được sử dụng thương xuyên trong lập trình và thao tác với mảng đấy 😉.12. Lặp mảng hay duyệt mảng thì đây là cách thức ta thường phải sử dụng để thao tác với mảng, ngoài for thông thường, ta còn có forEach, map, filter, find, findIndex, every, some. Cùng nhau tìm hiểu từng loại một nhé 😁.forEach Lặp qua từng phần tử có trong mảng. Tham số truyền vào forEach là một callback function với 3 đối số gồmGiá trị phần của phần đang thực numbers = [1, 2, 3, 4, 5]; let newNumbers = []; index, array => { }; //-> [1, 2, 3, 4, 5]map cho phép tạo một mảng mới bằng cách thực hiện tính toán trên mỗi phần tử, map không làm thay đổi mảng numbers = [1, 2, 3, 4, 5]; let newNumbers = index, array => { return value * 2; }; //-> [2, 4, 6, 8, 10] filter cho phép tạo một mảng mới với những phần tử nào thỏa điều kiện ta đặt ra. Hàm này thường được dùng để tìm kiếm phần tử trong numbers = [1, 2, 3, 4, 5]; let newNumbers = index, array => { return value >=3; }; //-> [3, 4, 5]find Hàm này trả về phần tử thỏa điều kiện đầu tiên, nếu không có sẽ return undefined. Thường dùng hàm này để tìm kiếm phần tử trong numbers = [1, 2, 3, 4, 5]; let result = index, array => { return value > 1; }; //-> 2 let resultUn = index, array => { return value > 5; }; //-> undefinedfindIndex Hàm này trả về index của phần tử thỏa điều kiện đầu tiên, nếu không có sẽ return cars = ['Suzuki', 'Toyota', 'Hyundai']; const result = index, array => { return value === 'Toyota'; }; //-> 1 const resultUn = index, array => { return value === 'Yamaha'; }; //-> -1every Nếu mọi phần tử thỏa điều kiện sẽ return true, còn không sẽ return false, đơn giản vậy thôi 😁.const numbers = [1, 2, 3, 4, 5]; const checkF = index, array => { return value > 2; }; //-> false const checkT = index, array => { return value >= 1; }; //-> truesome Nếu có một phần tử bất kỳ nào thỏa điều kiện thì sẽ return true, còn không thì sẽ return numbers = [1, 2, 3, 4, 5]; const check = index, array => { return value > 2; }; //-> true13. Lấy index của phần tử lấy giá trị index của phần tử có trong mảng ta dùng hàm indexOf và truyền vào giá trị mà bạn muốn lấy cars = ['Honda', 'Hyundai', 'Ford', 'Toyota']; let index = //-> 214. Kiểm tra phần tử có trong mảng hay check xem phần tử nào đó có trong mảng hay không ta dùng hàm includes và truyền vào giá trị bạn muốn tìm. Nếu có nó sẽ return true không thì return falseconst numbers = [1, 2, 3, 4, 5]; const check = //-> trueIV. của object là cặp key, value tương ứng, entry còn được coi như là property thuộc tính của object. Key của object luôn là string hoặc của object thì có thể thuộc bất cứ kiểu dữ liệu nào kể cả là function. Method hay phương thức là những thuộc tính mà value của nó là function1. prototype objectPrototype là một cơ chế của JavaScript, giúp object thừa kế các tính năng của object các kiểu dữ liệu trong JavaScript mà ta đã biết thì nó cũng như bao ngôn ngữ lập trình khá còn có các object kiểu dữ liệu như Number, String, Boolean. Mảng là một object dạng Array còn function là một object dễ hiểu hơn, chúng ta cùng xem ví dụ và giải thích nhé 😉.let str = 'String'; // str là string, cha nó là // nhân đôi chuỗi đưa vào = function { return this + this; }; // Tìm thấy hàm duplicate trong prototype// object thông thường const person = { firstName 'Alice', lastName 'Rondo', showName function { + ' ' + } }; //-> object person có prototype là Constructor Function function PersonfirstName, lastName { = firstName = lastName = function { + ' ' + } } let Person_1 = new Person'Alice', 'Rondo'; /* - object này có prototype là - Prototype mới được tạo ra - kế thừa */Thử thêm một phương thức vào object được tạo từ một constructor function// STEP 0 tạo ra 1 hàm và khởi tạo một object s1 bằng toán tử new function Studentname, age { = name = age } const s1 = new Student'Alice Rondo', 9 // STEP 1 thêm một hàm saySomeThing cho Student như sau = function { } // STEP 2 thêm 1 hàm showName cho prototype của Student như sau = function { name is ', } // STEP 3 Gọi lần lượt hai hàm trên từ object s1 //-> Lỗi, vì s1 không có hàm saySomeThing, hàm này chỉ thuộc Student thôi. //-> 'My name is Alice Rondo' //->'Hello'Ta có thể edit prototype của một function thông qua object được tạo từ function đó bằng __proto__ như sau = function { là ${ tôi đang học.` } const s2 = new Student'Milim Nava', 20 //-> "Tôi là Milim Nava, tôi đang học."2. Truy xuất, thêm, xóa, sửa thuộc tính của person = { name 'Alice Rondo', }; // Lấy giá trị của thuộc tính name // Thêm thuộc tính vào person = 12; // Sửa thuộc tính name = 'Rimuru Tempest'; // Xóa thuộc tính name delete Merge merge 2 object lại với nhau ta dùng phương thức person = { name 'Rimuru Tempest', position ['King of Jura Tempest Federation'], }; const person2 = { position ['King of Monsters'] }; /* { name 'Rimuru Tempest', positon ['King of Monsters'] } */Spread operator cũng có thể dùng để shallow copy hoặc merge object lại nhé 😁const person = { name 'Rimuru Tempest', position ['King of Jura Tempest Federation'], } const person2 = { ...person, position ['King of Monsters'] } /* { name 'Rimuru Tempest', positon ['King of Monsters'] } */4. Lấy các key của lấy tất cả các key của một object ta dùng phương thức nó sẽ return một mảng chứa tất cả các key của object person = { name "Remuru Tempest", age 24 }; //-> [ "name", 'age" ]5. Lấy các value của lấy tất cả các value của một object ta dùng phương thức nó sẽ return một mảng chứa tất cả các value của object person = { name "Remuru Tempest", age 24 }; //-> ["Remuru Tempest", 24]V. Tổng viết tuy hơi dài, nhưng mình đã cố gắng giới thiệu cho các bạn những phương thức thừng hay sử dụng để thao tác với các data là number,`string, array hay object trong khi học hay làm việc với ngôn ngữ JavaScript, ngoài ra còn nhiều phương thức khác nữa đó nha, bấy nhiêu đó chưa có hết đâu 😁. Tuy vậy, mình hy vọng bài viết này sẽ có ích cho các bạn, cảm ơn các bạn đã đọc 🤗. Ép kiểu ngầm trong javascript là sự chuyển đổi tự động của giá trị từ kiểu dữ liệu này sang kiểu khác. Nó xảy ra khi thực hiện một biểu thức với các kiểu dữ liệu khác nhau. Ép kiểu String Ép kiểu string xảy ra khi dùng toán tử +. Một số cộng với một chuỗi, kiểu số sẽ bị ép thành kiểu chuỗi. Ví dụ var x = 3; var y = "3"; x + y; // Returns "33" var x = 24; var y = "Hello"; x + y; // Returns "24Hello"; Để hiểu về hai ví dụ khi ta cộng một số vào chuỗi, thì khi JavaScript thấy biểu thức x+y với hai kiểu khác nhau một số và một chuỗi, nó chuyển đổi kiểu số thành chuỗi để thực hiện hành động. Sau khi ... Bạn cần đăng nhập để xem

ép kiểu trong javascript