Hướng dẫn how to reset global variable in javascript - cách đặt lại biến toàn cục trong javascript

Không thực sự ...

// make a global variable
var a = [1,2,3];

// Assign it to something
var someObj = { value: a };
someObj.value; // [1,2,3];

// set a new value for the global
a = [];
a; // []
someObj.value; // [1,2,3];

Đây là mã ban đầu bạn đề cập. Bạn có thể thay đổi đối tượng các biến biến toàn cầu thành, nhưng bạn không thể thay đổi tham chiếu khác thành đối tượng bạn đang thay thế.

Và vấn đề tương tự tồn tại với ví dụ thứ hai của bạn:

// make a global variable
var globals = { a: [1,2,3] };

// Assign it to something
var someObj = { value: globals.a };
someObj.value; // [1,2,3];

// set a new value for the global
globals.a = [];
globals.a; // []
someObj.value; // [1,2,3];

Bạn sẽ phải tham khảo đối tượng container globals nếu bạn muốn các tài liệu tham khảo được cập nhật. Đó là đối tượng khác giữ một tham chiếu đến container, và sau đó bạn có thể thay đổi nội dung của container đó.

// make a global variable
var globals = { a: [1,2,3] };

// assign a reference to the container in another object.
var someObj = { globals: globals };
someObj.globals.a; // [1,2,3];

// set a new value for the global
globals.a = [];
globals.a; // []
someObj.globals.a; // [];

Nghĩ rằng có thể có một chút khó sử dụng.


Bạn cũng có thể thay đổi tham chiếu đối tượng bằng toàn cầu, thay vì thay thế nó.

var a = [1,2,3];
var b = a; // a and b now reference the same object.

a.splice(0); // remove all items from this array, without replace the array object.
a; // [];
b; // [];
// a and b now still point to the same array, which is now empty.

Hello,

Bạn có thể chỉnh sửa các biến toàn cầu không?

Các chức năng có thể truy cập các biến toàn cầu và sửa đổi chúng. Sửa đổi các biến toàn cầu trong một hàm được coi là thực hành lập trình kém. Tốt hơn là gửi một biến trong một tham số (hoặc có nó được trả về trong câu lệnh 'return').

Chúng ta có thể ghi đè các biến toàn cầu không?

Ghi đè biến toàn cầu với biến cục bộ từ trang trước, chúng tôi đã biết rằng các biến toàn cầu có thể được truy cập/sử dụng thông qua toàn bộ tài liệu, trong khi các biến cục bộ chỉ có thể được sử dụng bên trong bộ chọn nơi được khai báo.

0 điểm

Hướng dẫn how to reset global variable in javascript - cách đặt lại biến toàn cục trong javascript

hơn 10 năm

Đây là một câu hỏi khái niệm chứ không phải là một câu hỏi cụ thể về bài học.

Tôi hiểu ý tưởng rằng một biến cục bộ độc lập với một biến toàn cầu và cả hai đều có thể tồn tại trong cùng một chương trình mà không bị can thiệp. Câu hỏi của tôi là, điều gì sẽ xảy ra nếu tôi muốn sử dụng một chức năng để thay đổi biến toàn cầu thì sao? Nếu tôi thay đổi giá trị biến biến từ trong một hàm, liệu nó có được đặt lại trở lại giá trị toàn cầu sau khi chức năng được thực hiện không?

Trả lời 4F85E83354041F0003007E5E

JavaScript khác một chút so với các ngôn ngữ lập trình khác theo nghĩa là bạn có thể sửa đổi các biến toàn cầu trong các hàm mà không trả lại chúng. Ví dụ:

var global = "Global Variable"; //Define global variable outside of function

function setGlobal(){
       global = "Hello World!";
};
setGlobal();
console.log(global); //This will print out "Hello World"

điểm

hơn 10 năm

Đây là một câu hỏi khái niệm chứ không phải là một câu hỏi cụ thể về bài học.

Tôi hiểu ý tưởng rằng một biến cục bộ độc lập với một biến toàn cầu và cả hai đều có thể tồn tại trong cùng một chương trình mà không bị can thiệp. Câu hỏi của tôi là, điều gì sẽ xảy ra nếu tôi muốn sử dụng một chức năng để thay đổi biến toàn cầu thì sao? Nếu tôi thay đổi giá trị biến biến từ trong một hàm, liệu nó có được đặt lại trở lại giá trị toàn cầu sau khi chức năng được thực hiện không?

điểm

Hướng dẫn how to reset global variable in javascript - cách đặt lại biến toàn cục trong javascript

hơn 10 năm

Jane Chen

unread,

Bạn có thể chỉnh sửa các biến toàn cầu không?5/11/18

cho người dùng V8

Chào Ben,

Tôi đã kiểm tra API mô -đun trên V8 6.7 và nó hoạt động rất tốt, ngoại trừ một vấn đề: & nbsp; Tôi đã mất một cách để liên kết các biến bên ngoài với đối tượng toàn cầu được sử dụng để đánh giá mô -đun. & NBSP; Tôi đã thử đặt chúng trên đối tượng toàn cầu của bối cảnh, đối tượng không gian tên mô -đun (giá trị trả về của mô -đun :: getModulenamespace ()) và mẫu đối tượng toàn cầu để tạo ngữ cảnh, nhưng không có gì hoạt động. & Nbsp; Tôi biết rằng có cú pháp cho một mô -đun để nhập các biến bên ngoài. & NBSP; Nhưng để tương thích ngược, tôi muốn có thể thiết lập một số biến toàn cầu để đánh giá mô -đun. & NBSP; Có cách nào để làm điều đó?

Cảm ơn rất nhiều!

Thanks,

Ngày 4 tháng 1 năm 2019, 4:55:55 PM1/4/19

Trên thực tế, thiết lập các thuộc tính trên đối tượng toàn cầu của bối cảnh vẫn hoạt động. & NBSP; Tôi tìm thấy sự khác biệt giữa một tập lệnh và một mô-đun được ghi lại trong các biến. & NBSP; Ví dụ:

unread,

Giả sử H và W là hai thuộc tính được xác định là "xin chào" và "thế giới" trên đối tượng toàn cầu, dòng sau:5/11/18

cho người dùng V8

var h ;; var w; H + '' + W;
create a new context with it. It will revert to its pristine state in
the new context. In a nutshell:

=> Xin chào thế giới (khi được đánh giá là một tập lệnh)
old_context->Exit(); // Need to exit the context before detaching.
old_context->DetachGlobal();
auto new_context = v8::Context::New(global->GetIsolate(),
v8::Local(), global);

Jane Chen

unread,

=> Không xác định được xác định (khi được đánh giá là một mô -đun)5/12/18

cho người dùng V8

Trong khi như sau:

H + '' + W;

Trên thực tế, thiết lập các thuộc tính trên đối tượng toàn cầu của bối cảnh vẫn hoạt động. & NBSP; Tôi tìm thấy sự khác biệt giữa một tập lệnh và một mô-đun được ghi lại trong các biến. & NBSP; Ví dụ:

unread,

Giả sử H và W là hai thuộc tính được xác định là "xin chào" và "thế giới" trên đối tượng toàn cầu, dòng sau:5/12/18

cho người dùng V8

var h ;; var w; H + '' + W;
> Thanks Ben.
>
> I want to re-use my context for performance reasons, but some JavaScript
> programs have constant global variables that cannot be re-defined, such as
> those declared with let or const. To work around this, I thought I could
> just evaluate each program in a closure by artificially enclosing the script
> with {}. Do you see any issue with doing it?

=> Xin chào thế giới (khi được đánh giá là một tập lệnh)
have to scrub globals introduced with `var`, undo any monkey-patching
of builtins, figure out how to cancel pending promises, etc. Using a
new context is probably a lot simpler and robuster.

=> Không xác định được xác định (khi được đánh giá là một mô -đun)

Trong khi như sau:
v8::ScriptCompiler::CompileFunctionInContext() but you'd probably have
to upgrade first. Modules don't exist in V8 5.3 and
CompileFunctionInContext() has a bug where the line and column in
stack traces are wrong.

Các mô-đun và chức năng có ngữ nghĩa thời gian chạy khác với kịch bản cấp cao nhất, vì vậy chúng có thể không phù hợp nếu khả năng tương thích ngược là một mối quan tâm.
top-level script, of course, so they might not be a good fit if
backwards compatibility is a concern.

Jane Chen

unread,

Ngày 3 tháng 1 năm 2019, 4:55:26 PM1/3/191/3/19

cho người dùng V8

Chào Ben,

Tôi đã kiểm tra API mô -đun trên V8 6.7 và nó hoạt động rất tốt, ngoại trừ một vấn đề: & nbsp; Tôi đã mất một cách để liên kết các biến bên ngoài với đối tượng toàn cầu được sử dụng để đánh giá mô -đun. & NBSP; Tôi đã thử đặt chúng trên đối tượng toàn cầu của bối cảnh, đối tượng không gian tên mô -đun (giá trị trả về của mô -đun :: getModulenamespace ()) và mẫu đối tượng toàn cầu để tạo ngữ cảnh, nhưng không có gì hoạt động. & Nbsp; Tôi biết rằng có cú pháp cho một mô -đun để nhập các biến bên ngoài. & NBSP; Nhưng để tương thích ngược, tôi muốn có thể thiết lập một số biến toàn cầu để đánh giá mô -đun. & NBSP; Có cách nào để làm điều đó?

Cảm ơn rất nhiều!

Jane Chen

unread,

Ngày 3 tháng 1 năm 2019, 4:55:26 PM1/3/191/4/19

cho người dùng V8

Chào Ben,

Tôi đã kiểm tra API mô -đun trên V8 6.7 và nó hoạt động rất tốt, ngoại trừ một vấn đề: & nbsp; Tôi đã mất một cách để liên kết các biến bên ngoài với đối tượng toàn cầu được sử dụng để đánh giá mô -đun. & NBSP; Tôi đã thử đặt chúng trên đối tượng toàn cầu của bối cảnh, đối tượng không gian tên mô -đun (giá trị trả về của mô -đun :: getModulenamespace ()) và mẫu đối tượng toàn cầu để tạo ngữ cảnh, nhưng không có gì hoạt động. & Nbsp; Tôi biết rằng có cú pháp cho một mô -đun để nhập các biến bên ngoài. & NBSP; Nhưng để tương thích ngược, tôi muốn có thể thiết lập một số biến toàn cầu để đánh giá mô -đun. & NBSP; Có cách nào để làm điều đó?

Cảm ơn rất nhiều!

Ngày 4 tháng 1 năm 2019, 4:55:55 PM1/4/19

Trên thực tế, thiết lập các thuộc tính trên đối tượng toàn cầu của bối cảnh vẫn hoạt động. & NBSP; Tôi tìm thấy sự khác biệt giữa một tập lệnh và một mô-đun được ghi lại trong các biến. & NBSP; Ví dụ:

Giả sử H và W là hai thuộc tính được xác định là "xin chào" và "thế giới" trên đối tượng toàn cầu, dòng sau:

var h ;; var w; H + '' + W;

=> Xin chào thế giới (khi được đánh giá là một tập lệnh)

=> Không xác định được xác định (khi được đánh giá là một mô -đun)

Trong khi như sau:

Bạn có thể thay đổi các biến toàn cầu trong JavaScript không?

Các biến được khai báo mà không có từ khóa VAR bên trong bất kỳ chức năng nào tự động trở thành các biến toàn cầu.Các biến toàn cầu có thể được truy cập và sửa đổi ở bất cứ đâu trong chương trình.Các biến cục bộ không thể được truy cập bên ngoài khai báo chức năng.Global variables can be accessed and modified anywhere in the program. Local variables cannot be accessed outside the function declaration.

Bạn có thể chỉnh sửa các biến toàn cầu không?

Các chức năng có thể truy cập các biến toàn cầu và sửa đổi chúng.Sửa đổi các biến toàn cầu trong một hàm được coi là thực hành lập trình kém.Tốt hơn là gửi một biến trong một tham số (hoặc có nó được trả về trong câu lệnh 'return').. Modifying global variables in a function is considered poor programming practice. It is better to send a variable in as a parameter (or have it be returned in the 'return' statement).

Chúng ta có thể ghi đè các biến toàn cầu không?

Ghi đè biến toàn cầu với biến cục bộ từ trang trước, chúng tôi đã biết rằng các biến toàn cầu có thể được truy cập/sử dụng thông qua toàn bộ tài liệu, trong khi các biến cục bộ chỉ có thể được sử dụng bên trong bộ chọn nơi được khai báo.global variables can be accessed/used through the entire document, while local variables can be used only inside the selector where it is declared.