gpt4 book ai didi

相当于 Rails try 方法的 Javascript

转载 作者:IT王子 更新时间:2023-10-29 03:20:16 25 4
gpt4 key购买 nike

在 Rails 中我可以这样做:

 x = user.try(:name)

如果 usernil,则此方法返回 nil,否则为 user.name。这里的 name 是在 user 对象上定义的方法。

我知道可以在 Javascript 中使用 if..then..else 来完成,但是是否有等效的 compact 方法在 Javascript 中执行相同的操作?

谷歌搜索指向 Javascript 的 try 命令,这不是我要找的。

最佳答案

您可以使用 optional chaining

例子:

// Access Properties

user?.name; // user might be null/undefined

user.name?.firstName // user will be available however name is not guaranteed.

// Access array values

addresses?.[index]; // array addresses might be undefined

// May be function??

user.getGeolocation?.(); // If the function exists execute it.

稍微不相关但与 null/undefined 处理有关的是另一个称为 Nullish coalescing operator ?? 的功能

// Example:


function foo(input) // some Array as input {
//.. Some stuff
return [input??[]].concat(bar); //if input is empty ignore and concat bar on an empty array and return.
}

//----

const defaultVal = 'someVal';
...
const val = this.someObj.prop1??defaultVal;

以下是可选链成为 Javascript 原生之前的过时解决方案:


你可以这样做,因为没有内置的方法:

var x = (user || {}).name;
  • 如果用户未定义/为空,您将得到未定义
  • 如果定义了用户,您将获得名称属性(可以设置或未定义)。

如果用户未定义(null),这不会破坏脚本。

但是用户变量必须在范围内的某个地方声明,即使它的值没有定义。否则,您将收到错误消息,提示用户未定义。

类似地,如果是在全局范围内,那么您可以显式检查此变量作为全局范围的属性,以避免上述错误

例如:

 var x = (window.user || {}).name; // or var x = (global.user || {}).name;

为了安全执行功能,

 var noop = function(){}; //Just a no operation function

(windowOrSomeObj.exec || noop)(); //Even if there is no property with the name `exec` exists in the object, it will still not fail and you can avoid a check. However this is just a truthy check so you may want to use it only if you are sure the property if exists on the object will be a function.

关于相当于 Rails try 方法的 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19285422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com