2015-02-09 16 views
6

Tôi chỉ tò mò nếu có một thứ như 'đối tượng phạm vi cục bộ' trong JavaScript. Nếu bạn gọi một hàm, nó có một ngữ cảnh (this), là đối tượng mà nó đã được gọi (function f() {return this;}; obj.f = f; obj.f(); //returns obj;) và phạm vi được tạo ra trên mọi cuộc gọi hàm. Phạm vi được sử dụng để xác định các biến địa phương như trong ví dụ sau:Đối tượng phạm vi cục bộ

var globalScopeVar = 1; 
(function() { 
    var localScopeVar = 2; 
})(); 

Trong cả hai phạm vi this đề cập đến bối cảnh toàn cầu (thông thường, window), kể từ khi chức năng chưa được gọi vào bất kỳ đối tượng. Tuy nhiên, điều tôi quan tâm là 'đối tượng phạm vi', tức là đối tượng trong đó các biến trong phạm vi được xác định. Đối với phạm vi toàn cầu này là thường window, giống như bối cảnh toàn cầu:

window.globalScopeVar; // 1 

Tuy nhiên, các 'đối tượng phạm vi' trong phạm vi địa phương của một cuộc gọi chức năng là gì? Liệu nó có tồn tại hay không? Có cách nào để truy cập một đối tượng trong đó localScopeVar được xác định không?

(function() { 
    var localScopeVar = 2; 
    localScope.localScopeVar; // 2 
})(); 

localScope trong ví dụ này là gì?

+3

* "Hiện nó có tồn tại hoặc có thể truy cập không?" * Có, nó tồn tại, nhưng không, bạn không thể truy cập. – dfsq

+1

Tôi nghĩ "localScope" là phạm vi của việc đóng cửa ngay lập tức, được xác định trong dòng đầu tiên. Vì đóng cửa này về cơ bản là một hàm ẩn danh, được thực thi ngay lập tức (dòng: 4), bạn không thể tham chiếu nó. –

+0

Thông báo, các đối tượng đó không tạo phạm vi, chỉ có các chức năng. Phạm vi này theo nghĩa đen được ghi vào tệp tập lệnh và bạn không thể thay đổi nó theo cách lập trình. Ngoài ra, một hàm không nhận thức được đối tượng được xác định, trừ khi bạn không tạo một biến chứa thông tin này. – Teemu

Trả lời

1

Điều đó localScopeLexical Environment.

Như một câu trả lời cho câu hỏi của bạn nếu is it accessible, ECMAScript Ngôn ngữ Đặc điểm kỹ thuật nói như sau:

Nó là không thể đối với một chương trình ECMAScript để truy cập trực tiếp hoặc thao tác giá trị như vậy.

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