私は何かに設定されているか、または未定義の変数を持っています。変数が定義されている場合は、関数true
に渡したいと思います。ここに関数があります:明示的なブール変換
function f(areRowsSelectable){...}
あなたは次のうちどれですか?
f(v);
f(v?true:false);
他に何か?
!!v
例:
私は何かに設定されているか、または未定義の変数を持っています。変数が定義されている場合は、関数true
に渡したいと思います。ここに関数があります:明示的なブール変換
function f(areRowsSelectable){...}
あなたは次のうちどれですか?
f(v);
f(v?true:false);
他に何か?
!!v
例:
私は通常、明示的なブール変換のための二重否定(2回logical NOT operatorを適用することを意味する)を使用する代わりに
!!'test' // true
!!'' // false
!!0 // false
!!1 // true
!!null // false
!!undefined // false
!!NaN // false
を、またBoolean(v)
が働くだろう。
"typeOf"ガード方法を使用します。
「真実」の引数を受け入れないため、使用できるかどうかは関数によって異なります。
tests
は基本的にczoselの答えと同じですが、鉱山だけtrue
としてboolean true
を受け入れながら、彼の答えは 『truthy』を返します。
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);
}
EDIT 1
質問はいくつかの方法で解釈される可能性があるので、私はより多くのテストのカップルが含まれています。
isTruthy
は、czoselの答えと一致します。 1
のような値truthy
をtrue
として登録します。isBoolTrue
は、値がboolean true
かどうかを厳密にチェックする私の最初の解釈でした。isDefined
は、変数に何かが含まれていれば単純に返します。
"変数が定義されている場合はtrueに渡したい、そうでなければfalse" - >私はOPが実際に真理変換を求めていると思う。 –