【发布时间】:2017-11-11 14:45:09
【问题描述】:
我正在学习 JS,对变量很困惑:
短篇小说:浏览器如何确定var标签下的数据类型,它们如何确定var下数据类型的存储要求标签,当两种不同类型的数据一个接一个地分配给同一个变量时会发生什么?为什么这些变量都在 var 名称下扭曲?如果 JS 有不同类型的数据,如整数、字符串等,那会更有意义。
长篇大论: 通常,当我们要声明一个变量时,我们定义它的类型:整数、字符串或字符等。这样,我们确保为变量分配了足够的存储空间,并且大多数时候,该特定变量有一些特殊的函数类型。在 JS 中,变量 - 显然也包括函数 - 只是在 var 名称下使用。因此,我们以 var 名称存储任何内容。我的问题是:浏览器/JS 编译器如何区分变量中的数据类型为字符串/字符等,它们如何确定该数据所需的位长,以及它们如何处理哪些函数适合该数据?当我先将一个整数分配给该变量,然后再分配一个字符串时会发生什么?另外,定义不同类型的变量不是更容易吗?
我是 JS 的初学者,所以请放轻松。干杯!
【问题讨论】:
-
欢迎学习 JavaScript,你问过一个问题,在我看来是什么让 JS 成为最好的和最差的。
-
Javascript 有类型,它只是动态类型而不是静态类型。而且我认为对于像 JS 这样的语言来说,你的想法太低了。除非您正在编写引擎,否则这不是您应该担心的事情。
-
优点是你不必担心类型,除非你在处理浮点数。几乎所有内容都将被隐式转换。这可能会导致一些奇怪的结果,但会导致代码更短。不利的一面是,您将遇到一些在编译时无法捕捉到的类型和类型转换错误。但是更短的语法和自动转换极大地弥补了这一点。每次我必须像 SQL 代码那样编写时我都会哭,我必须重新编写每个结果并最终得到 5 行,这在 JS 中将是一行。如果您确实需要静态类型,请查看 typescript。
-
另外请记住,JS 会自动在其堆内进行所有内存分配。所以你永远不必手动喜欢 malloc。例如,无论数字有多长或具有哪种类型,它们都存储为(无)有符号的 32 位浮点数。
标签: javascript