2012-12-28 32 views
6

thể trùng lặp:
Fetching all (javascript) global variables in a pageLàm thế nào để tìm ra các biến toàn cục được sử dụng trong javascript tôi

Ứng dụng của tôi đang sử dụng các biến toàn cục trong javascript. Có cách nào để tìm xem có bao nhiêu người trong số họ ở đó?

Cảm ơn Om

+5

Cách dễ nhất là kiểm tra đối tượng 'window'. – Shmiddty

+0

Ngoài sự tò mò, tại sao bạn muốn đặt các biến toàn cầu? Tôi đang cố nghĩ về một trường hợp cần thiết, nhưng tôi không thể nghĩ ra được. – Thomas

+0

@Thomas: Khi chúng tôi thiết kế ứng dụng ban đầu, chúng tôi đã sử dụng nó và bây giờ tôi đang cố gắng loại bỏ và làm cho chúng cục bộ .. – Ohm

Trả lời

0

Sử dụng một Linter sẽ cảnh báo bạn khi globals được giới thiệu. Bạn cũng có thể so sánh các mục của window trước và sau khi mã của bạn chạy.

1

Duyệt qua các yếu tố cửa sổ như thế này:

for(var globe in window){ 
console.log(globe); 
} 
9

tôi làm một.

var GlobalTester = (function(){ 
    var fields = {}; 
    var before = function(w){ 
     for(var field in w){ 
      fields[field] = true; 
     }; 
    }; 

    var after = function(w){ 
     for(var field in w){ 
      if(!fields[field]){ 
       console.log(field + " has been added"); 
      }    
     }; 

    }; 
    return {before: before, after:after}; 
}()); 

GlobalTester.before(window); 

// Run your code here   
window.blar = "sdfg";  

GlobalTester.after(window);   
​ 
​ 

chí đầu ra này blar has been added trong giao diện điều khiển

8

Hãy thử điều này trong cửa sổ nhà phát triển trình duyệt của bạn (F12):

Object.keys(window).length 
+3

+1 cho ['Object.keys'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/keys) –

+2

Điều này sẽ trả về tổng số tất cả các thuộc tính của cửa sổ này, không chỉ là cửa sổ mà OP quan tâm. –

+0

Đã đóng để tôi không thể trả lời; Cũng xem xét sử dụng ['Object.getOwnPropertyNames (cửa sổ)'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames) nếu có bất kỳ hình cầu nào bạn thêm vào có thể không được đếm. –

-2

Kiểm tra đối tượng cửa sổ, nhưng bạn sẽ cần phải biết tất cả các tên biến toàn cục trước khi bạn thực hiện việc này, dưới đây là ví dụ:

var myGlobalVars = {"global1":0, "global2":0}; 

function countGlobals() { 
    var count = 0; 
    for (myGlobalVar in myGlobalVars) { 
     if (myGlobalVar in window) { 
      count++; 
     } 
    } 

    return count; 
} 

countGlobals(); 
+2

... Hãy dành một phút và suy nghĩ về câu trả lời này. Sau đó đi trước và xóa nó. – Shmiddty

+0

Sau khi suy nghĩ về nó, tôi hiểu mối quan tâm của bạn, vì bạn chỉ có thể đếm số lượng các thuộc tính trong biến globalVars. Nhưng khi tôi giải thích câu hỏi này, các thuộc tính có thể có hoặc không có ở đó, vì vậy câu trả lời này là hợp lý. –

+2

Nếu OP biết tên của tất cả các biến toàn cục của họ, tại sao họ lại đặt câu hỏi? – Shmiddty

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