我是一名C#开发人员,习惯了闭包在C#中的工作方式。目前,我不得不使用匿名javascript函数,并且遇到了以下代码片段的问题:
function ClosureTest() {
var funcArray = new Array();
var i = 0;
while (i < 2) {
var contextCopy = i;
funcArray[i] = function() { alert(contextCopy); return false; };
i++;
}
funcA
在我的网页上:www.easenall.org.uk/Gallery.html我有这样的错误:在gallery.html:54上不能使用TypeError:$ is a function
我从一个网站上下载了这段代码,所以我不太擅长用Java Script编码,如果你点击网页上的一个图像,图像/灯箱就会开始移动,然后它就会停止。修复这个错误能解决这个问题吗?如果不能解决这个问题,我该如何纠正它?下面是java脚本代码:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.1
在David的有效Javascript书中,我遇到了一个JS函数。我已经复制了下面的代码。我只想知道"i“的更新值在hasNext函数中是如何可使用的,当"i”只在下一个函数中增加时。
Javascript
function values() {
var i = 0, n = arguments.length; a = arguments;
return {
hasNext: function() {
alert(i);
return i < n;
},
n
我读过关于JavaScript闭包的超级帖子,在我找到的答案之间似乎有一些出入,我希望我能得到一些进一步的澄清。
线程中的一些答案是在内部函数引用外部函数的变量时创建闭包的。
我找到了另一个答案,说这是一个终结:
var a = 42;
function b() { return a; }
注意,这里没有内部/外部函数,而只是一个函数。person给出的解释是,闭包是函数引用外部作用域的时候。
所以我的问题是,只有当有两个函数(内函数和外部函数),或者函数引用外部作用域时才创建闭包,而外部作用域可能是函数,也可能不是函数(在本例中,它只是顶级作用域)?
我想知道什么时候在JavaScript中创建闭包
function outerFunc() {
var a = 2;
function() {
console.log(a);
console.log(b);
};
var b = 4;
}
var saveFunc = outerFunc();
saveFunc();
是在代码执行之前创建闭包,还是在调用outerFunc时创建闭包,还是在编写innerFunc时创建闭包,还是在从outerFunc返回innerFunc并将带有闭包的innerFunc存储在saveFunc中时
让我们以下面的(JavaScript)代码为例,它返回一个关闭变量x和y的函数,以说明:
function test() {
var x = Math.random();
var y = Math.random();
var f = function() {
console.log(x, y);
};
return f;
}
test()();
代码是荒谬的,我只想结束x和y__。
变量x和y不存在于函数test之外,但它们在函数f中仍然可用。
除了任何编译器优化(比如内联),我们是说只有一个闭包(由f创建),还是说有两个闭包(for/overx和y)?
我试图访问javascript中的一个函数,但它是说它没有声明。我正在尝试设置一个访问修饰符,并想知道如何在javascript中做到这一点。
下面是我试图宣布为公开的函数。
<script language ="javascript" type ="text/javascript">
function PopupPicker(ctl, w, h) {
var PopupWindow = null;
settings = 'width=' + w + ',height=' + h + '
可能重复:
我对Javascript函数的理解存在差距,所以如果我不使用匿名包装器来定义事件处理程序,我就很难理解为什么事件处理程序会自动启动。
<a href="#" id="change-html">Change HTML</a>
Javascript #1
var btn = $('#change-html');
btn.click(bindClick(btn)); // bindClick gets executed right away and only once
function bind
我可以通过下面提到的两种方式在javascript中实现事件处理程序,我想知道这两种风格之间是否有区别,或者在这两种情况下,click_handler是一个闭包,没有区别。我感到困惑是因为我在某处读到闭包只有在"return“与匿名函数一起使用时才会形成
function foo() {
var a = 5;
function click_handler() {
a++;
}
someElement.addEventHandler('click', click_handler, false);
}
或
function
在使用javascript (Node.js)中的调试器时,我感到惊讶的是,VSCode调用了不是“抽象闭包”的“闭包”对象(就而言)。我想知道为什么VSCode调试器会向我显示这个名称。
如果我从ecma中正确理解,那就是词汇范围,而不是闭包本身。
function outer () {
const a = "some text";
function middle() {
const b = "other text"
return function inner() {
con
由于闭包和稍后调用函数的关闭超过变量的能力对于javascript的功能来说似乎是一个很大的优点,所以我发现自己经常使用以下构造:
var func;
func = function (args) {return function (moreArgs) {
Do something;
};};
这是正常的javascript编程吗?还是用这种方式实现所有函数存在问题/陷阱?我看不出有什么坏处,这个模式总是建立一个函数,并考虑到关闭的潜在好处.传递它并在以后执行它的能力。
当需要闭包时,可以像这样两次调用它:
func()(parms);
..。但这是很少见的事。
这似乎在每一种情况下都
我正在学习javascript闭包。
我有个功能
function outer(x){
var y = 10;
function inner(z){
return x + y + z;
}
console.log(inner(20));
}
outer(30);
我得到的输出为60。
这是一个很好的例子吗?
到目前为止,我只在javascript中看到了闭包:
var name=...;
$(..).onclick(function() {
//here I can reference to name
});
c/c++/java/PHP中是否存在此功能
如果有的话,有一个hello world的例子吗?