簡體   English   中英

你如何在JavaScript中實現一個保護條款?

[英]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將捕獲任何undefinednullfalse0或空字符串。

如果要檢查值是否有效 ,則可以執行以下操作:

if (Boolean(x)) {
    // great success
}

在這一塊,如果x是什么,但在執行塊undefinednullfalse0 ,或空字符串。

-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM