JavaScript 调用函数

2024-05-03

我最近一直在测试一些代码,试图更好地理解 javascript。然后我遇到了call()我无法很好地理解的功能。

我有以下代码:

function hi(){
    console.log("hi");
}

var bye = function(param, param2){
    console.log(param);
    console.log(param2);
    console.log("bye");
}

如果我打电话bye.call(hi(), 1, 2), I get hi 1 2 undefined

如果我打电话bye.cal(1,2), I get 2 undefined bye undefined

为此我理解call()函数第一个参数必须是一个函数,后面是参数的数量 mybye函数接受。但是最后一个未定义从哪里来呢?


第一个参数不必是函数。第一个参数是在函数调用上下文中设置“this”变量的对象。

var bye = function(param, param2){
    console.log(param);
    console.log(param2);
    console.log("bye");
    console.log(this.x)
}

t = {'x': 1};

bye.call(t, 1, 2);

控制台应显示:1、2、“再见”和 1。

未定义的是函数的返回值。

在您的第一次通话中:

bye.call(hi(), 1, 2)

您正在调用 hi() (因此它打印“hi”),不使用返回值,1 和 2 是 bye 的参数。

在您的第二次通话中:

bye.cal(1,2)

1 被分配给此。 2 是 param,param2 未定义。

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

JavaScript 调用函数 的相关文章

随机推荐

  • 为什么 CLR 为匿名方法创建新类?

    我在我的项目中也使用了匿名函数 直到知道我在想 C 编译器仅使用用于匿名方法的代码生成一个方法在同一个班 但是 在 IL 中反编译这段代码后 我看到 CLR 创建了一个新类 public class Comparer public dele
  • 如何在使用 NHibernate 进行任何插入之前增加 ID

    看起来NH只获取一次MAX ID 第一次插入然后在内部存储这个值 这会在其他进程插入数据时给我带来一些问题 然后我没有实际的 ID 并且抛出重复键异常 假设我们有桌子Cats CREATE TABLE Cats ID int Name va
  • 如何在Python程序中嵌入Google Speech to Text API? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个项目 在其中创建了客户端和主机之间的聊天程序 并且我必须在其中嵌入语音到文本 有什么方法可以在
  • 将毫秒时间戳解析为 R 中的时间

    我以前曾问过这个问题 但我找不到确切的答案 如果我有一个代表自午夜以来的毫秒数的数字 例如 34200577 我如何将其转换为 R 时间 在午夜构造一个 基线时间 添加给定的毫秒一旦转换为秒并解释为时间 R gt as POSIXct as
  • data.table 逐行求和、平均值、最小值、最大值,如 dplyr?

    还有其他关于数据表上的行式运算符的帖子 他们要么是太简单 https stackoverflow com questions 7885147 efficient row wise operations on a data table或解决一
  • 找到具有公共键的哈希数组的最大值?

    我有两个数组 每个数组包含任意数量的具有相同键但不同值的哈希值 ArrayA value abcd value length 4 type 0 value abcdefgh value length 8 type 1 ArrayB valu
  • 在 Kotlin 中将 Dp 转换为 Px - 这种转换永远不会成功

    我在使用 Kotlin 编码时遇到了问题 我复制粘贴了一个java代码示例 https stackoverflow com a 9685690 6818446将 DP 转换为像素 以便将其作为以编程方式设置填充的参数 我原本期望 IDE 能
  • 在 VIM 中缩进文件夹中的所有文件

    我有一个包含数百个 TTL TeraTermLanguage 文件的文件夹 现在我想缩进所有这些文件 我已经创建了用于缩进的 teraterm vim 并使用 VIM 打开一个文件并执行 gg G 整个文件得到了正确的缩进 但是有什么方法可
  • 如何判断一个点是否属于某条线?

    如何判断一个点是否属于某条线 如果可能的话 示例值得赞赏 在最简单的形式中 只需将坐标代入直线方程并检查是否相等 Given Point p X 4 Y 5 Line l Slope 1 YIntersect 1 代入 X 和 Y Y Sl
  • Rails 3.2.6 中的延迟加载

    我在网上找到了一些资源 而不是在做类似的事情时 cars Car where colour gt black 查询不会执行 直到您执行以下操作 cars each c puts c name 但是 在我的 Rails 3 2 6 项目中 当
  • 找不到文件“obj\Debug\OldProjectName.csproj.FileListAbsolute.txt”

    我正在尝试发布项目 工具 vs2010 但无法始终收到以下错误 我从另一个项目粘贴到我的项目文件 然后将命名空间 OldProjectName 更改为父项目 NewProjectName 但它仍然从某个地方获取有关旧项目的信息 我清理了解决
  • 在 iOS 框架中嵌入框架

    我有一个包含另一个目标 框架 的项目 它是主项目的依赖项 该框架需要它自己的框架 因此我使用 carthage 添加了它们 该项目在模拟器上编译并运行良好 但是在物理设备上运行时出现以下错误 dyld Library not loaded
  • Errno::EIO:输入/输出错误 -

    class FaxFetchWorker include Sidekiq Worker sidekiq options retry gt false def perform job id 0 logger warn perform is i
  • djangonic 处理 rdf 的方法?

    我正在寻找 django 的 RDF 项目 但找不到任何活动的项目 这似乎是一个不错的http code google com p django rdf http code google com p django rdf 但最后一次提交是在
  • 如何比较具有复合主键的 2 个表中的行?

    这是场景 我有两张数据表 一张是2009年版本 一张是2010年版本 每个表的主键都是复合键 我知道每一行都有不同的行数 我需要找出差异 通常 在 正常 主键设置中 我只会查找不在其他表的主键列表中的主键值 但我不知道如何使用复合主键来做到
  • 从 Facebook 页面提取 RSS 源

    我需要帮助从 Facebook 页面提取 RSS 提要我正在使用以下代码 但它一直给我一个错误 string url https www facebook com feeds page php id 40796308305 format r
  • 当转义引号存在时,在外部引号或外部方括号中分割逗号

    是否可以按照以下条件拆分字符串 用 即逗号 分隔 在每个元素上 忽略第一个 和最后一个 内的逗号检查 在每个元素上 忽略第一个 和最后一个 内的逗号检查 e g String source to char DATE YYYY MM DD I
  • AVX512 掩码寄存器(k1...k7)的 GNU C 内联 asm 输入约束?

    AVX512 为其算术命令引入了 opmask 功能 一个简单的例子 上帝螺栓 org https godbolt org z P7xWD8 include
  • TaskSchedulerImpl:初始作业尚未接受任何资源;

    这就是我正在尝试做的事情 我创建了DataStax企业集群的两个节点 在其上创建了一个java程序来获取一张表 Cassandra数据库表 的计数 该程序是在 eclipse 中构建的 实际上是来自 windows 盒子 从 Windows
  • JavaScript 调用函数

    我最近一直在测试一些代码 试图更好地理解 javascript 然后我遇到了call 我无法很好地理解的功能 我有以下代码 function hi console log hi var bye function param param2 c