- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
传入 null
是否有已知原因?作为 ES6 中的参数在提供时不使用默认参数?
function sayHello(name = "World") {
console.log("Hello, " + name + "!");
}
sayHello("Jim"); // Hello, Jim!
sayHello(undefined); // Hello, World!
sayHello(null); // Hello, null!
最佳答案
这不是那么明显
我已经阅读了一些关于原因的评论 undefined
与 null
完全不同这就是为什么它解释了默认参数的当前行为。
有人可能会争辩说,明确传递 undefined 不应该触发默认值替换,因为当我有一个函数时:
const f = (x = 'default') => console.log(x);
"default"
当我运行它时:
f();
"undefined"
当我明确地将它运行为:
f(undefined);
f(undefined)
首先?显然,我在这里的意图是提供一些论据,而不是将其排除在外。
const g = (...a) => console.log(JSON.stringify(a));
g();
[]
g(undefined);
[null]
undefined
是 不一样 因为根本没有传递参数 null
可以 默认值而不是 undefined
undefined
原
没有在初稿中触发默认值,并讨论了是否应该这样做。因此,正如您所看到的,当前的行为对 TC39 成员来说并不像现在对在这里发表评论的人来说那么明显。
undefined
和
null
如果你仔细想想,可能会觉得很奇怪。有些语言只有
undefined
(如 Perl 中的
undef
),有些只有
null
(如 Java),一些语言使用
false
的等价物或者一个空列表或数组(比如 Scheme,你可以有一个空列表或
#f
(假),但没有等效的
null
,它不同于空列表和假值)和一些语言甚至没有
null
的等价物,
false
或
undefined
(就像 C 使用整数而不是
true
和
false
和一个 NULL 指针,它实际上是一个指向地址 0 的普通指针 - 即使被任何测试空指针的代码映射,该地址也无法访问)。
null
.不幸的是,这不是默认行为,但您可以创建一个简单的函数来帮助您:
const N = f => (...a) => f(...a.map(v => (v === null ? undefined : v)));
null
您可以像这样使用它。例如。如果您从上述示例之一中获得此功能:
const f = (x = 'default') => console.log(x);
"default"
为
f()
和
f(undefined)
但不适用于
f(null)
.但是当您使用
N
时上面定义的函数定义了
f
像这样的功能:
const f = N((x = 'default') => console.log(x));
f()
和
f(undefined)
还有
f(null)
版画
"default"
.
const N = f => (...a) => f(...a.map(v => (v === '' ? undefined : v)));
const N = f => (...a) => f(...a.map(v => (v || undefined)));
const N = f => (...a) => f(...a.map(v => (Object.keys(v).length ? v : undefined)));
关于javascript - 在 ES6 中作为参数传入 NULL 时不使用默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32725034/
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: How do I copy an object in Java? 我的类中有一个函数 Claus它调用一个函数来接受
任何人都可以给我一个 linux 内核驱动程序手册或示例的链接,它可以修改来自/到指定 ip 端口的传入/传出数据包吗? 谢谢! 最佳答案 Kprobes 是一种可以做到这一点的方法。这是一个使用具有
我有一个 3rd 方网站,该网站具有发送到特定 url 的 webhook。我将其设置为发送到我网站上的空白页面(例如:www.mysite.com/webhook.php) 我在 webhook.p
我对传递的约定感到困惑*args在 super().__init__()在python继承中。 我了解需要使用关键字参数 **kwargs因此,如果需要,CRO 中的类可以采用所需的参数,但为什么还有
我有一个 webapi (.NET core 3.1) 方法,它正在获取 XML 并反序列化为对象。但是一些标签的开头和结尾是不一样的。例如,如果以 打开然后它以 关闭.因此 XML 格式不正确。
是否有一个 hg 命令可以组合 hg传入 + hg传出 + hg status? 这会告诉您是否有任何远程内容需要传入,是否有任何本地提交的内容需要出去,或者是否有任何本地更改需要提交。 最佳答案 虽
据我了解,你无法在两部 iPhone 之间建立连接(如果我错了,请纠正我)。因此,我想做的是在客户端应用程序之间放置一台服务器,该服务器接受消息并将其重新分发给适当的人员。本质上,该应用程序将允许人们
我正在使用 Apache Camel 向我的 Java 服务发送消息。我在消费者路线上保留了 transacted=true。我还需要发送有关成功处理 JMS 消息的电子邮件。 我正在使用以下代码来注
这个问题在这里已经有了答案: What does "this" point to? (5 个答案) 关闭 4 年前。 public class CommandForm extends Form im
我是一名 Swift 开发人员,也是 Dart 的新手。我正在尝试编写一些通用方法。 我想知道我是否可以在 Dart 中实现类似的事情。 //Swift version public func mod
基本上有人问我是否有任何方法可以捕获和下载通过邮件服务器的所有传入和传出电子邮件(最好是文本格式)。这种下载方法需要使用PHP或类似的服务器端语言来完成。 如果我能通过上述阶段,那么最终目标就很容易实
我正在学习 Flask 并且有一个关于动态路由的问题:是否可以传入一个可接受的路由列表?我注意到 any 转换器有潜力,但很难找到它的使用示例。基本上我有不同的端点组,它们应该在它们之间触发相同的 A
我正在学习如何使用 pthread 函数。在这里我想使用 pthread_create 创建一个线程并用它计算一些数字的平均值。(数字序列末尾的0表示已经完成) 这是我到目前为止写的: #includ
我需要传递一个带有字段“nombre”作为参数的条件 目前我这样做: @xcondicion= {:nombre.like => "%#{params[:qyBusqueda]}%"} cliente
我有以下两个 parseInt(),我不太清楚为什么它们会给我不同的结果: alert(parseInt(0.00001)) 显示 0; alert(parseInt(0.00000001)) 显示
我有一个使用 SODA 包来操作 JSON 数据库的 PL/SQL 处理程序。我想: 读取有效负载中键 id 的值 将负载 JSON 写入数据库中的新文档。 要执行第 1 步,处理程序将 :body
我正在使用 Oracle 试用 Dapper,我试图运行多结果集查询,但 Oracle 需要 dbtype 的 refcursor。 StringBuilder query = new StringB
我在将“工作表”选项卡重命名为任何文件名时遇到问题。这样做的问题是,如果用户意外下载工作表两次,Windows 会将 template(1).csv 附加到文件中,以保持其下载目录中的唯一性。在 Ex
我将 id 作为字符串传递到函数中。我想使用该 ID 来更改背景颜色。我用过: $("#"+address).css("background-color", "#3399FF"); 但它没有改变背景颜
我有一个 ListSourceAdapter.java 类, class ListSourceViewHolder extends RecyclerView.ViewHolder implements
我是一名优秀的程序员,十分优秀!