2015-06-15 15 views
10

Tôi có một nguồn mã có chứa tên biến dài (postCustomThumbnailsScrollerHeight).Đặt tên thứ hai cho một biến trong javascript

Tôi không muốn đổi tên biến này cho toàn bộ mã nguồn để tôi dễ dàng tiếp tục dự án, nhưng để viết tắt tên của nó. Tôi đã thử giải pháp sau (mà hoạt động) tại khai báo đầu tiên của biến, nhưng tôi không chắc chắn nếu nó là cách chính xác để làm như vậy. Tôi có một màu sắc khác nhau của d trong IDE:

var postCustomThumbnailsScrollerHeight= d= $('.post-scroller').outerHeight(); 

Tôi đang tìm kiếm bằng câu hỏi này chuyên gia tư vấn thông thường của bạn.

+3

Bạn có mong đợi rằng nếu bạn thay đổi giá trị của cái kia thì người kia cũng sẽ thay đổi? –

+2

Điều này tạo ra một biến toàn cục 'd'. –

+3

jquery không có "tài liệu tham khảo". Bạn có thể sử dụng 'var x = longvarname' và sử dụng' x' ở mọi nơi, nhưng nó sẽ là HAI biến khác nhau, và chúng sẽ không giữ giá trị của nhau trong sự đồng bộ –

Trả lời

13

Không, đây không phải là thực sự đúng: bạn không tuyên bố biến d, chỉ gán với nó, và do đó

  1. làm cho nó toàn cầu (mà có thể hoặc không được mong muốn)
  2. làm mã của bạn không tương thích với strict mode

Dưới đây là một giải pháp:

var d = $('.post-scroller').outerHeight(), 
    postCustomThumbnailsScrollerHeight = d; 

Lưu ý rằng điều này chỉ nên được thực hiện đối với các vấn đề về khả năng đọc/nhập, không phải cho kích thước tập lệnh được tải xuống: bộ giảm âm sẽ được sử dụng cho mục tiêu sau đó.

Cũng nên cẩn thận khi bạn không tạo bí danh, nhưng thực sự là hai biến. Nếu bạn chỉ định cho một người, bạn sẽ không thay đổi người khác. Thật khó để đưa ra một lời khuyên rõ ràng mà không cần biết thêm thông tin nhưng các giải pháp thông thường là đã namespaced đối tượng:

Giả sử bạn có một cấu trúc

myApp.thumbnailScrollers.postCustom = {height:... 

sau đó bạn sẽ chỉ gán đối tượng thứ hai cho một biến địa phương trong một mô-đun hoặc chức năng:

var s = myApp.thumbnailScrollers.postCustom 

Trong trường hợp này, thay đổi s.height cũng sẽ thay đổi myApp.thumbnailScrollers.postCustom.height.

+0

@whitelettersandblankspaces Tôi nghi ngờ bạn sẽ quan tâm đến các mô-đun và không gian tên. Đây là một sự khởi đầu: http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html –

-2

Bạn có gặp sự cố khi khai báo biến đó trong dòng tiếp theo không? Bạn chỉ có thể làm:

var postCustomThumbnailsScrollerHeight = $('.post-scroller').outerHeight(); 
var d = postCustomThumbnailsScrollerHeight; 
0

Có lẽ bạn có màu sắc khác nhau bởi vì trong trường hợp này b đó là biến toàn cầu.

Đối với quan điểm của tôi sẽ được tốt hơn để viết tất cả các định nghĩa trên dòng khác nhau:

var postCustomThumbnailsScrollerHeight = $('.post-scroller').outerHeight(); 
var d = postCustomThumbnailsScrollerHeight; 
+4

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, hãy để lại nhận xét bên dưới bài đăng của họ - bạn luôn có thể nhận xét về bài đăng của riêng mình và khi bạn có đủ danh tiếng, bạn sẽ có thể nhận xét về bài đăng bất kỳ. – Kmeixner

0

Mặc dù JavaScript không natively hỗ trợ tài liệu tham khảo, bạn có thể kích thích họ sử dụng mã như thế này:

function d(){ 
    return postCustomThumbnailsScrollerHeight; 
} 

Sau đó, chỉ cần sử dụng d() ở mọi nơi. Nó không phải là rất thanh lịch, nhưng theo như tôi biết đó là cách duy nhất để có được một tài liệu tham khảo trong JavaScript.

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