JavaScript closures vs. anonymous functions

A friend of mine and I are currently discussing what is a closure in JS and what isn't. We just want to make sure we really understand it correctly. Let's take this example. We have a counting loop and want to print the counter variable on the console delayed. Therefore we use setTimeout and closures to capture the value of the counter variable to make sure that it will not print N t

JavaScript关闭与匿名函数

我和我的一位朋友正在讨论什么是JS的封闭,什么不是。 我们只是想确保我们确实正确地理解它。 我们来看一下这个例子。 我们有一个计数循环,并希望在控制台上打印计数器变量。 因此,我们使用setTimeout和闭包来捕获计数器变量的值,以确保它不会打印N次N值。 错误的解决方案,而闭合或接近闭合 ,以将任何东西: for(var i = 0; i < 10; i++) { setTimeout(function() { console.log(i); }, 1000); }

How to loop through a plain JavaScript object with the objects as members?

How can I loop through all members in a JavaScript object including values that are objects. For example, how could I loop through this (accessing the "your_name" and "your_message" for each)? var validation_messages = { "key_1": { "your_name": "jimmy", "your_msg": "hello world" }, "key_2": { "your_name": "billy", "your_msg": "foo

如何通过一个普通的JavaScript对象与作为成员的对象进行循环?

如何循环JavaScript对象中的所有成员,包括对象的值。 例如,我怎样才能循环访问(为每个访问“your_name”和“your_message”)? var validation_messages = { "key_1": { "your_name": "jimmy", "your_msg": "hello world" }, "key_2": { "your_name": "billy", "your_msg": "foo equals bar" } } for (var key in validation_messages) { // skip loop if the property i

Function overloading in Javascript

What is the best way(s) to fake function overloading in Javascript? I know it is not possible to overload functions in Javascript as in other languages. If I needed a function with two uses foo(x) and foo(x,y,z) which is the best / preferred way: Using different names in the first place Using optional arguments like y = y || 'default' y = y || 'default' Using number of ar

JavaScript中的函数重载

在Javascript中伪造函数重载的最佳方式是什么? 我知道在Javascript中重载函数是不可能的,就像其他语言一样。 如果我需要一个有两个用途的函数foo(x)和foo(x,y,z) ,这是最好的/首选的方法: 首先使用不同的名称 使用可选参数,如y = y || 'default' y = y || 'default' 使用参数数目 检查参数的类型 或者如何? 使用参数进行函数重载的最好方法不是检查参数长度或类型; 检查类型只会让你的代

What browsers currently support JavaScript's 'let' keyword?

I'm developing an app and don't have to ever worry about Internet Explorer and was looking into some of the features present in A+ grade browsers that aren't in Internet Explorer1. One of these features I wanted to play around with is JavaScript's let keyword I can't seem to get any of their 'let' examples to work in Firefox 3.6 (User-Agent string: Mozilla/5.0 (Win

哪些浏览器目前支持JavaScript的“let”关键字?

我正在开发一个应用程序,不必担心Internet Explorer,并且正在研究A +级别浏览器中不在Internet Explorer1中的一些功能。 我想玩的这些功能之一是JavaScript的let关键字 我似乎无法让他们的任何'let'例子在Firefox 3.6中工作(用户代理字符串:Mozilla / 5.0(Windows; U; Windows NT 5.1; en-US; rv:1.9.2)Gecko / 20100115 Firefox / 3.6(.NET CLR 3.5.30729))。 我得到SyntaxError: missing ; before stat

Explaining IIFE Inside Loop

This question already has an answer here: JavaScript closure inside loops – simple practical example 35 answers How do JavaScript closures work? 88 answers

解释IIFE内部循环

这个问题在这里已经有了答案: 循环中的JavaScript闭包 - 简单实用的例子35个答案 JavaScript关闭如何工作? 88个答案

Javascript array named status not working in google chrome

This question already has an answer here: Simple Javascript array initialization not working in Chrome 2 answers How do JavaScript closures work? 88 answers This issue is already answered here. <html> <body> <script> function test(){ var array = [1, 2, 3]; document.write("Type of [" + array + "] : " + (typeof array)

Javascript数组命名状态不适用于谷歌浏览器

这个问题在这里已经有了答案: 简单的Javascript数组初始化在Chrome 2的答案中不起作用 JavaScript关闭如何工作? 88个答案 这个问题已经在这里解答。 <html> <body> <script> function test(){ var array = [1, 2, 3]; document.write("Type of [" + array + "] : " + (typeof array) + "<br />"); document.write("V

How does JavaScript closure work in the following example?

This question already has an answer here: How do JavaScript closures work? 88 answers You would need to pass in 5 as unknown . Brief definition of closure for completeness From This SO link a closure is the local variables for a function — kept alive after the function has returned, or a closure is a stack-frame which is not deallocated when the function returns (as if a 'stack-f

在下面的例子中JavaScript闭包如何工作?

这个问题在这里已经有了答案: JavaScript关闭如何工作? 88个答案 你需要传入5作为unknown 。 关闭完整性的简要定义 从这个SO链接 闭包是函数的局部变量 - 在函数返回后保持活动状态,或 闭包是一个栈函数,当函数返回时不会解除分配(就好像一个'栈框架'被malloc',而不是在栈上!)。 数字是在JavaScript中传递值 的b传递给自变量a()被保存在封闭该a回报。 所以在你的例子中, b被保存为x或2的

JavaScript Functions that return function

This question already has an answer here: How do JavaScript closures work? 88 answers Why do you need to invoke an anonymous function on the same line? 19 answers Let's decompose the statements in its constituents: var xx =(function(){var e = 0; return function(){return e++}})(); var e = 0; assign 0 to e return function(){return e++;} return a function f which: 2.1 return the

JavaScript函数返回函数

这个问题在这里已经有了答案: JavaScript关闭如何工作? 88个答案 为什么你需要在同一行上调用匿名函数? 19个答案 让我们分解其成​​分中的陈述: var xx =(function(){var e = 0; return function(){return e++}})(); var e = 0; 给e赋0 return function(){return e++;} 返回一个函数f ,其中: 2.1返回e的值 2.2将e增加1 var xx = function(){var e = 0; return function(){return e++}})(); 用范围[e=

Node.js JavaScript syntax

This question already has an answer here: How do JavaScript closures work? 88 answers What do parentheses surrounding an object/function/class declaration mean? [duplicate] 7 answers This is a self invoking anonymous function. This pattern is useful when you want to hide variables from the global namespace. (function(){ var foo = "foo"; })(); console.log(window.foo); // undefined

Node.js JavaScript语法

这个问题在这里已经有了答案: JavaScript关闭如何工作? 88个答案 围绕对象/函数/类声明的括号是什么意思? [复制] 7个答案 这是一个自我调用的匿名函数。 当您想要隐藏全局名称空间中的变量时,此模式非常有用。 (function(){ var foo = "foo"; })(); console.log(window.foo); // undefined 另请参见围绕JavaScript对象/函数/类声明的括号是什么意思? 使用(函数(窗口,文档,未定义){...})(窗口,文

How to understand closures in Javascript?

This question already has an answer here: How do JavaScript closures work? 88 answers closure is a function bound to one or more external variables An example of this concept is that the function bar is bound to the external variables x, y, and z: function foo(x, y) { var z = 3; return function bar(a, b, c) { return (a + b + c) * (x + y + z); }; } var closure = foo(1, 2); clos

如何理解Javascript中的闭包?

这个问题在这里已经有了答案: JavaScript关闭如何工作? 88个答案 闭包是一个绑定到一个或多个外部变量的函数 这个概念的一个例子是功能栏绑定到外部变量x,y和z: function foo(x, y) { var z = 3; return function bar(a, b, c) { return (a + b + c) * (x + y + z); }; } var closure = foo(1, 2); closure(5, 6, 7); // (5 + 6 + 7) * (1 + 2 + 3) = 24 变量closure指向从foo调用返回的内部函数bar 。