Trong javascript ("11" + 1 = 111) nhưng ("11" - 1 = 10) ?
Đây là cái giá cho việc chuyển kiểu tự động của javascript.
Chúng ta khi có một chuỗi (string) trong trường hợp này là "11" việc sử dụng mặc định toán tử "+" trong trường hợp này sẽ bị hiểu là nối chuỗi.Điều này thấy khi chúng ta nối 2 chuỗi "Hello" + "world" sử dụng toán tử "+" sẽ được chuỗi "Hello world".
Tuy nhiên chuyện gì xảy ra nếu chúng ta có "Monkey" + 35.Đúng như các bạn tưởng tượng javascript vẫn sử dụng toán tử "+" và ưu tiên phần tử string và nó sẽ cố gắng chuyển phần tử thứ 2 thành chuỗi.Vì vậy trong trường hợp này kết quả sẽ là một chuỗi "Monkey35".Thế còn trường hợp 11 + "1" thì sao?Cũng như quy tắc trên khi sử dụng toán tử "+" nếu một trong hai phần tử là chuỗi (string) thì javascript sẽ cố gắng chuyển phần tử còn lại thành kiểu chuỗi rồi thực hiện nối chuỗi.Kết quả 11 + "1" thì vẫn là "111".
Vậy câu hỏi là tại sao javascript không check kiểu trước khi sử dụng "+", nếu là string mà số thì convert về số.Bản chất điều này hoàn toàn có thể nhưng lúc thiết kế javascript đã không chọn con đường này vì nó làm cho việc tính toán sẽ mất thời gian, mà javascript cũng không phải ngôn ngữ có tốc độ quá tốt.
Trong trường hợp toán tử "-" nghe có vẻ giống toán tử "+" nhưng nhóm thiết kế javascript lại không cho là vậy họ không sử dụng toán từ "-" trong chuỗi.Vì bạn không thể hiện "-" để kết hợp chuỗi nên javascript sẽ cố gắng chuyển tất cả thành các số để thực hiện toán tử "-".Vì vậy chúng ta có kết quả "11" - 1 = 10;
Happy coding!
Nhận xét
Đăng nhận xét