相关疑难解决方法(0)

这个变量来自哪里

这是来自JavaScript闭包如何工作?.第一个答案对我来说没有任何意义,我无法评论它.这非常令人沮丧

function foo(x) {
  var tmp = 3;
  return function(y) {
    alert(x + y + (++tmp));
  }
}
var bar = foo(2); // bar is now a reference to the closure returned by foo
bar(10);
Run Code Online (Sandbox Code Playgroud)

这是什么意思?y变量来自哪里?

javascript

5
推荐指数
1
解决办法
174
查看次数

如何在javascript中获取嵌套数组中某个值的indexOf位置?

免责声明:这个问题并不像同此一个.

我有一个嵌套数组的例子:

var testArray = [
  true,
  "",
  [
    1,
    {a: 2, b: [3, false]},
    [2, []],
    null
  ],
  4,
  undefined,
  [5, "test"],
  function() {}
];
Run Code Online (Sandbox Code Playgroud)

如何在嵌套数组中获取valueOf,如:

testArray.multiIndexOf(null); //Expected result will be [2, 3]
Run Code Online (Sandbox Code Playgroud)

我将解释这里发生的事情.

首先,我们将testArray分解为:

var testArrayExplain = [0, 1, [0, 1, [0, 1], 3], 3, 4, [0, 1], 6];
Run Code Online (Sandbox Code Playgroud)

正如你在这里看到的,这个数组和上面的数组一样:第一层数组的长度为7,然后看一下位置#2的值,我们将看到另一个数组嵌套到第一层.正如您从上面记得的那样,该null值与第一个数组的位置#2处的数组中的位置#3具有相同的确切位置

因此,我们将具有第一层位置,然后是第二层位置null:,[2, 3]存储在从第一层到最后一层排序的数组中.

另一个例子:

var testArrayTwo = [1,[2,3,4],5,[6,[7,8],9,10],11,12];
testArrayTwo.multiIndexOf(6); //return [3, 0]
Run Code Online (Sandbox Code Playgroud)

可选:如果嵌套数组有两个相同的值,那么获取第一个值的位置,还是存储两个位置的数组?如果value不在嵌套数组中,return …

javascript arrays multidimensional-array

5
推荐指数
1
解决办法
1373
查看次数

试图理解Python memoization代码片段

在最近的Hacker Newsletter问题中,这篇关于Python中装饰器的非常有用的文章已被链接.我喜欢这篇文章,我想我理解了大多数装饰器的例子.但是,在非装饰器的memoization示例中,我对代码非常困惑:

def memoize(fn):
    stored_results = {}

    def memoized(*args):
        try:
            # try to get the cached result
            return stored_results[args]
        except KeyError:
            # nothing was cached for those args. let's fix that.
            result = stored_results[args] = fn(*args)
            return result

    return memoized
Run Code Online (Sandbox Code Playgroud)

我很困惑这个函数如何创建一个stored_results附加到的持久字典.重新阅读后,将其复制/粘贴到我的编辑器中并使用它,并在网上寻求帮助,我仍然不明白语法stored_results[args] = fn(*args)是做什么的.

(1)文章建议上面的代码将返回函数,但现在它将在执行新的参数之前首先搜索字典.这是怎么发生的?为什么不stored_results只是当地人memoizememoized返回时为什么不被销毁?

(2)解释通过这里的论点的其他问题或网络资源的链接*args也会有所帮助.如果*args是参数列表,为什么我们可以使用语法 stored_results[args],通常在尝试索引列表中的字典时会出现不可出错的错误?

感谢任何澄清的想法.

python function memoization

4
推荐指数
1
解决办法
347
查看次数

javascript如何在回调函数中得到this.variable

在javascript中的以下自定义类中,在回调中,为什么this.obj什么都没有,但局部变量obj有我想要的东西?谢谢.

function ClassTest(director) {
  this.obj = {"test1": "test1"};
}

function test1(input, callback) {
  callback("success");
}

ClassTest.prototype.test = function() {
  var obj = this.obj;
  test1("niuniu",function(e){
    console.log(this.obj);  // undefined
    console.log(obj);  // this one has stuff
    });
}

// run 
new ClassTest().test()
Run Code Online (Sandbox Code Playgroud)

javascript callback

4
推荐指数
1
解决办法
6326
查看次数

闭包语法

function makeIncreaseByFunction(increaseByAmount) {
  return function (numberToIncrease) {
    return numberToIncrease + increaseByAmount;
  };
}

makeIncreaseByFunction(3)(10);
Run Code Online (Sandbox Code Playgroud)

为Clarity更新了 有人可以解释为什么(3)(10)的写法是这样的吗?我知道10是作为内部函数的参数提供的,但为什么语法上会这样注明?如果我们有三个嵌套函数,那么参数总是按照(3)(10)(20)中的顺序写出来吗?

javascript

4
推荐指数
1
解决办法
451
查看次数

ExtJS列渲染器

我的问题是ExtJS 4中GridPanel中列的渲染器功能.渲染器的记录应该从我的商店加载我的列表元素,它确实如此; 但它总是加载列表中的相同元素.

以下是我的代码的相关摘要.

首先是我的商店:

var nStore = Ext.create('Ext.data.Store', {
    storeId: 'people',
    fields: ['team', 'name', 'liste', 'sums'],
    data: [{
        team: 'TestTeam', name: 'TestPerson',
        liste: ['F', 'F', 'F', 'S', 'N', 'F', 'S',
            'S', 'S', 'F', 'F', 'F', 'S', 'A', 'N',
            'S', 'S', 'S', 'S', '', '', 'N', 'N',
            'N', 'S', 'S', 'N', 'S', 'F', 'N', 'N'],
        sums: [[7, 4, 0, 0, 0, 0, 0], [3, 0, 0, 0, 0]]
    }]
});
Run Code Online (Sandbox Code Playgroud)

然后是渲染器所在的列数组:

var counter = 0;
for (var i = 0; …
Run Code Online (Sandbox Code Playgroud)

javascript renderer extjs4

4
推荐指数
1
解决办法
497
查看次数

有人可以向我解释这个功能是如何工作的吗?

我正在学习编码,我正在尝试理解高阶函数和抽象.我不明白这段代码如何运行以返回"true".

function greaterThan(n) {
  return function(m) { return m > n; };
}

var greaterThan10 = greaterThan(10);

console.log(greaterThan10(11));
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

javascript abstract higher-order-functions

4
推荐指数
1
解决办法
80
查看次数

JQuery创建元素并使用.each()添加事件失败

原始的html只有2个超链接.

我想要

  1. 添加每个超链接后面的每个按钮.
  2. 当单击按钮显示每个超链接值时.
    如果我点击第一个按钮,将提示"ahref".
    如果我点击第二个按钮,将提示"bhref".

但结果是两个按钮警告"bhref".

<html>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
    $(document).ready(function(){
        $('a').each(function(){
            get_href=$(this).attr("href");
            new_ele = $("<button type='button'>test</button>");
            new_ele.click(function(){
                alert(get_href);
            });
            $(this).append(new_ele);
        });
    });
</script>
<body>
</body>
<a href="ahref" >a</a>      
<a href="bhref" >b</a>  
</html>
Run Code Online (Sandbox Code Playgroud)

each jquery

4
推荐指数
1
解决办法
32
查看次数

克隆JavaScript对象 - 包括Getters和Setter

在我正在进行的项目中,我不得不将对象克隆到变量中.
我第一次尝试 - 似乎是最明显的解决方案 - var obj2 = obj1然而我很快意识到这使得obj2 引用 obj1,所以每当我在obj2中设置属性时,属性也会在obj1中更新.好吧,我不能那样.所以,我开始寻找在JavaScript中克隆对象的方法 - 我发现了多个解决方案,主要是
var obj2 = JSON.parse(JSON.stringify(obj1))- 但这并没有保留我为我的对象定义的所有getter和setter!
对我来说现在最明显的解决方案似乎首先使用上面的JSON技巧使obj2具有所有obj1的属性,然后循环遍历所有对象getter和setter并使用它们添加它们Object.defineProperty(),但我还没有找到一种方法来获取一个对象的所有getter/setter.

javascript javascript-objects

4
推荐指数
1
解决办法
2710
查看次数

为什么在外部作用域中的变量内联等待与简单的等待赋值不同?

在我问这个问题之前,我确实研究了这个问题

我不明白为什么在下面的示例中,输出在run1和 中不同run2

"use strict";

function sleep(ms) {
  return new Promise(resolve =>
    setTimeout(() => {
      resolve(ms);
    }, ms)
  );
}

const seconds = [1000, 3000, 2000];

let output1 = 0;
let output2 = 0;

console.log("start");

(async function run1() {
  await Promise.all(
    seconds.map(async sec => {
      output1 = output1 + (await sleep(sec));
    })
  );
  console.log({ output1 });
})();

(async function run2() {
  await Promise.all(
    seconds.map(async sec => {
      const res = await sleep(sec);
      output2 = …
Run Code Online (Sandbox Code Playgroud)

javascript promise async-await

4
推荐指数
1
解决办法
97
查看次数