私はこのコードを持っています:
var sideBar = localStorage.getItem('Sidebar');
if ステートメントで sideBar が定義されていて null でないかどうかを確認したい。私は少し混乱しています:sideBar == undefined
とsideBar != null
しかし、if内でこれらの両方に対してこのテストを行う良い方法はありますか:
if (??)
私はこのコードを持っています:
var sideBar = localStorage.getItem('Sidebar');
if ステートメントで sideBar が定義されていて null でないかどうかを確認したい。私は少し混乱しています:sideBar == undefined
とsideBar != null
しかし、if内でこれらの両方に対してこのテストを行う良い方法はありますか:
if (??)
変数が定義されており、null でないかどうかを確認するためのベスト プラクティス:
if (typeof sideBar !== 'undefined' && sideBar !== null)
何かが定義されていないかどうかを確認していないことに気づき、それが定義されていることを確認しているので、リクエストに正確に答えるために再度編集しました
W3 マニュアルで明示的に説明されているように、 getItem(key)メソッドは、指定されたキーに関連付けられた現在の値を返す必要があります。指定されたキーがオブジェクトに関連付けられたリストに存在しない場合、このメソッドは null を返す必要があります。
つまり、未定義をチェックする必要はありません。未定義の場合、getItem() メソッドの結果は null になります。null に対してチェックするだけです。
if (localStorage.getItem("Sidebar") !== null) {
//...
}
localStorage
null
は文字列を使用してデータを保存します。つまり、 vs.undefined
などを推論するときは、常に JavaScript の文字列ロジックを考慮する必要があります。""
。if
変数をチェックする前に何か他のこと (たとえば、数学など) を行う場合は、追加のケースを考慮する必要があります。JavaScript が if ステートメントの特定の値をどのように処理するかを示すテストを次に示します。
> ("")? true : false
false # empty string -> if fails
> (0)? true : false
false # Number 0 -> if fails
> ("0")? true : false
true # String "0" -> if succeeds
> (null)? true : false
false # JavaScript null -> if fails
> ("someText")? true : false
true # any other String -> if succeeds
> (" ")? true : false
true # a space character -> if succeeds
null
と の厄介な二重チェックは使用しませんundefined
。結果の結果を直接確認した場合localStorage.getItem
、結果は または のいずれnull
かString
です。次に、空の文字列""
も「偽」と見なす場合は、単純なif
ステートメントで問題ありません。
var sideBar = localStorage.getItem('Sidebar');
if(sideBar) {
// do something with the sideBar
}
else {
// do something without the sideBar
}
sideBar が localStorage に設定されていないことを実際にチェックするには、空の文字列のチェックを追加し、それを「定義済み」として扱う必要があります。
if(sideBar || sideBar === "") {
// sideBar defined, maybe even as empty String
}
else {
// sideBar not set in localStorage
}
これは機能するはずです。三項演算子であっても、「if」の外に道はありません。
if( !value ) {
}
これは、値が「truethy」であるかどうかをチェックし、「null」と「undefined」の両方をカバーする必要があります。
はい、あなたは2つを連言的にバインドします(両方が真でなければならないことを意味します)&&
したがってif (sideBar === undefined && sideBar !== null)
、各条件が true と評価された場合にのみ true と評価されます。
&& を使用してステートメントを結合できる場合
「===」を使用することをお勧めします。例えば if (sideBar === undefined && sideBar !== null)
Null 合体演算子 (??) は、左側のオペランドが null または未定義の場合に右側のオペランドを返し、それ以外の場合は左側のオペランドを返す論理演算子です。
const sideBar = localStorage.getItem('Sidebar') ?? false;
if(sideBar) {
// true
} else {
// false
}
undefined
を使用する場合はチェックする必要はありませんlocalStorage.getItem
。Storage インターフェイスの getItem() メソッドは、キー名が渡されると、そのキーの値を返します。キーが存在しない場合は、指定された Storage オブジェクトに null を返します。
https://developer.mozilla.org/en-US/docs/Web/API/Storage/getItem