小编Jar*_*ith的帖子

是否应评估或存储循环限制?

在C++中,将变量的限制存储在变量中比评估值更快吗?

例如:

这是一种较慢的使用方法

for(int i=0; i<n*n+2*n; ++i)
{ .... }
Run Code Online (Sandbox Code Playgroud)

而不是做以下?

for(int i=0, limit=n*n+2*n; i<limit; ++i)
{ .... }
Run Code Online (Sandbox Code Playgroud)

为清楚起见,假设n某个给定变量在循环过程中保持不变.

c++ optimization

17
推荐指数
2
解决办法
1819
查看次数

为什么 Clojure 中的 0 不是假的?

因此,在弱类型 C 中,0 在布尔上下文(如条件表达式)中被评估为 false,而其他所有内容都是 true。现代动态语言似乎在零是否为假的问题上存在分歧:Python、PHP 和 Javascript 说是,而 Ruby、Lua、Clojure 和 Racket 说不是。

问题是,为什么?我用谷歌搜索了我的问题标题,并在黑客新闻上找到了这个帖子,其中有有趣的内容,但没有回答我的问题。在我的搜索中用“lisp”替换 Clojure 没有产生任何历史参考。

因此,为了更准确地阐述我的问题:在条件表达式中零评估是否有实际的技术优势,或者它只是成为动态语言中的准标准(不受 C 的影响)早期的口齿不清?对于习惯 C/Python/Javascript 的程序员来说,这绝对有点奇怪。

clojure conditional-statements

12
推荐指数
1
解决办法
5203
查看次数

何时在加载脚本时使用async vs defer?

所以我最近了解到将你的js置于DOM的底部是过时的,我应该再次将它们放入<head>"async"和"defer"属性中.

大.但基于优先级,我对应该使用哪个有点困惑.

所以我有:

  • jQuery的
  • jquery插件对页面外观没有直接影响
  • jquery插件对页面外观有直接影响
  • 我自己的个人脚本,它们对页面的外观有直接影响,并且还依赖于jquery

哪个应该异步,哪个应该延迟?

如果我理解了这一切,那些对网站外观没有直接影响的应该延迟,而其他一切都是异步的.正确?或者我把这些混淆了.

html javascript jquery asynchronous

11
推荐指数
1
解决办法
3584
查看次数

使用 .mjs 文件时解析节点中的路径

我正在使用模块格式在节点中编写一个快速/简单的部署脚本,mjs以便我可以使用模块语法。

我在文件中所做的一件事是根据当前模块的目录从相对路径解析绝​​对路径。

过去我会做类似的事情:

const path = require("path") 

const distPath = path.resolve(__dirname, "..", "dist")
Run Code Online (Sandbox Code Playgroud)

但在模块 js 中我丢失了__dirname符号并收到错误:

ReferenceError: __dirname is not defined
Run Code Online (Sandbox Code Playgroud)

所以我跳到网上看看这是什么 mjs 版本(woof,搜索“mjs 中的解析路径”或任何排列,这是粗略的b/c 一切都指向原始的执行方式:P),以及从什么我了解到我可以这样做:

import { dirname, resolve } from "path"
import { fileURLToPath } from "url"

const distPath = resolve(dirname(fileURLToPath(import.meta.url)), "..", "dist")
Run Code Online (Sandbox Code Playgroud)

这是有效的,但打字很困难。

如果这是正确的方法,那么我只会记住新方法,但这感觉像是一个常见的任务,必须有更好的方法在模块 js 中执行它,但我只是还没有找到它。

还有其他选择吗?

javascript node.js

9
推荐指数
1
解决办法
1214
查看次数

有没有人为javascript提出了一个Pipe运算符?

许多语言都有一个运算符,允许您将一个操作的结果传递给另一个操作的调用(例如|bash中的|>操作符,F#中的操作符).

我对javascript中方法链接的常用习语的一个很大的好处是它从上到下,从左到右读取:

var fooOddSquares = [1, 2, 3, 4, 5]
    .filter(x => x % 2)
    .map(x => "foo" + x * x)
    .reduce(((acc, str, i) => acc[i + 1] = str; return acc), {});

// => {1: "foo1", 2: "foo9", 3: "foo25"}
Run Code Online (Sandbox Code Playgroud)

与组成代码相比:

var something = func5(
    func4(
        func3(
            func2(
                func1(
                    somedata
                )
            )
        )
    )
);
Run Code Online (Sandbox Code Playgroud)

从右到左,从下到上阅读.我意识到这可以通过功能组合来清理,但这不一定是重点.只是为了清楚地了解我正在寻找的东西:

var something = func1(somedata)
    |> func2
    |> func3
    |> func4
    //etc...
Run Code Online (Sandbox Code Playgroud)

在javascript中对管道运算符进行谷歌搜索主要会显示有关按位OR运算的信息.随着一些挖,但是我能挖了这个文章描述运算符重载的卑劣破解版本,可以实现什么我谈论的东西.我还挖掘了这个描述所述运算符的要点,并说"它已被提议用于javascript".

看看ES 2016,我看到了一个求幂运算符和绑定运算符的提议.两者都很有用,但不是我想要的.所以根据要点的标题,有没有人真的为javascript提出这个?

javascript functional-programming

7
推荐指数
3
解决办法
2539
查看次数

在多次调用同一函数时重用数据的最pythonic方法是什么?

通常我不会问这样的问题,但是python似乎有1.一个不同寻常的社区对习语的共识,并且倾向于通过使它们更高效来鼓励它们(例如列表理解对比地图,过滤器).

这是我在编码时发现自己使用的模式,请考虑以下JavaScript:

var f = (function() {
  var closedOver = "whatever"
  return function(param) {
    // re-uses closure variable again and again with different param
  }
})();
Run Code Online (Sandbox Code Playgroud)

或者C:

int foo(int x)
{
  /* 
    compile-time constant, will not be recalced for every call,
    name 'someConst' not visible in other scopes 
  */
  const int someConst = 134;
  /* do stuff */
  return whatever;
}
Run Code Online (Sandbox Code Playgroud)

一些可能的方法转换为python:

globalConstant = someConstant
def foo(param):
    # does stuff with param and constant
    return whatever
Run Code Online (Sandbox Code Playgroud)

或者可能:

from functools import …
Run Code Online (Sandbox Code Playgroud)

python

7
推荐指数
1
解决办法
431
查看次数

为什么 Typescript 无法弄清楚我的代码中的类型?

为什么 Typescript 编译器会抱怨以下代码?

type Foo = {
  a: string
}

type Bar = {
  b: number
}

type Baz = Foo | Bar;

function f(x: Baz): number {
  if (x.a) { // property 'a' does not exist on type Bar!
    return 0;
  }

  if (x.b) { // property 'b' does not exist on type Foo!
    return 1;
  }

  return -1;
}
Run Code Online (Sandbox Code Playgroud)

链接到游乐场

narrowing typescript

7
推荐指数
1
解决办法
89
查看次数

用于事件的参数是什么?我怎么知道?

element.onkeypress = function(e) {
                    if(e.keyCode) {
                        element.keyCode = e.keyCode;
                    } else {
                        element.keyCode = e.charCode;
                    }
                };
Run Code Online (Sandbox Code Playgroud)

同样在java脚本中,也有

<input onChange="a(event)"/>
<script>
function a(event) { 
    alert(event.target.value);
}
</script>
Run Code Online (Sandbox Code Playgroud)

作为参数接收,我如何知道是否必须为参数而不是e设置事件?第二个例子不会工作,如果它的参数是除了事件以外的任何东西都不是javascript?

html javascript

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

如何让 npm 或 yarn 从 github 安装特定版本的特定子包?

我有一个仓库,我从 github 上的一个项目中分叉出来,结构如下:

myfork.git
  |
  -- packages
        |
        --subpackage1
              |
              --package.json
        |
        --subpackage2
              |
              --package.json
Run Code Online (Sandbox Code Playgroud)

我在一个单独的分支 foo 中对 subpackage1 做了一些小的修改。现在我想在一个项目中使用它。所以我尝试了以下

yarn add https://github.com/myuser/myfork.git/subpackage1#foo
yarn add https://github.com/myuser/myfork.git/packages/subpackage1#foo
Run Code Online (Sandbox Code Playgroud)

然后我尝试没有分支说明符。然后我尝试npm install代替yarn add. 然后我尝试只安装除了基本 url 之外的任何东西都失败了,因为顶级package.json. 我显然在这里遗漏了一些东西,但我无法弄清楚是什么。

javascript github npm lerna yarnpkg

6
推荐指数
0
解决办法
616
查看次数

如何在ClojureScript中编写不可知的JavaScript库?

假设我有一个cljs包含以下内容的文件:

(ns foo)
(defn add [x y]
  (+ x y))
Run Code Online (Sandbox Code Playgroud)

并希望将其作为JavaScript库提供给非ClojureScript开发人员(主要侧重于node.js)。我可以做这个:

clj -m cljs.main -c foo
Run Code Online (Sandbox Code Playgroud)

但是问题在于输出是针对Google闭包的模块系统(例如goog.require)的。我可以将目标设置为none带有-t标志(而不是浏览器或节点),并且...无法解决此问题。将其设置为node还不能解决问题:否index.js(在Java中称为main),no module.exports = blah blah。似乎它面向的是独立的全节点应用程序,而不是库。

我知道ClojureScript使用google闭包作为其自身的子模块,并且我不一定要摆脱所有这些问题(我不确定您可以这样做)。而且我知道es2015本机JavaScript模块由于其静态特性而退出市场。

可以手动或通过脚本对输出进行按摩,以使其与npm生态系统完美配合,但是令我惊讶的是,没有编译器选项可以实际输出npm友好模块。还是在那里?我只是读--help错了吗?

clojurescript clojurescript-javascript-interop

5
推荐指数
2
解决办法
99
查看次数