Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中将一个变量转换为另一个变量的类型_Javascript_Types_Type Conversion - Fatal编程技术网

如何在Javascript中将一个变量转换为另一个变量的类型

如何在Javascript中将一个变量转换为另一个变量的类型,javascript,types,type-conversion,Javascript,Types,Type Conversion,我希望能够将一个变量强制转换为另一个变量的特定类型。例如: function convertToType(typevar, var) { return (type typevar)var; // I know this doesn't work } 所以convertToType(1,“15”)返回15,convertToType(“1”,15)返回“15”,convertToType(false,“True”)返回True,等等 重申一下,我希望能够将变量动态转换为其他变量的类型 这

我希望能够将一个变量强制转换为另一个变量的特定类型。例如:

function convertToType(typevar, var) {
    return (type typevar)var; // I know this doesn't work
}
所以convertToType(1,“15”)返回15,convertToType(“1”,15)返回“15”,convertToType(false,“True”)返回True,等等

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


这可能吗?

更新:这里有一个更完整的示例,包含测试(需要Node 6+或一些ES5转换):

您可以使用运算符获得正确的“铸造”功能:

function convertToTypeOf(typedVar, input) {
  return {
    'string': String.bind(null, input),
    'number': Number.bind(null, input)
    //etc
  }[typeof typedVar]();
}
在这里尝试一下:

我还建议你调查一下你的项目

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


注意第一个调用,当我们想要将15转换为一个数字时,我们在第一个参数后面附加一个点(.)

它遵循我的JaKXz-answer版本,该版本通过打开推断类型被认为更有效。在
number
boolean
的情况下,转换是松散的:在输入无效的情况下,它将分别输出
NaN
false
。您可以通过添加更严格的验证和更多类型来实现这一点

函数convertToTypeOf(类型变量,输入)
{
let type=typeof-typevar;
开关(类型)
{
大小写“字符串”:
返回String.bind(null,输入)();
案例“编号”:
返回编号。绑定(空,输入)();
案例“布尔”:
返回输入==“真”?真:假;
违约:
抛出“不支持的类型”;
}
}
console.log(convertToTypeOf(“string”,1));//返回“1”
console.log(convertToTypeOf(“string”,true));//返回“true”
console.log(convertToTypeOf(“string”,false));//返回“false”
console.log(convertToTypeOf(1.2,“1”));//返回1
console.log(convertToTypeOf(1.2,“1.5”);//返回1.5
console.log(convertToTypeOf(true,“false”);//返回false
console.log(convertToTypeOf(false,“true”);//返回true
console.log(convertToTypeOf(1,“asd”);//返回楠
console.log(convertToTypeOf(true,“asd”);//返回false

JavaScript是动态键入的。因此,不需要函数进行转换。不,
typeof
告诉您变量所包含的数据类型,它不会在数据类型之间转换。您看过jsbin@Quentin吗?@OfekGila我制作了一个更完整的示例,我将编辑文章以包含它。:)@昆汀,抱歉搞混了,我想把我的问题说清楚一点。不过,感谢您的回复,但我很清楚先前存在的强制转换功能:)@JaKXz您刚刚成为我的一天。唯一的问题是convertToType(false,'false')的计算结果也是true。我想布尔运算符坏了。有什么方法可以解决这个问题吗?要从字符串转换为布尔值false,需要传入一个空字符串,如下所示:
convertToType(false),
@OfekGila
(false,'false')
工作正常。它不应该返回false。@OfekGila它没有损坏,但按设计工作。以下是ECMA-262的相关章节:。具体来说,String:如果参数是空字符串(其长度为零),则返回false;否则返回true。