迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

JavaScript 中如何检查函数是否定义

作者:迹忆客 最近更新:2022/12/15 浏览次数:

使用 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');
}

JavaScript 中如何检查函数是否定义

我们使用 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"

但是,如果在使用 letconst 关键字声明变量之前使用 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 = () => {};

JavaScript 中如何检查函数是否定义错误代码

在使用 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 = () => {};

变量的声明被提升到顶部,但是值的赋值仍然保留在原处。

这就是为什么我们没有收到错误,而且变量还没有函数类型的原因。

我们很少会像这样编写或阅读代码,但是了解这些基本概念是件好事。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

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 标准输入/输出库的一部分,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便