2010-11-10 23 views
20

Cả tiêu chuẩn đặt tên và định dạng cho các biến toàn cục trong JavaScript là gì?Tiêu chuẩn đặt tên/định dạng cho các biến toàn cục

Ví dụ:

var global_var // ? 
var _global_var // ? 
var GLOBAL_VAR // ? 
var _GLOBAL_VAR // ? 
... 

Lưu ý: Tôi không nói về hằng số, chỉ đơn giản là biến có phạm vi toàn cầu.

+8

Cảnh báo: bạn sẽ nhận được nhiều nhận xét hóc búa về cách bạn không bao giờ nên bao giờ, không bao giờ, không bao giờ, không bao giờ, không bao giờ sử dụng các biến toàn cầu. Chỉ cần bỏ qua chúng, vì điều đó không liên quan gì đến câu hỏi của bạn. –

+0

Cảm ơn. (Tôi thấy sự khác biệt nhỏ giữa biến lớp riêng và biến javascript chung.) – StaceyI

+0

BTW, (hiện tại) không có thứ gì như hằng số trong JavaScript (mặc dù 'hằng số' là từ khóa dành riêng cho mỗi thông số kỹ thuật). –

Trả lời

15

Không có tiêu chuẩn nào như vậy. Phương pháp phổ biến nhất là sử dụng trường hợp lạc đà thấp hơn (ví dụ: var fooBarBaz;) cho tất cả các biến và tên thuộc tính, bất kể phạm vi, nhưng điều này không có nghĩa là phổ quát. Ngoại lệ duy nhất là để tận dụng tên của một hàm được thiết kế để được sử dụng như một constructor:

function SomeClass() {} 

var someClassObj = new SomeClass(); 

Tôi cũng đã nhìn thấy thủ đô khối và dấu gạch sử dụng cho các biến mà tác giả xem xét hằng, hoặc cách khác cho tất cả biến toàn cục:

var EARTH_RADIUS = 6378100; 

một ước một cách hợp lý thông thường (mặc dù không phải là một tôi sử dụng bản thân mình) là để tính tiền tố của đối tượng mà tác giả mong muốn được xem xét riêng với một dấu gạch dưới:

this._leaveThisAlone = "Magical property"; 

Douglas Crockford xuất bản his own take on JavaScript code standards vài năm trước đây bao gồm hầu hết điều này, nhưng như mọi khi, đây chỉ là ý kiến ​​của một người đàn ông, vì vậy hãy uống một chút muối.

+1

Mỗi bài viết bạn đã liên kết, tiểu bang ** "Biến toàn cục phải ở tất cả các chữ cái" **. Điều này trái với những gì bạn đã nói ở trên. – StaceyI

+5

Vâng, có bạn đi. Như tôi đã nói, không có tiêu chuẩn chính thức, và Crockford có quan điểm riêng của mình mà không phải tất cả mọi người chia sẻ. –

+0

Tất cả các mũ đều giống như var EARTH_RADIUS theo ý kiến ​​của tôi. Làm cách nào khác bạn có thể cho thấy rằng họ là những từ riêng biệt nếu không thông qua viết hoa? – hyprsleepy

3

Các bình luận cần thiết về suy nghĩ lại việc thiết kế nếu bạn cần phải sử dụng các biến toàn cầu, blah blah ...

Các biến toàn cầu Tôi đã nhìn thấy thường bắt đầu bằng g hoặc gbl. Đôi khi điều này được sửa đổi với dấu gạch dưới: _g, _gbl. IIRC, các dấu gạch dưới được sử dụng khi 'toàn cầu' bị giới hạn trong phạm vi nào đó và không phải là 'thực sự' toàn cầu.

Nếu bạn định sử dụng biến toàn cục theo kiểu thời trang mà mọi thứ không thể sử dụng biến, tôi sẽ sử dụng dấu gạch dưới. Trong javascript (IIRC) quy ước sử dụng dấu gạch dưới làm tiền tố ngụ ý rằng biến là 'riêng tư' hoặc không nên được sử dụng bên ngoài. Nếu bạn đang có, luân phiên, tuyên bố nó trong một thời trang mà tất cả mọi người sẽ có thể truy cập và sửa đổi sau đó tôi muốn đi với tiền tố chỉ và không có gạch dưới.

-2

Nếu bạn muốn employeeID là biến toàn cục thì phương pháp đúng là khai báo là window.employeeID = 5; và sau đó sử dụng window.employeeID trong tất cả các địa điểm bạn sẽ truy cập sau này.

+2

Bạn ngụ ý đây là phương pháp đúng _only_, là sai. Khai báo một biến ngoài phạm vi hàm cũng gắn biến vào đối tượng cửa sổ, vì vậy nó là một kiểu viết tắt. Cả hai đều đúng. 'var GLOBAL_VAR =" foo ";' '// giống như ' ' window.GLOBAL_VAR = "foo"; ' –

0

Một lý do chính khiến mọi người bảo bạn không sử dụng các biến toàn cầu là tránh can thiệp vào các tập lệnh và/hoặc thư viện khác.

Quy ước tôi bắt đầu sử dụng khi tôi cần sử dụng biến toàn cầu là thêm họ của tôi - theo cách này tôi biết tôi sẽ không can thiệp vào bất kỳ biến toàn cục nào của thư viện hoặc bên ngoài. (Mặc dù tôi có một cái tên khá độc đáo - điều này có thể không hoạt động nếu bạn là một Smith).

Vì vậy, các biến toàn cục của tôi sẽ được đặt tên là:

var foo_lastnameGlobal; 
var bar_lastnameGlobal; 

Tôi phải chỉ ra (trong trường hợp nó không phải là rõ ràng) đây là chỉ là một ước cá nhân, không phải là một thông thường hoặc sử dụng rộng rãi nhất.Nó cũng giúp tôi nhớ những biến toàn cầu của mình là gì khi tôi sử dụng chúng. Tôi cho rằng nó có thể không tuyệt vời như vậy đối với mã công cộng hoặc trong một môi trường làm việc nhóm chuyên nghiệp.

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