⊗jsPmBsATC 43 of 505 menu

Chuyển đổi kiểu dữ liệu tự động

Như bạn đã biết, chuỗi trong JavaScript nên được đặt trong dấu ngoặc kép. Có thể xảy ra trường hợp tất cả các ký tự của chuỗi đều là chữ số:

let a = '123';

Trong trường hợp này, biến a cũng là một chuỗi, nhưng có một điểm đặc biệt.

Bản chất của điểm đặc biệt đó là: nếu thực hiện một phép toán nào đó trên chuỗi có chữ số - phép toán đó sẽ được thực hiện như thể chúng ta thực sự có số, chứ không phải chuỗi:

alert('2' * '3'); // sẽ hiển thị 6

Trong trường hợp này, JavaScript thấy rằng chúng ta đang cố gắng thực hiện một phép toán không hợp lệ đối với chuỗi, nhưng hợp lệ đối với số.

Nó cũng thấy rằng trên thực tế, các chuỗi của chúng ta - là những số trong dấu ngoặc kép. Do đó, JavaScript tự động thực hiện chuyển đổi các chuỗi này thành số và thực hiện phép toán tương ứng trên chúng.

Điều này hoạt động nếu trong chuỗi của chúng ta chỉ có chữ số. Nếu có ít nhất một chữ cái - JavaScript sẽ coi phép toán đó không chính xác và cho kết quả là giá trị NaN:

alert('2' * '3s'); // sẽ hiển thị NaN

Ngoài ra, chuyển đổi tự động xảy ra nếu phép toán chính xác về mặt toán học, nhưng không hợp lệ đối với chuỗi.

Ví dụ, chuỗi không thể (nhưng số có thể) nhân, chia, trừ, do đó trong tất cả các phép toán như vậy sẽ có chuyển đổi tự động chuỗi có chữ số thành số.

Tuy nhiên, chuỗi, cũng như số, có thể cộng lại với nhau bằng toán tử +. Điều này có nghĩa là trong trường hợp phép cộng sẽ không có chuyển đổi tự động xảy ra:

let a = '1' + '2'; alert(a); // sẽ hiển thị '12' - đã xảy ra phép cộng chuỗi

Nếu một số hạng là số, và số hạng kia - là chuỗi, thì chuỗi luôn chiến thắng:

let a = 1 + '2'; alert(a); // sẽ hiển thị '12'

Trong những trường hợp như vậy, JavaScript, ngược lại, tự động chuyển đổi số thành chuỗi và thực hiện phép cộng chuỗi.

Tuy nhiên, có những điểm đặc biệt khi có nhiều hơn hai số hạng: trong trường hợp này, việc chuyển đổi sang một kiểu cụ thể phụ thuộc vào thứ tự thực hiện các phép toán.

Trong ví dụ tiếp theo, đầu tiên 23 sẽ được cộng lại như số, sau đó kết quả sẽ được cộng với chuỗi '1' dưới dạng chuỗi '5', cuối cùng cho ra chuỗi '15':

let a = '1' + (2 + 3); alert(a); // sẽ hiển thị '15'

Nếu bỏ dấu ngoặc đơn, thì tất cả sẽ được cộng từ trái sang phải. Tức là đầu tiên chuỗi '1' sẽ được cộng với số 2 và kết quả sẽ là chuỗi '12'. Sau đó chuỗi này sẽ được cộng với số 3 và kết quả sẽ là chuỗi '123':

let a = '1' + 2 + 3; alert(a); // sẽ hiển thị '123'

Nhưng trong ví dụ tiếp theo, các số 23 được viết ở đầu, vì vậy đầu tiên chúng sẽ được cộng lại như số, cho kết quả là số 5, sau đó số này sẽ được cộng với chuỗi '1', cuối cùng cho ra chuỗi '51':

let a = 2 + 3 + '1'; alert(a); // sẽ hiển thị '51'

Không chạy code, hãy xác định điều gì sẽ được hiển thị trên màn hình:

let a = '5' + '2'; alert(a);

Không chạy code, hãy xác định điều gì sẽ được hiển thị trên màn hình:

let a = '5' + 2; alert(a);

Không chạy code, hãy xác định điều gì sẽ được hiển thị trên màn hình:

let a = 5 + '2'; alert(a);

Không chạy code, hãy xác định điều gì sẽ được hiển thị trên màn hình:

let a = 5 + 2; alert(a);

Không chạy code, hãy xác định điều gì sẽ được hiển thị trên màn hình:

let a = '5' * '2'; alert(a);

Không chạy code, hãy xác định điều gì sẽ được hiển thị trên màn hình:

let a = '5' - '2'; alert(a);

Không chạy code, hãy xác định điều gì sẽ được hiển thị trên màn hình:

let a = '5' / '2'; alert(a);

Không chạy code, hãy xác định điều gì sẽ được hiển thị trên màn hình:

let a = '5' % '2'; alert(a);

Không chạy code, hãy xác định điều gì sẽ được hiển thị trên màn hình:

let a = '5s' * '2'; alert(a);

Không chạy code, hãy xác định điều gì sẽ được hiển thị trên màn hình:

let a = '5s' + '2'; alert(a);

Không chạy code, hãy xác định điều gì sẽ được hiển thị trên màn hình:

let a = (-'5') + (-'2'); alert(a);

Không chạy code, hãy xác định điều gì sẽ được hiển thị trên màn hình:

let a = '5' * 1 + '2' * 1; alert(a);

Không chạy code, hãy xác định điều gì sẽ được hiển thị trên màn hình:

let a = '5' * '1' + '2' * '1'; alert(a);

Không chạy code, hãy xác định điều gì sẽ được hiển thị trên màn hình:

let a = '' + 3 + 1; alert(a);
Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối