Javascript 如何知道变量是什么类型?

Ste*_*fan 5 javascript types

我不知道为什么我过去几年从来没有问过自己这个问题,但突然间我无法为自己或谷歌找到任何答案。

众所周知,Javascript 没有变量类型。真是一件好事。但不知何故,它必须确定类型并使用它。

var a = 1;
var b = 2.0;
var c = 'c';
var d = "Hello World!";
Run Code Online (Sandbox Code Playgroud)

所以我们拥有的是一个整数、双精度/浮点数、字符、字符串(可能会被拆解为 char*)

我知道 JS 与运行时解释器一起工作,但考虑到逻辑和“类型”必须以任何方式实现..

那么 Javascript 解释器如何识别和内部处理变量呢?在我的想象中,假设我会编写 C++,我会想到一种模板和容器以及一些重载运算符并尝试检查它到底是什么的逻辑。但这并没有考虑到最后。

请与我分享您的知识:-)

Alp*_*ale 2

JavaScript 根据赋值设置变量类型。例如,当 JavaScript 遇到以下代码时,它知道myVariable应该是数字类型:

\n\n
var myVariable = 10;\n
Run Code Online (Sandbox Code Playgroud)\n\n

同样,JavaScript 将在以下示例中检测到变量类型为字符串:

\n\n
var myVariable = "Hello World!";\n
Run Code Online (Sandbox Code Playgroud)\n\n

JavaScript 也比许多其他编程语言灵活得多。对于 Java 等语言,变量在创建时必须声明为特定类型,并且一旦创建,类型就无法更改。这称为强类型。另一方面,JavaScript 允许随时通过分配不同类型的值(更好地称为松散类型)来更改变量的类型。

\n\n

以下示例是 JavaScript 中变量的完全有效使用。在创建时,变量显然是数字类型。稍后将字符串分配给该变量会将类型从数字更改为字符串。

\n\n
var myVariable = 10;\nmyVariable = "This is now a string type variable";\n
Run Code Online (Sandbox Code Playgroud)\n\n

变量\xe2\x80\x99s 数据类型是JavaScript 脚本引擎\xe2\x80\x99s对变量当前保存的数据类型的解释。字符串变量保存一个字符串;数字变量保存数字值,依此类推。然而,与许多其他语言不同,在 JavaScript 中,同一个变量可以保存不同类型的数据,所有这些都在同一个应用程序中。这是术语“松散类型”和“动态类型”所熟知的概念,这两者都意味着 JavaScript 变量可以根据上下文在不同时间保存不同的数据类型。

\n\n

完整文章在这里: http: //www.techotopia.com/index.php/JavaScript_Variable_Types

\n\n

另一篇文章可能对您有帮助:http://oreilly.com/javascript/excerpts/learning-javascript/javascript-datatypes-variables.html

\n\n

有用的链接:

\n\n

ECMAScript 语言规范

\n\n

ECMAScript BNF 语法

\n\n

JAVAScript BNF 语法

\n