在JavaScript中,我怎麼說:是否有用於檢查變量類型的快捷語法?
if (typeof obj === 'number'
|| typeof obj === 'boolean'
|| typeof obj === 'undefined'
|| typeof obj === 'string') {
換句話說,是否有某種:
if (typeof obj in('number','boolean','undefined','string')) {
在JavaScript中,我怎麼說:是否有用於檢查變量類型的快捷語法?
if (typeof obj === 'number'
|| typeof obj === 'boolean'
|| typeof obj === 'undefined'
|| typeof obj === 'string') {
換句話說,是否有某種:
if (typeof obj in('number','boolean','undefined','string')) {
更多穀物的磨:
if (('object function string undefined').indexOf(typeof x) > -1) {
// x is an object, function, string or undefined
}
或
if ((typeof x).match(/object|function|string|undefined/)) {
// x is an object, function, string or undefined
}
有多少種方法你想這個貓剝皮?
請注意,這些也將匹配碰巧是四個類型名稱中的任何一個的子字符串的任何類型。 – Guffa
您可以使用switch
:
switch (typeof obj) {
case 'number':
case 'boolean':
case 'undefined':
case 'string':
// You get here for any of the four types
break;
}
在Javascript中1.6 :
if (['number','boolean','undefined','string'].indexOf(typeof obj) !== -1) {
// You get here for any of the four types
}
你可以用近似的東西像
var acceptableTypes = {'boolean':true,'string':true,'undefined':true,'number':true};
if (acceptableTypes[typeof obj]){
// whatever
}
或更詳細的
if (typeof obj in acceptableTypes){
// whatever
}
是的,有。 typeof(obj)
只返回一個字符串,這樣你就檢查時,如果一個字符串是在任何一組字符串,你可以簡單地做:
if (typeof(obj) in {'number':'', 'boolean':'', 'undefined':'', 'string':''})
{
...
}
或者你可以使它更短。由於唯一的「類型」是typeof
可能返回是number
,string
,boolean
object
,function
和undefined
,在這種特殊情況下,你可以只讓一個排除代替。
if (!(typeof(obj) in {'function':'', 'object':''}))
{
...
}
* typeof *是一個運算符,不需要分組操作符,所以'typeof obj'就足夠了,並且是首選。 – RobG
我喜歡在類似情況下使用函數式編程。 所以,你可以使用underscore.js以使其更具可讀性:
_.any(['number','boolean','undefined','string'], function(t) {
return typeof(obj) === t;
});
您是否希望改進第一條語句? –
只是好奇 - 爲什麼你需要檢查這麼多類型?我以前從來沒有這樣做過。 –