技术原理

JavaScript中有哪些不同的数据类型

JavaScript是一种用于web的脚本语言。和其他编程语言一样,它有自己的数据类型。语言中的数据类型定义了变量可以保存的数据类型。在本文中,我们将详细讨论JavaScript中的各种数据类型:

JavaScript中原始数据类型和非原始数据类型的区别JavaScript中原始数据类型和非原始数据类型的区别JavaScript

JavaScript中未定义和空两种数据类型的区别有七种类型。类型是JavaScript可以拥有的值。下面是JavaScript可以拥有的数据类型列表:

数字字符串布尔值未定义的空对象符号

data-types-in-javascript

Symbol数据类型在JavaScript中是新的。它已经包含在ES6版本中。我们可以使用“type of”JavaScript运算符来查找值或数据的类型。JavaScript中的上述数据类型分为两大类:原语和非原语。

JavaScript中的原语数据类型包括数字、字符串、布尔值、未定义、空值和符号。

非原语数据类型只有一个成员,即对象。

原语之间的区别而JavaScript

中的非基元数据类型JavaScript基元数据类型是指单个值的数据类型。

例如var a=5;

这里的变量“a”是一个整数数据类型,并且具有单个整数值。变量“a”引用内存中的单个值。如果我们想改变a的值,就必须给a赋一个新值。原始数据类型是不可变的。

当我们创建变量时,它会在内存中为自己保留一个空间。变量“a”在内存中有存储其值的空间。当我们试图通过分配另一个值(如var a=6)来更改“a”的值时,它不会更改原始a的值,它只是用新值6创建一个新变量“a”。

我们可以将“a”的值分配给另一个变量,如:

var a1=a;

这里变量“a1”被赋值为“a”,不是内存中“a”的地址。

因此“a1”现在与“a”具有相同的值。

我们可以比较两个变量“a”和“a1”,因为这两个变量现在引用相同的值。

使用比较运算符将返回布尔值“true”。

a==a1//“true”作为“==”检查这两个变量的值和类型是否为true。

JavaScript非基元类型是对象。一个对象持有一个或多个键值对的引用/地址。每当我们引用一个对象时,我们都会引用内存中包含键值对的地址。如果我们将对象“object1”分配给另一个对象“object2”,则实际上是将“object1”的地址分配给“object2”,而不是“object1”在内存中包含的键值对。让我们看看下面的“.

var object1={a:5,a1:6};

var object2=object1;

上面的语句将object2的地址分配给object1,而不是值{a:5,a1:6}。因此,使用此赋值“object1”和“object2”引用内存中的同一地址。

比较这两个对象时,我们发现它们都引用内存中的同一地址。

object1===object2//将返回true,因为两者都引用同一地址。如果我们比较如下两个独立的对象:

var object1={a:5,a1:6};

var object2={a:5,a1:6};

此语句object1===object2//将返回false,因为两个对象都引用内存中的两个独立地址。当我们比较两个对象时,我们比较它们的地址,而不是它们的值。

在原始数据类型的情况下我们已经看到,当我们将变量“a”赋给变量“a1”时,“a”的值被复制到“a1”,而不是它在非-原始数据类型。

因此原始数据类型是指内存中地址中的“单个值”,而非原始数据类型是指内存中包含单个或多个键值对的“地址”。

原始数据类型

原始数据类型是数字、字符串、布尔值、空值,无限和符号。对象是非基元数据类型。JavaScript数组和函数也是对象。

数字:

数字数据类型可以是整数、浮点值、指数值、“NaN”或“Infinity”。

var A=250;//integer valuevar b=25.5;//包含小数的数字var c=10e4//10*10000的指数值;

有特殊的数值,例如NaN和无穷大。

如果一个数字除以0,则得到的值为无穷大。

5/0;//结果为无穷大无穷大的类型是一个数typeof(NaN);//返回一个数字

,我们还可以使用number()函数创建一个数字文本:

var c=number(5);控制台.log(c) ;//这将返回5

,我们可以使用“new”运算符和number()构造函数创建一个number对象:

var num1=new number(5);type of(num1);//This will return'number'

String:

JavaScript中的字符串数据类型可以是由单引号、双引号或倒勾号括起的任意一组字符。

var str1=“This is a string1”;//This is a String primitive type or String literalvar str2='这是string2';var str3=`This is a string3`;

或者,我们可以使用String()函数创建新字符串。

var str4=String('hi');//This creates a String literal with value'hi'

String()函数还用于将非字符串值转换为字符串。

字符串(4);//此语句将创建一个字符串“4””

,如“number”和“boolean”数据类型,可以使用“new”运算符创建一个“string”对象:

var str5=new string(“hello”);/这是一个字符串对象typeof(false)//returns boolean

让我们看看比较语句的示例:

var a=5;警报(a小于b);Boolean(mystring);//这将导致true,因为“mystring”值存在。“

可以使用新运算符创建布尔对象。

var booleanobj=new Boolean(true);

这里的“boolleanobj”是布尔对象。

虽然我们可以创建原始数据类型为“number”的对象,“boolean”和“number”最好使用这些类型的原始版本。

未定义:

未定义的数据类型表示未定义的变量。变量已声明,但不包含任何值。

var a;控制台.log(a) ;//这将返回未定义的。“

“变量‘a’已声明,但尚未赋值。我们可以给a赋值:

a=5;控制台.log(a) ;//This returns null

如果使用type of运算符检查a的数据类型,则得到:

typeof(a);//This returns object

这意味着空值的类型是一个对象,而不是空值。

Symbol:

Symbol“Symbol”数据类型在es6中是新的。这是es6的新特性之一。符号数据类型定义对象的私有属性。它引用对象的键值对的“key”。

var object1={name:'Shalini',年龄:25岁,城市:“孟买”var ocposition=Symbol('engineer');

函数Symbol()用于创建新符号。在这里,我们为上述对象“object1”创建了一个值为“engineer”的符号“ocposition”。

每个符号都是唯一的。两个符号即使键值相同也不相同。

var ocposition=Symbol('engineer');var ocposition=Symbol();

ocposition===ocposition//返回false。因此,上述两个“职业”符号是不同的。每一个都是对象的唯一属性。

我们不能使用“new”运算符创建符号对象,因为symbol()不能用作构造函数。

symbol()函数中的字符串描述是可选的。检查'occulation'符号类型:

type of(occulation);//returns symbol

非基元数据类型

object是JavaScript中的非基元数据类型。JavaScript中的数组和函数属于“object”数据类型。

对象:

让我们创建一个对象文本。JavaScript中的对象在其地址中包含键值对。当我们提到obj1时,实际上是指内存中包含值{a:5,b:6}的地址,而不是直接包含值{a:5,b:6}。

var obj1={a:5,b:6};

我们可以更改或变异obj1的值。

obj1[a]=7;控制台.log(obj1)//将返回值{a:7,b:6}

,因此该值已成功更改。

当我们使用type of运算符检查obj1的值时,它将返回一个对象。

typeof(obj1)//将返回数据类型“object

数组:

JavaScript中的数组是对象数据类型。数组包含多个具有数字索引的值,其中索引从0开始。因此,它将其值保存在一个键值对中。

var arr1=[1,2,3];

我们不能变异或更改上面的数组arr1。

假设我们试图更改其值。

arr1[0]=4;控制台.log(arr1)//这将返回数组[4,2,3]控制台.log(a) ;//returns undefined

'a'不包含任何值,数据类型未定义。

var a=undefined;//possible but not recommended

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片
人工智能时代 投稿者
我还没有学会写个人说明!
最近文章
  • * 没有更多文章了
  • 热门搜索

    分类目录