Từ khóa và định nghĩa JavaScript

Trang này mô tả ngữ pháp từ vựng của JavaScript. Văn bản nguồn JavaScript chỉ là một chuỗi các ký tự — để trình thông dịch hiểu được, chuỗi phải được phân tích cú pháp thành một biểu diễn có cấu trúc hơn. Bước đầu tiên của quá trình phân tích cú pháp được gọi là phân tích từ vựng, trong đó văn bản được quét từ trái sang phải và được chuyển đổi thành một chuỗi các phần tử đầu vào nguyên tử, riêng lẻ. Một số phần tử đầu vào không quan trọng đối với trình thông dịch và sẽ bị loại bỏ sau bước này — chúng bao gồm và. Những cái khác, bao gồm , , và dấu chấm câu (hầu hết là toán tử), sẽ được sử dụng để phân tích cú pháp sâu hơn. và các nhận xét nhiều dòng cũng không quan trọng về mặt cú pháp, nhưng chúng hướng dẫn quy trình để làm cho các chuỗi mã thông báo không hợp lệ nhất định trở thành hợp lệ

Các ký tự kiểm soát định dạng không có biểu diễn trực quan nhưng được sử dụng để kiểm soát việc diễn giải văn bản

Code pointNameAbbreviationDescriptionU+200CZero width non-joinerPlaced between characters to prevent being connected into ligatures in certain languages (Wikipedia).U+200DZero width joinerPlaced between characters that would not normally be connected in order to cause the characters to be rendered using their connected form in certain languages (Wikipedia).U+FEFFByte order markUsed at the start of the script to mark it as Unicode and the text's byte order (Wikipedia).

In JavaScript source text, and are treated as parts, while (also called a zero-width no-break space when not at the start of text) is treated as .

Các ký tự khoảng trắng cải thiện khả năng đọc của văn bản nguồn và các mã thông báo riêng biệt với nhau. Những ký tự này thường không cần thiết cho chức năng của mã. Các công cụ thu nhỏ thường được sử dụng để loại bỏ khoảng trắng nhằm giảm lượng dữ liệu cần truyền

Code pointNameAbbreviationDescriptionEscape sequenceU+0009Character tabulationHorizontal tabulation\tU+000BLine tabulationVertical tabulation\vU+000CForm feedPage breaking control character ().\fU+0020SpaceNormal spaceU+00A0No-break spaceNormal space, but no point at which a line may breakU+FEFFZero-width no-break spaceWhen not at the start of a script, the BOM marker is a normal whitespace character.OthersOther Unicode space charactersCharacters in the "Space_Separator" general category

Ghi chú. Trong số những ký tự có thuộc tính "White_Space" nhưng không thuộc danh mục chung "Space_Separator", U+0009, U+000B và U+000C vẫn được coi là khoảng trắng trong JavaScript;

Ghi chú. Các thay đổi đối với tiêu chuẩn Unicode được sử dụng bởi công cụ JavaScript có thể ảnh hưởng đến hành vi của chương trình. Ví dụ: ES2016 đã nâng cấp chuẩn Unicode tham chiếu từ 5. 1 đến 8. 0. 0, khiến cho BỘ PHÂN PHỐI NGUYÊN NGỮ MÔNG CỔ U+180E được chuyển từ danh mục "Dấu cách_Dấu_cách" sang danh mục "Định dạng (Cf)" và làm cho nó không phải là khoảng trắng. Sau đó, kết quả của

function comment() {
  /* console.log("Hello world!"); */
}
comment();
1 thay đổi từ
function comment() {
  /* console.log("Hello world!"); */
}
comment();
2 thành
function comment() {
  /* console.log("Hello world!"); */
}
comment();
3

Ngoài các ký tự, các ký tự kết thúc dòng được sử dụng để cải thiện khả năng đọc của văn bản nguồn. Tuy nhiên, trong một số trường hợp, các dấu kết thúc dòng có thể ảnh hưởng đến việc thực thi mã JavaScript vì có một số chỗ chúng bị cấm. Bộ kết thúc dòng cũng ảnh hưởng đến quá trình

Bên ngoài ngữ cảnh ngữ pháp từ vựng, khoảng trắng và các dấu kết thúc dòng thường được kết hợp với nhau. Ví dụ:

function comment() {
  /* console.log("Hello world!"); */
}
comment();
4 loại bỏ tất cả khoảng trắng và dấu kết thúc dòng ở đầu và cuối chuỗi. Thoát khỏi lớp ký tự
function comment() {
  /* console.log("Hello world!"); */
}
comment();
5 trong biểu thức chính quy khớp với tất cả khoảng trắng và dấu đầu dòng

Chỉ các điểm mã Unicode sau đây được coi là dấu kết thúc dòng trong ECMAScript, các ký tự ngắt dòng khác được coi là khoảng trắng (ví dụ: Dòng tiếp theo, NEL, U+0085 được coi là khoảng trắng)

Code pointNameAbbreviationDescriptionEscape sequenceU+000ALine FeedNew line character in UNIX systems.\nU+000DCarriage ReturnNew line character in Commodore and early Mac systems.\rU+2028Line SeparatorWikipediaU+2029Paragraph SeparatorWikipedia

Nhận xét được sử dụng để thêm gợi ý, ghi chú, đề xuất hoặc cảnh báo vào mã JavaScript. Điều này có thể làm cho nó dễ đọc và dễ hiểu hơn. Chúng cũng có thể được sử dụng để vô hiệu hóa mã để ngăn mã được thực thi;

JavaScript có hai cách lâu đời để thêm nhận xét vào mã. bình luận dòng và bình luận khối. Ngoài ra, có một cú pháp bình luận hashbang đặc biệt

Cách thứ nhất là bình luận

function comment() {
  /* console.log("Hello world!"); */
}
comment();
6; . Ví dụ

function comment() {
  // This is a one line JavaScript comment
  console.log("Hello world!");
}
comment();

Cách thứ hai là kiểu

function comment() {
  /* console.log("Hello world!"); */
}
comment();
7, linh hoạt hơn nhiều

Ví dụ: bạn có thể sử dụng nó trên một dòng

________số 8

Bạn cũng có thể tạo nhận xét nhiều dòng, như thế này

function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();

Bạn cũng có thể sử dụng nó ở giữa dòng, nếu muốn, mặc dù điều này có thể làm cho mã của bạn khó đọc hơn, vì vậy bạn nên thận trọng khi sử dụng nó

function comment() {
  /* console.log("Hello world!"); */
}
comment();
0

Ngoài ra, bạn có thể sử dụng nó để vô hiệu hóa mã để ngăn mã chạy bằng cách gói mã trong nhận xét, như thế này

function comment() {
  /* console.log("Hello world!"); */
}
comment();

Trong trường hợp này, lệnh gọi

function comment() {
  /* console.log("Hello world!"); */
}
comment();
8 không bao giờ được thực hiện, vì nó nằm trong một nhận xét. Bất kỳ số dòng mã nào cũng có thể bị vô hiệu hóa theo cách này

Chặn các nhận xét chứa ít nhất một dấu kết thúc dòng hoạt động như trong

Có một cú pháp bình luận thứ ba đặc biệt, bình luận hashbang. Nhận xét hashbang hoạt động chính xác như nhận xét chỉ có một dòng (

function comment() {
  /* console.log("Hello world!"); */
}
comment();
6), ngoại trừ việc nó bắt đầu bằng
function comment() {
  /* console.log("Hello world!"); */
}
comment();
40 và chỉ hợp lệ khi bắt đầu tuyệt đối tập lệnh hoặc mô-đun. Cũng lưu ý rằng không có bất kỳ khoảng trắng nào được phép trước
function comment() {
  /* console.log("Hello world!"); */
}
comment();
40. Nhận xét bao gồm tất cả các ký tự sau
function comment() {
  /* console.log("Hello world!"); */
}
comment();
40 cho đến hết dòng đầu tiên;

Nhận xét Hashbang trong JavaScript giống với shebang trong Unix cung cấp đường dẫn đến trình thông dịch JavaScript cụ thể mà bạn muốn sử dụng để thực thi tập lệnh. Trước khi bình luận hashbang được chuẩn hóa, nó đã được triển khai trên thực tế trong các máy chủ không có trình duyệt như Node. js, nơi nó đã bị xóa khỏi văn bản nguồn trước khi được chuyển đến công cụ. Một ví dụ như sau

function comment() {
  /* console.log("Hello world!"); */
}
comment();
4

Trình thông dịch JavaScript sẽ coi nó như một bình luận bình thường — nó chỉ có ý nghĩa ngữ nghĩa đối với trình bao nếu tập lệnh được chạy trực tiếp trong trình bao

Cảnh báo. Nếu bạn muốn các tập lệnh có thể chạy trực tiếp trong môi trường trình bao, hãy mã hóa chúng theo UTF-8 mà không cần BOM. Mặc dù BOM sẽ không gây ra bất kỳ sự cố nào đối với mã đang chạy trong trình duyệt — bởi vì nó bị loại bỏ trong quá trình giải mã UTF-8, trước khi văn bản nguồn được phân tích — trình bao Unix/Linux sẽ không nhận ra hàm băm nếu nó đứng trước ký tự BOM

Bạn chỉ được sử dụng kiểu nhận xét

function comment() {
  /* console.log("Hello world!"); */
}
comment();
40 để chỉ định trình thông dịch JavaScript. Trong tất cả các trường hợp khác, chỉ cần sử dụng nhận xét
function comment() {
  /* console.log("Hello world!"); */
}
comment();
6 (hoặc nhận xét nhiều dòng)

Một mã định danh được sử dụng để liên kết một giá trị với một tên. Định danh có thể được sử dụng ở những nơi khác nhau

function comment() {
  /* console.log("Hello world!"); */
}
comment();
0

Trong JavaScript, mã định danh thường được tạo bằng các ký tự chữ và số, dấu gạch dưới (

function comment() {
  /* console.log("Hello world!"); */
}
comment();
45) và ký hiệu đô la (_______146). Mã định danh không được phép bắt đầu bằng số. Tuy nhiên, mã định danh JavaScript không chỉ giới hạn ở ASCII — nhiều điểm mã Unicode cũng được cho phép. Cụ thể, bất kỳ ký tự nào trong danh mục ID_Start đều có thể bắt đầu mã định danh, trong khi bất kỳ ký tự nào trong danh mục ID_Continue có thể xuất hiện sau ký tự đầu tiên

Ghi chú. Nếu vì lý do nào đó, bạn cần tự mình phân tích cú pháp một số nguồn JavaScript, đừng cho rằng tất cả các mã định danh đều tuân theo mẫu

function comment() {
  /* console.log("Hello world!"); */
}
comment();
47 (i. e. chỉ ASCII). Phạm vi của số nhận dạng có thể được mô tả bằng biểu thức chính quy
function comment() {
  /* console.log("Hello world!"); */
}
comment();
48 (không bao gồm các chuỗi thoát unicode)

Ngoài ra, JavaScript cho phép sử dụng ở dạng

function comment() {
  /* console.log("Hello world!"); */
}
comment();
49 hoặc
function comment() {
  /* console.log("Hello world!"); */
}
comment();
00 trong mã định danh, mã hóa giá trị chuỗi giống như các ký tự Unicode thực tế. Ví dụ:
function comment() {
  /* console.log("Hello world!"); */
}
comment();
01 và
function comment() {
  /* console.log("Hello world!"); */
}
comment();
02 là các mã định danh giống nhau

function comment() {
  /* console.log("Hello world!"); */
}
comment();
9

Không phải tất cả các địa điểm đều chấp nhận đầy đủ các số nhận dạng. Một số cú pháp, chẳng hạn như khai báo hàm, biểu thức hàm và khai báo biến yêu cầu sử dụng các tên định danh không phải là

function comment() {
  /* console.log("Hello world!"); */
}
comment();
0

Đáng chú ý nhất, thuộc tính riêng tư và thuộc tính đối tượng cho phép các từ dành riêng

function comment() {
  /* console.log("Hello world!"); */
}
comment();
1

Từ khóa là mã thông báo trông giống như số nhận dạng nhưng có ý nghĩa đặc biệt trong JavaScript. Ví dụ: từ khóa

function comment() {
  /* console.log("Hello world!"); */
}
comment();
03 trước khai báo hàm cho biết hàm không đồng bộ

Một số từ khóa được dành riêng, nghĩa là không thể được sử dụng làm định danh cho khai báo biến, khai báo hàm, v.v. Chúng thường được gọi là từ dành riêng. được cung cấp dưới đây. Không phải tất cả các từ khóa đều được dành riêng — ví dụ:

function comment() {
  /* console.log("Hello world!"); */
}
comment();
03 có thể được sử dụng làm mã định danh ở mọi nơi. Một số từ khóa chỉ được bảo lưu theo ngữ cảnh — ví dụ:
function comment() {
  /* console.log("Hello world!"); */
}
comment();
05 chỉ được bảo lưu trong phần thân của hàm không đồng bộ và
function comment() {
  /* console.log("Hello world!"); */
}
comment();
06 chỉ được bảo lưu trong mã chế độ nghiêm ngặt hoặc khai báo
function comment() {
  /* console.log("Hello world!"); */
}
comment();
07 và
function comment() {
  /* console.log("Hello world!"); */
}
comment();
06

Các mã định danh luôn được so sánh theo giá trị chuỗi, vì vậy các chuỗi thoát được diễn giải. Ví dụ, đây vẫn là một lỗi cú pháp

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
0

Những từ khóa này không thể được sử dụng làm định danh cho các biến, hàm, lớp, v.v. bất cứ nơi nào trong nguồn JavaScript

  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    09
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    90
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    91
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    92
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    07
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    94
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    95
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    96
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    97
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    98
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    99
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    00
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    01
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    03
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    04
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    05
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    06
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    07
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    08
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    09
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    10
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    11
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    12
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    13
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    14
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    15
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    16
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    18
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    19
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    00
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    01
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    02
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    03

Những điều sau đây chỉ được bảo lưu khi chúng được tìm thấy trong mã chế độ nghiêm ngặt

  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    06 (cũng được bảo lưu trong các khai báo
    function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    07,
    function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    06 và lớp)
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    07
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    08 (cũng được dành riêng trong các cơ quan chức năng của trình tạo)

Những điều sau đây chỉ được bảo lưu khi chúng được tìm thấy trong mã mô-đun hoặc thân hàm không đồng bộ

  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    05

Các mục sau đây được dành riêng làm từ khóa trong tương lai theo đặc tả ECMAScript. Hiện tại chúng không có chức năng đặc biệt, nhưng chúng có thể có trong tương lai, vì vậy chúng không thể được sử dụng làm định danh

Chúng luôn được bảo lưu

  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    10

Những điều sau đây chỉ được bảo lưu khi chúng được tìm thấy trong mã chế độ nghiêm ngặt

  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    11
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    12
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    13
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    14
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    15
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    16

Các từ dành riêng trong tương lai trong các tiêu chuẩn cũ hơn

Các mục sau đây được dành riêng làm từ khóa trong tương lai theo thông số kỹ thuật ECMAScript cũ hơn (ECMAScript 1 đến 3)

  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    17
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    18
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    19
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    20
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    21
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    22
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    23
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    24
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    25
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    26
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    27
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    28
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    29
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    30
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    31
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    32

Một số định danh có ý nghĩa đặc biệt trong một số ngữ cảnh mà không phải là từ dành riêng dưới bất kỳ hình thức nào. Chúng bao gồm

  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    33 (không phải là từ khóa, nhưng không thể được khai báo là mã định danh ở chế độ nghiêm ngặt)
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    34 ()
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    03
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    37 (không phải là từ khóa, nhưng không thể được khai báo là mã định danh ở chế độ nghiêm ngặt)
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    38 (
    function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    39)
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    40
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    41
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    42

Ghi chú. Phần này thảo luận về nghĩa đen là mã thông báo nguyên tử. Đối tượng chữ và là các biểu thức bao gồm một loạt các mã thông báo

Xem thêm

function comment() {
  /* console.log("Hello world!"); */
}
comment();
11 để biết thêm thông tin

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
1

Xem thêm để biết thêm thông tin

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
2

Các và các loại sử dụng chữ số

Số thập phân

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
3

Các chữ số thập phân có thể bắt đầu bằng số 0 (_______02) theo sau là một chữ số thập phân khác, nhưng nếu tất cả các chữ số sau số đầu tiên

function comment() {
  /* console.log("Hello world!"); */
}
comment();
2 nhỏ hơn 8, thì số đó được hiểu là số bát phân. Đây được coi là một cú pháp kế thừa và các chữ số có tiền tố là
function comment() {
  /* console.log("Hello world!"); */
}
comment();
2, cho dù được hiểu là bát phân hay thập phân, đều gây ra lỗi cú pháp — vì vậy, hãy sử dụng tiền tố
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
47 để thay thế

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
4

số mũ

Chữ số mũ thập phân được chỉ định theo định dạng sau.

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
48;

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
5

nhị phân

Cú pháp số nhị phân sử dụng số 0 đứng đầu, theo sau là chữ cái Latinh viết thường hoặc viết hoa "B" (

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
53 hoặc
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
54). Bất kỳ ký tự nào sau
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
53 không phải là 0 hoặc 1 sẽ chấm dứt chuỗi ký tự

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
6

bát phân

Cú pháp số bát phân sử dụng số 0 đứng đầu, theo sau là chữ cái Latinh viết thường hoặc viết hoa "O" (

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
47 hoặc
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
57. Bất kỳ ký tự nào sau
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
47 nằm ngoài phạm vi (01234567) sẽ chấm dứt chuỗi ký tự

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
7

thập lục phân

Cú pháp số thập lục phân sử dụng số 0 đứng đầu, theo sau là chữ cái Latinh viết thường hoặc viết hoa "X" (

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
59 hoặc
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
60). Bất kỳ ký tự nào sau
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
59 nằm ngoài phạm vi (0123456789ABCDEF) sẽ chấm dứt chuỗi ký tự

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
8

BigInt theo nghĩa đen

Loại này là một số nguyên thủy trong JavaScript có thể biểu thị các số nguyên với độ chính xác tùy ý. Chữ BigInt được tạo bằng cách nối thêm

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
62 vào cuối một số nguyên

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
9

Chữ BigInt không thể bắt đầu bằng

function comment() {
  /* console.log("Hello world!"); */
}
comment();
2 để tránh nhầm lẫn với chữ bát phân kế thừa

function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();
0

Đối với số bát phân

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
64, luôn sử dụng số 0 theo sau là chữ cái "o" (chữ hoa hoặc chữ thường)

function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();
1

Để biết thêm thông tin về

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
64, xem thêm

Dấu tách số

Để cải thiện khả năng đọc cho các chữ số, dấu gạch dưới (

function comment() {
  /* console.log("Hello world!"); */
}
comment();
45,
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
67) có thể được sử dụng làm dấu phân cách

function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();
2

Lưu ý những hạn chế này

function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();
3

Một chữ là 0 hoặc nhiều điểm mã Unicode được đặt trong dấu ngoặc đơn hoặc dấu ngoặc kép. Các điểm mã Unicode cũng có thể được biểu thị bằng một chuỗi thoát. Tất cả các điểm mã có thể xuất hiện theo nghĩa đen trong một chuỗi ký tự ngoại trừ các điểm mã trích dẫn đóng này

  • U+005C \ (dấu gạch chéo ngược),
  • U+000D ,
  • and U+000A .

Bất kỳ điểm mã nào cũng có thể xuất hiện dưới dạng chuỗi thoát. Các chuỗi ký tự đánh giá các giá trị Chuỗi ECMAScript. Khi tạo các giá trị Chuỗi này, các điểm mã Unicode được mã hóa UTF-16

function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();
4

Trình tự thoát thập lục phân

Các chuỗi thoát thập lục phân bao gồm

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
68 theo sau chính xác là hai chữ số thập lục phân đại diện cho một đơn vị mã hoặc điểm mã trong phạm vi 0x0000 đến 0x00FF

function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();
5

Trình tự thoát Unicode

Chuỗi thoát Unicode bao gồm chính xác bốn chữ số thập lục phân sau

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
69. Nó đại diện cho một đơn vị mã trong bảng mã UTF-16. Đối với các điểm mã U+0000 đến U+FFFF, đơn vị mã bằng với điểm mã. Các điểm mã U+10000 đến U+10FFFF yêu cầu hai chuỗi thoát đại diện cho hai đơn vị mã (một cặp thay thế) được sử dụng để mã hóa ký tự;

Xem thêm

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
70 và
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
71

function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();
6

Thoát điểm mã Unicode

Một thoát điểm mã Unicode bao gồm

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
72, tiếp theo là một điểm mã trong cơ sở thập lục phân, tiếp theo là
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
73. Giá trị của các chữ số thập lục phân phải nằm trong phạm vi bao gồm 0 và 0x10FFFF. Các điểm mã trong phạm vi U+10000 đến U+10FFFF không cần phải được biểu diễn dưới dạng một cặp thay thế

Xem thêm

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
74 và
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
75

function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();
7

Các ký tự biểu thức chính quy được bao quanh bởi hai dấu gạch chéo về phía trước (

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
76). Từ vựng sử dụng tất cả các ký tự cho đến dấu gạch chéo lên phía trước không thoát tiếp theo hoặc đến cuối dòng, trừ khi dấu gạch chéo lên xuất hiện trong một lớp ký tự (
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
77). Một số ký tự (cụ thể là những ký tự ) có thể xuất hiện sau dấu gạch chéo đóng, biểu thị các cờ

Ngữ pháp từ vựng rất khoan dung. không phải tất cả các ký tự biểu thức chính quy được xác định là một mã thông báo đều là biểu thức chính quy hợp lệ

Xem thêm

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
78 để biết thêm thông tin

function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();
8

Một biểu thức chính quy không thể bắt đầu bằng hai dấu gạch chéo về phía trước (

function comment() {
  /* console.log("Hello world!"); */
}
comment();
6), bởi vì đó sẽ là một chú thích dòng. Để chỉ định một biểu thức chính quy trống, hãy sử dụng
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
80

Một mẫu chữ bao gồm một số mã thông báo.

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
81 (đầu mẫu),
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
82 (giữa mẫu) và
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
83(đuôi mẫu) là các mã thông báo riêng lẻ, trong khi bất kỳ biểu thức nào cũng có thể xuất hiện giữa chúng

Xem thêm chữ mẫu để biết thêm thông tin

function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();
9

Một số định nghĩa cú pháp của câu lệnh JavaScript yêu cầu dấu chấm phẩy (

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
84) ở cuối. Chúng bao gồm

  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    00,
    function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    06,
    function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    07
  • câu biểu cảm
  • function comment() {
      /* This is a one line JavaScript comment */
      console.log("Hello world!");
    }
    comment();
    
    88
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    94,
    function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    09,
    function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    12,
    function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    16
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    95
  • Khai báo trường lớp (công khai hoặc riêng tư)
  • function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    07,
    function comment() {
      /* console.log("Hello world!"); */
    }
    comment();
    
    00

Tuy nhiên, để làm cho ngôn ngữ trở nên dễ tiếp cận và thuận tiện hơn, JavaScript có thể tự động chèn dấu chấm phẩy khi sử dụng luồng mã thông báo, để một số chuỗi mã thông báo không hợp lệ có thể được "sửa" thành cú pháp hợp lệ. Bước này xảy ra sau khi văn bản chương trình đã được phân tích cú pháp thành các mã thông báo theo ngữ pháp từ vựng. Có ba trường hợp khi dấu chấm phẩy được chèn tự động

1. Khi gặp phải mã thông báo không được phép theo ngữ pháp và mã thông báo này được phân tách khỏi mã thông báo trước đó ít nhất một dấu (bao gồm nhận xét khối bao gồm ít nhất một dấu kết thúc dòng) hoặc mã thông báo là "}", thì dấu chấm phẩy sẽ được chèn trước đó

function comment() {
  /* console.log("Hello world!"); */
}
comment();
00

Kết thúc ")" của

function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
88 cũng được coi là trường hợp đặc biệt theo quy tắc này

function comment() {
  /* console.log("Hello world!"); */
}
comment();
01

Tuy nhiên, dấu chấm phẩy không được chèn nếu sau đó dấu chấm phẩy sẽ trở thành dấu phân cách trong phần đầu của câu lệnh

function comment() {
  /* console.log("Hello world!"); */
}
comment();
04

function comment() {
  /* console.log("Hello world!"); */
}
comment();
02

Dấu chấm phẩy cũng không bao giờ được chèn dưới dạng câu lệnh trống. Ví dụ: trong mã bên dưới, nếu dấu chấm phẩy được chèn sau ")", thì mã sẽ hợp lệ, với một câu lệnh trống là phần thân của

function comment() {
  /* console.log("Hello world!"); */
}
comment();
06 và phần khai báo
function comment() {
  /* console.log("Hello world!"); */
}
comment();
07 là một câu lệnh riêng biệt. Tuy nhiên, vì dấu chấm phẩy được chèn tự động không thể trở thành câu lệnh trống, điều này khiến a trở thành phần thân của câu lệnh
function comment() {
  /* console.log("Hello world!"); */
}
comment();
06, điều này không hợp lệ

function comment() {
  /* console.log("Hello world!"); */
}
comment();
03

2. Khi kết thúc luồng mã thông báo đầu vào và trình phân tích cú pháp không thể phân tích cú pháp luồng đầu vào đơn lẻ thành một chương trình hoàn chỉnh, dấu chấm phẩy sẽ được chèn vào cuối

function comment() {
  /* console.log("Hello world!"); */
}
comment();
04

Quy tắc này là phần bổ sung cho quy tắc trước đó, đặc biệt đối với trường hợp không có "mã thông báo vi phạm" nhưng kết thúc luồng đầu vào

3. Khi ngữ pháp cấm các dấu kết thúc dòng ở một số nơi nhưng tìm thấy dấu kết thúc dòng, dấu chấm phẩy sẽ được chèn vào. Những nơi này bao gồm

  • function comment() {
      /* This comment spans multiple lines. Notice
         that we don't need to end the comment until we're done. */
      console.log("Hello world!");
    }
    comment();
    
    01,
    function comment() {
      /* This comment spans multiple lines. Notice
         that we don't need to end the comment until we're done. */
      console.log("Hello world!");
    }
    comment();
    
    02
  • function comment() {
      /* This comment spans multiple lines. Notice
         that we don't need to end the comment until we're done. */
      console.log("Hello world!");
    }
    comment();
    
    03
  • function comment() {
      /* This comment spans multiple lines. Notice
         that we don't need to end the comment until we're done. */
      console.log("Hello world!");
    }
    comment();
    
    04
  • function comment() {
      /* This comment spans multiple lines. Notice
         that we don't need to end the comment until we're done. */
      console.log("Hello world!");
    }
    comment();
    
    05
  • function comment() {
      /* This comment spans multiple lines. Notice
         that we don't need to end the comment until we're done. */
      console.log("Hello world!");
    }
    comment();
    
    06
  • function comment() {
      /* This comment spans multiple lines. Notice
         that we don't need to end the comment until we're done. */
      console.log("Hello world!");
    }
    comment();
    
    07
  • function comment() {
      /* This comment spans multiple lines. Notice
         that we don't need to end the comment until we're done. */
      console.log("Hello world!");
    }
    comment();
    
    08
  • function comment() {
      /* This comment spans multiple lines. Notice
         that we don't need to end the comment until we're done. */
      console.log("Hello world!");
    }
    comment();
    
    09
  • ________ 910, ________ 911, ________ 912, ________ 913, ________ 914

Ở đây,

function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();
15 không được coi là toán tử hậu tố áp dụng cho biến
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
49, bởi vì dấu kết thúc dòng xảy ra giữa
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
49 và
function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();
15

function comment() {
  /* console.log("Hello world!"); */
}
comment();
05

Ở đây, câu lệnh

function comment() {
  /* console.log("Hello world!"); */
}
comment();
12 trả về
function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();
20 và
function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();
21 trở thành câu lệnh không thể truy cập

function comment() {
  /* console.log("Hello world!"); */
}
comment();
06

Lưu ý rằng ASI sẽ chỉ được kích hoạt nếu ngắt dòng phân tách các mã thông báo sẽ tạo ra cú pháp không hợp lệ. Nếu mã thông báo tiếp theo có thể được phân tích cú pháp như một phần của cấu trúc hợp lệ, thì dấu chấm phẩy sẽ không được chèn. Ví dụ

function comment() {
  /* console.log("Hello world!"); */
}
comment();
07

Bởi vì

function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();
22 có thể được xem như một lệnh gọi hàm, nên nó thường không kích hoạt ASI. Tương tự,
function comment() {
  /* This is a one line JavaScript comment */
  console.log("Hello world!");
}
comment();
77 có thể là thành viên truy cập. Đoạn mã trên tương đương với

function comment() {
  /* console.log("Hello world!"); */
}
comment();
08

Điều này xảy ra là cú pháp hợp lệ.

function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();
24 là một trình truy cập thuộc tính có biểu thức được nối bằng dấu phẩy. Do đó, bạn sẽ gặp các lỗi như "1 không phải là hàm" và "Không thể đọc các thuộc tính của không xác định (đọc 'forEach')" khi chạy mã

Trong các lớp, các trường lớp và các phương thức tạo cũng có thể là một cạm bẫy

function comment() {
  /* console.log("Hello world!"); */
}
comment();
09

Nó được xem như

function comment() {
  /* console.log("Hello world!"); */
}
comment();
0

Và do đó sẽ có một lỗi cú pháp khoảng

function comment() {
  /* This comment spans multiple lines. Notice
     that we don't need to end the comment until we're done. */
  console.log("Hello world!");
}
comment();
25

Có các quy tắc chung sau đây để xử lý ASI, nếu bạn muốn thực thi kiểu không có dấu chấm phẩy

Các từ khóa trong JavaScript là gì?

Từ khóa là mã thông báo có ý nghĩa đặc biệt trong JavaScript. break , case , catch , continue , debugger , default , delete , do , other , finally , for , function , if , in , instanceof , new , return , switch , this , throw , try . .

Có bao nhiêu từ khóa được sử dụng trong JavaScript?

> ba từ khóa var , let và const hoạt động xung quanh các phạm vi này. Vì vậy, hãy hiểu làm thế nào mọi thứ phù hợp với nhau.

Từ khóa này trong JavaScript giải thích bằng ví dụ là gì?

Trong JavaScript, từ khóa this dùng để chỉ một đối tượng . Đối tượng nào phụ thuộc vào cách đối tượng này được gọi (được sử dụng hoặc được gọi). Từ khóa này đề cập đến các đối tượng khác nhau tùy thuộc vào cách nó được sử dụng. Trong một phương thức đối tượng, điều này đề cập đến đối tượng.

Định nghĩa cơ bản về JavaScript là gì?

JavaScript là ngôn ngữ lập trình bổ sung tính tương tác cho trang web của bạn . Điều này xảy ra trong trò chơi, trong hành vi phản hồi khi nhấn nút hoặc nhập dữ liệu trên biểu mẫu; .