Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 潜在未定义变量_Javascript_Lodash_Ramda.js - Fatal编程技术网

Javascript 潜在未定义变量

Javascript 潜在未定义变量,javascript,lodash,ramda.js,Javascript,Lodash,Ramda.js,我从可能未定义的全局变量中获取密钥。密钥也可能不存在: import { get } from 'lodash/fp'; const probablyGlobalFoo = typeof globalFoo === 'undefined' ? void 0 : globalFoo; const baz = get('baz', probablyGlobalFoo) || get('bar.baz', probablyGlobalFoo) || 'baz'; typeof globalFoo

我从可能未定义的全局变量中获取密钥。密钥也可能不存在:

import { get } from 'lodash/fp';

const probablyGlobalFoo = typeof globalFoo === 'undefined' ? void 0 : globalFoo;

const baz = get('baz', probablyGlobalFoo) || get('bar.baz', probablyGlobalFoo) || 'baz';
typeof globalFoo===“undefined”
check对于JavaScript来说是惯用的,但它既笨拙又冗长。这种情况在我的代码库中出现过几次,但次数不足以向我的utils库引入另一个helper函数。我更愿意只提供正确处理的getter函数,例如:

getFromAGetterAndCatchIfNotDefined('bar.baz', () => globalFoo);

有没有一种简单的方法来处理我缺少的Lodash FP或Ramda API的这种情况?

如果您的全局变量是在
window
上定义的(在全局
var
的情况下),您可以在nodejs中检查
window.globalFoo
(或
global.globalFoo
)。如果没有,则必须使用
类型的
检查

要检查对象中不存在的属性或未定义的变量,可以使用lodash/fp:

const{getOr}=\;
log(getOr('baz','bar.baz',window.globalFoo));
常量另一个值={bar:{baz:5}
log(getOr('baz','bar.baz',另一个值))

如果您的全局变量是在
窗口中定义的(在全局
var
的情况下),您可以检查
window.globalFoo
(或在nodejs中的
global.globalFoo
)。如果没有,则必须使用
类型的
检查

要检查对象中不存在的属性或未定义的变量,可以使用lodash/fp:

const{getOr}=\;
log(getOr('baz','bar.baz',window.globalFoo));
常量另一个值={bar:{baz:5}
log(getOr('baz','bar.baz',另一个值))

我之所以没有使用
窗口
是因为该代码与平台无关,我不想用
窗口
vs
全局
检测来阻碍它,因为我要的是明确的
全局
。感谢您的
getOr
/
pathOr
提示。除非它是非常独特的,否则您可以使用以下命令在
global
window
之间进行选择。我希望尽可能避免这种检测,考虑到我们有定义了
global
变量的浏览器和带有
window
的节点环境。无论如何,似乎
typeof
就是这样
R.tryCatch
是我发现的唯一相关的东西,它导致了更详细的代码。我没有使用
window
的原因是,代码是不可知平台的,我不想用
window
vs
global
检测来阻碍它,因为它特别是
globalFoo
我想要的。感谢您的
getOr
/
pathOr
提示。除非它是非常独特的,否则您可以使用以下命令在
global
window
之间进行选择。我希望尽可能避免这种检测,考虑到我们有定义了
global
变量的浏览器和带有
window
的节点环境。无论如何,似乎
typeof
就是这样
R.tryCatch
是我找到的唯一相关的东西,它会导致更详细的代码。