- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Có thể trùng lặp:
javascript function vs. ( function() { … } ());
抱歉,如果这太基础了,但是这个构造是做什么的?
(function MyFunction() {
/* Some codes ... */
})();
也许有一个特殊的术语?它对于谷歌搜索很有用,而不仅仅是将该代码段放在搜索字段中。
1 Câu trả lời
这称为直接调用模式。它定义了一个匿名函数,然后立即执行它。这对于“私有(private)”变量等很有用。如果您通常这样做:
// global namespace
var data = 'lol';
function getData() {
return data;
}
全局命名空间中会有一个变量 data,如果有人在 Web 控制台中输入 data = 123
,则可能会破坏您的脚本。使用直接调用模式,您可以执行以下操作:
// global namespace
/*lotsofcodehere*/
(function MyFunction() {
// closure namespace
var data = 'lol';
this.getData = function getData() {
return data;
}
})();
// global again
在这种情况下,函数 getData 仍将存在于全局命名空间中,但无法从闭包命名空间外部访问数据。
您还会注意到,使用此模式时,MyFunction 将不存在于全局命名空间中。这是因为许多小语言规则之一,但基本上,函数始终可以通过函数内部的名称来使用。如果你有这样的事情:
// returns the amount of from--s needed to get to 0 :D
// (yes, it returns it's input number :D)
(chức năng() {
var i = 0, keep = false;
this.countToZero = function(from) {
if(from === 0) {
keep = false; // don't keep i's contents on next invocation
return i;
}
if(!keep) i = 0; // reset i on first invocation
i++;
keep = true;
return countToZero(from - 1);
}
})();
它工作得很好,countToZero(5) 会很好地返回 5。但是,如果你在非全局命名空间中使用它,那就不太好了,如果在函数内部使用它,它会将 countToZero 定义为成员该函数的属性,这将破坏我们的返回(因为 countToZero 不再通过全局命名空间访问)
这也许不是一个现实的场景,但它适用于这个例子。我们将使用以下代码代替上面的代码:
/*code*/
this.countToZero = function countToZero(from) {
// countToZero will *always* exist here as a reference to this function!
/*code*/
return countToZero(from);
};
这段代码很难破解,除非你将 Infinity 作为第一个参数传递,即使你以完全荒谬的方式使用它。
...
我是否说过我要提供清晰的解释或很好的、现实生活中的例子?我希望我没有这么做
关于javascript - 基本 JavaScript : ()();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8656683/
Làm thế nào để chuyển đổi số thập phân sang ký hiệu cơ số hỗn hợp? Tôi đoán rằng với dữ liệu đầu vào là mỗi mảng cơ số và số thập phân, nó sẽ cho ra một mảng các giá trị của mỗi cột. Mã giả câu trả lời tốt nhất: cơ sở = [24, 60, 60] đầu vào = 8
Tôi có Bảng A có "x" hàng. (Ví dụ này có 8 hàng) Tôi đã tạo Bảng C với số cột là 'x' bằng cách sử dụng con trỏ. (làm cho nó động; nếu nhiều hàng được thêm vào Bảng A, thì Bảng C sẽ được tạo
Tôi có một câu hỏi (có lẽ là đơn giản và ngớ ngẩn) liên quan đến đồ vật. Tôi đã tạo một đối tượng "jon" có thể là "Person". Khi tôi gọi console.log(jon.name), console sẽ xuất ra "jon" cho tôi. Cho đến nay, mọi thứ đều tốt
Câu hỏi này đã có câu trả lời: Đã đóng cách đây 11 năm. Có thể trùng lặp: hàm javascript so với (hàm() { … } ()); Xin lỗi nếu điều này quá cơ bản
Tôi đang cố gắng tái tạo quỹ đạo đạn đạo trong Java, tuy nhiên, tôi đang gặp phải một số vấn đề. Tôi đã xem rất nhiều video giải thích về công thức và những thứ tương tự, nhưng họ có mục tiêu trong các phương trình của họ, còn tôi thì không. Ý tôi là, họ có máy đo để tính toán độ rơi của viên đạn, nhưng tôi đang cố gắng tìm ra viên đạn sẽ bay đến đâu.
Một câu hỏi (hy vọng là) đơn giản từ một người mới bắt đầu sử dụng Rust. Vòng lặp của tôi có vấn đề gì vậy? num đánh giá là "69" khá nhanh, nhưng một khi num được đặt thành "69", vòng lặp không bao giờ thoát. Có lẽ tôi đã bỏ lỡ điều gì đó hiển nhiên.
Tôi đã áp dụng ".length" cho phần tử có id="name" nhưng nó đếm là 29 thay vì 14. Tôi muốn biết lỗi của tôi ở đâu? Sẽ rất tuyệt nếu ai đó có thể cho tôi biết. Cảm ơn bạn! var name = document.getEl
Tôi biết điều này rất đơn giản nhưng không hiểu sao tôi không thể thực hiện được. Tôi đang cố gắng tạo màu tùy chỉnh trong Java nhưng có vẻ như không hiệu quả. nhập java.awt.Color; Màu deepGreen = new C
Tôi có một tệp lớn trong đó mỗi dòng chứa một chuỗi con, ví dụ ABC123. Nếu tôi thực hiện grep ABC file.txt hoặc grep ABC1 file.txt, tôi sẽ nhận được những dòng đó trở lại như mong đợi, nhưng nếu tôi thực hiện grep
Tôi muốn chuyển đổi ánh xạ thực thể sau thành đối tượng Ưu tiên. Trên getter, khi tôi thay đổi "Short" thành "Priority" và theo this.priority, nó nói rằng kiểu thuộc tính 'cơ bản' không nên là
Tôi đang làm việc trên một chức năng khá cơ bản và thấy khó hiểu tại sao tôi lại nhận được kết quả như vậy. def mystery(n): print(n) nếu n < 4: my
Tôi đang cố gắng triển khai tính năng lọc Isotope vào mục tin tức trong cài đặt WordPress của mình. Tôi mới làm quen với JavaScript/jQuery và đang cố gắng học trong quá trình thực hành. Đầu tiên tôi sử dụng phần Bộ lọc của Iso
Đã đóng. Vấn đề này không thể tái hiện hoặc do lỗi đánh máy. Hiện tại không chấp nhận câu trả lời. Sự cố này xảy ra do lỗi đánh máy hoặc một vấn đề không thể tái hiện được nữa. Mặc dù những câu hỏi tương tự có thể nằm trong chủ đề
Tôi đang tham chiếu đến một thực thể trong một lớp thực thể khác và gặp lỗi này. Dưới đây là mã mẫu. Tôi cũng có các lớp này trong persistence.xml. Nguyên nhân nào gây ra vấn đề này? Tôi đang sử dụng Spring Data JPA và Hibernate.
Tôi đang phân tích cú pháp HTML và định dạng lại hình ảnh để phù hợp hơn. Vì một lý do nào đó, khi tôi phải phân tích nhiều hơn một hình ảnh, tôi lại vượt ra ngoài phạm vi và tôi không thể hiểu nổi tại sao. Khi imgArray.count > 1, tôi sẽ sử dụng
Tôi mới làm quen với SQL và đang cố gắng tạo một truy vấn phụ cơ bản. Tôi cần tìm sự khác biệt giữa độ tuổi trung bình của quản lý và độ tuổi trung bình của thực tập sinh. Tiêu đề là một cột - Tuổi của Quản lý hoặc Thực tập sinh là một cột, tất cả đều nằm trong cùng một bảng. Tôi sẽ làm điều gì đó như thế này bằng cách sử dụng hai truy vấn phụ:
Tôi đã quen dùng csh nên việc phải dùng bash hơi khó chịu. Có vấn đề gì với đoạn mã này vậy? nếu[$time > 0300] && [$time và 300 && time < 900 )) thì mod
Tôi đã xây dựng trang này: http://excelwrestling.com/poola.php cho giải đấu đôi sắp tới. Hầu hết dữ liệu của tôi được lấy từ cơ sở dữ liệu mySQL, hiện tại chỉ có một số dữ liệu mẫu. Tôi hy vọng liên kết
Có lý do nào khiến lệnh sau không hoạt động không: for (i=0;i < someArray.length;i++) { if (someArray[i].indexOf("something") !=
Tôi hiện đang học Javascript và có một câu hỏi khiến tôi băn khoăn! Vì vậy, tất cả những gì tôi cần làm ở đây là nhập một màu vào hộp nhập này, nhấp vào một nút và thay đổi tiêu đề thành màu đã nhập (chỉ khi màu đã nhập nằm trong mảng được chỉ định trong biến). Mã của tôi
Tôi là một lập trình viên xuất sắc, rất giỏi!