Nullか未定義か、!==
または!=
と「未定義」または未定義を使用する必要があるかどうかを確認するときに、少し混乱します。
これが私が取り組んでいるいくつかのコードです。 null/unudefinedなどでどこが間違っているのですか?
var c = (jQuery(this).prop("target") != null && jQuery(this).prop("target") != undefined && jQuery(this).prop("target").toLowerCase() == "_blank") ? 1 : 0;
ありがとう
null
とundefined
はどちらも「偽の」値であるため、ブール値であるかのようにチェックできます。したがって、null
およびundefined
と比較しても、それらがそのような値であるかどうかを知る必要がある特定の状況を除いて、意味がありません。
比較するときは、厳密な比較を使用することをお勧めします(===
、!==
など)
条件内の&&
は、前の条件が「偽」である場合、次の条件を評価しません。
jQueryも必要ありませんthis
はDOMオブジェクト(おそらく<a>
)であり、target
プロパティを取得しようとしているため:
最終的には:
var c = (this.target && this.target.toLowerCase() === "_blank") ? 1 : 0;
一般的に、それは単純にしてください。
undefined
を確認するには、次を使用します。
_foo === undefined
foo !== undefined
_
null
を確認するには、次を使用します。
_foo === null
foo !== null
_
どちらかを同時に確認するには、次を使用します。
_foo == null
foo != null
_
いずれにせよ、.prop()
を変数に格納してクリーンに保ちます。しかし、あなたの場合、それが_"_blank"
_に等しい場合、それがnull
またはundefined
ではないことがわかります。したがって、次のようになります。
_var targ = jQuery(this).prop("target").toLowerCase();
var c = targ === "_blank" ? 1 : 0;
_
または、boolean
をnumber
に強制変換することで、さらに短くすることもできます。
_var targ = jQuery(this).prop("target").toLowerCase();
var c = +(targ === "_blank");
_
.prop()
は常にstring
を返すため、これらの最後の2つのソリューションは安全です。
これは、未定義をチェックするための最良の方法です。
if(typeof variable_here != 'undefined'){
// your code here.
};
そして、これはnullをチェックするための最良の方法です:
if(variable_here !== null){
// your code here.
};
したがって、コードは次のようになります。
var c = (jQuery(this).prop("target") !== null && typeof jQuery(this).prop("target") !== 'undefined' && jQuery(this).prop("target").toLowerCase() == "_blank") ? 1 : 0;
未定義は変数タイプになるため、typeof
を使用します
_var c = (
$(this).attr("target") != NULL &&
typeof $(this).attr("target") != "undefined" &&
$(this).attr("target").toLowerCase() == "_blank"
) ? 1 : 0;
_
ただし、最後のチェックだけが必要だと思います。ターゲットは_"_blank"
_であり、c
は_1
_である必要があり、そうでない場合は_0
_である必要があります。 target
が設定されているかどうかは本当に重要ですか?
また、selectedIndex
やtagName
のようなプロパティの場合はprop()
なので、属性を取得するには attr() メソッドを使用します。
値を確認するためだけに同じプロパティを3回取得しないでください。
var c = 0;
var prop = $(this).prop("target");
if(prop && prop.toLowerCase() === "_blank") c = 1;
私はあなたの質問に関係がないがあなたを助けるこのようなものを手に入れました
var targ = jQuery(this).prop("target").toLowerCase();
targがnullかundefinedかを確認したい場合
var c = (!targ || "") ? 1 : 0
これがお役に立てば幸いです
JavaScriptでは、次の理由により、変数がnullまたは未定義かどうかを明示的にチェックする必要はありません。
nullまたはundefinedは、ブール式でfalseを返します。
JS式は左から右に評価されます。だから|| b、aが偽の場合、bのみが評価されます。ただし、aが真の場合、bはチェックされません。同様に、a && bの場合、aが偽の場合、bは評価されません。
したがって、if(a!= null){"dosomething"}は(a){"dosomething"}または単に&& "dosomething"のように書くことができます。
同様に、値がnullまたは未定義に設定されている場合は、デフォルト値を設定するために使用できます。
function someFunction(age){
var age= age|| 18;
}