这两者有什么区别:
$(function () {
// do stuff
});
Run Code Online (Sandbox Code Playgroud)
和
(function () {
// do stuff
})();
Run Code Online (Sandbox Code Playgroud) alert(myVar1);
return false;
var myVar1;
Run Code Online (Sandbox Code Playgroud)
上面的代码在IE,FF和Opera中引发错误,说明return语句必须进入函数.但它undefined在Safari和Chrome中有效(显示).
上面的代码已经在全球范围内编写.在所有功能之外.
任何原因?
我是JavaScript的新手,但我对闭包的工作原理感到困惑.有人可以用非专业人的术语解释它们是什么或为什么它们有用吗?
var ninja = (function(){
function Ninja(){};
return new Ninja();
})();
Run Code Online (Sandbox Code Playgroud)
为什么上面的函数封装在括号中,为什么();最后有?
我认为这是一个构造函数,因为();最后,但为什么对象包含在括号中?
我写了这段代码来自学JavaScript关闭:
function1 = function(){
var variable = "foo"
var function2 = function(argument){
console.log(variable + argument);
}
return function2
}
function3 = function1();
function3("bar");
Run Code Online (Sandbox Code Playgroud)
按预期打印"foobar".但变量在哪里生活?
它是否成为function3的属性,还是存储在function3中的其他位置?JavaScript是否遍历某种闭包链,类似于它如何遍历原型链?它存储在其他地方的内存中吗?
我想更深入地了解这一点.
我是一个javascript noob试图围绕下面的关闭练习.
现在,我知道结果是122.任何人都可以一步一步地指导我(传递给什么),所以我能理解闭包是如何工作的?
var hidden = mystery(3);
var jumble = mystery3(hidden);
var result = jumble(2);
function mystery ( input ){
var secret = 4;
input+=2;
function mystery2 ( multiplier ) {
multiplier *= input;
return secret * multiplier;
}
return mystery2;
}
function mystery3 ( param ){
function mystery4 ( bonus ){
return param(6) + bonus;
}
return mystery4;
}
Run Code Online (Sandbox Code Playgroud) 我一直在阅读一些JavaScript书籍,我总是听说关闭和副作用.出于某种原因,我无法理解他们到底是什么.任何人都可以用简单的英语和例子向我解释它们是什么吗?(正如你向具有图形设计师编程水平的人解释的那样).
任何人都可以向我解释为什么A是真的并且B是假的?我本以为B也是如此.
function MyObject() {
};
MyObject.prototype.test = function () {
console.log("A", this instanceof MyObject);
(function () {
console.log("B", this instanceof MyObject);
}());
}
new MyObject().test();
Run Code Online (Sandbox Code Playgroud) 我有一个调用函数的forEach.每次调用之间都需要有延迟.我把它放在forEach里面的setTimeout里面.第一次等待后不遵守超时.相反,它等待一次,然后立即运行.我将超时设置为5秒,我正在使用控制台进行确认.5秒等待,然后几个foobar控制台同时记录.
为什么我会出现这种行为?
var index = 0;
json.objects.forEach(function(obj) {
setTimeout(function(){
console.log('foobar');
self.insertDesignJsonObject(obj, index);
}, 5000);
});
Run Code Online (Sandbox Code Playgroud) 我对这个问题进行了一些搜索,但发现了很模糊的答案.在redux中,我们知道状态存储为对象.但这个状态实际存储在哪里?它是以某种方式保存为以后可以访问的文件吗?我所知道的是它不会以cookie格式或浏览器的本地存储中存储它.
javascript ×10
closures ×4
foreach ×1
function ×1
hoisting ×1
iife ×1
jquery ×1
reactjs ×1
redux ×1
settimeout ×1
side-effects ×1
this ×1