2

この JavaScript の部分は、 がなくても問題なく動作し"use strict";ました。しかし、厳密モードでグローバル変数が存在するかどうか、およびundeclared variableエラーを発生させずにそのタイプを確認するにはどうすればよいでしょうか?

if (!(typeof a === 'object')) {
    a = ... /* complex operation */
}
4

3 に答える 3

2

aJavaScript で警告を発生させずにグローバル変数が存在するかどうかを確認する有効な方法を見つけました。

この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 = ...
}
于 2015-08-27T10:33:20.723 に答える
1

厳密モードでは、暗黙的なグローバルを作成するとエラーになります。グローバルを明示的に作成する必要があります。

window.a = ... /* complex operation */

typeof a以前と同じように動作するはずです。

于 2015-07-21T14:44:51.540 に答える