var foo;
とをどのように区別できvar foo=undefined;
ますか?
typeof foo
両方の「未定義」foo in window
に対して返され、両方の真に対して返されます。
var foo;
とをどのように区別できvar foo=undefined;
ますか?
typeof foo
両方の「未定義」foo in window
に対して返され、両方の真に対して返されます。
var foo
var foo=undefined
もちろん、undefined
以外に設定されていない限り、を意味しundefined
ます。
これはブラウザコンソールで確認できます。変数を初期化するが値を指定しない場合、その変数には値undefined
(およびタイプ"undefined"
)が含まれます。
正しい例は不思議に働きます:
function winFoo() {
console.log('foo' in window);
}
function startFoo() {
window.foo = 'bar';
}
function ovrFoo() {
window.foo = undefined;
}
function removeFoo() {
delete window.foo;
}
//window.foo === undefined
//window.foo hasn't been defined yet
winFoo(); //false
//so it makes sense that 'foo' is not in window
startFoo(); //window.foo === 'bar'
//window.foo has now been set to 'bar'
winFoo(); //true
//so it makes sense that 'foo' is in window
ovrFoo(); //window.foo === undefined
//window.foo has been overridden with a value of undefined
winFoo(); //true
//but the key 'foo' still exists in window, it just has a value of undefined
removeFoo(); //window.foo === undefined
//the key 'foo' has been removed from window and its value is therefor forgotten
winFoo(); //false
//so it makes sense that 'foo' is not in window
var foo
さらに、関数コンテキストの外部で宣言すると、 ifwindow.foo
の値でインスタンス化されます(つまり、同じコードブロックで複数回呼び出すと、既存の値が存在する場合はそれが上書きされません)。さらに重要なことに、ステートメントは実際にはその範囲の一番上に引き上げられます。つまり、次のことを意味します。undefined
!('foo' in window)
var foo
var
function
console.log('foo' in window);
var foo;
console.log('foo' in window);
が続くtrue
代わりに2回印刷されます。false
true
var foo;
とをどのように区別できvar foo=undefined;
ますか?
この行がのすべての使用の前にある場合、それらの間に違いはありません。(必ずしもそうする必要はありません。)JavaScriptエンジンは、次のような行を認識します。foo
var foo=undefined;
// At top of scope
var foo; // `foo` will have the value `undefined`
// Where the var foo=undefined; line was
foo = undefined;
それらは、異なる時間に発生する完全に異なるものであることに注意してください。宣言と「初期化」(実際には割り当てです)は別々に行われます。宣言は、実行ユニットに入るときに行われます。初期化/割り当ては、段階的なコード実行の一部として、後で行われます。(詳細:誤解が少ないvar
)
これは、これがある場合、次のことを意味します。
foo = 5;
alert(typeof foo); // "number"
var foo = undefined;
alert(typeof foo); // "undefined"
...エンジンの処理方法は次のとおりであるため、エラーではありません。
var foo;
foo = 5;
alert(typeof foo); // "number"
foo = undefined;
alert(typeof foo); // "undefined"
方法1:
if (null === var)
(古いブラウザへ):
if (void 0 != var)
もう1つ:
if(var)
次のように使用します。
var un;
if (un==undefined)
{
alert('Yes');
} else {
alert('No');
}