如何測試,如果值是一個字符串或int?類似...
X =?
如果X是一個int {}
如果X是一個字符串{}
謝謝!
如何測試,如果值是一個字符串或int?類似...
X =?
如果X是一個int {}
如果X是一個字符串{}
謝謝!
可以使用typeof操作:
var x = 1;
console.log(typeof x);
x = 'asdf';
console.log(typeof x);
打印:
number
string
typeof
的伎倆最的時間。但是如果您的Number
或String
不是原語,它將返回'object'
。一般來說,這不是你想要的。
var str = new String('Hello');
typeof str; // 'object'
typeof
也說,null
是'object'
和WebKit中,正則表達式是'function'
。我認爲typeof
的主要優點是檢查一個變量而不會丟掉ReferenceError
。
您也可以檢查變量的constructor
屬性,或使用variable instanceof String
。但是,使用交叉window
代碼時,它們在多個window
環境中都不起作用。
確定所述類型的其它保證方法是用...
var getType = function(variable) {
return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase();
}
使用JavaScript的內置typeof
功能
var s = "string",
n = 1; // number
if(typeof s == 'string'){
//do stuff for string
}
if(typeof n == 'number'){
//do stuff for number
}
這裏是有利於typeof
的功能,但在需要時默認爲Object.prototype.toString
(這是慢得多)。
通過這種方式,您可以從new String('x')
或null
或/regex/
(在Chrome中)獲得一些意外值。
var type = (function() {
var toString = Object.prototype.toString,
typeof_res = {
'undefined': 'undefined',
'string': 'string',
'number': 'number',
'boolean': 'boolean',
'function': 'function'
},
tostring_res = {
'[object Array]': 'array',
'[object Arguments]': 'arguments',
'[object Function]': 'function',
'[object RegExp]': 'regexp',
'[object Date]': 'date',
'[object Null]': 'null',
'[object Error]': 'error',
'[object Math]': 'math',
'[object JSON]': 'json',
'[object Number]': 'number',
'[object String]': 'string',
'[object Boolean]': 'boolean',
'[object Undefined]': 'undefined'
};
return function type(x) {
var the_type = typeof_res[typeof x];
return the_type && (the_type !== 'function' || (x.apply && x.call)) ?
the_type :
tostring_res[toString.call(x)] || (x ? 'object' : 'null');
};
})();
type(new String('test')); // string
type(function(){}); // function
type(null); // null
type(/regex/); // regexp
編輯:我剛剛做了重寫,並刪除功能的重要組成部分。固定。
或者更緊湊的版本:
var type = (function() {
var i, lc, toString = Object.prototype.toString,
typeof_res = {},
tostring_res = {},
types = 'Undefined,String,Number,Boolean,Function,Array,Arguments,RegExp,Date,Null,Error,Math,JSON'.split(',');
for (i = 0; i < types.length; i++) {
lc = types[i].toLowerCase();
if (i < 5) typeof_res[lc] = lc;
tostring_res['[object ' + types[i] + ']'] = lc;
}
return function type(x) {
var the_type = typeof_res[typeof x];
return the_type && (the_type !== 'function' || (x.apply && x.call)) ?
the_type :
tostring_res[toString.call(x)] || (x ? 'object' : 'null');
};
})();
其他人已經談過typeof
操作和使用Object.prototype.toString
,但如果你想專門測試一個int相比,任何類型的號碼那麼你可以做這樣一些變化:
function isInt(n) {
return typeof n === "number" && n === Math.floor(n);
}
(如果需要插入所有Object.prototype.toString
東西)
我們ç如果你描述了你真正想要解決的問題,那麼可能會有更好的幫助。 – jfriend00