2016-03-08 66 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; 

爲了比較: