javascript - Javascript 如何知道变量的类型?

标签 javascript types

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

众所周知,Javascript 没有变量类型。真是一件好事。 但它必须以某种方式确定类型并使用它。

var a = 1;
var b = 2.0;
var c = 'c';
var d = "Hello World!";

所以我们有一个 Integer、Double/Float、Character、String(可以分解为 char*)

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

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

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

最佳答案

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

var myVariable = 10;

同样,JavaScript会在下面的例子中检测到变量类型是string:

var myVariable = "Hello World!";

JavaScript 也比许多其他编程语言灵活得多。对于 Java 等语言,变量在创建时必须声明为特定类型,并且一旦创建,类型就不能更改。这称为 strong typing 。另一方面,JavaScript 允许随时更改变量的类型,只需分配一个不同类型的值(更好地称为 loose typing )。

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

var myVariable = 10;
myVariable = "This is now a string type variable";

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

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

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

有用的链接:

ECMAScript Language Specification

ECMAScript BNF Grammar

JAVAScript BNF Gramar

关于javascript - Javascript 如何知道变量的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12364614/

相关文章:

C++类型转换

C++ 包装返回类型

javascript - 当iframe的源是javascript时浏览器做了什么

javascript - 将数组插入到 "replace"函数,但它以不同的顺序插入数组

javascript - 直接在组件标签中编辑子组件的 props 值

typescript : "Resolve"条件类型

Haskell 数据结构的奇怪之处

c++ - C++中的15种类型分类是什么?

javascript - Phonegap : Getting contact name, 但不是数字

javascript - JQuery 滚动到窗口顶部时隐藏按钮