javascript - 在可能未定义的对象上调用函数 javascript
问题描述
我正在尝试用javascript写这个:
if ($("#locations > tr > th").attr("id").endsWith("_5"))
如果不是未定义,这可以正常工作$("#locations > tr > th")
,但如果它是错误将被抛出,因为您不能在未定义时调用 endsWith。如果项目未定义,或者如果语句返回 false,有没有办法返回 false?这是我目前拥有的,但我将不得不经常这样做,所以如果可能的话,我更喜欢用更短的方式来编写它。
var attr = $("#locations > tr > th").attr("id")
if (attr != undefined && attr.endsWith("_5") { ...
解决方案
一个快速的技巧是替换空字符串,endsWith
可以调用它:
if (($("#locations > tr > th").attr("id") || '').endsWith('_5')) {
// ...
}
如果你正在使用 Babel(这对于一个合理规模的专业项目来说是一个好主意),或者如果你在浏览器实现它后遇到这个问题,你也可以使用可选链:
if ($("#locations > tr > th").attr("id")?.endsWith('_5')) {
// ^ optional chaining
// ...
}
(如果不存在,?.
则将解决,而不是继续处理并抛出错误)undefined
.attr('id')
endsWith
推荐阅读
- python - 如何将列表的列表转换为具有索引的数据框中的列?
- unit-testing - Jest - 如何重组代码以使其可测试?
- php - Laravel 和 Eloquent - 应用不同的过滤器
- android - 如何通过点击 Flutter 应用程序中的按钮,使用默认应用程序打开 PPT、PDF、文档等?
- ios - 如何使用 searchBar 在元组中搜索?
- node.js - 从使用 nestjs API 应用程序调试 npm 库(使用 noidejs、nestjs 和 typescript 构建)
- javascript - 如何在 JSON 响应中嵌入图像
- python - 如何模拟 aiohttp 客户端会话超时
- xslt - 当我尝试使用 XSLT 输出方法“html”时,为什么我的 SVG 不显示?
- git - Git 分支没有显示 [gone] 缺少遥控器