この JavaScript の部分は、 がなくても問題なく動作し"use strict";
ました。しかし、厳密モードでグローバル変数が存在するかどうか、およびundeclared variable
エラーを発生させずにそのタイプを確認するにはどうすればよいでしょうか?
if (!(typeof a === 'object')) {
a = ... /* complex operation */
}
この JavaScript の部分は、 がなくても問題なく動作し"use strict";
ました。しかし、厳密モードでグローバル変数が存在するかどうか、およびundeclared variable
エラーを発生させずにそのタイプを確認するにはどうすればよいでしょうか?
if (!(typeof a === 'object')) {
a = ... /* complex operation */
}
a
JavaScript で警告を発生させずにグローバル変数が存在するかどうかを確認する有効な方法を見つけました。
この
hasOwnProperty()
メソッドは、オブジェクトが指定されたプロパティを持っているかどうかを示すブール値を返します。
hasOwnProperty()
要求された変数名がグローバル空間に存在しない場合、警告は発生しません!
'use strict';
if (!window.hasOwnProperty('a')) {
window.a = ...
// Or
a = ...
}
a
オブジェクトの使用を確認するには
'use strict';
if (!(window.hasOwnProperty('a') && typeof a === 'object')) {
window.a = ...
// Or
a = ...
}
厳密モードでは、暗黙的なグローバルを作成するとエラーになります。グローバルを明示的に作成する必要があります。
window.a = ... /* complex operation */
typeof a
以前と同じように動作するはずです。