不能直接使用Function.prototype.call

2023-12-01

function f(a) { return a}

f(1) // => 1

f.call(null, 1) // => 1

Function.prototype.call(f, null, 1) // => undefined

为什么最后一行返回undefined,我以为它们是一样的。


这些将是相同的:

function f(a) { return a}

console.log(f(1)); // => 1

console.log(f.call(null, 1)); // => 1

console.log(Function.prototype.call.call(f, null, 1)); // => 1

注意额外的.call在最后的声明中。

解释如下:

函数.原型.调用

根据spec, Function.prototype.call返回一个抽象操作调用(func,thisArg,argList).

所以,f.call(null, 1)将返回抽象操作呼叫(f,空,1) where f是被调用的函数,null是调用它的上下文,并且1参数是传递给f。这将为您提供所需的输出。

基于此,Function.prototype.call(f, null, 1)将导致抽象操作调用(Function.prototype, f, null, 1) where 函数原型是被调用的函数,f是上下文,并且null and 1参数是传递给函数原型。当然,这不会按预期工作。

函数.原型.call.call

然而,Function.prototype.call.call(f, null, 1)将返回抽象调用操作调用(Function.prototype.call,f,null,1), where 函数.原型.调用是要调用的函数,f是调用它的上下文, and null and 1作为参数传递。那么那会是什么样子呢?好吧,自从f是上下文并且call是被调用的函数(null,1),最终结果与:f.call(null, 1).

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

不能直接使用Function.prototype.call 的相关文章

  • 我如何能够以两行显示标题,并且每行的字体大小不同?

    我正在使用 Google Chart API 创建时间线图 并希望将图的标题修改为两行 问题 我如何能够显示具有不同字体大小的两线图表标题 电流输出 理想输出 相关研究 我唯一能找到的是有人试图用饼图来做到这一点 但我尝试了但无法使其发挥作
  • ReferenceError:regeneratorRuntime未定义(但在范围内工作)

    我遇到过这种奇怪的情况 ReferenceError regeneratorRuntime is not defined 我已经设法在一个非常小的设置中重现 与同一问题上的类似问题相比 并且还注意到一些奇怪的行为 具体取决于是否使用范围 以
  • Javascript Promise“then”始终运行,即使 Promise 未能执行

    我希望当调用第二个 then 时不执行第三个 then 但是 即使 Promise 被拒绝 调用第二个 then 并且代码返回 rejected 然后返回 undefined 它仍然调用第三个 then 如何不运行第三个 then 这样 未
  • 如何修改每个JSON对象javascript

    我想修改里面的每个 JSON 值cooldown object cooldown user 1 This user2 0 This 在 Javascript 中使用 for 语句 我研究了好几个小时 只找到了内部的 blocks Edit
  • Snap.svg - 停止在可悬停元素的子元素上重新触发悬停事件

    对于一个项目 我使用的 SVG 形状由背景多边形和背景多边形上方的一些文本 我已将其转换为路径 组成 我正在使用 Snap svg 为我的形状设置动画 当我将鼠标悬停在多边形上时 形状应该缩放到特定尺寸 包括其中的所有内容 鼠标移开时 形状
  • React-Redux:state.setIn() 和 state.set() 有什么区别?

    我见过使用setIn and set 在一些react redux代码中 state setIn state set 我在这里找到了一些文档https facebook github io immutable js https facebo
  • Bootstrap按钮加载+Ajax

    我正在使用 Twitter Bootstrap 的按钮加载状态 http twitter github com bootstrap javascript html buttons http twitter github com bootst
  • 如何纠正流警告:解构(缺少注释)

    我正在编写一个小型 React Native 应用程序 并且正在尝试使用 Flow 但我无法在任何地方真正获得有关它的正确教程 我不断收到错误 destructuring Missing annotation 有关 station 这段代码
  • 设置 cookie 时中断 JavaScript 执行

    当设置 cookie 时 是否可以始终中断浏览器开发人员工具中的 javascript 执行 无需显式设置 JS 断点 document cookie 在 html head 块的开头添加此代码片段效果很好
  • 调整图像大小并将画布旋转 90 度

    这里有很多关于在 js 上使用画布旋转图像的主题 我阅读了其中的大部分内容 但无法找到解决我的问题的方法 我正在接收任何分辨率的图像 来自上传组件 我将其大小调整为 1024x768 如下所示 var canvas document cre
  • 尝试将数据存储在点击器网站中

    我正在尝试存储一个名为的变量score无论何时刷新 您都会一次又一次地使用它 我不明白的是它的代码是什么 我尝试了一些方法 但似乎都不起作用 这是我的答题器网站 但是当我尝试使用 JavaScript 来存储它时 它不起作用window o
  • Chrome 扩展程序在代码中使用 client_secret

    我正在开发具有自己的 oAuth 授权的 Google Chrome 扩展 当然 我必须使用 client id 和 client secret 作为请求令牌 有什么办法可以向用户隐藏这些数据吗 由于此请求只是 javascript 源代码
  • window.location 和 location.href 之间的区别

    我对之间的区别感到困惑window location and location href 两者似乎都以相同的方式行事 有什么不同 window location是一个对象 它保存有关当前文档位置的所有信息 主机 href 端口 协议等 lo
  • 将 UMD Javascript 模块导入浏览器

    你好 我正在对 RxJS 进行一些研究 我可以通过在浏览器中引用它来使用该库 如下所示 它使用全局对象命名空间变量 Rx 导入 我可以制作可观察的东西并做所有有趣的事情 当我将 src 更改为指向最新的 UMD 文件时 一切都会崩溃 如下所
  • 页面上使用 HTML Editor Extender 进行回发会导致 IE11 中出现 JavaScript 错误

    我已将 HTML 编辑器扩展程序添加到我正在处理的页面中 现在每当我在页面上发回帖子时 都会收到以下 Javascript 错误 JavaScript 运行时错误 参数无效 之后什么也没有发生 这在 IE10 或更低版本以及我所知道的所有其
  • 正则表达式 - 从 markdown 字符串中提取所有标题

    我在用灰质 https www npmjs com package gray matter 以便将文件系统中的 MD 文件解析为字符串 解析器产生的结果是这样的字符串 n Clean er ReactJS Code Conditional
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • Javascript - 水波纹效果

    我需要 JS 上的脚本 它将以 水波纹 样式更改 images html 抱歉 6MB GIF 文件 http fcuunited ru temp listening2 gif http fcunited ru temp listening
  • 带参数的事件监听器

    我想将参数传递给 JavaScript 中的事件侦听器 我已经找到了解决方案 但我无法理解它们为什么或如何工作以及为什么其他解决方案不起作用 我有 C C 背景 但是 Javascript 函数的执行有很大不同 您能否帮助我理解以下示例如何
  • 如何在执行新操作时取消先前操作的执行?

    我有一个动作创建器 它会进行昂贵的计算 并在每次用户输入内容时调度一个动作 基本上是实时更新 但是 如果用户输入多个内容 我不希望之前昂贵的计算完全运行 理想情况下 我希望能够取消执行先前的计算并只执行当前的计算 没有内置功能可以取消Pro

随机推荐

  • 如何添加整个包来通过代码传输请求?

    我的任务是以编程方式完成所有这些步骤 创建一个新的传输请求 我设法做到了TR INSERT REQUEST WITH TASKS 将包内容添加到新创建的传输中 这是我陷入困境的部分 释放传输 我设法做到了这一点TR RELEASE REQU
  • 如何在 Cosmos DB 容器上显示唯一键?

    这个链接意味着可以通过查看设置在 Cosmos DB 容器中看到唯一键 但是 我似乎无法同时使用门户和存储资源管理器找到它们 如何查看现有 Cosmos DB 容器上的唯一键 我有一个文档由于密钥冲突而无法加载 这应该是不可能的 所以我需要
  • Apps 脚本 - 模态显示和 google.script.run 从有界到库

    我有一个电子表格文件 其中包含集成了库的有界脚本 该库提供了2个函数 显示带有按钮的 html 模式 提供点击 html 上的按钮时的回调函数 图书馆内容 test html
  • PHPWord 中的 HTML 阅读器无法处理表格?

    当我使用 Html 阅读器将 html 转换为 docx 时 阅读器被切断了我的表格 PHP 示例 reader IOFactory createReader HTML phpWord reader gt load this gt getR
  • 加密 URL 中的路由数据

    在我的 ASP NET MVC 应用程序中 我想加密路由数据而不是 QueryString 换句话说 我正在使用 ASP NET MVC 默认路由模式 routes MapRoute name Default url controller
  • 如何使用第一个表中的逗号分隔值从其他表中选择行? [复制]

    这个问题在这里已经有答案了 有没有办法使用第一个表中的逗号分隔值从其他表中选择行 表格1 faculty subject 101 102 104 103 105 表 2 subject code subject 101 subject 1
  • new Date() 依赖于操作系统吗?

    好吧 我正在使用 javascript 通过简单的正则表达式返回用户系统时间的简写时区 如下所示 new RegExp exec new Date toString 0 这在 Mac 下使用 chrome 效果很好 例如我按预期得到 UTC
  • 变量以及它们在 prolog 中的设置和使用方式

    http www csupomona edu jrfisher www prolog tutorial 2 1 html 所以在那个教程中它有 conflict Coloring adjacent X Y color X Color Col
  • 在页面之间发送参数的最佳方式是什么?

    我们在项目中使用 JSF 我对它还很陌生 每个页面都有一个 back bean Java 文件 为了从一个页面移动 重定向 到另一个页面 我需要在重定向之前将所有参数 搜索条件 放入请求范围中 然后在下一页构造函数中检索它 当你的页面深度很
  • 如何在邮件合并中保留谷歌电子表格的格式?

    我想发送一封电子邮件 其中包含谷歌电子表格内容作为带有格式的正文 我参考了here但它仅适用于单元格 A1 我希望它适用于完整的数据范围 如何在发送电子邮件时保留所有格式 你需要使用getRichTextValues获取给定范围内每个单元格
  • 嵌入文档属性的多次更新

    我有以下收藏 Milestones ActualDate null Index 0 Name milestone1 TargetDate ISODate 2011 12 13T22 00 00Z id ObjectId 4ee89ae7e6
  • config.exceptions_app 无法在 Rails 中工作

    我正在尝试为所有 404 和 500 错误呈现自定义错误页面 所以我在ErrorController类中定义了两个方法not found和internal server error class ErrorController lt Appl
  • 在代理处理程序中,如何区分获取属性(var)与调用方法?

    我有以下代码 其中我使用代理对象 代理 来尝试捕获方法调用和属性访问 例子 https jsfiddle net r8j4fzxL 2 function use strict console clear some empty class w
  • Lisp 中的 setq 和 defvar

    我看到实用 Common Lisp uses defvar db nil 用于设置一个全局变量 使用不是可以吗setq为了同样的目的 使用的优点 缺点是什么defvar vs setq 引入变量的方法有多种 DEFVAR and 定义参数介
  • 为什么两个表之间的完全外连接结果中有NULL?

    我试图从两个表中获取唯一值 这两个表都只有一列称为域 DDL create table domains 1 domain varchar create table domains 2 domain varchar DML insert in
  • 使用htaccess将目录传递给GET参数而不重写url

    我想传递 而不是重定向 这样的东西 http www example com 有 可选 传递给脚本http www example com index php http www example com foo 有 可选 传递给脚本http
  • Python 等语言如何克服 C 的整数数据限制?

    使用 C Python 和 Scheme 中的阶乘程序进行一些随机实验 我发现了这个事实 在 C 中 使用 unsigned long long 数据类型 我可以打印的最大阶乘为 65 即 9223372036854775808 即指定的
  • 实施重试例程

    我有以下想法 是否可以在 python 中实现重试例程 这是我所做的一个简单示例 我想要一个更灵活的解决方案 独立于功能 因此 将removeFile 与任何其他函数切换 并摆脱main 中的while 循环 import os impor
  • 显示git中每个分支的最新提交

    有没有办法显示git中每个分支的最新提交 我在 git 中有一个代码库 我已经设置了一段时间了 其中有几个分支用于不同的功能 我需要进去更新 排除一些代码的问题 但是我选择将它们命名得太笼统 现在我不知道我最后在处理哪一个 甚至不知道哪一个
  • 不能直接使用Function.prototype.call

    function f a return a f 1 gt 1 f call null 1 gt 1 Function prototype call f null 1 gt undefined 为什么最后一行返回undefined 我以为它们