2014-09-24 21 views
10

Nếu tạo tham chiếu đến một đối tượng và tham chiếu sẽ không thay đổi (mặc dù đối tượng sẽ), tốt hơn là sử dụng const thay vì var?Trong javascript tôi nên sử dụng const thay vì var bất cứ khi nào có thể?

Ví dụ:

const moment = require('moment') 

exports.getQuotation = function(value) { 

    const quotation = {}; 
    quotation.value = value; 
    quotation.expiryDate = moment().add(7, 'days'); 

    // Do some other stuff with quotation perhaps 

    return quotation; 

}; 
+0

Tôi sẽ không gây rối với const, là ES6, nó sẽ không tăng hiệu suất mã của bạn. khó sửa lỗi và tái cấu trúc hơn. Stick với var (luôn luôn khai báo các biến) – donnanicolas

+1

@donnanicolas ES6 'const'and' let' là khá nhiều cuối cùng – fmsf

Trả lời

3

Nếu bạn kiểm tra MDN, để tham khảo của nó bạn có thể thấy rằng một công nghệ thử nghiệm là một phần của đề nghị ES6 của nó. Hỗ trợ trình duyệt của nó bị giới hạn.

tham chiếu cho const từ MDN

Đây là một công nghệ thí nghiệm, một phần của Harmony (ECMAScript 6) đề xuất. Bởi vì đặc điểm kỹ thuật của công nghệ này đã không ổn định, kiểm tra bảng tương thích để sử dụng trong các trình duyệt khác nhau. Cũng lưu ý rằng cú pháp và hành vi của công nghệ thử nghiệm là chủ đề để thay đổi trong phiên bản tương lai của trình duyệt khi thay đổi thông số.

Vì vậy, câu trả lời cho dù bạn nên sử dụng ở mọi nơi. :)

Ngoài ra nếu bạn muốn tạo thuộc tính trong các đối tượng không được phép thay đổi, thì bạn nên kiểm tra Object.defineProperties() và sử dụng thuộc tính writable.

+0

Tôi không nghĩ rằng đây là những gì người yêu cầu có ý nghĩa.Tôi nghĩ câu hỏi là "Nếu tôi ở trong môi trường hỗ trợ' const' và 'let', tôi nên chọn cái nào?" Anh ta nói 'var', nhưng tôi nghĩ câu hỏi là nhiều hơn về' let' có cùng phạm vi khối. – Pipo

+0

@Pipo: Tôi xin lỗi. Tôi nhận được điều này từ bình luận của bạn. Nhưng nó ở đâu trong câu hỏi? – mithunsatheesh

+0

Tôi nghĩ rằng đó là phần này "Nếu tạo một tham chiếu đến một đối tượng, và tham chiếu sẽ không thay đổi (mặc dù đối tượng sẽ), tốt hơn là sử dụng' const' thay vì 'foo'?". Tôi đã thay đổi 'var' thành' foo' để làm cho nó rõ ràng rằng tôi _think_ anh ta không muốn so sánh thực sự với 'var' (hoặc' let'), nhưng nhìn vào phần đầu tiên, tôi nghĩ anh ta muốn biết, nếu nói chung là tốt để sử dụng 'const' cho Objects, nếu nội dung của chúng thay đổi. – Pipo

1

const được sử dụng cho hằng số biến, tức là một khi được khai báo, giá trị của nó không được phép thay đổi, trong khi var có thể thay đổi theo ý muốn.

Sử dụng constvar chỉ là ý của bạn. Đối với tôi, điều đó xảy ra như sau:

  • Nếu tôi chắc chắn 100% giá trị của biến sẽ không thay đổi và sẽ không được khai báo lại, tôi sẽ xác định nó là một const.
  • Trong tất cả các trường hợp khác, tôi sẽ sử dụng var.

Hãy lưu ý, việc khai báo lại const sẽ ngay lập tức bị lỗi.

4

Bạn có thể sử dụng const, nhưng bạn phải chạy nút trên --harmony

node app.js --harmony 

Bạn cũng phải thiết lập "use strict", nếu không bạn sẽ có những vấn đề thực hiện thời gian chạy:

exports.getQuotation = function(value) { 
    "use strict"; 

    const I_AM_CONSTANT = {}; 
    let quotation = {}; 
    ... 

khác hơn thế, có nếu bạn đang chạy nút trên --harmony, về mặt ngữ nghĩa, nó có ý nghĩa hơn khi sử dụng const cho các hằng số. Đối với các biến thực tế, bạn nên sử dụng let thay vì var, vì let chỉ xác định biến trong phạm vi (tránh các vấn đề trục trặc)

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