【问题标题】:Difference between Primitive and non-primitive datatypes in JavaScriptJavaScript 中原始数据类型和非原始数据类型的区别
【发布时间】:2016-01-21 07:20:08
【问题描述】:

我无法准确理解 JavaScript 中原始数据类型和非原始数据类型之间的区别,即使它使用相同的名称(即 var)声明。

【问题讨论】:

  • 基元有值,非基元有参考,这是主要区别
  • 此外,原语最初不会被实例化为对象,而非原语是(我认为这是上面提到的值与引用的原因)。
  • 类型与 JS 中的变量没有任何关系,它们不是“声明的”。它们只属于价值观。

标签: javascript oop types abstract-data-type


【解决方案1】:
Data Types (JavaScript):

Primary Data Types
The primary (primitive) data types are:
String, Number, Boolean

Composite Data Types
The composite (reference) data types are:
Object, Array

Special Data Types
The special data types are:
Null, Undefined

点击here了解详情:

  var test1 = 1;
  var test2 = "Something";
  var test3 = true;
  var test4 = {};
  var test5 = new Array();
  var test6 = new Date();
  var test7;
  var test8 = null;

  alert(typeof (test1)); //number
  alert(typeof (test2)); //string
  alert(typeof (test3)); //boolean
  alert(typeof (test4)); //object
  alert(typeof (test5)); //object
  alert(typeof (test6)); //object
  alert(typeof (test7)); //undefined
  alert(typeof (test8)); //object

【讨论】:

    【解决方案2】:

    Javascript 有五种原始数据类型: 1.号码 2.字符串 3. 布尔值 4.未定义 5. 空

    任何不属于这五种原始类型的任何东西都被视为对象。

    前 3 种数据类型具有对应的对象构造函数。例如

    var word = "something";
    

    然后作为一个对象:

     var word = new String("something");
    

    对于对象构造函数,请注意new 关键字。它创建对象引用。

    还有一点需要注意

    var greeting = "something";
    var word = new String("something");
    greeting == word ----> True as their value is same
    greeting === word -----> False because there value same but type is different .
    

    至于 var 关键字在所有情况下都相同,请记住 Javascript 是动态类型语言。这意味着它在运行时而不是编译时(如 Java、C++)解决数据类型检查。

    这使得 javascript 非常强大。虽然这个独特的功能也有缺点。请通过此维基百科了解详细信息: https://en.wikipedia.org/wiki/Type_system#Static_and_dynamic_type_checking_in_practice

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      根据https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures

      ES6 中的原始数据类型有: 布尔值 空值 不明确的 数字 细绳 符号

      另一种非原始数据类型是 对象

      原始数据类型是不可变的值。

      【讨论】:

        【解决方案4】:

        原始数据类型是 1.号码 2.字符串 3. 布尔值 4.未定义 5. 空

        非原始数据类型是 1.对象 2.数组 3.正则表达式

        【讨论】:

          【解决方案5】:

          原始数据类型是编程语言提供的作为基本构建块的类型。比如:数字、字符串、空值、未定义、布尔值。 原始数据类型在编译时获取内存分配。

          派生数据类型是从现有的原始数据类型派生的类型,这些数据类型捆绑在一起,例如:数组、对象等。 派生数据类型只是获取对保存值的内存分配的引用。

          【讨论】:

            【解决方案6】:
            **The latest ECMAScript standard defines eight data types:**
            
            1. 字符串
            2. 布尔值
            3. 号码
            4. 大整数
            5. 取消定义
            6. 符号
            7. 对象

            注意:- 数组不属于此列表,因为它们也是对象。这在假定数组是 Javascript 中的特殊数据类型的开发人员中很常见。

            现在分叉数据类型

            JavaScript 中有两种数据类型:

            1. 原始值(String,Boolean,Number,BigInt,Null,Undefine,Symbol)

            2. 非原始值也称为对象引用(Object,Array)

            【讨论】:

              【解决方案7】:

              很简单,记住原始数据类型是指包含单个值的数据类型,例如1,'test',true,

              非原始数据类型是指包含多个值或复杂数据的数据类型,称为非原始数据类型,如对象等。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2016-01-02
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2018-01-07
                • 1970-01-01
                • 1970-01-01
                • 2020-05-07
                相关资源
                最近更新 更多