小编sta*_*wed的帖子

为什么Array.push.apply不起作用?

如所描述的在这里,一个快速的方法来追加数组b到阵列的在JavaScript是a.push.apply(a, b).

您会注意到对象a被使用了两次.我们真的只想要这个push函数,并b.push.apply(a, b)完成同样的事情 - apply的第一个参数this为应用函数提供了它.

我认为直接使用Array对象的方法可能更有意义:Array.push.apply(a, b).但这不起作用!

我很好奇为什么不,如果有更好的方法来实现我的目标.(应用该push函数而无需两次调用特定数组.)

javascript arrays apply

43
推荐指数
3
解决办法
5万
查看次数

如何使用反应路由器的普通锚链接

非常类似于这个角度问题:当使用react-router时,如何使用锚链接进行页内导航?

换句话说,在使用react-router时如何实现以下纯HTML?

<a href="#faq-1">Question 1</a>
<a href="#faq-2">Question 2</a>
<a href="#faq-3">Question 3</a>

<h3 id="faq-1">Question 1</h3>
<h3 id="faq-2">Question 2</h3>
<h3 id="fa1-3">Question 3</h3>
Run Code Online (Sandbox Code Playgroud)

目前,我拦截了对此类链接的点击,并滚动到锚点位置.这并不令人满意,因为这意味着无法直接链接到页面的某个部分.

javascript anchor reactjs react-router

35
推荐指数
4
解决办法
2万
查看次数

分配新的字符串值会创建需要收集的垃圾吗?

考虑这个javascript代码:

var s = "Some string";
s = "More string";
Run Code Online (Sandbox Code Playgroud)

在这种操作之后,垃圾收集器(GC)是否有工作要做?

(我想知道在尝试最小化GC暂停时是否应该担心分配字符串文字.)

e:我有点觉得好笑,虽然我在我的问题中明确说明我需要最小化GC,但是每个人都认为我错了.如果一个人真的必须知道具体的细节:我有一个javascript游戏 - 它在Chrome中运行良好,但在Firefox中有半频率暂停,这似乎是由于GC.(我甚至用Firefox的MemChaser扩展程序检查过,暂停与垃圾收集完全一致.)

javascript performance garbage-collection

8
推荐指数
1
解决办法
957
查看次数

如何迭代几个范围或迭代器的产品?

在Rust中有一种自然的方法来迭代几个范围或迭代器的"产品"吗?

当您在多维数组或某些状态空间上进行迭代时,会出现这种情况.例如,我想考虑具有5个元素的布尔元组的所有可能值.嵌套5个for循环有点笨拙.

iterator tuples rust

8
推荐指数
2
解决办法
1624
查看次数

最好在javascript或着色器中乘以矩阵?

我一直在看几个webgl示例.考虑MDN的教程.它们的顶点着色器将顶点乘以透视矩阵和世界位置矩阵:

gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);

uMVMatrix它本身是在一些矩阵库的帮助下在javascript中计算的几种变换(平移,旋转等)的产物.

似乎直接在着色器中计算他们的产品会更快; 肯定比在.js中做得更快.他们选择这种方法有什么理由吗?

现在,我猜你可以用这种方式以任意顺序堆叠任意数量的变换,这样更灵活.但是说不需要灵活性,有没有理由避免在着色器中直接进行变换?就像是

gl_Position = uPMatrix * uRotationMatrix * uScaleMatrix * uTranslationMatrix * vec4(aVertexPosition, 1.0);

e:要添加一些上下文,在我的特定情况下,我将只渲染2D矩形实体(主要是精灵),因此顶点的数量总是只有4.

鉴于引入库进行快速.js矩阵乘法的开销,似乎将这些计算推入着色器绝对是我的个人情况的方法.

(另外,即使它在平衡中比在javascript中执行速度慢,将计算分流到GPU中也可能是有价值的!)

javascript performance webgl

6
推荐指数
1
解决办法
2364
查看次数

请求付款会话时出现 Apple Pay“大规模启用”错误

我正在开发一个网络应用程序,该应用程序允许我们的客户在网络上与 Apple Pay 集成。客户设置自己的 Apple Pay 商家帐户,第三方处理实际的支付处理,但我们的服务器负责网络托管和获取支付会话。

对于某些客户,我们在获取付款会话时偶尔会收到 400 错误,并显示以下消息:

支付服务异常商家Id={id}未经授权代表商家Id={id}处理交易原因=“{id}从未授权通过{id}进行大规模启用交易”

(这里所有的{id}值都是相同的)。

尽管听起来像是帐户的配置问题,但这只会影响一些其他方面相同的请求。(相同的域名、商家身份等)它会影响一些客户,但不会影响大多数;当它确实影响客户时,10% 到 50% 的会话请求将以这种方式失败。我们有几个客户即使在处理了数千笔交易后也从未遇到过此错误。

“大规模启用”一词似乎没有出现在苹果的文档中,并且在搜索网络时,确切的短语“从未授权发生大规模启用交易”根本不会产生任何结果。我能找到的最接近的是苹果开发者论坛上的这个帖子,但它并不完全匹配,并且无论如何都没有答案。

有没有人看到这个错误并解决它?

(我也在通过苹果支持来解决这个问题;如果最终证明有效,我会更新答案。)

payment applepay

6
推荐指数
1
解决办法
3472
查看次数

除非还设置了字体大小,否则通过style.font设置font-family不起作用

我想通过一些JavaScript设置一些文本的字体.出于某种原因,我似乎只能在设置时也这样做font-size.这样可行:

el.style.font = "10px arial, serif"
Run Code Online (Sandbox Code Playgroud)

但事实并非如此

el.style.font = "arial, serif"
Run Code Online (Sandbox Code Playgroud)

(jsfiddle例子)

我知道还有其他方法可以设置字体,但由于其他原因,这种方法很方便 - 为什么它不起作用?

我已经检查了Firefox和Chrome,所以我认为这是我不理解的东西而不是bug.

javascript css fonts

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

在OpenGL着色器中进行main之外的计算是否合理?

我有一些顶点着色器代码有点像下面(这是一个简化的例子):

attribute vec2 aPosition;
attribute vec4 aColor;

varying lowp vec4 vColor;

uniform  vec4 uViewport;
mat4 viewportScale = mat4(2.0 / uViewport.z, 0, 0, 0,    0, -2.0 / uViewport.w, 0,0,    0, 0,1,0,    -1,+1,0,1);

void main() {
  vec2 pos = aPosition;
  gl_Position = viewportScale * vec4(pos, 0, 1);
  vColor = vec4(aColor.rgb*aColor.a, aColor.a);
}
Run Code Online (Sandbox Code Playgroud)

特别地,viewportScale矩阵是从主函数外部uViewport均匀计算的.从浏览器(WebGL)使用它,它似乎在我测试的每台机器上都能正常工作......特别是,当我更改变量时,矩阵会正确更新.这样做和在main函数中进行相同的计算有什么区别吗?我找不到任何与此相关的例子或讨论.viewportScaleuViewport

我遇到了一个相关的问题,这让我对这个问题有点偏执 - 至少,我想了解发生了什么.

opengl-es glsl webgl

2
推荐指数
1
解决办法
1244
查看次数