严格模式下可变类型的对象?
Variable typeof object in strict mode?
这段JavaScript 运行 没"use strict";
就好了。但是如何检查一个全局变量是否存在严格模式以及它的类型没有 运行 进入 undeclared variable
错误?
if (!(typeof a === 'object')) {
a = ... /* complex operation */
}
问题是你有一个未声明的变量......你必须把它放在第一位:var a = {};
。但是,这是我检查这些东西的方法。
var utils = {
//Check types
isArray: function(x) {
return Object.prototype.toString.call(x) == "[object Array]";
},
isObject: function(x) {
return Object.prototype.toString.call(x) == "[object Object]";
},
isString: function(x) {
return Object.prototype.toString.call(x) == "[object String]";
},
isNumber: function(x) {
return Object.prototype.toString.call(x) == "[object Number]";
},
isFunction: function(x) {
return Object.prototype.toString.call(x) == "[object Function]";
}
}
var a = ""; // Define first, this is your real problem.
if(!utils.isObject(a)) {
// something here.
}
在严格模式下创建隐式全局变量是一个错误。您必须显式创建全局:
window.a = ... /* complex operation */
typeof a
应该仍然像以前一样工作。
我找到了一种有效的方法来检查全局变量 a
是否存在而不会在 JavaScript 中触发警告。
The hasOwnProperty()
method returns a boolean indicating whether the object has the specified property.
hasOwnProperty()
当请求的变量名在全局 space!
中不存在时不会触发警告
'use strict';
if (!window.hasOwnProperty('a')) {
window.a = ...
// Or
a = ...
}
要确保 a
是一个对象,请使用
'use strict';
if (!(window.hasOwnProperty('a') && typeof a === 'object')) {
window.a = ...
// Or
a = ...
}
这段JavaScript 运行 没"use strict";
就好了。但是如何检查一个全局变量是否存在严格模式以及它的类型没有 运行 进入 undeclared variable
错误?
if (!(typeof a === 'object')) {
a = ... /* complex operation */
}
问题是你有一个未声明的变量......你必须把它放在第一位:var a = {};
。但是,这是我检查这些东西的方法。
var utils = {
//Check types
isArray: function(x) {
return Object.prototype.toString.call(x) == "[object Array]";
},
isObject: function(x) {
return Object.prototype.toString.call(x) == "[object Object]";
},
isString: function(x) {
return Object.prototype.toString.call(x) == "[object String]";
},
isNumber: function(x) {
return Object.prototype.toString.call(x) == "[object Number]";
},
isFunction: function(x) {
return Object.prototype.toString.call(x) == "[object Function]";
}
}
var a = ""; // Define first, this is your real problem.
if(!utils.isObject(a)) {
// something here.
}
在严格模式下创建隐式全局变量是一个错误。您必须显式创建全局:
window.a = ... /* complex operation */
typeof a
应该仍然像以前一样工作。
我找到了一种有效的方法来检查全局变量 a
是否存在而不会在 JavaScript 中触发警告。
The
hasOwnProperty()
method returns a boolean indicating whether the object has the specified property.
hasOwnProperty()
当请求的变量名在全局 space!
'use strict';
if (!window.hasOwnProperty('a')) {
window.a = ...
// Or
a = ...
}
要确保 a
是一个对象,请使用
'use strict';
if (!(window.hasOwnProperty('a') && typeof a === 'object')) {
window.a = ...
// Or
a = ...
}