匿名函数和内存消耗

2024-03-20

就内存消耗而言,这些是否等效,或者我们是否为后者中的每个对象获得一个新的函数实例?

var f=function(){alert(this.animal);}
var items=[];
for(var i=0;i<10;++i)
{
    var item={"animal":"monkey"};
    item.alertAnimal=f;
    items.push(item);
}

and

var items=[];
for(var i=0;i<10;++i)
{
    var item={"animal":"monkey"};
    item.alertAnimal=function(){alert(this.animal);};
    items.push(item);
}

EDIT

我认为为了让闭包正常工作,第二个实例确实会在每次传递时创建一个新函数。它是否正确?


您应该更喜欢第一种方法,因为每次解释器通过该行时,第二种方法都会创建一个函数。

关于您的编辑:我们始终处于同一作用域,因为 JavaScript 具有函数作用域而不是块作用域,所以这might可以优化,但我没有遇到不是每次都创建它的实现。我建议不要依赖这种(可能是可能的)优化,因为如果您广泛使用此技术,缺乏支持的实现可能会超出内存限制(这很糟糕,因为您不知道什么实现将运行它,对吧?)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

匿名函数和内存消耗 的相关文章

随机推荐

  • 通过 BlackBerry 发送 POST 数据后获取 HTML 响应

    我需要在发送 POST 数据后从 URL 读取 HTML 响应 我已经有以下两个函数 但我不知道如何组合它们 以便我可以发送 POST 数据并获取响应 此函数获取标准 HTML 响应 public static String getData
  • Java Rest api 需要等待才能处理

    我有一个 Java Rest API 物联网设备将使用它来发送数据 每个设备都有一个时间段 比如 15 秒 与 API 进行通信 在该时间段内 可以有多个具有相同数据集的消息 我想要做的是 当 API 从设备接收到新消息时 它会等到时间段结
  • basic_ostringstream::str 悬空指针

    最近我发现了以下代码中的错误 ostringstream o o lt lt some string const char s o str c str empty string instead of expected some string
  • librosa.effect.Split的返回值很奇怪

    正如标题所示 这个函数的结果不符合逻辑 我不明白这个函数在做什么 例如 这里是一些可重现的代码 load sample audio filename librosa util example audio file audio sr libr
  • 推送到远程分支(无法更新引用)

    我有一个带有功能 初始更改分支的远程存储库 现在我想将一些文件从本地功能 初始更改分支推送到此远程分支 我浏览了一些关于推送到远程分支的帖子并尝试了一些方法 但我仍然遇到相同的错误 添加并提交后 我得到以下 git 状态 Sakibs Ma
  • Azure WebJobs SDK 服务总线死信队列

    使用 WebJobs SDK 时 将 BrokeredMessage 移动到死信队列的正确方法是什么 通常我只会调用 msg DeadLetter 但是 SDK 负责管理代理消息的生命周期 如果方法返回成功 它将调用 msg Complet
  • 如何在按下按钮后以动画方式显示 UIPickerView?

    我想在按下按钮后为 UIPickerView 制作动画 我已经将 UIPickerView 编码为隐藏在 viewDidLoad 上 并且在按下按钮后不会隐藏 但它的动画效果不像 ModalViewController 默认情况下的动画效果
  • 包更新到 Angular 5 最新版本,但 npm 未使用 Angular 模板在 Visual Studio 2017 中更新

    我已将 Visual Studio 2017 模板中的 Angular 4 更新为 Angular 5 我按照链接中的说明进行操作http www talkingdotnet com upgrade Angular 4 app Angula
  • 如何计算滚动 idxmax

    考虑pd Series s import pandas as pd import numpy as np np random seed 3 1415 s pd Series np random randint 0 10 10 list ab
  • 函数对象的好处?

    我知道STL中使用的函数对象只是简单的对象 我们可以像函数一样操作它 我可以说函数和函数对象的工作原理是相同的 如果这是真的 那么为什么我们应该使用函数对象而不是函数呢 主要好处是对函数对象 函子 的调用通常是可内联的 而对函数指针的调用通
  • AngularStrap 选项卡加载 html 片段

    我目前正在使用 Twitter Bootstrap 开发 AngularJS 项目 并尝试将我的 Bootstrap 指令转换为 Angular 我决定使用 AngularStrap 因为它提供了对 Bootstrap Select 的支持
  • 如果 c =a,b,c 的值是多少;

    int a 0 int b 1 int c a b int d a b 在初始化之外 逗号 ina b is the 逗号运算符 并评估为b 涉及行中的括号d造成这样的情况 所以该行实际上相当于 int d b 然而 在涉及c 这不是逗号运
  • 如何解决 Java Swing 登录窗口中的这些可视化问题?

    我是 Java Swing 的新手 但我遇到了一个问题 我必须创建一个登录窗口 灵感来自这样的图像 像这样 scilicet 窗口必须显示 2 个文本字段 用户在其中插入用户名和密码以及一个按钮来执行登录操作 好的 我认为这非常简单 我已经
  • bind_param 中的参数数量未知[重复]

    这个问题在这里已经有答案了 当您不知道要接收的参数数量时 你们会怎么做 例如 if a 1 filter AND u name if b 1 filter AND u address if c 1 filter AND u age if d
  • 将布尔值序列化为“1”和“0”而不是“true”和“false”

    我在上面找不到任何方法Boolean类将布尔值序列化为 1 和 0 而不是 true 和 false 有没有本地函数可以做到这一点 如果不是 最好的方法 最优化的方法 是什么 更新 我确实想制作一个String出于一个Boolean If你
  • 将上下文变量与 IBM Watson Conversation 中的实体进行比较

    在 Watson 对话对话框中 我创建了一个条件 就像是 if stored state states Florida AND preferred joint joint KFC then some response where store
  • 安卓。如何沿对象面向的方向移动对象(使用 Vector3 和四元数)

    我正在使用 libGDX 事实上对它来说相当新 和 Android 我想沿 3d 对象所面向的方向移动 使用一定的速度 我认为这是一个基本问题 但找不到直接答案 我有一个代表对象旋转 方向 的四元数 有一个代表对象位置的 Vector3 问
  • FreeTDS - tsql 连接,isql 失败

    我正在尝试连接到我的主机 Windows XP SQL Server 05 上的数据库 我的客户机器是 Ubuntu 10 04 我可以使用 tsql 连接并执行命令 但 isql 失败 以下是我的配置文件和错误消息 freetds con
  • UITableView 部分未按预期排序

    我正在使用带有自定义部分标题的 tableView 核心数据对象根据称为 sectionIdentifier 的瞬态属性的值显示在精确的部分上 一切都按预期工作 但各部分的顺序没有按我的预期响应 这应该是部分顺序 1 OVERDUE sec
  • 匿名函数和内存消耗

    就内存消耗而言 这些是否等效 或者我们是否为后者中的每个对象获得一个新的函数实例 var f function alert this animal var items for var i 0 i lt 10 i var item anima