javascript - JavaScript 应用函数的第一个参数
问题描述
我开始apply
从这个文档中学习这个功能
在以下示例中,函数调用 withapply
和 that withoutapply
具有相同的输出。
console.log(Math.max(5, 6, 2, 3, 7)); // output:7
console.log(Math.max.apply(null, [5, 6, 2, 3, 7])); // output:7
但是,当我在以下示例中采用相同的方式时,输出是不同的。
class Animal {
speak() {
return this;
}
}
let obj = new Animal();
let speak = obj.speak;
console.log(speak()); // output:undefined
console.log(speak.apply(null, [])); // output:null
似乎null
作为第一个参数传递apply
可能会改变函数的行为。使用undefined
没有这种副作用。例如:
console.log(Math.max.apply(undefined, [5, 6, 2, 3, 7])); // output:7
console.log(speak.apply(undefined, [])); // output:undefined
那么使用它是否undefined
比null
大多数情况下更安全?(假设我们只关注函数调用没有this
对象的情况)
解决方案
推荐阅读
- go - 将中间件附加到安装在路由器上的路由
- kotlin - 如何从启动器类启动 TornadoFX 应用程序
- java - Dart 中的类对象列表
- node.js - Gulp 生成的我的 Dist 文件夹是否可能包含在 node_modules 中发现的漏洞?
- google-apps-script - Google Apps 脚本:向电子表格所有者显示警报,但不向编辑者显示
- tableau-api - Tableau:多用户筛选器
- php - 何时为 MYSQL 查询使用锁
- javascript - 将文本添加到具有 ID 的元素的最佳方式?
- apache-spark - 当 Docker 映像使用非 root 用户时,在 Kubernetes 中运行 SparkPi 会引发 AccessDeniedException
- r - 使用具有 100 多个变量的 pivot_wider