2012-05-18 30 views
5

thể trùng lặp:
javascript numbers- immutableSố trong JavaScript có thay đổi không?

tôi đọc cuốn sách của Douglas Crockford JavaScript: The Good Parts. Nó nói rằng số trong JavaScript là không thay đổi. Nhưng các số trong JavaScript được sao chép theo giá trị và chúng tôi có thể sử dụng toán tử ++ để thay đổi giá trị. Vậy tại sao lại nói nó không thay đổi? và hơn nữa, nếu đó là không thay đổi, tại sao các số được sao chép theo giá trị?

+0

Câu trả lời của bạn ở đây http://stackoverflow.com/questions/8248568/javascript-numbers-immutable – Gatekeeper

+1

@Gatekeeper Tôi nghĩ rằng chúng khác nhau –

Trả lời

4

Chúng không thay đổi vì chúng được sao chép theo giá trị.

Khi bạn làm

var x = 4; 
x += 1; 

bạn chưa thay đổi số 4 vào số 5. Bạn đã thay đổi giá trị được lưu trữ trong biến x từ 4 đến 5.

+0

Nếu tôi thay đổi giá trị được lưu trữ trong biến x, tại sao nói nó không thay đổi. Và tôi nghĩ rằng "bất biến" có nghĩa là bạn không thể thay đổi bộ nhớ mà biến trỏ đến. –

+0

Và tôi nghĩ rằng + = cũng là một nhiệm vụ mà bạn liên kết biến với bộ nhớ khác nếu x là bất biến –

0

Khi bạn sửa đổi các thành viên của một đối tượng, bạn sửa đổi nội dung của nó. Giá trị của biến (tức là tham chiếu) vẫn giữ nguyên. Điều này có thể thay đổi,

Khi bạn khai báo một chuỗi, chuỗi này có giá trị, nhưng khi bạn thay đổi giá trị đó, chuỗi mới thực sự được tạo. Điều này có nghĩa là nó không thay đổi.

Tương tự với số. Bạn không thể thay đổi số 3 thành số 4. A 3 luôn là 3, không bao giờ có gì khác. Vì vậy, khi bạn gán một biến cho một số khác, bạn đang tạo một số mới trong bộ nhớ, không gán nội dung của một số bộ nhớ được chỉ bởi một biến nào đó vào một giá trị khác.

+0

điều gì về toán tử ++, nó cũng tạo ra một số mới trong bộ nhớ? –

+0

x ++ giống với x + = 1, vì vậy có. –

+0

Tôi nghĩ nó khá là khó hiểu. Trong python, số nguyên cũng không thay đổi và python không cung cấp toán tử ++. Và tôi nghĩ lý do đằng sau nó là ++ làm cho mọi người nghĩ rằng giá trị được thay đổi tại chỗ. Và tôi không hiểu tại sao JavaScript hoạt động theo cách bất thường như vậy –

Các vấn đề liên quan