繁体   English   中英

JavaScript字符串是原始类型吗?

[英]Javascript strings are primitive types?

在Javascript数字中,字符串和布尔值被称为原始类型。 基本类型通过副本传递。 确定考虑以下代码:

var s1 = "this is a string of 1000 characters ...";
var s2 = s1; // (2)

在第(2)行中会发生什么? 将1000个字符复制到变量s2? 或者,是否有一个存储位置,并且s1和s2都指向该存储位置? 我相信第二个是真的。 如果是这样,为什么所有的书都说字符串是原始类型,不是,它们是引用类型,不是吗?

在第(2)行中会发生什么? 将1000个字符复制到变量s2? 或者,是否有一个存储位置,并且s1和s2都指向该存储位置?

它是JavaScript引擎的实现细节,无法从JavaScript程序内部分辨出区别。

为什么所有书籍都说字符串是原始类型

语言就是这样定义它们的

它们是引用类型,不是吗?

它们可能以比暴露给JS更低的级别实现,但是对JS作者而言并不重要。

在第(2)行中会发生什么?

这或多或少地定义了实现。 您来说 ,它看起来像是副本。 但是,引擎可以自由地对其进行优化,并且可能会进行优化。 毫无疑问,类似写时复制

在JavaScript中,有原始字符串和字符串对象。 值得了解差异。 字符串对象通过引用传递,但是由于所有字符串方法都返回一个新字符串,因此您不太可能对其进行修改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM