Maison  >  Article  >  interface Web  >  Introduction aux types de données de base JavaScript, aux types de valeur et aux types de référence

Introduction aux types de données de base JavaScript, aux types de valeur et aux types de référence

巴扎黑
巴扎黑original
2017-08-17 14:35:541445parcourir

Il existe quatre types de données de base en JavaScript : les valeurs numériques (entiers et nombres réels), le type de chaîne (caractères ou valeurs numériques entourés de "" ou '"), le type booléen (représentant True ou False ) et valeur nulle. Les données dans les types de base de JavaScript peuvent être des constantes ou des variables. Étant donné que JavaScript adopte un type faible, une variable de données ou une constante n'a pas besoin d'être déclarée au préalable, mais est déterminée lors de l'utilisation ou de l'attribution d'une valeur. type de données. Bien sûr, vous pouvez également déclarer d'abord le type de données, ce qui indique automatiquement son type de données lors de l'attribution d'une valeur. Les variables en JavaScript ne sont que des espaces réservés, comme mentionné dans la préface, en raison d'une saisie lâche

Définir les variables :

var name;

Le code ci-dessus définit une variable nommée name, qui peut être utilisée pour enregistrer n'importe quelle valeur (une variable non initialisée comme celle-ci enregistrera une valeur spéciale - non définie), ou la valeur de la variable peut être initialisée,

Au début, le nom a été initialisé avec la valeur de chaîne "jwy", puis remplacé par la valeur numérique - 100 . Cette approche n'est pas recommandée, mais elle est efficace dans ECMAScript, et dans de nombreux cas, elle le fera

Vous pouvez également définir plusieurs variables dans une seule instruction, et de nombreux frameworks JavaScript le font. 🎜>

Il est très pratique d'ajouter des points-virgules à chaque instruction. Cependant, lors de l'utilisation de plusieurs variables, il est recommandé de couper les lignes et de mettre en retrait pour améliorer la lisibilité. >
var name =”jwy”; //javascript 中的单引号和双引号没有区别,不过要注意正确嵌套name=10;
Types de données simples

Il existe trois types de données simples : Non défini, Null, Boolea, Number et String. Il existe également un type de données complexe - Objet

var name=”jwy”,author,age=29;
opérateur typeof

Étant donné que les variables en Javascript sont faiblement typées, il fournit donc un moyen de détecter le type de données de la variable actuelle, c'est-à-dire le mot-clé typeof, parmi les 5 types de données simples dans ECMAScript mentionné ci-dessus (rappelez-vous que ces 5 ne sont que des types de données, représentent un type de données, tout comme les types int et string en C#), via le mot-clé typeof, les valeurs suivantes seront renvoyées pour ces cinq types de données (affichées dans forme de chaîne

"undéfini" ---------- Si la valeur est indéfinie Undéfini"booléen" ---------- Si la valeur est une valeur booléenne Boolean

"string" ---------- Si cette valeur est une chaîne String

"number" ---------- Si cette valeur est un numéro de type numérique"objet" ---------- Si la valeur est un objet ou un objet nul

"fonction" ------ ---- Si la valeur est une fonction Function

Mais à proprement parler, les fonctions sont des objets dans ECMAScript, et chaque fonction est une instance de la classe Function puisqu'une fonction est un objet, c'est aussi une référence. type, donc une fonction n'est qu'un nom de variable, donc, on peut souvent voir à plusieurs reprises que le nom de la fonction est transmis à la fonction en tant que paramètre puis appelé. Ceci est similaire au délégué en C#. fonction en détail plus tard. Après tout, beaucoup de choses en Javascript en dépendent implémentées dans les fonctions.

Type non défini

Comme mentionné ci-dessus, les 5 types sont des types de données, donc les types de données ont des valeurs La valeur de Undéfini est indéfinie. cas. Si une variable est déclarée mais non initialisée, la valeur actuelle de la variable n'est pas définie. Cependant, il est généralement recommandé d'initialiser les variables autant que possible. Cependant, dans les premières versions de Javascript, la valeur undéfinie n'était pas spécifiée, donc dans certains frameworks, afin d'être compatible avec les navigateurs plus anciens, la valeur undéfinie sera ajoutée à. l'objet fenêtre, comme suit :

Pour faire simple, attribuez undéfini à l'attribut undéfini de l'objet fenêtre. Dans les objets navigateur plus anciens, l'objet n'a pas l'objet undéfini. attribut, donc si l'opération non définie est utilisée, cela provoquera une anomalie, donc en utilisant cette méthode, ce sera un peu difficile à comprendre au début. Dans les anciens navigateurs, une valeur non définie sera renvoyée car il n'y a pas d'objet window.undéfini. , cela peut donc être compatible avec les anciens navigateurs.

Cependant, les variables contenant des valeurs non définies sont différentes des variables non définies, telles que :

var name;
alert(name);//undefinedalert(age);// 错误:age is not defined


还没声明过的变量只能执行一项操作,其他全都不能做,就是使用typeof操作符检测其数据类型。

如果不管声明过未初始化以及未声明过的变量执行typeof都是返回undefined的值。两种变来那个都不能执行真正的操作

Null类型

      Null类型的值是null,它表示一个空对象指针,没有指向任何对象,如果一个变量的值是null,那当前变量很有可能就是垃圾收集的对象,使用typeof监测null值时会返回”object”,

var person = null;alert(typeof person);//”object”

建议:如果变量是要用来保存对象的额,则初始化为null,这样到时就可以检测该变量是否已经保存了一个对象的引用的,

注意:undefined值是派生自null的,所以对他们执行相等测试会返回true,如:

alert(null == undefind);//true


尽管如此,但是他们用途完全不同,无论在什么情况下都没必要将一个变量的值显示设为undefined,但是这个规则对null却不适用。

Boolean类型

      这个类型只有两个值:true 和false。虽然只有两个值,但是javascript中所有类型的值都有与这两个值等价的值。要将一个值转换为对应的Boolean值,可以调用转型函数Boolean()  (其实Boolean ,Object,String,Number,Function等这些都是一个函数,构造函数,同样也可以理解为一个类,用类型调用toString()方法会返回这样的东西:

"function Function() { [native code] }"  ,Function会相应的改成各自的那个调用函数   )

其实在 if 语句判断中,会对里面的条件自动执行Boolean变化的。

Number类型

      数值类型有很多值,最基本的当然就是十进制啦,如:     

var num=510;

除了十进制,整数还可以通过八进制或十六进制,其中八进制字面值第一位必须是0,然后是八进制数字序列,如果字面值中的数值超出了范围,那么前导零将被忽略。后面的额数值将被当做十进制数解析。

var num1=070;//八进制的56var num2 =079;//无效的八进制—解析为79var num3 =08;// 无效的八进制—解析为8

而十六进制前面则必须是0x,后跟十六进制数字(0~F),不分大小写。如:

var num1 = 0xA;var num2 = 0x1f;

虽然可以表示为八进制和十六进制,但是计算时会被转换成十进制值。

除了整数,还有浮点数值,当然了,没有像其他强类型语言中的float之类的关键字了。

var num1 = 1.1;
var num2 =0.1;var num3 = .1;//有效,但不推荐

在保存整数时内存分配大小只有浮点数的1/2,所以当浮点数可以转换为整数时,javascript会自动转换为整数。

当然了,除了这些数值比较小的,还有一些极大或极小的数值,可以用科学计数法表示,

var num=123.456e10;

浮点数值的最高精度是17位小数,但是计算时其精确度远远不如整数。例如 ,0.1+0.2不等于0.3,而是0.3000000000000004,所以在做判断时,千万不要用浮点数相加判断等于预想中的某个值。

在javascript中数值最小的是Number.MIN_VALUE,这里可以想象成Number是一个类,而MIN_VALUE 是一个静态变量,储存最小值,同样,最大的是Number.MAX_VALUE。

如果计算中超出了这个最大值和最小值范围,则将被自动转换成Infinity值,如果是负数,就是-Infinity,整数就是Infinity,Infinity的意思是无穷,也就是正负无穷,跟数学中的概念是一样的。但是Infinity是无法参与计算的。可以用原生函数确定是不是有穷:isFinite();只有位于数值范围内才会返回true。

在Javascript中数值除了那些普通的整数、浮点数、最大值、最小值、无穷之外呢,还有一个特殊的值,就是NaN。这个数值用于表示一个本来要返回数值的操作数未返回数值的情况。比如,在C#中任何数值除以0都会报错,抛出异常,但是在Javascript中,任何数值除以0会返回Nan,因此不会影响代码的执行。

NaN的特点:

1、任何设计NaN的操作(如:NaN/0)都会返回NaN.

2、NaN与任何值都不相等,包括NaN本身。如:

alert(NaN == NaN);//false


所以Javascript中有一个isNaN()函数,这个函数接收一个参数,任意类型,它会帮我们确定这个参数是否”不是数值”。它会先尝试先讲这个值转为数值。如果不能被转换为数值的值在调用这个函数之后会返回true,即is  NaN 非数值。

至于数值转换,这个内容在Javascript中扩展开来又是一篇文章,有时间再整理整理。

String类型

字符串可以由单引号或双引号表示,在Javascript中这两种引号是等价的,如:

var name = ‘jwy";var author = “jwy”;

不过就是要注意正确嵌套。

字符串可以直接用字面量赋值。任何字符串的长度都可以通过访问气length属性获得。

在Javascript中的字符串是不可变的,其实这跟C#中是一样的,(估计也是为了提高性能),字符串一旦创建,他们的值就不能改变,要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含信纸的字符串填充该变量。

var name=”jwy”;name = “jwy”+” study javascript”;

这里一开始name是保存字符串”jwy”的,第二行代码则将“jwy”+” study javascript”; 值重新赋给name,它先床架一个能容纳这个长度的新字符串,然后填充,销毁原来的字符串。

几乎每个值都有自己的toString()方法,在后面的文章会解释这个方法哪里来的,它会返回相应值的字符串表现。

var age=11;var ageToString =age.toString();//”11”

数值、布尔值、对象和字符串值都有toString(),但是null和undefined值没有这个方法。

一般来说,调用toString()方法不必传递参数,但是,在调用数值的toString方法时,可以传递一个参数,用来指定要输出的数值的基数(看是要输出十进制、二进制、八进制、十六进制表示)

由于null和undefined没有toString方法,在不知道是否是这两者的情况下调用是会报错的,所以还有一条路可以选,就是使用转型函数String(),它呢就可以接收任何类型的值转为字符串了,处理规则如下:

1、如果这个值有toString则直接调用,并返回结果

2、如果是null,则返回”null”

3、如果是unde,则返回”undefined”

Object 类型

Object类型是Javascript引用类型的鼻祖了,(就跟在C#和Java中是一样的道理),在创建Object类型的实例后可以为其添加属性和方法,

var o = new Object;//有效,不推荐var o =new Object();

 在Javascript中,Object类型所具有的任何属性和方法也同样存在于更具体的对象中。

每个实例都有如下的属性和方法,如下:

1、constructor ,保存着用于创建当前对象的函数。上面构造函数就是Object();

2、hasOwnProperty,用于检查给定的属性是否在当前对象实例中,是就true,不是在实例中,而是在原型中,则是false;

3、isPrototypeOf,用于检查传入的对象是否是另一个对象的原型

4、propertyIsEnumerable,用于检查给定的属性是否能够使用for…in语句来枚举,

5、toString,返回对象的字符串表示

6、valueOf,返回对象的字符串、数值或布尔值表示,通常与toString方法返回值相同

以上就是Object所具有的属性和方法,所有对象都会因为继承关系而继承这些属性和方法。

结束语

         Undefined、Null、Boolean、Number、String是javascript中的基本数据类型,而Object属于引用类型。用typeof检测其他类型会返回相应的字符串,但是检测null或对象时,会返回”object",如果掌握了这些,以后就不会看到这些会点摸不着头脑了。顺带提一句:

Boolean、Number、String 这三个是Javascript中的基本包装类型,也就是这三个其实是一个构造函数,他们是Function的实例,是引用类型,至于这里的String与文章说的String是同名,是因为其实上文说的String是指字符串,这里的String指的是String这个构造函数,上面那么写,是为了更好的理解,因为Javascript是松散类型的。我们可以看下String实例化的例子:

var name = String("jwy");
alert(typeof name);//"object"
var author = "Tom";alert(typeof name);//"string"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn