是否可以在JavaScript

时间:2017-10-12 00:08:13

标签: javascript

截至2017年10月11日,

MDN's documentation声明如下:

  

JavaScript是松散类型的动态语言。这意味着您不必提前声明变量的类型。在处理程序时,将自动确定类型。

这意味着,除其他外,我们可以编写更少的代码,因为JS在初始化变量时会自动检测数据类型。例如:

let amount = 0;  // since 0 is a number, this variable is of type "number"
amount += 1;  // which makes it real easy to add another number to it

console.log(amount);  // returns 1

在做了一些研究之后,我认为修改第二句可能更准确:

  

这意味着你不能提前声明变量的类型。

例如:

let amount;  // without initialization, this variable is of type "undefined"
amount += 1;  // which makes it impossible to add a number to it

console.log(amount);  // returns NaN

如果有一种方法可以在变量初始化之前声明变量的数据类型,请在答案中提供详细信息。

1 个答案:

答案 0 :(得分:3)

无法在普通Javascript中声明变量的类型,即使在最新的规范(ES7)中也是如此。也没有静态类型检查。

您在此处观察到的行为:

let amount;
amount += 1;
console.log(amount);

...是由于undefined + 1评估NaN,这可能是有意义的,也可能没有意义,但是JS的工作方式。

您可以使用任何类型重新分配变量:

let a = 1;
a = 'asdf';
console.log(b);

FlowTypescript等项目会对Javascript进行静态类型检查。