当您尝试调用未在 JavaScript 代码中定义的函数时,您可能在控制台中看到了 undefined
错误。 JavaScript 抛出此错误并停止运行代码。
在本文中,我将教您如何检查函数是否存在。这样,您可以避免任何可能的错误。这是一种有用的技术,可用于查看特定库或 API 在您运行软件的客户端中是否可用。
JavaScript 有几种不同的方法来查看函数是否存在。我将向您展示几个。
if
条件语句检查函数是否已定义的一种方法是使用 if
语句来测试它。诀窍是将该函数作为 window
语句来测试它。诀窍是将该函数作为 window
对象的方法进行测试。
所以,如果你想测试 aFunctionName
,只需使用:
if (window.aFunctionName) { // ... }
如果定义了函数,则将执行括号中的代码。相反,如果您只是测试函数而不使用窗口对象,例如 if(aFunctionName)
,则如果函数不存在,JavaScript 将抛出 ReferenceErorr
。
让我们考虑以下示例,该示例检查两个函数是否存在:一个存在,另一个不存在。
// Testing a function that exists function exists() { // ... } if (window.exists) { console.log('the exists() function exists'); } else{ console.log('the exists() function does not exist'); } if(window.doesntExist) { console.log('the doesntExist() function exists'); } else{ console.log('the doesntExist() function does not exist'); }
上面的代码片段将输出:
the exists() function exists the doesntExist() does not exist
这对于我们的示例非常有效,但该方法的一个问题是我们没有检查命名对象是否实际上是一个函数。事实上,任何具有相同名称的变量都会欺骗我们的测试,让我们认为该函数已定义。
typeof
运算符或者,我们可以使用 typeof
运算符。该运算符将检查声明的函数的名称是否存在以及它是否是一个函数而不是其他类型的对象或基元。
if (typeof nameOfFunction === 'function') { nameOfFunction(); }
在上面的示例中,我们测试 nameOfFunction
是否存在,如果存在则运行它。
尝试...catch
块try…catch
块处理该块内可能发生的错误。我们将使用此方法来处理当我们调用未定义的函数时 JavaScript 会抛出的 try…catch
块处理该块内可能发生的错误。我们将使用此方法来处理当我们调用未定义的函数时 JavaScript 会抛出的 undefined
错误。
try...catch
语句如何工作我们在 try
块内运行该函数。如果不存在,则会抛出异常,并由 catch
块处理。
这是一个例子:
try { testFunction(); } catch(err) { console.log(err); }
如果 testFunction
未定义,则会将以下消息输出到控制台。
ReferenceError: testFunction is not defined
这也是我们在没有 try...catch
块时看到的情况,但在这种情况下,我们的代码将继续在 catch 块下方运行。
本文介绍了在调用函数之前检查 JavaScript 中是否存在函数的三种主要方法。这些是 if
条件语句的使用、typeof
运算符的使用,最后是 try...catch
条件语句的使用、
以上是检查 Java 脚本中函数是否存在的详细内容。更多信息请关注PHP中文网其他相关文章!