[英]How do you implement a guard clause in JavaScript?
我希望保護我的函數不受null-ish值的影響,只有在存在“已定義”值時才會繼續。
之后找 周圍的解決方案,建議增加一倍等於未定義: if (something == undefined)
。 此解決方案的問題是您可以聲明未定義的變量。
所以我目前的解決方案是檢查null if(something == null)
,這意味着檢查undefined。 如果我想捕捉附加值假值,我檢查if(something)
。
請參閱此處的測試: http : //jsfiddle.net/AV47T/2/
我現在錯過了什么嗎?
馬蒂亞斯
標准的JS守衛是:
if (!x) {
// throw error
}
!x
將捕獲任何undefined
, null
, false
, 0
或空字符串。
如果要檢查值是否有效 ,則可以執行以下操作:
if (Boolean(x)) {
// great success
}
在這一塊,如果x是什么,但在執行塊undefined
, null
, false
, 0
,或空字符串。
-tjw
我知道防止真正未定義的變量(意味着具有從未在任何地方定義的變量名稱)的唯一安全方法是檢查typeof
:
if (typeof _someUndefinedVarName == "undefined") {
alert("undefined");
return;
}
其他任何東西(包括if (!_someUndefinedVarName)
)都會失敗。
基本示例: http : //jsfiddle.net/yahavbr/Cg23P/
刪除第一個塊,你會得到:
_someUndefinedVarName未定義
直到最近才發現在JS中使用'&&'作為保護運算符。 沒有更多If聲明!
var data = {
person: {
age: 22,
name: null
}
};
var name = data.person.name && doSomethingWithName(data.person.name);
三元救援!
(i) =>
i == 0 ? 1 :
i == 1 ? 2 :
i == 2 ? 3 :
null
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.