ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の基本的なデータ型、値の型、参照型の概要

JavaScript の基本的なデータ型、値の型、参照型の概要

巴扎黑
巴扎黑オリジナル
2017-08-17 14:35:541507ブラウズ

JavaScriptには4つの基本的なデータ型があります:数値(整数と実数)、文字列型(「」または「」で囲まれた文字または値)、ブール型(TrueまたはFalseで表される)、nullです。 value 。JavaScript の基本型のデータは定数または変数にすることができます。JavaScript は弱い型付けの形式を採用しているため、データ変数または定数を最初に宣言する必要はありませんが、そのデータ型は値を使用または割り当てるときに決定されます。もちろん、最初にデータの型を宣言して、値を割り当てるときに

変数を指定することもできます。

変数の定義:

var name;

上記のコードは、任意の値を保存するために使用できる変数を定義します (このような初期化されていない変数は A に保存されます)。特別な値 --unknown) を使用して、変数の値を初期化することもできます。

var name =”jwy”; //javascript 中的单引号和双引号没有区别,不过要注意正确嵌套name=10;

最初に名前が文字列値「jwy」に初期化され、次に数値 - 100 に変更されます。ただし、この方法はお勧めできません。これは ECMAScript で効果的であり、多くの場合に行われます

1 つのステートメントで複数の変数を定義することもでき、多くの JavaScript フレームワークでこれが行われます

var name=”jwy”,author,age=29;

各ステートメントにセミコロンを追加することをお勧めします。ただし、複数の変数を使用する場合は、可読性を高めるためにラップしてインデントすることをお勧めします。

ECMAScript には 5 つの単純なデータ型があります。複雑なデータ型 - Object

typeof 演算子

Javascript の変数は大まかに型指定されているため、上記の 5 つの単純なデータ型のうちの typeof キーワードである現在の変数のデータ型を検出する方法を提供します。 ECMAScript (覚えておいてください、これら 5 つは、C# の int 型や string 型と同じように、1 つのデータ型を表す単なるデータ型です)。typeof キーワードを使用すると、5 つのデータ型は次の値を返します (文字列形式で表示されます)。

「未定義」値が文字列の場合 Boolean"string" Boolean ---------- 値が文字列の場合 String

"number" -------- -- 値が数値型の場合 Number

"object" ---------- この値がオブジェクトまたは null の場合 Object

"function" ---------- Ifこの値は関数 Function です

しかし、厳密に言えば、ECMAScript では関数はオブジェクトであると言われており、各関数は Function クラスのインスタンスです。関数はオブジェクトであるため、参照型でもあります。したがって、関数名をパラメータとして関数に渡して呼び出すことがよくあります。これは、後で詳しく説明します。 JavaScript の多くは関数に依存しています。

未定義型

上で述べたように、5 つの型はデータ型であるため、データ型は値を持ちます。u は小文字であることに注意してください。変数が宣言されているが初期化されていない場合、変数の現在の値は未定義です。ただし、一般的には変数を可能な限り初期化することが推奨されますが、初期の Javascript バージョンでは未定義の値が指定されていなかったため、一部のフレームワークでは、古いブラウザとの互換性を保つために、未定義の値が変数に追加されます。

window["undefined"] = window["undefined"]; 
//或者window.undefined = window.undefined;

簡単に言うと、window オブジェクトの未定義属性に未定義を代入するというものです。古いブラウザオブジェクトには未定義属性がないため、未定義の操作を使用するとエラーが発生します。異常なのでこのメソッドを使用しますが、最初は分かりにくいですが、古いブラウザでは、window.unknown オブジェクトがないため、未定義の値が返されるため、これは互換性があります。古いブラウザ。 ただし、未定義の値を含む変数は、次のような未定義変数とは異なります。

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"

以上がJavaScript の基本的なデータ型、値の型、参照型の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。