使用JavaScript,
之间有什么区别library(openxlsx)
read_excel_allsheets <- function(filename) {
sheets <- names(loadWorkbook(filename))
x <- lapply(sheets, function(X) readWorkbook(filename, sheet = X))
names(x) <- sheets
x
}
data <- read_excel_allsheets("file.xlsx")
和
Boolean(x)
答案 0 :(得分:2)
它们都具有相同的输出,但您必须注意布尔对象与函数。布尔构造函数(使用new关键字)不是原始true
或false
值。而!!运算符评估对象是否真实/虚假。
以下是MDN的引用:
任何值未定义或为null的对象,包括a 值为false的Boolean对象,传递给时计算结果为true 条件陈述。
因此以下评估为false:
new Boolean(false) === false
但以下评估结果为真:
Boolean(false) === false
答案 1 :(得分:2)
它们之间的一个有趣区别是,您可以在Boolean
函数中明确地传递Array#filter
作为回调,而如果您想使用!!
,则可以首先必须设置一个回调函数,然后返回它。
.filter(Boolean)
✓
.filter(!!)
✕
.filter((x) => !!x)
✓(可以简化,但是 - .filter((x) => x)
)