美文网首页
JavaScript中的类型、值和变量

JavaScript中的类型、值和变量

作者: 程序员之家 | 来源:发表于2023-08-19 09:34 被阅读0次

    JavaScript的类型可以分为两个主要组别:原始类型和对象类型。JavaScript的原始类型包括数字、文本字符串(简称为字符串)和布尔值(也称为布尔值)。

    特殊值null和undefined也是原始值,但它们不是数字、字符串或布尔值。这两个值通常被视为各自类型的独特成员。ES6引入了另一种特殊类型,称为Symbol,用于语言扩展而不破坏向后兼容性。

    在JavaScript中,除了数字、字符串、布尔值、Symbol、null和undefined之外的任何值都是对象。对象是对象类型的成员,它们是属性的集合,每个属性都有一个名称和一个值(可以是原始值或另一个对象)。还有一个非常特殊的对象,称为全局对象。

    (程序员的软技能:ke.qq.com/course/6034346)

    常规JavaScript对象是无序的命名值的集合。语言本身还定义了一种特殊的对象,称为数组。数组表示有序的数值集合。JavaScript包括用于操作数组的特殊语法,数组本身展现出与常规对象不同的行为。

    除了基本对象和数组之外,JavaScript还定义了其他几种有用的对象类型。Set对象表示值的集合,而Map对象表示键值映射。各种“类型化数组”类型便于对字节数组和其他二进制数据进行操作。RegExp类型表示文本模式,并在字符串上支持复杂的匹配、搜索和替换操作。Date类型表示日期和时间,支持基本日期计算。Error类型及其子类表示在JavaScript代码执行过程中可能发生的错误。

    将JavaScript与静态语言区分开的是,函数和类不仅仅是语法,它们本身是可以由JavaScript程序操作的值。与JavaScript中的其他非原始值一样,函数和类也是特殊类型的对象。

    在内存管理方面,JavaScript解释器执行自动垃圾回收。这意味着JavaScript程序员通常不需要关心对象或其他值的销毁和释放。当一个值变得不可访问,或者不再被程序引用,解释器知道它不再需要,并自动释放它占用的内存(尽管JavaScript程序员有时应该谨慎,以防止值比预期的持续时间更长,变得无法回收)。

    JavaScript支持面向对象的编程风格。实质上,这意味着不要为不同类型的值定义全局函数,而是让这些类型定义操作值本身的方法。例如,要对数组的元素进行排序,您不需要将数组传递给sort()函数;相反,您可以在数组a上调用sort()方法:

    // 面向对象版本的sort(a)

    a.sort()

    从技术角度来看,只有JavaScript对象具有方法。但是,数字、字符串、布尔值和符号似乎也有方法。在JavaScript中,只有null和undefined不能调用方法。

    JavaScript的对象类型是可变的,而其原始类型是不可变的。可变类型可以更改;例如,JavaScript程序可以修改对象的属性和数组元素。数字、布尔值、符号、null和undefined是不可变的。例如,修改数字没有意义。字符串可以被视为字符数组,您可能期望它们是可变的。但是,在JavaScript中,字符串也是不可变的。虽然您可以使用索引访问字符串中的字符,但JavaScript不提供修改字符串中现有字符的方法。

    JavaScript自由地转换不同类型的值。例如,如果程序期望一个字符串,但您提供了一个数字,数字将自动转换为字符串。同样,如果在期望布尔值的地方使用非布尔值,JavaScript将相应地进行转换。

    JavaScript中的这种自由值转换影响了等式的定义,等式运算符==执行类型强制转换(尽管在实践中,等式运算符==通常被避免,而使用严格等式运算符===,它不执行类型强制转换)。

    常量和变量允许我们在程序中使用名称引用值。常量使用const声明,变量使用let(或在较旧的JavaScript代码中使用var)声明。JavaScript的常量和变量是无类型的;它们的声明不限制它们可以保存的值的类型。

    (程序员的软技能:ke.qq.com/course/6034346)

    相关文章

      网友评论

          本文标题:JavaScript中的类型、值和变量

          本文链接:https://www.haomeiwen.com/subject/khhjmdtx.html