- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
The Managing arguments
section in Bluebird's article on Optimization killers指出:
The
arguments
object must not be passed or leaked anywhere.
换句话说,不要做以下事情:
function leaky(){
return arguments;
}
但是这样做:
function not_leaky(){
var i = arguments.length,
args = [];
while(i--) args[i] = arguments[i];
return args;
}
随着Rest paramters的引入,传递rest参数数组还会导致优化问题吗?据我了解,问题是我们不能让实际的 arguments
对象松动。 arguments
的有限定义副本是可以的,但不是实际的 Object 本身。如果是这种情况,以下列方式使用时,其余参数是否被视为 arguments
的 OK 和可优化副本?
function maybe_optimizable(...args){
return args;
}
具体来说,我正在尝试根据 David Walsh's debounce
function (which is based on Underscore.js') 编写一个 debounce
函数我认为将 arguments
分配给 debounce
函数顶部范围内的变量存在问题。为了纠正这个问题,我写了以下内容:
function debounce(func, wait, immediate) {
let timeout;
return function (...args) {
let context = this,
now = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(() => {
timeout = null;
if (!immediate) {
func.apply(context, args);
}
}, wait);
if (now) {
func.apply(context, args);
}
};
}
最佳答案
arguments
对象的挑战之一是它需要是参数值的实时集合,即使它们被重新分配 em>。看看即使是具有原始值的(参数)变量如何在没有任何显式赋值的情况下被更改,并且它发生在函数之外:
function modify(arr) {
arr[0] = 3;
}
(function (a) {
console.log('arguments is an ' + arguments.constructor.name);
console.log('a is ', a);
modify(arguments);
console.log('after calling modify, a is ', a);
})(0);
参见 this blog有关此类行为的更多信息。
可以想象,当这样一个对象四处游荡,永远不会失去这种神奇的能力时,代码优化将成为一场噩梦。
这当然不会发生在普通数组中,你用扩展语法得到的数组确实是一个普通数组:
(function (...args) {
console.log('args is an ' + args.constructor.name);
})(0);
您可以放心(没有双关语意),上面提到的关于 arguments
的代码优化问题不适用于 ...args
。
正如 Bergi 提到的。当使用其 arguments
变量的函数以严格模式 JavaScript 编写时,arguments
的实时语义不再存在:
function modify(arr) {
arr[0] = 3;
}
(function (a) {
"use strict"; // <-----
console.log('In strict mode');
console.log('arguments is still an ' + arguments.constructor.name);
console.log('a is ', a);
modify(arguments);
console.log('after calling modify, a is still ', a);
})(0);
如 mdn's article on strict mode 中所述:
strict mode code doesn't alias properties of
arguments
objects created within it. In normal code within a function whose first argument isarg
, settingarg
also setsarguments[0]
, and vice versa (unless no arguments were provided orarguments[0]
is deleted).arguments
objects for strict mode functions store the original arguments when the function was invoked.arguments[i]
does not track the value of the corresponding named argument, nor does a named argument track the value in the correspondingarguments[i]
.
关于javascript - 休息参数是否允许优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45333685/
假设我有两个集合资源: /persons /organizations 一个 GET至 /persons/id/返回一个特定的人。同样,一个 GET至 /organizations/id返回一个特定的
这个问题在这里已经有了答案: Rest best practice: when to return 404 not found (1 个回答) 关闭 7 年前。 我有以下 API: api/gues
背景: 我正在尝试创建一个系统,允许用户对其他用户撰写的评论进行投票(类似于 Reddit)。用户可以选择三个投票值:-1、0 或 1。我创建了一个 POST API(使用 django Rest-f
我正在尝试使用休息调用,该调用获取操作系统中文件的位置。作为返回,其余调用模拟文件的下载。 下面是代码 Welcome to CoinPay Click on bel
我正在向后端发送一个文件,这是上传代码: export class FileUploadComponent { @Input() multiple: boolean = false; @Vie
字符串用户年龄; while(true){ System.out.println("Enter user Age"); userAge = scInput.ne
我正在使用堆栈进行括号检查。包含 break; 语句的 if else 语句之一导致段错误。 我尝试删除 break 程序运行正常但打印错误答案,因为需要 break 才能打印正确的输出。这种段错误的
我是新手,正在学习编程,但无法正确“中断”它。如果硬币不是 0、5、10 或 25,它应该“打破”(最后一个 if)。该程序应该像自动售货机一样工作,只使用 10 美分、5 分硬币、25 美分硬币,当
每次“打破”for-each 结构(PHP/Javascript)时,我都觉得很脏 所以像这样: //Javascript 示例 for (object in objectList) { if
对于这段代码: type Callback = (err: Error | null, result: String) => void; let apiThatAcceptsCallback = (c
如何获取 teamcity build 的变化?我得到以下 URL,其中列出了所有构建更改并提供了一个 URL,我们可以使用该 URL 查看更改 http://teamcityserver/httpA
社区 我正在寻找有关富文本的一些建议。目前的问题是:在后端(在数据库中)存储和管理富文本内容的最佳方式是什么。为什么这看起来像个问题,因为我们可以有多个平台:桌面、移动、网络,这会带来问题。 据我所知
我在向 html 返回错误时遇到问题。所以,我有带有“sql解释器”的网络应用程序。 HTML 在解释器中输入查询后,我在 javascript 中运行 POST 并拍摄到 sprin
我正在尝试为 Rest Controller 进行单元测试。我为经理对数据库访问做了一个 stub (~mock),它运行良好。我唯一的问题是,当我开始单元测试时,它不会启动应用程序。 如何从我的单元
我想使用 azure blob Rest api 创建文件夹,并且还想检查文件夹是否存在。 Hierarchy: arjun/images/ arjun/Videos/001.avi arjun/Vi
我正在寻找使用 django Rest 和 Angular 处理用户登录的最佳方法。目前我正在 Controller 中执行此操作, $http.post('accounts/login/', $sc
我想设计一个允许客户端上传图像的 API,然后应用程序创建图像的不同变体,例如调整大小或更改图像格式,最后应用程序将每个变体的图像信息存储在数据库中。当我尝试确定实现此任务的正确策略时出现问题,这里有
我无法使用 Angular Ajax 连接我的服务器 web2py Restful,但如果我在浏览器中设置 url,它就可以工作,但我不能在 Angular ajax =( Angular 链接
我想在我的项目中添加一个 rest api,因此我需要一个选择性的 mysql 语句 bt 我总是回来 { “错误”:“(1054,你\“'where子句'中的未知列'无'\”)” 代码有什么问题?我
我想为自己创建一个启动/停止 Azure VM 机器人。我想做的是拥有一个 slack/telegram 机器人,它可以监听消息并通过命令/start/stop 启动/停止我的虚拟机。我应该使用什么
我是一名优秀的程序员,十分优秀!