我有一個變量,它被設置爲某個或未定義。如果變量定義爲其他false
,我希望傳遞給函數true
。這裏是功能:顯式布爾轉換
function f(areRowsSelectable){...}
你會做什麼?
f(v);
f(v?true:false);
還是別的什麼?
我有一個變量,它被設置爲某個或未定義。如果變量定義爲其他false
,我希望傳遞給函數true
。這裏是功能:顯式布爾轉換
function f(areRowsSelectable){...}
你會做什麼?
f(v);
f(v?true:false);
還是別的什麼?
我通常使用雙否定(這意味着施加logical NOT operator兩次)顯式布爾轉換:
!!v
實例:
!!'test' // true
!!'' // false
!!0 // false
!!1 // true
!!null // false
!!undefined // false
!!NaN // false
可替代地,也Boolean(v)
將工作。
我會使用「typeOf」防護方法。
它不接受「真理」的論點,所以它取決於你的功能是否可以使用它。
的tests
是基本相同czosel的回答,但他的回答返回‘truthy’而我只接受boolean true
爲true
。
var tests = [
//filled string
'test',
//empty string
'',
//Numeric empty
0,
//Numeric filled
1,
//Null
null,
//Completely undefined
,
//undefined
undefined,
//Not-A-Number numeric value
NaN,
//Boolean true
true
];
for (var t = 0; t < tests.length; t++) {
var test = tests[t];
var results = {
test: test,
isTruthy: !!test,
isBoolTrue: (typeof test != "boolean" ? false : test),
isDefined: (test !== void 0)
};
console.log(results);
}
編輯1
因爲問題可以在幾個方面進行解釋,我已經包括一對夫婦的更多的測試。
isTruthy
匹配czosel的回答。註冊truthy
值如1
爲true
。isBoolTrue
是我的第一個解釋,它嚴格檢查值是否爲boolean true
。isDefined
只要返回變量是否包含任何內容。
「我希望傳遞給一個函數,如果變量被定義,否則返回false」 - >我認爲OP實際上要求「truthy-conversion」。 –