在 JavaScript 中分配内存

2024-01-16

我们在深入研究 JavaScript 时遇到了麻烦,请帮助我们。提前致谢

下面的代码,为什么 samurai 仍然无法调用函数 yell

===>
var ninja = { 
  yell: function yell(n){ 
    return n > 0 ? yell(n-1) + "a" : "hiy"; 
  } 
}; 
assert( ninja.yell(4) == "hiyaaaa", "Works as we would expect it to!" ); 

var samurai = { yell: ninja.yell }; 
var ninja = {}; 
assert( samurai.yell(4) == "hiyaaaa", "The method correctly calls itself." );

但在这些代码中它不能调用yell

===>
var ninja = { 
  yell: function(n){ 
    return n > 0 ? ninja.yell(n-1) + "a" : "hiy"; 
  } 
}; 
assert( ninja.yell(4) == "hiyaaaa", "A single object isn't too bad, either." ); 

var samurai = { yell: ninja.yell }; 
var ninja = null; 

try { 
  samurai.yell(4); 
} catch(e){ 
  assert( false, "Uh, this isn't good! Where'd ninja.yell go?" ); 
}

在第一个例子中,yell is a named功能。在函数内,符号yell解析为函数,因此它能够调用自身。所以你已经消灭了并不重要ninja object.

var ninja = { 
  yell: function yell(n){ 
  //             ^^^^-------------------------- the name
    return n > 0 ? yell(n-1) + "a" : "hiy"; 
  //               ^^^^------------------------ using the name
  } 
};

在第二个例子中,yell is an 匿名的函数并尝试通过调用自身ninja.yell,这显然会失败ninja已被消灭。

var ninja = { 
  yell: function(n){ 
  //            ^-------------------------------------- no name
    return n > 0 ? ninja.yell(n-1) + "a" : "hiy"; 
  //               ^^^^^^^^^^-------------------------- relies on `ninja` object
  } 
}; 

旁注:在第一个示例中,您擦除了ninja对象通过分配一个不同的空白对象给它(ninja = {}),但在第二个示例中,您通过分配来做到这一点null (ninja = null)。没关系,使用空白物体或null在两个示例中都会有相同的结果(尽管您在第二个示例中收到的错误会发生变化)。


旁注#2:请注意第二个var ninja = ...每个示例中的行实际上被视为ninja = ...。构造var x = y;实际上是在不同时间发生的两个完全不相关的事情:变量声明,var x,这发生在进入包含它的执行上下文(宽松地,“范围”)时;和任务手术,x = y;,当逐步执行到该行代码时就会发生这种情况。在一个作用域内有多个声明是无操作的。更多的:可怜的误解var http://blog.niftysnippets.org/2008/03/poor-misunderstood-var.html

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

在 JavaScript 中分配内存 的相关文章

  • React 组件渲染被调用两次而不改变状态

    我正在渲染一个简单的反应组件 其中没有设置状态和道具 我在渲染函数中仅将文本记录到控制台一次 但它被记录了两次 rendering counter rendering counter 下面是counter js组件的代码 import Re
  • 单击时获取元素的 id(php、jquery、ajax、javascript)

    抱歉 这是我的第一个项目 我学到了很多东西 因此 如果有人可以帮助我 我将不胜感激 我的项目中有这个侧边栏 其中包含 rss 链接 我必须使用 ajax 因此每次用户单击任何 rss 链接时 提要都会出现在屏幕上 这是我的侧边栏代码 div
  • 如何使用 Shopify API 将商品添加到购物车

    我正在使用 Shopify API 开发自定义网络应用程序 这里的想法是使用应用程序作为独家店面 只需向 Shopify API 发出请求 我已在我的 Shopify 帐户中设置了一个私人应用程序来执行此操作 我从 api 提取产品没有问题
  • Node + now.js + 模型-视图-控制-模式

    我正在使用基于 MVC 模式 模板和 PHP 类 的论坛软件 页面如下所示 domain com index php page Test 我想使用 Node 和 now js 在一个页面 domain com index php page
  • javascript函数知道它的名字吗

    我有一个名为 getItem 的函数 我想使用其中的代码读取该函数的名称 这可能吗 function getItem var functionName how do I read the function name alert functi
  • 整个页面都是玻璃板

    有没有一种简单的方法可以在整个 HTML 页面上拥有一个 玻璃窗格 而不管缩放 幻灯片事件 平台 浏览器 移动 桌面 我所说的 简单 是指纯 CSS 支持 而不是插件 后备 插件建议也可能有用 Thanks 如果您只是指所有内容之上的一层
  • 如何在React-Native中选择ListView的一项?

    我是 React Native 的新手 我想使用 ListView 选择一项 当我第一次按下 item 时 ListView renderRow 被调用 但终究不起作用 我该如何修复这个错误 我的问题出在哪里 我写了一个演示here htt
  • 使用 Charts.js 禁用动画

    我在使用 Charts js 关闭动画时遇到一些问题 这是我的代码 var pieData value 30 color F38630 value 50 color E0E4CC value 100 color 69D2E7 var myP
  • 如何使用 console.log 省略文件/行号

    如今 您可以在 Chrome 的控制台中编写非常好的东西 查看this https developer chrome com devtools docs tips and tricks关联 我也做了一个截图 正如您在屏幕截图中看到的那样 文
  • 如何在Javascript中声明静态变量[重复]

    这个问题在这里已经有答案了 在下面的代码中 我希望有一个计数器来跟踪创建的 Person 对象的数量 这段代码没有这样做 我该如何实现呢 function Person this name Peter this counter this c
  • 无法提取 Typescript 中的对象值

    我一直在尝试将 JavaScript Web 表单转换为 Typescript 但无法弄清楚如何处理以下内容 在 JavaScript 中有效 let fieldValues JSON parse cookieData let keys O
  • 我什么时候应该使用内联和外部 Javascript?

    我想知道什么时候应该包含外部脚本或将它们与 html 代码内联编写 就性能和易于维护而言 这方面的一般做法是什么 真实场景 我有几个需要客户端表单验证的 html 页面 为此 我使用了一个包含在所有这些页面上的 jQuery 插件 但问题是
  • toJSON() 和 JSON.Stringify() 之间的区别

    如果您需要读取或克隆模型的所有数据属性 请使用其 toJSON 方法 此方法返回属性的副本作为 对象 尽管有其名称 但不是 JSON 字符串 当 JSON stringify 为 使用 toJSON 方法传递一个对象 它将返回的字符串化 t
  • 上传前如何检查图片的宽度和高度

    对于图片上传 我编写了以下 html 代码
  • jQuery 如何通过不同的列值计算表中的行数

    如何按表列计算不同的表行 Example table thead tr th NAME th th TECHNOLOGY th tr thead tbody tr td john td td jQuery td tr tr td mark
  • 单击时突出显示文本(javascript jquery html)

    当您在所有浏览器中双击某个单词时 它们会自动突出显示单击下的单词 但是否有可能找到一种方法exact单击一下就会发生同样的事情吗 我想这涉及到的事情可能是 TextRange 的东西 对所有段落 或整个正文或 div 的 onclick 做
  • 调用不带括号的 javascript 函数

    以下 renderChat 函数用于将消息和图像渲染到聊天板上 该函数内部还有另一个函数 var onComplete function 它完成创建列表元素并将其附加到聊天列表的所有工作 onComplete函数之后就只有这三行代码 img
  • 自动更改 Twitter Bootstrap 选项卡

    我希望 Twitter Bootstrap 选项卡按时间顺序更改 我使用它们有点像旋转木马 我希望选项卡每 10 秒切换到下一个选项卡 这是一个例子 http library buffalo edu http library buffalo
  • 检测图像是否损坏或损坏

    我需要以编程方式检查用户在我的应用程序上选择作为壁纸的图像是否已损坏或损坏 基本上我为用户提供了选择自己的图像作为壁纸的选项 现在 当图像加载时 我只想检查它是否已损坏 如果您正在寻找 PHP 解决方案而不是 javascript 解决方案
  • 在 Map() 的条目上使用 Promise.all

    我正在使用 Map 来表示一些键 值对 let myMap new Map myMap set foo bar myMap set foo2 bar42 对于每个 Map 条目 我执行一个返回 Promise 的函数 所有这些 Promis

随机推荐

  • ConstraintLayout - 如何垂直对齐两个视图的中心

    我有两个视图 A 和 B 它们有不同的高度 如何在内部垂直对齐这些视图的中心ConstraintLayout 例如 在下面的 XML 中 我想要中心img change picture与中心对齐txt change picture
  • 在用户空间处理 GPIO ARM9 嵌入式 Linux AM1808

    我必须将我的 GSM 模块与基于 ARM9 的 AM1808 连接起来 我已将所有 GPIO 引脚分配给 Da850 c 以及 mux h 文件 我成功创建了一个 uImage 并将该图像插入到我的 Flash 中 我需要处理用户应用程序中
  • 如何从 PDF 文档中提取表格?

    我正在尝试从 PDF 文档中提取表格 example http www nea org np images supportive docs 55082070 3 19 pdf 它不是扫描 图像 因此请关注非 OCR 解决方案 OCR表格提取
  • 创建样式节点、添加innerHTML、添加到DOM、以及IE令人头疼的问题

    我有一个由两部分组成的问题 一 场景 由于我们在移动浏览器对 NOSCRIPT 的支持方面遇到了一些奇怪的问题 我的任务是提出一种替代解决方案来 检测 JS 解决方案逻辑是页面上有两个 DIV 一种是错误提示你没有 JS 并且默认显示他 如
  • Virtualenv 说“root”而不是 virtualenv 的名称?

    一段时间以来 我一直在许多 python 项目中使用 virtualenv 当我尝试激活我的 virtualenv 之一时 我输入 source venv bin activate 这通常可以达到目的 但是 我的命令提示符不是这样说的 ve
  • 无法运行 ipad 应用程序 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我需要一些帮助 我从 App Store 免费 下载了一个 ipad 应用程序 现在我想在任何模拟器上运行该应用程序 我尝试了很多模拟器 但都失败了
  • 获取 MP4 流长度

    我正在一个应用程序中工作 我们使用 IMediaDet 来获取流长度 现在我们开始使用 MP4 容器 问题是 当我尝试使用 MP4 文件使用 IMediaDet put fileName 时 我得到 HRESULT 2147024770 E
  • 如何从 openlibrary api 解析 Json 数据? (适当地)

    如果这个问题已经得到解答 请原谅我 我看到了有关 json 数据和 openlibrary 的各种答案 到目前为止 我从 openlibrary 获取的 json 数据和我在示例中看到的 json 数据似乎格式不同 我的问题是 使用 php
  • 使用“AUTO”策略时使用 Doctrine 显式设置 Id

    我的实体使用此注释作为其 ID orm Id orm Column type integer orm GeneratedValue strategy AUTO protected id 我从一个干净的数据库导入旧数据库中的现有记录并尝试保留
  • Athena 在 S3 上查询数据的替代方案

    我身边有300 GBs的数据S3 假设数据如下 S3 Bucket Country Month Day 1 csv S3 Countries Germany 06 01 1 csv S3 Countries Germany 06 01 2
  • 解释一下这个 UTF-8 检测正则表达式

    这个问题询问如何检测 UTF 8 字符串 如何检测是否必须对字符串应用 utf8 解码或编码 https stackoverflow com questions 4407854 解决方案是这样的 if preg match u string
  • Laravel .htaccess 子文件夹

    我现在已经安装了具有默认文件夹结构的 Laravel 在我的根文件夹中 有一个像这样的 htaccess 文件 Options FollowSymLinks
  • 将元素添加到 rxjsBehaviorSubject 或 Angular2+ 中数组的主题

    我正在阅读本教程的 不相关组件 与服务共享数据 部分 了解如何在 Angular 中的不相关组件之间共享数据here https angularfirebase com lessons sharing data between angula
  • 删除 Chrome 中音频播放器的最大宽度

    我希望默认的 HTML5 音频播放器适合其父容器的宽度 我将其显示设置为 块 宽度设置为 100 然而 Chrome 似乎在超过一定的窗口大小后开始在左侧和右侧添加填充 Firefox 的行为符合我的预期 播放器的边缘恰好到达父 div 的
  • 如何编写多行字符串文字

    有没有办法在 C 中使用 Perl 那样的多行纯文本 常量文字 也许有一些解析技巧 include正在读取一个文件 我知道你可以用 C 11 中的原始字符串来做到这一点 嗯 有点 最简单的方法是仅使用相邻字符串文字由编译器连接的事实 con
  • 关于 Team Foundation 中的功能和积压项目,Epics 是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 From 这个链接 https stackoverflow com questions 16698363 difference betwe
  • 收到远程通知后重新加载/刷新场景 swiftUI

    我有这个问题 我在 AppDelegate 中使用 application didReceiveRemoteNotification 收到来自 CloudKit 的通知 我能够接收 recordId 获取它并成功保存它 问题是 场景没有刷新
  • 比较两个 NumPy 数组是否相等(按元素)

    比较两个 NumPy 数组是否相等的最简单方法是什么 其中相等定义为 A B iff 对于所有索引 i A i B i 只需使用 给我一个布尔数组 gt gt gt numpy array 1 1 1 numpy array 1 1 1 a
  • 在 Javascript 中将 ISO/Windows 字符集转换为 UTF-8

    我正在开发一个火狐插件 我获取网页来为用户做一些分析 问题是当我尝试获取不是 utf 8 编码的 XMLHttpRequest 页面时 我看到的字符串是混乱的 例如 带有 windows 1125 的希伯来语页面或带有 gb2312 的中文
  • 在 JavaScript 中分配内存

    我们在深入研究 JavaScript 时遇到了麻烦 请帮助我们 提前致谢 下面的代码 为什么 samurai 仍然无法调用函数 yell gt var ninja yell function yell n return n gt 0 yel