2016-07-23 143 views
1

我希望能够将变量转换为另一种变量的特定类型。作为一个例子:如何在Javascript中将另一个变量转换为另一种变量

function convertToType(typevar, var) { 
    return (type typevar)var; // I know this doesn't work 
} 

使得convertToType(1, “15”)返回15,convertToType( “1”,15)返回 “15”,convertToType(假, “真”)返回true,等

重申,我希望能够动态地将变量转换为其他变量的类型。

这可能吗?

+0

JavaScript是动态类型。所以不需要功能转换。 –

回答

3

更新:这是一个更完整的例子,与测试(要求节点6+或一些transpilation到ES5):https://github.com/JaKXz/type-convert

可以使用typeof运营商,以获得正确的“铸造”功能:

function convertToTypeOf(typedVar, input) { 
    return { 
    'string': String.bind(null, input), 
    'number': Number.bind(null, input) 
    //etc 
    }[typeof typedVar](); 
} 

尝试一下这里:http://jsbin.com/kasomufucu/edit?js,console

我也建议寻找到TypeScript为您的项目。

+0

不,'typeof'告诉你一个变量持有什么类型的数据,它不会在数据类型之间进行转换。 – Quentin

+0

你看过jsbin @Quentin吗? – JaKXz

+0

您是否在第三方网站上提供了对理解您的答案至关重要的信息,而不是在答案中? – Quentin

1
function convertToType (t, e) { 
    return (t.constructor) (e); 
} 

repl demo

注意到,当我们想15转换为数字的第一个电话,我们追加一个点(。)第一个参数

+0

唯一的问题是convertToType(false,'false')也计算为true。我认为布尔运算符已损坏。有没有什么办法解决这一问题? –

+0

要从字符串转换为布尔值false,则需要传入如下所示的空字符串:'convertToType(false,'')' – marsouf

相关问题