JavaScript 中如何检查函数是否定义
使用 typeof
运算符检查函数是否已定义,例如 typeof myFunction === 'function'
。 typeof
运算符返回一个指示值类型的字符串。 如果函数未定义,则 typeof
运算符返回“undefined”并且不会抛出错误。
if (typeof myFunction === 'function') {
console.log('✅ function is defined');
} else {
// 👇️ this runs
console.log('⛔️ function is NOT defined');
}
我们使用 typeof
运算符来检查函数是否已定义。
该运算符返回一个指示值类型的字符串。 这里有些例子:
console.log(typeof (() => {})); // 👉️ "function"
console.log(typeof function () {}); // 👉️ "function"
console.log(typeof null); // 👉️ "object"
console.log(typeof []); // 👉️ "object"
console.log(typeof {}); // 👉️ "object"
console.log(typeof ''); // 👉️ "string"
console.log(typeof 0); // 👉️ "number"
typeof
运算符在与未声明的变量一起使用时不会抛出错误,而是返回字符串“undefined”。
console.log(typeof doesNotExist); // 👉️ "undefined"
但是,如果在使用 let
或 const
关键字声明变量之前使用 typeof
运算符,则会出现错误。
// ❌ Error: Cannot access 'myFunction' before initialization
if (typeof myFunction === 'function') {
console.log('✅ function is defined');
} else {
console.log('⛔️ function is NOT defined');
}
const myFunction = () => {};
在使用 const
关键字初始化函数之前,我们使用了 typeof 运算符。
这将返回一个错误,因为我们正在尝试访问程序中存在但尚未声明的变量。
如果我们使用 let 关键字声明函数,我们会得到相同的结果。
但是
,如果我们使用var
关键字,则不会因为提升在 JavaScript 中的工作方式而出现错误。
if (typeof myFunction === 'function') {
console.log('✅ function is defined');
} else {
// 👇️ This runs
console.log('⛔️ function is NOT defined');
}
var myFunction = () => {};
我们使用
var
关键字声明函数,因此在使用typeof
运算符时没有出现错误,但是运行了 else 块。
这就是使用 var
关键字时在幕后发生的事情。
var myFunction;
if (typeof myFunction === 'function') {
console.log('✅ function is defined');
} else {
// 👇️ This runs
console.log('⛔️ function is NOT defined');
}
myFunction = () => {};
变量的声明被提升到顶部,但是值的赋值仍然保留在原处。
这就是为什么我们没有收到错误,而且变量还没有函数类型的原因。
我们很少会像这样编写或阅读代码,但是了解这些基本概念是件好事。
相关文章
Oracle 的 decode 函数在 MySQL 中的等价物
发布时间:2023/05/09 浏览次数:115 分类:MySQL
-
本篇文章介绍了三种替代实现,我们可以将它们用作 MySQL 中 Oracle 的 decode() 函数的等价物。 为此,我们将使用 IF()、CASE 以及 FIELD() 和 ELT() 的组合。
在 MySQL 中创建一个函数
发布时间:2023/05/09 浏览次数:180 分类:MySQL
-
本篇文章介绍了如何在 MySQL 中创建函数。 它首先解释语法,然后使用示例表创建一个函数。在 MySQL 中创建一个函数
使用 PHP MySQLi 函数获取最后插入的 ID
发布时间:2023/05/09 浏览次数:85 分类:MySQL
-
本篇文章简要介绍了 PHP mysqli() 函数并演示了如何使用它从 MySQL 数据库中获取最后插入的 ID。它是一个名为 mysqli 的 MySQL 驱动程序扩展版本,
使用 Date_ADD() 函数在 MySQL 中添加日期和时间
发布时间:2023/05/08 浏览次数:57 分类:MySQL
-
本文介绍如何使用 DATE_ADD() 函数在 MySQL 中添加日期和时间。 我们将学习如何单独添加或减少天、年、月和时间,以及如何将两者结合起来(例如,天和小时)。
在 C 语言中使用 nanosleep 函数
发布时间:2023/05/07 浏览次数:114 分类:C语言
-
本文演示了如何在 C 语言中使用 nanosleep 函数。在 C 语言中使用 nanosleep 函数用高分辨率定时器暂停程序执行
在 C 语言中使用 crypt 函数
发布时间:2023/05/07 浏览次数:177 分类:C语言
-
本文演示了如何使用 C 语言中的加密函数。使用 crypt 函数对密码进行哈希存储 crypt 实际上是一个由四个函数组成的系列
使用 C 语言中的 getchar 函数
发布时间:2023/05/07 浏览次数:172 分类:C语言
-
本文介绍了如何使用 C 语言中的 getchar 函数。在 C 语言中使用 getchar 函数从标准输入流中读取单个字符
在 C 语言中的 printf 函数中对齐列
发布时间:2023/05/07 浏览次数:99 分类:C语言
-
本文介绍了如何在 C 语言中的 printf 函数中对齐列。使用%{integer}d 符号来对齐 C 语言中的输出 printf 是标准 I/O 库的一部分,可以利用它将格式化的字符串输出到 stdout 流。
使用 C 语言中的 feof 函数
发布时间:2023/05/07 浏览次数:164 分类:C语言
-
本文演示了如何在 C 语言中使用 feof 函数。使用 feof 函数检查 C 语言中文件流上的文件结束指示符 feof 函数是 C 标准输入/输出库的一部分,