string是什么数据类型?

哎呀,你说的我有点困惑。
我感觉我正在阅读代码的注释。
你确定是JavaScript,但是Java字符串和基本类型概念出现在里面吗?这有点令人困惑。

我们分开说吧。

关于JavaScript的字符串类型:
在JavaScript中,字符串实际上是一种原始类型,而不是引用类型。
你所说的“通过引用传递参数,但改变参数不影响改变原地址指向的值”严格来说是针对对象的。
例如,如果您传递一个对象并修改它,则实际上会修改原始对象。
但作为基类型,字符串传递值的副本,而不是地址。
因此,如果您更改函数中的字符串,则外部的字符串不会更改。
例如: javascript 函数changeStr(s) { s = s.toUpperCase(); } 离开 myStr =“你好”; 更改Str(myStr); 控制台.log(myStr); // 输出“hello”,未更改
这是 myStr 值的副本。
更改函数中的 s 不会影响 myStr。

至于“你列出的5 种基本数据类型:数字(整数和浮点)、字符串、null、布尔值和未定义”,这些实际上是JavaScript的6 种基本类型(原始类型),没错。
但 null 是一种特殊情况。
ECMAScript 标准称它是一种对象类型,但实际上它的行为类似于基本类型。
undefined 也是一个基本类型。

关于Java String:
Java中的String是一种引用类型,这是事实。
你说的“Java中的String是一个对象,是一个引用类型”是正确的。
它存储字符序列并且是不可变的。
因此,当你修改一个String对象时,你实际上创建了一个新的String对象。

但是你说“基类型和引用类型的区别在于基类型仅表示简单的字符或数字”,这并不完全正确。
Java 基本类型包括 byte、short、int、long、float、double、char 和 boolean。
它们直接存储值,而不是对象。
引用类型包括类、接口、数组等。
字符串属于类。

您后来说“Java虚拟机以不同的方式处理基本类型和引用类型”,这是正确的。
基类型值通常在栈上(局部变量),而引用类型变量在栈上存储引用(指针),指向堆上的真实对象。

总结一下:
看来您混淆了 JavaScript 和 Java 的字符串概念,并且还混淆了其他基本 Java 类型的描述。
在 JavaScript 中,字符串是基本类型,而不是引用类型。
在Java中,String是一个引用类型,也是一个不可变对象。

所以你问JavaScript字符串是否是引用类型。
我的回答是:不,这是基本类型。

js object 的key有哪几种

老实说,对象的键只有三种类型:数字、字符串和符号。
这些的用途不同。

数字键:您使用数字作为键,例如例如。
obj[1 ] = 'a'.不过JS最底层其实是存储为字符串的,所以obj['1 ']也指向同一个位置。
然而,当滚动浏览时,数字键按升序排序,例如例如。
{2 : 'a', 1 : 'b'},使用Object.keys()的结果是['1 ', '2 ']。
这种用法对于模拟数组很有好处,但是要注意数字隐式转换为字符串的问题。

弦乐谱号是最常见的。
obj.name = 'zhangsan' 或 obj['name'] = 'zhangsan'.这种类型的访问直接基于文本内容,没有任何曲折。
当 Object.keys() 返回字符串键时,它们按照创建的顺序排列,但数字字符串首先排序,例如例如。
obj['2 '] = 'a',obj['1 '] = 'b',keys() 首先返回 ['1 ', '2 ']。
它用于最灵活和说明性的场景,例如:当配置对象等时。

Symbol 仅在 ES6 中可用。
每个符号都是不同的。
即使Symbol('id')调整两次,结果也是不同的。
因此,特别适合需要唯一标识的场景,例如避免插件系统中的冲突。
符号键在 Object.keys() 中不可见,必须使用 Object.getOwnPropertySymbols() 单独检索。
这适用于私有和封装的东西,并且与字符串密钥兼容。

注意顺序。
数字键按升序排列,字符串键按创建顺序排列。
符号键不参与此顺序,必须单独完成。
这体现了JS处理不同key类型的不同方式。
根据使用的场景,您只需要选择适当的密钥类型并了解遍历行为。