可以输入JavaScript变量吗?

时间:2015-05-09 09:00:24

标签: javascript

是否有一种机制可以输入JavaScript变量,因此可以确定赋值返回的数据类型?由于JavaScript是一种动态语言,这是不可能的吗?

2 个答案:

答案 0 :(得分:2)

JavaScript变量可以包含许多数据类型:数字,字符串,数组,对象

我们可以使用typeof找出变量的类型。

if(typeof myvar === 'number') {
   // code you want 
}

或者你可以使用Object.prototype.toString,这样你就不必识别对象和对象之间的区别。原始类型

> Object.prototype.toString.call(80)
"[object Number]"
> Object.prototype.toString.call("samouray")
"[object String]"
希望这很有帮助。

答案 1 :(得分:0)

您可以使用预编译器在开发时使用例如添加类型(和其他功能)。打字稿:

class Greeter {
    greeting: string;

    constructor(message: string) {
        this.greeting = message;
    }

    greet() {
        return "Hello, " + this.greeting;
    }
}

var greeter : Greeter = new Greeter("world");

TypeScript是一组超级JavaScript(意味着您可以按原样使用现有的JavaScript代码并将其传递给TypeScript编译器),并且开发用于为开发人员提供类型安全,更简单的继承等。它编译为纯JavaScript。 / p>

要获得第一印象,您可以play with the compiler获得第一次亲身体验。

在运行时获取实际类型

由于TypeScript编译为纯JavaScript,因此不能使用typeof来获取TypeScript中声明的类型名称(这将返回例如上面定义的Greeter的对象)。要解决此问题,需要使用以下JavaScript方法:

function getClassName(obj) {
    var funcNameRegex = /function (.{1,})\(/;
    var results  = (funcNameRegex).exec(obj["constructor"].toString());
    return (results && results.length > 1) ? results[1] : "";
}

有关详细信息,请参阅我在上面找到上述代码段的How do I get the name of an object's type in JavaScript?