Javascript 检查元素的存在性并在一行中指定给变量
以下检查和分配是否可以用一行书写Javascript 检查元素的存在性并在一行中指定给变量,javascript,Javascript,以下检查和分配是否可以用一行书写 const panel = this.element.querySelector(".c-global-search__panel"); this.panel = (panel instanceof HTMLElement) ? panel : null; 比如: this.panel = (variable = querySelection and condition) ? assignment : fallback; 您可以使用简单的|(或),因为que
const panel = this.element.querySelector(".c-global-search__panel");
this.panel = (panel instanceof HTMLElement) ? panel : null;
比如:
this.panel = (variable = querySelection and condition) ? assignment : fallback;
您可以使用简单的
|
(或),因为querySelector
的返回值是HTMLElement | null
HtmleElement
为真值,因此将返回它,如果为空,则使用回退
this.panel = this.element.querySelector(".c-global-search__panel") || fallback;
还有空合并运算符。这是新的,浏览器还不支持(仅限TS和Babel),但它更好,因为它也将false和0视为有效值。但在这种情况下,它是不需要的
this.panel = this.element.querySelector(".c-global-search__panel") ?? fallback;
但是一个旁注。。。无论如何,引擎都会进行这种优化,没有真正的必要这样做。而不是一行程序关注可读性。您可以使用简单的
|
(或),因为querySelector
的返回值是HTMLElement | null
HtmleElement
为真值,因此将返回它,如果为空,则使用回退
this.panel = this.element.querySelector(".c-global-search__panel") || fallback;
还有空合并运算符。这是新的,浏览器还不支持(仅限TS和Babel),但它更好,因为它也将false和0视为有效值。但在这种情况下,它是不需要的
this.panel = this.element.querySelector(".c-global-search__panel") ?? fallback;
但是一个旁注。。。无论如何,引擎都会进行这种优化,没有真正的必要这样做。而不是一行代码关注可读性。您不需要第二行。如果未找到元素,则已返回
null
this.panel = this.element.querySelector(".c-global-search__panel");
第二行将值设置为
null
是多余的。您不需要第二行。如果未找到元素,则已返回null
this.panel = this.element.querySelector(".c-global-search__panel");
第二行将值设置为null
是多余的