小编msh*_*ang的帖子

"范围"如何与HTML文档中的Javascript的多个脚本标记一起使用?

我不太确定<script>标签之间发生了什么.例如,以下内容在Chrome中提供了参考错误和类型错误:

<html>
    <head>
    <script type="text/javascript">
        T.prototype.test = function() {
            document.write("a");
        }
    </script>
    <script type="text/javascript">
        function T() {}
        var v = new T();
        v.test();
    </script>
    </head>
    <body>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

但这有效:

<html>
    <head>
    <script type="text/javascript">
    </script>
    <script type="text/javascript">
        T.prototype.test = function() {
            document.write("a");
        }
        function T() {}
        var v = new T();
        v.test();
    </script>
    </head>
    <body>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

html javascript

23
推荐指数
2
解决办法
9092
查看次数

如何使用OpenMP并行化通过C++ std :: list的for循环?

我想使用OpenMP以并行方式遍历std :: list中的所有元素.循环应该能够改变列表的元素.有一个简单的解决方案吗?当迭代器是随机访问迭代器时,似乎OpenMP 3.0支持并行for循环,但不是其他.无论如何,我更喜欢使用OpenMP 2.0,因为我无法完全控制哪些编译器可供我使用.

如果我的容器是矢量,我可能会使用:

#pragma omp parallel for
for (auto it = v.begin(); it != v.end(); ++it) {
    it->process();
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以将列表复制到矢量中,执行循环,然后将所有内容复制回来.但是,如果可能的话,我想避免这种复杂性和开销.

c++ parallel-processing list openmp

20
推荐指数
1
解决办法
1万
查看次数

在定义宏中是否优化任何C或C++编译器?

假设我在C或C++中有以下内容:

#include <math.h>
#define ROWS 15
#define COLS 16
#define COEFF 0.15
#define NODES (ROWS*COLS)
#define A_CONSTANT (COEFF*(sqrt(NODES)))
Run Code Online (Sandbox Code Playgroud)

然后,我去使用NODESA_CONSTANT内许多嵌套循环深的地方(即多次使用).显然,两者都有可以在编译时确定的数值,但编译器实际上是这样做的吗?在运行时,CPU是否必须在15*16每次看到时进行评估NODES,还是编译器静态放置240?同样,CPU每次看到时都必须评估平方根A_CONSTANT吗?

我的猜测是ROWS*COLS乘法被优化了,但没有别的.整数乘法内置于语言中,但sqrt是一个库函数.如果确实是这种情况,有没有办法得到一个等效的幻数,以便A_CONSTANT在运行时只计算一次平方根?

c c++ compiler-optimization c-preprocessor

9
推荐指数
4
解决办法
4228
查看次数

在 clearInterval 后执行代码

我有一个setInterval显示动画的循环调用。

当我clearInterval响应用户输入时,队列中可能有一个或多个循环回调。如果我直接在clearInterval语句之后放置一个函数调用,则函数调用首先完成(将某些内容打印到屏幕上),然后执行排队循环回调,删除我想要打印的内容。

请参阅下面的代码。

function loop() {
    // print something to screen
}

var timer = setInterval(loop(), 30);

canvas.onkeypress = function (event) {
    clearInterval(timer);
    // print something else to screen
}
Run Code Online (Sandbox Code Playgroud)

处理这个问题的最佳方法是什么?把延迟放在// print something else to screen? 在循环内进行新打印?

编辑:感谢您的回答。为了将来参考,我的问题是触发额外打印的事件被隐藏在循环中,因此一旦执行,控制权将交还给未完成的循环,然后将其覆盖。干杯。

javascript canvas callback setinterval clearinterval

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

使用 Function.prototype.call 作为回调

我在 Google Chrome 控制台中尝试了以下操作:

> function t1(f) { return f(1); }
> function t2() { return this+1; }
> t1(t2.call)
TypeError: object is not a function
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?有没有办法定义一个函数来代替 Function.prototype.call 可以在这里工作?

javascript function callback

3
推荐指数
1
解决办法
478
查看次数