听过这样一种意见,n
描述算法复杂度的系数可以忽略不计。这是真的吗?
我认为这种观点是错误的,因为(尤其是在大输入数据上)和之间的差异O(n/2)
将O(n)
非常显着。
听过这样一种意见,n
描述算法复杂度的系数可以忽略不计。这是真的吗?
我认为这种观点是错误的,因为(尤其是在大输入数据上)和之间的差异O(n/2)
将O(n)
非常显着。
我不太明白什么是“特质”。有来自OOP的背景,但是我没有遇到这样的概念。
对 Rust 语言的一般特征的概念感兴趣,特别是(如果有任何你需要了解的特性)。
我正在寻找一个简单的解释。非常希望有应用和实现的例子。
我刚刚开始使用 TypeScript。
有这样的代码
let arr : number[] | number = [1, 2, 3];
function logOut(arr: number[]) : void {
arr.forEach((item) => {
console.log(item);
});
}
logOut(arr);
变量arr
可以是数字或数字数组。我明确地将它设置为一个数字数组。
该函数logOut
将一个数字数组作为其唯一参数。
现在一切正常,没有错误,代码运行没有问题。
我更改了代码,添加了条件覆盖arr
:在 50% 的情况下arr
,它将变得相等100
而不是[1, 2, 3]
let arr : number[] | number = [1, 2, 3];
arr = Math.random() > 0.5 ? arr : 100;
function logOut(arr: number[]) : void {
arr.forEach((item) => {
console.log(item);
});
}
logOut(arr);
这在 variable 的情况下非常适合编译器arr
,因为它明确指出它可以是一个数字数组和一个数字,但这不适合 function logOut
,因为它只接受一个数字数组作为输入。而且,正确地,TypeScript Playground 中的函数调用行以红色突出显示。
因此问题是:在不添加任何运行时检查的情况下,编译器如何知道调用函数时可能会发生错误?他是如何从仅添加的一行中弄清楚的?它有这么强大的静态分析仪吗?Math.random()
让它打开“高度警惕模式”?在不太明显的情况下会发生什么,如果我不小心编写了这样的代码,其中变量将在运行时更改其类型?TypeScript 是否以某种方式神奇地提供了所有可能的选项?
我请您建议如何操作块设备的分区。
例如,有一个闪存驱动器连接为 /dev/sdb。例如,它有一些分区 sdb1 和 sdb2。如何以编程方式修改此设备的分区?假设删除这两个分区,在未分配的空间中创建一个新的引导分区(带有 esp 和引导标志),例如,另外 2 个用于文件。
我在某处听到过一句话,他们说:“在 UNIX 中,一切都是文件。” 在 /sys/block 系统目录中,有关于块设备的各种信息。
实际上,因此问题。简单地修改这些文件来覆盖设备分区信息就够了吗?
不幸的是,通过简单的 Google 搜索无法获得太多结果,因为像“linux 编辑设备分区”这样的请求大多是针对此类事情(如 fdisk、cgdisk 等)已经编写好的软件提供的。
所以也许有人知道你可以在哪里阅读更多关于这个的信息?最好是英文的。或实现此功能的代码示例(哪种语言无关紧要)。
您需要对刚刚使用 JavaScript 创建的元素应用一些强制样式elem
。由于这些属性是绝对强制性的,绝不应该允许它们被覆盖,因此决定使用!important
.
elem.style.color = "red !important";
但是,这是行不通的。上网一翻,发现!important
只能通过属性cssText
(嗯,或者通过setAtribute
)来设置属性。
elem.style.cssText = "color: red !important;";
是的,它似乎真的有效。但是,我不明白为什么在这样的设置之后可以覆盖属性的值:
elem.style.color = "green"; // работает! Текст действительно становится зеленым. Хотя, по идее, не должен.
此外,我不清楚为什么即使该!important
属性不能在.css
文件中被覆盖。
let elem = document.querySelector("#test");
elem.style.color = "red";
#test {
color: green;
}
<div id="test">Hello</div>
我要求解释。
ECMAScript根据需要定义了2 种类型的作业:Promise Jobs 和 Script Jobs。Promise Jobs 的情况很清楚:您为自己创建了一个 Promise 或异步函数 - 就是这样,一个新的 Promise Job 被创建并添加到队列中。
但是脚本作业呢?创作这类作品需要做什么?
我知道 Script Jobs 还包括模块代码。但是在导入模块时不是立即执行吗?尽管规范说工作需要“延迟”并稍后执行(如 Promises 的情况)。
简而言之,启动一个新作业并将其添加到 Script Jobs 队列需要做什么?
function foo() {
return this;
}
let bar = {
foo
};
console.log(
foo(),
bar.foo(),
(bar.foo)(),
(bar.foo = bar.foo)(), // здесь
);
实际上,很清楚为什么它bar.foo()
会返回bar
。为什么(bar.foo)()
会回来bar
- 太。但是为什么上下文在最后一个表达式中丢失了一点也不清楚。
也不清楚这种结构的作用。它最终会导致什么?左操作数还是右操作数?(很明显,在这种特殊情况下没有区别,但我说的是一般情况)。
有一个这样的类定义:
class Field {
constructor(canvas) {
const CANVAS = document.querySelector(canvas);
const CONTEXT = CANVAS.getContext("2d");
return Object.assign(CONTEXT, Field.prototype); // *
}
prototypeMethodName() {
return "something";
}
}
console.log(new Field("canvas"));
<canvas></canvas>
我想在调用时new Field()
返回一个对象CONTEXT
,类中描述的其他方法将混合到该对象中。也就是说,将CONTEXT
包含浏览器描述的所有属性以及我描述的属性。
但最后我得到了一个 "bare" CONTEXT
,不包含我的属性。
由于某种原因,我不能只让带有原型的版本工作,混入或完全不同的对象是行不通的this
,但原型存在某种问题。
告诉我为什么这种方法可能行不通,以及如何使它全部工作?
我只是无法理解与现代网络世界相关的一些基本事物。
有框架:Angular、Vue、React。它是前端框架还是后端框架?这个问题对你来说可能看起来很愚蠢,但我问得非常合理:我不明白为什么 Angular(现在我只会谈论它,但总的来说,其余的一切都是正确的)定位作为前端框架,而在各种文章中提到 MVC、路由器和类似的东西,在我看来,它们只与服务器有关?例如,我无法想象客户端路由器的用途。
另一方面,Angular 是通过 Node 的包管理器安装的,而 Node 是一个服务器。令人尴尬的是,它出现在 HotFrameworks 评级中,似乎只评估后端框架。此外,它与 .NET MVC、Ruby On Rails 等框架一起存在,它们的“服务器”性质不会引起我的任何怀疑。
另一方面,我个人angular-min.js
在客户端看到了类似的文件。总的来说,我完全感到困惑,并寻求帮助以弄清楚谁是谁,什么是什么以及什么需要什么?
如果问题非常愚蠢并且我错过了一些明显的事情,我会提前道歉。谢谢你。
此外,在问题完全是关于 Angular 之后。Angular 和 Angular.js 是同一个框架吗?还是2个不同的?
问完问题后的思绪飞扬。
在所有这些混乱中,我也很困惑,因为它们(似乎)都为它们的主要功能提供了某种“组件”和“虚拟 DOM”。以及如何将接口组件和任何 DOM 与服务器进行比较——我不知道。
例如,还有快递。现在它对我来说“类似服务器”是毫无疑问的,因为它立即清楚了框架要解决哪些任务。
与 ROR 相同。尽管他强加了关于前端的观点,但他仍然是后端。还有更多关于 ROR 的信息。据我记得,在那里,他们还引入了某种与 React 和 Vue 的集成。但她是什么样的人,如何处置她,我在任何地方都没有找到。
(function(x, f = () => x) {
var x = 2;
console.log(f());
})(1)
似乎是最简单的代码,从逻辑上讲,它应该返回2。但它返回1。
我相信如果将这种行为f
声明为:
f = (() => x)()
f = x
在这些情况下,该值f
将被计算一次并且已经是常数(很明显,那时f
不可能将其作为函数调用,但现在不是这样)。
但是,由于f
是一个我认为应该根据 的值以不同方式执行的函数,x
所以代码的行为对我来说并不清楚。
我想当被调用时,该函数f
将返回 value x
,此时它已经等于2(被上面的行覆盖)。但该函数仍然返回1。为什么?
经过反复试验,发现如果f
在函数体中重写,
(function(x, f = () => x) {
f = () => x;
var x = 2;
console.log(f());
})(1)
然后代码开始按我的预期工作。由此我得出结论,这里的决定性因素是定义函数的位置(即,它被定义为参数的默认值)。但是,再一次,为什么这很重要?
在写这个问题时,我更进一步,还发现x
. 如果代码看起来像这样(没有关键字var
),
(function(x, f = () => x) {
x = 2;
console.log(f());
})(1)
那么结论又是合乎逻辑的 - 2。
同时,我假设的第一件事是,由于函数是在参数字符串中定义的(作为默认值),所以它的值x
不是作为函数体x
中变量的值,而是作为值。但是无论是在场还是在场,价值本身都不会改变。这是函数执行的结果——是的。所以这是另一回事。唯一的问题是什么?argument[0]
var
arguments[0]
在各种文献中(特别是在 Wikipedia、Stefanov、Soshnikov 上),JavaScript中的函数被称为“一等对象”。很明显,函数是一个对象。但是为什么“头等舱”以及它通常意味着什么 - 在任何地方都没有解释。因此,请解释。也许有一些标准可以将某物定义为一流的对象?
据我了解,只有在 NPM 包的版本已更改时,您才能更新它。但是如果我不想发布新版本,但我需要更新包怎么办?例如,如果我修复了 README 文件中的错误,而没有修复代码中的任何内容。是否可以在不更新包版本(包括在 GitHub 上)的情况下以某种方式更新注册表中的包?
我想使用 GitHub Pages 服务为我的存储库创建一个网站。阅读文档后,我自己发现托管/在站点上工作的最方便(至少对我个人而言)方式是将其文件存储在单独的分支gh-pages
中。
问题是无论我从 ( git branch gh-pages
) 分支到哪里,这个新分支的状态都将等于该分支起源的分支的状态。而且,由于它 ( gh-pages
)只能在站点上运行,所以我不需要将项目本身的所有文件都保存在其中(更不用说它们在分支时的形式)。
当然,您可以在第一次提交的情况下删除这些不必要的文件。但我不太喜欢这个解决方案,因为:
master
例如),那么这个提交将删除项目所需的文件(当然,如果我理解正确的话)。对我来说,理想的选择是能够不从任何分支,而是从根(如果您想将存储库视为树,则从树干)分支。为什么?因为站点上的工作与项目本身的工作没有任何联系,这意味着分支必须从无到有(即在创建时最初为空)获取其“初始状态”。
我想知道如何实现上述内容(以及是否有可能)?或者也许有一个更合理的解决方案来满足我的目的?如果是这样,我很想听听。
该元素需要从页面中删除。这个元素现在有一个事件处理程序transitionend
,当转换完成时会触发它的回调(元素删除)。
问题是用户自己决定他是否需要过渡。如果用户决定不需要它们并且没有将它们添加到样式中,那么相应地,事件transitionend
将永远不会发生并且元素将永远不会关闭。
首先,我假设挂起至少一些会transition
解决问题(即使持续时间 === 0),但事实证明,即使在这种情况下,事件也不会发生。
因此,我决定首先我需要以某种方式确定元素是否具有这样的 css 属性。并且,如果它不存在,则立即删除该元素,而不附加transitionend
.
问题是我不知道该怎么做。有点上网匆忙发现(我真的不知道信息的相关性如何)没有内置的检查方法。
或许现在情况发生了变化。但是,如果没有,那么我要求您为定义函数提供一个近似算法。
我在MDN上阅读了以下内容:
如果在被删除的事件正在运行时调用它,则不会从 EventTarget 中删除 EventListener。
问题很明显:我不知道事件何时会发生。但是,尽管如此,当它发生时,我需要以某种方式删除处理程序。
所以这样的事情是行不通的:
var func = function(event) {
// ...
el.removeEventListener("event", func);
};
el.addEventListener("event", func);
如果你这样做:
el.addEventListener("event", func);
el.removeEventListener("event", func);
那么,显然,处理程序将在挂起后立即被删除。因此,该事件将无法捕获。
实际上,“解决方法”的兴趣。有一个想法是实现一些“后过滤器”,每次回调执行后都会执行,但是这个“后过滤器”本身将成为同一个回调的一部分,这意味着处理程序不会被删除.
关于独立搜索解决方案。搜索。偶然发现了这个答案。为什么它应该起作用 - 我不明白,因为它与 MDN 的话相矛盾。这里的情况类似。
function A() {
this._init.apply(this, arguments);
}
A.prototype._init = function() {
// ...
}
let a = new A();
我不明白为什么这个划分是必要的?如果构造函数体中的所有代码都可以放在构造函数本身中,为什么还要在同一个对象的上下文中调用构造函数体中的另一个方法呢?这样的划分有什么好处?
并进一步。为什么#apply() 在这里?一个简单的调用不会this._init(arguments)
完成同样的事情吗?
初始化存储库。创建了一个线程branch-1
。在其中创建第一个文件,提交。创建了一个线程branch-2
。在其中创建了第二个文件,进行了提交。创建了一个线程structure
。将 2 个先前创建的文件从项目根目录移动到子文件夹。做了一个承诺。切换到master
。现在如何合并master
来自所有分支的所有更改?现在,当然,您可以手动重写它们的名称,但是如果我创建了一百个这样的分支怎么办?怎样成为?
分叉项目,对其进行更改,创建拉取请求,然后将其合并。我现在应该如何处理我存储库中该项目的分支?我可以删除它吗?我只是对“这将永久删除 smellyshovel/language-javascript 存储库、wiki、问题和评论,并删除所有合作者协会”这一短语感到困惑,尤其是它的结尾,他们说,所有合作者协会都将被删除. 怎样成为?