2016-03-08 63 views
0

在Javascript中是否有帮助方法或类似方法,用于isDefined?我刚刚发现这个在我继承了一个实用程序文件:Javascript ifDefined帮助方法?

'use strict'; 

var me = { 
    ifDefined   : ifDefined, 
    ifDef    : ifDefined, 
    isDefined   : isDefined, 
    isDef    : isDefined, 
}; 

function isDefined (value) { 
    return (typeof value != 'undefined'); 
} 
function ifDefined (value, defaultValue) { 
    return isDefined(value) ? defaultValue : value; 
} 

module.exports = me; 

看来笔者用它来对了typeof检查的速记方法:

environment.u = isDef(envInfo.u, environment.u); 
environment.x = isDef(envInfo.x, environment.x); 
environment.s = isDef(envInfo.s, environment.s); 
+0

究竟什么是你问你可以通过使用速记变量和三元运营商保存在您的代码只是尽可能多的空间? 'typeof'运算符_is_你是如何检查标识符是否被定义的。你是否希望有一个不同的内置?这些功能有什么问题? – Oka

+0

我在问如果这种简写方法存在。看起来作者创建了这个文件,所以他在他的代码中不会有'typeof'调用。 –

+0

然后不,没有内建的'isDefined'。下次尝试搜索MDN:[标准内置对象](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects),[Expressions and operators](https:// developer .mozilla.org/EN-US /文档/网络/的JavaScript /指南/ Expressions_and_Operators)。 – Oka

回答

2

有一个辅助方法,或类似的,在Javascript中用于isDefined

不,对此不存在内建函数。

只要使用value !== undefinedvalue != null就足够短,它不保证一个额外的实用功能。我知道的唯一的原生“类型检测”方法是Array.isArray,isNaNisFinite(和它们的Number.is…等价物)。

0

这个函数似乎做的是检查一个值是否是未定义的,如果是,则返回一个默认值。否则,它会返回原始值。这个名字有点让人误解,我不认为有任何直接内置于JavaScript的东西可以模仿你的功能。

如果你正在寻找的是,简单地看一看是定义或没有使用typeof是不必要的 - 你可以简单地比较针对全球undefined对象:

var x; 
if(x !== undefined){ 
    console.log('this will not run'); 
} 
else{ 
    console.log('this will run'); 
} 

一些额外的阅读,如果有兴趣: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined

1

没有。如果我这样做,我不会创建一个实用程序文件。

var udef = undefined; 

environment.u = envInfo.u == udef ? environment.u : envInfo.u; 
environment.x = envInfo.x == udef ? environment.x : envInfo.x; 
environment.s = envInfo.s == udef ? environment.s : envInfo.s; 

为了比较: