Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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 - Fatal编程技术网

可以键入JavaScript变量吗?

可以键入JavaScript变量吗?,javascript,Javascript,是否有一种机制来键入JavaScript变量,以便确定赋值返回的数据类型?由于JavaScript是一种动态语言,这是不可能的?JavaScript变量可以保存许多数据类型:数字、字符串、数组和对象 我们可以使用typeof找出变量的类型 if(typeof myvar === 'number') { // code you want } 或者您可以使用Object.prototype.toString,这样您就不必识别对象和基本类型之间的差异 > Object.prototyp

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

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]"

希望这会有所帮助。

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

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

为了给人留下第一印象,你可以亲身体验

在运行时获取实际类型

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

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

有关更多信息,请参阅我在上面找到代码段的地方。

您可以使用TypeScript,它是JavaScript的超集,可向下转换为JavaScript。请看:有一种感觉,它将在使用中更多,因为Angular 2将使用它