Menu
×

Được chứng nhận

Ghi lại kiến ​​thức của bạn

Đăng nhập Đăng ký

Tạo Tài khoản Example.com.vn miễn phí để cải thiện trải nghiệm học tập của bạn

Người tìm đường và việc học của tôi

Theo dõi tiến độ học tập của bạn tại Example.com.vn và thu thập phần thưởng

Nâng cấp

Trở thành người dùng PLUS và mở khóa các tính năng mạnh mẽ (không có quảng cáo, lưu trữ, hỗ trợ, ..)

Bắt đầu từ đâu

Bạn không chắc chắn muốn bắt đầu từ đâu? Đi theo con đường được hướng dẫn của chúng tôi

Trình chỉnh sửa mã (Dùng thử)

Với trình chỉnh sửa mã trực tuyến của chúng tôi, bạn có thể chỉnh sửa mã và xem kết quả trong trình duyệt của mình

Video

Tìm hiểu những điều cơ bản về HTML qua video hướng dẫn thú vị và hấp dẫn

Mẫu

Chúng tôi đã tạo một loạt mẫu trang web đáp ứng mà bạn có thể sử dụng - miễn phí!

Web hosting

Lưu trữ trang web của riêng bạn và chia sẻ nó với mọi người với Example.com.vn Spaces

Tạo một máy chủ

Tạo máy chủ của riêng bạn bằng Python, PHP, React.js, Node.js, Java, C#, v.v.

Làm thế nào để

Bộ sưu tập lớn các đoạn mã cho HTML, CSS và JavaScript

Khung CSS

Xây dựng các trang web nhanh và phản hồi bằng cách sử dụng khung W3.CSS miễn phí của chúng tôi

Thống kê trình duyệt

Đọc xu hướng dài hạn của việc sử dụng trình duyệt

Tốc độ gõ

Kiểm tra tốc độ đánh máy của bạn

Đào tạo AWS

Tìm hiểu dịch vụ web của Amazon

Bộ chọn màu

Sử dụng công cụ chọn màu của chúng tôi để tìm các màu RGB, HEX và HSL khác nhau. Bánh xe màu hình tròn thể hiện sự chuyển màu trong quang phổ

Trò chơi mã

Trò chơi mã hóa W3Schools! Giúp linh miêu thu thập nón thông Logo Lynx

Đặt mục tiêu

Nhận hành trình học tập được cá nhân hóa dựa trên các kỹ năng và mục tiêu hiện tại của bạn

Bản tin

Tham gia bản tin của chúng tôi và có quyền truy cập vào nội dung độc quyền mỗi tháng

Việc làm

Thuê những tài năng công nghệ hàng đầu. Hợp lý hóa quy trình tuyển dụng của bạn để có đội ngũ phù hợp hoàn hảo

Lớp học

Hãy liên hệ để sử dụng Example.com.vn Plus và các chứng chỉ với tư cách là một tổ chức giáo dục

×
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP CÁCH W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS AN NINH MẠNG DỮ LIỆU KHOA HỌC

Hướng dẫn về JS

JS HOME Giới thiệu JS JS Nơi xuất ra JS Câu lệnh JS JS Cú pháp JS Nhận xét JS Biến JS Let JS Const Toán tử JS JS Số học Phép gán JS Kiểu dữ liệu JS Hàm JS Đối tượng JS Sự kiện JS Chuỗi JS Phương thức chuỗi JS Tìm kiếm chuỗi JS Mẫu chuỗi JS Số JS Số JS BigInt JS Phương thức số Thuộc tính số JS Mảng JS Phương thức mảng JS Tìm kiếm mảng JS Sắp xếp mảng JS Lặp lại JS Mảng Const JS Ngày tháng JS Định dạng ngày JS Ngày Nhận phương thức JS Phương thức đặt ngày JS Toán học JS ngẫu nhiên JS Booleans JS So sánh JS Nếu khác JS Switch Vòng lặp JS cho JS Vòng lặp cho trong JS Vòng lặp cho vòng lặp JS Trong khi JS Break JS Iterables JS Bộ JS Set Methods JS Maps JS Map Methods JS Typeof JS Type Chuyển đổi JS Bitwise JS RegExp JS Ưu tiên JS Lỗi JS Phạm vi JS Hoisting JS Chế độ nghiêm ngặt JS cái này Từ khóa JS Mũi tên Chức năng Các lớp JS Mô-đun JS JS JSON JS Gỡ lỗi Hướng dẫn về phong cách JS Các phương pháp hay nhất về JS Các sai lầm về JS Hiệu suất JS Các từ dành riêng cho JS

Phiên bản JS

Phiên bản JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS 2019 JS 2020 JS 2021 JS 2022 JS 2023 JS IE / Edge JS Lịch sử

Đối tượng JS

Định nghĩa đối tượng Thuộc tính đối tượng Phương thức đối tượng Hiển thị đối tượng Trình truy cập đối tượng Trình tạo đối tượng Nguyên mẫu đối tượng Quản lý đối tượng Bảo vệ đối tượng

Hàm JS

Định nghĩa hàm Tham số hàm Chức năng Gọi hàm Gọi hàm Áp dụng hàm Liên kết hàm Đóng

Các lớp JS

Lớp Giới thiệu Lớp Kế thừa Lớp Tĩnh

JS không đồng bộ

Lệnh gọi lại JS JS không đồng bộ JS hứa hẹn JS Async/Await

DOM HTML

Giới thiệu DOM Các phương thức DOM Tài liệu DOM Phần tử DOM DOM HTML Biểu mẫu DOM DOM CSS DOM Ảnh động DOM Sự kiện DOM Trình nghe sự kiện Điều hướng DOM Nút DOM Bộ sưu tập DOM Danh sách nút DOM

BOM trình duyệt JS

Cửa sổ JS Màn hình JS Vị trí JS Lịch sử JS JS Điều hướng JS Cảnh báo bật lên JS Thời gian JS Cookies JS

API Web JS

API Web Giới thiệu API biểu mẫu web API lịch sử web API lưu trữ web API công nhân web API tìm nạp web API định vị địa lý web

JS AJAX

AJAX Giới thiệu AJAX XMLHttp AJAX Yêu cầu AJAX Phản hồi Tệp XML AJAX PHP AJAX ASP AJAX Cơ sở dữ liệu AJAX Ứng dụng AJAX Ví dụ về AJAX

JSON JSON

Giới thiệu JSON Cú pháp JSON JSON và XML Các kiểu dữ liệu JSON Phân tích cú pháp JSON JSON xâu chuỗi các đối tượng JSON Mảng JSON Máy chủ JSON JSON PHP JSON HTML JSON JSONP

JS và jQuery

Bộ chọn jQuery jQuery HTML jQuery CSS jQuery DOM

Đồ họa JS

JS Graphics JS Canvas JS Plotly JS Chart.js JS Google Chart JS D3.js

Ví dụ về JS

Ví dụ về JS JS HTML DOM JS Đầu vào HTML JS Đối tượng HTML JS Sự kiện HTML Trình duyệt JS Trình soạn thảo JS Bài tập JS Câu đố JS Trang web JS Chuẩn bị phỏng vấn JS Bootcamp Chứng chỉ JS

Tài liệu tham khảo JS

Đối tượng JavaScript Đối tượng DOM HTML


Những lỗi thường gặp về JavaScript


Chương này chỉ ra một số lỗi JavaScript phổ biến.


Vô tình sử dụng toán tử gán

Các chương trình JavaScript có thể tạo ra kết quả không mong muốn nếu lập trình viên vô tình sử dụng toán tử gán ( = ), thay vì toán tử so sánh ( == ) trong câu lệnh if.

Câu lệnh if này trả về false (như mong đợi) vì x không bằng 10:

let x = 0;
if (x == 10)
Hãy tự mình thử »

Câu lệnh if này trả về true (có thể không như mong đợi), vì 10 là đúng:

let x = 0;
if (x = 10)
Hãy tự mình thử »

Câu lệnh if này trả về false (có thể không như mong đợi), vì 0 là sai:

let x = 0;
if (x = 0)
Hãy tự mình thử »

Một phép gán luôn trả về giá trị của phép gán.


Mong đợi sự so sánh lỏng lẻo

Trong so sánh thông thường, kiểu dữ liệu không quan trọng. Câu lệnh if này trả về true:

let x = 10;
let y = "10";
if (x == y)
Hãy tự mình thử »

Trong so sánh chặt chẽ, loại dữ liệu có vấn đề. Câu lệnh if này trả về false:

let x = 10;
let y = "10";
if (x === y)
Hãy tự mình thử »

Một sai lầm phổ biến là quên rằng các câu lệnh switch sử dụng sự so sánh chặt chẽ:

case switch này sẽ hiển thị một cảnh báo:

let x = 10;
switch(x) {
  case 10: alert("Hello");
}
Hãy tự mình thử »

case switch này sẽ không hiển thị cảnh báo:

let x = 10;
switch(x) {
  case "10": alert("Hello");
}
Hãy tự mình thử »


Sự cộng và nối khó hiểu

Ngoài ra là về việc thêm số .

Nối có nghĩa là thêm các chuỗi .

Trong JavaScript cả hai thao tác đều sử dụng cùng một toán tử + .

Vì lý do này, việc cộng một số dưới dạng số sẽ tạo ra kết quả khác với việc cộng một số dưới dạng chuỗi:

let x = 10;
x = 10 + 5;       // Now x is 15

let y = 10;
y += "5";        // Now y is "105"
Hãy tự mình thử »

Khi cộng hai biến, có thể khó dự đoán kết quả:

let x = 10;
let y = 5;
let z = x + y;     // Now z is 15

let x = 10;
let y = "5";
let z = x + y;     // Now z is "105"
Hãy tự mình thử »

Hiểu lầm phao

Tất cả các số trong JavaScript được lưu trữ dưới dạng số dấu phẩy động 64 bit (Floats).

Tất cả các ngôn ngữ lập trình, bao gồm cả JavaScript, đều gặp khó khăn với các giá trị dấu phẩy động chính xác:

let x = 0.1;
let y = 0.2;
let z = x + y            // the result in z will not be 0.3
Hãy tự mình thử »

Để giải quyết vấn đề trên, nó giúp nhân và chia:

Ví dụ

let z = (x * 10 + y * 10) / 10;       // z will be 0.3
Hãy tự mình thử »

Phá vỡ một chuỗi JavaScript

JavaScript sẽ cho phép bạn chia một câu lệnh thành hai dòng:

ví dụ 1

let x =
"Hello World!";
Hãy tự mình thử »

Tuy nhiên, việc ngắt câu lệnh ở giữa chuỗi sẽ không có tác dụng:

Ví dụ 2

let x = "Hello
World!";
Hãy tự mình thử »

Bạn phải sử dụng "dấu gạch chéo ngược" nếu bạn phải ngắt câu lệnh trong chuỗi:

Ví dụ 3

let x = "Hello \
World!";
Hãy tự mình thử »

Đặt sai dấu chấm phẩy

Do dấu chấm phẩy bị đặt sai vị trí, khối mã này sẽ thực thi bất kể giá trị của x:

if (x == 19);
{
  // code block 
}
Hãy tự mình thử »

Phá vỡ một tuyên bố hoàn trả

Hành vi mặc định của JavaScript là tự động đóng một câu lệnh ở cuối dòng.

Vì điều này, hai ví dụ này sẽ trả về cùng một kết quả:

ví dụ 1

function myFunction(a) {
  let power = 10 
  return a * power
}
Hãy tự mình thử »

Ví dụ 2

function myFunction(a) {
  let power = 10;
  return a * power;
}
Hãy tự mình thử »

JavaScript cũng sẽ cho phép bạn chia một câu lệnh thành hai dòng.

Vì điều này, ví dụ 3 cũng sẽ trả về kết quả tương tự:

Ví dụ 3

function myFunction(a) {
  let
  power = 10; 
  return a * power;
}
Hãy tự mình thử »

Tuy nhiên, điều gì sẽ xảy ra nếu bạn chia câu lệnh return thành hai dòng như thế này:

Ví dụ 4

function myFunction(a) {
  let
  power = 10; 
  return
  a * power;
}
Hãy tự mình thử »

Hàm sẽ trả về undefined !

Tại sao? Bởi vì JavaScript nghĩ ý bạn là:

Ví dụ 5

function myFunction(a) {
  let
  power = 10; 
  return;
  a * power;
}
Hãy tự mình thử »

Giải trình

Nếu một tuyên bố không đầy đủ như:

let

JavaScript sẽ cố gắng hoàn thành câu lệnh bằng cách đọc dòng tiếp theo:

power = 10;

Nhưng vì tuyên bố này đã hoàn tất:

return

JavaScript sẽ tự động đóng nó như thế này:

return;

Điều này xảy ra vì câu lệnh đóng (kết thúc) bằng dấu chấm phẩy là tùy chọn trong JavaScript.

JavaScript sẽ đóng câu lệnh return ở cuối dòng vì đây là câu lệnh hoàn chỉnh.

Không bao giờ phá vỡ câu lệnh return.


Truy cập mảng với các chỉ mục được đặt tên

Nhiều ngôn ngữ lập trình hỗ trợ mảng có chỉ mục được đặt tên.

Mảng có chỉ mục được đặt tên được gọi là mảng kết hợp (hoặc băm).

JavaScript không hỗ trợ các mảng có chỉ mục được đặt tên.

Trong JavaScript, mảng sử dụng các chỉ mục được đánh số :

Ví dụ

const person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
person.length;       // person.length will return 3
person[0];           // person[0] will return "John"
Hãy tự mình thử »

Trong JavaScript, các đối tượng sử dụng các chỉ mục được đặt tên .

Nếu bạn sử dụng chỉ mục được đặt tên, khi truy cập vào một mảng, JavaScript sẽ xác định lại mảng đó thành một đối tượng tiêu chuẩn.

Sau khi tự động xác định lại, các phương thức và thuộc tính mảng sẽ tạo ra kết quả không xác định hoặc không chính xác:

Ví dụ:

const person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
person.length;      // person.length will return 0
person[0];          // person[0] will return undefined
Hãy tự mình thử »

Kết thúc định nghĩa bằng dấu phẩy

Dấu phẩy ở cuối trong định nghĩa đối tượng và mảng là hợp pháp trong ECMAScript 5.

Ví dụ về đối tượng:

person = {firstName:"John", lastName:"Doe", age:46,}

Ví dụ về mảng:

points = [40, 100, 1, 5, 25, 10,];

CẢNH BÁO !!

Internet Explorer 8 sẽ gặp sự cố.

JSON không cho phép dấu phẩy ở cuối.

JSON:

person = {"firstName":"John", "lastName":"Doe", "age":46}

JSON:

points = [40, 100, 1, 5, 25, 10];

Không xác định là không rỗng

Các đối tượng, biến, thuộc tính và phương thức JavaScript có thể không được undefined .

Ngoài ra, các đối tượng JavaScript trống có thể có giá trị null .

Điều này có thể gây khó khăn một chút cho việc kiểm tra xem một đối tượng có trống không.

Bạn có thể kiểm tra xem một đối tượng có tồn tại hay không bằng cách kiểm tra xem loại đó có phải là undefined hay không:

Ví dụ:

if (typeof myObj === "undefined") 
Hãy tự mình thử »

Nhưng bạn không thể kiểm tra xem một đối tượng có phải là null hay không, vì điều này sẽ gây ra lỗi nếu đối tượng undefined :

Không đúng:

if (myObj === null) 

Để giải quyết vấn đề này, bạn phải kiểm tra xem một đối tượng có phải là null hay không và không undefined .

Nhưng điều này vẫn có thể gây ra lỗi:

Không đúng:

if (myObj !== null && typeof myObj !== "undefined") 

Vì điều này, bạn phải kiểm tra not undefined trước khi có thể kiểm tra not null :

Chính xác:

if (typeof myObj !== "undefined" && myObj !== null) 
Hãy tự mình thử »


×

Liên hệ bán hàng

Nếu bạn muốn sử dụng dịch vụ của Example.com.vn với tư cách là một tổ chức giáo dục, nhóm hoặc doanh nghiệp, hãy gửi email cho chúng tôi:
[email được bảo vệ]

Báo cáo lỗi

Nếu bạn muốn báo cáo lỗi hoặc nếu bạn muốn đưa ra đề xuất, hãy gửi email cho chúng tôi:
[email được bảo vệ]

Example.com.vn được tối ưu hóa cho việc học tập và đào tạo. Các ví dụ có thể được đơn giản hóa để cải thiện khả năng đọc và học. Các hướng dẫn, tài liệu tham khảo và ví dụ liên tục được xem xét để tránh sai sót, nhưng chúng tôi không thể đảm bảo tính chính xác hoàn toàn của mọi nội dung. Khi sử dụng W3Schools, bạn đồng ý đã đọc và chấp nhận các điều khoản sử dụng , chính sách cookie và quyền riêng tư của chúng tôi.

Bản quyền 1999-2024 của Refsnes Data. Đã đăng ký Bản quyền. Example.com.vn được cung cấp bởi W3.CSS .