ホームページ > 記事 > ウェブフロントエンド > JavaScriptにはいくつかの種類があります
データ型は 9 つあります: 1. 引用符で囲まれたテキストの文字列型、2. 値の定義に使用される数値型、3. 2 つの値のみを持つブール型、4. Null 型 (「空」の値、つまり値がないことを表します) 5. 未定義型 (未定義を表す) 6. シンボル型 (一意の値を表す) 7. オブジェクト型 (順序付けされていないセット)キーと値、コレクション、8. 配列タイプ、順序どおりに配置されたデータのコレクション、9. 関数タイプ、特定の機能を備えたコードのブロック。
このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
データ型とは、プログラム内で保存および操作できる値のタイプを指します。各プログラミング言語には、サポートされるデータ型があります。テキスト、テキスト、データなど、異なるデータの保存には異なるデータ型が使用されます。価値観やイメージなど
JavaScript は動的型付け言語です。変数を定義するときに、事前に変数の型を指定する必要はありません。変数の型は、プログラムの実行中に JavaScript エンジンによって動的に決定されます。さらに、同じ変数を使用して異なるタイプのデータを保存することもできます (例:
var a; // 此时 a 为 Undefined a = "http://c.biancheng.net/"; // 此时 a 为 String 类型 a = 123; // 此时 a 为 Number 类型
JavaScript のデータ型は 2 つのタイプに分類できます:
基本データ型 (値型): 文字列、数値、ブール値、Null、未定義、シンボル;
参照データ型: オブジェクト、配列 (Array)、関数 (Function)。
ヒント: シンボルは、ECMAScript6 で導入された新しいデータ型で、一意の値を表します。
1. 文字列型
文字列 (String) 型は、一重引用符 '' または二重引用符 " で囲まれたピリオドです。 " テキスト (「123」、「abc」など)。一重引用符と二重引用符は文字列を定義する別の方法であり、文字列の一部ではないことに注意してください。
2. 数値型
数値 (Number) 型は数値を定義するために使用されます。JavaScript では整数と小数を区別しません (
注: Number 型で定義できる値の数は無制限ではありません。JavaScript の Number 型は -(2∧ のみを表すことができます) 53 - 1) ~ (2∧53 -1) の間の値。
3. ブール型
ブール型は true (真) または false (偽) の 2 つの値のみを持ちます。 true または false を直接使用して Boolean 型の変数を定義する以外に、いくつかの式を介して Boolean 型の値を取得することもできます
4. Null 型
Null は、値が 1 つだけある特殊なデータ型で、「null」値、つまり値がなく、何もないことを表します。null オブジェクト ポインタを定義するために使用されます。
typeof 演算子を使用して Null の型を確認すると、Null の型が Object であることがわかります。これは、Null が実際には Object に属する特別な値を使用していることを意味します。したがって、変数を Null に代入することで、空のオブジェクトを作成します。
5. 未定義型
未定義も、値が 1 つだけある特別なデータ型であり、未定義を意味します。変数を宣言しても、その変数に値を代入しない場合、変数のデフォルト値は未定義になります。
6. シンボル タイプ
Symbol は、ECMAScript6 で導入された新しいデータ タイプで、一意の値を表します。
Symbol 値は Symbol 関数によって生成されます。 オブジェクトの属性名には 2 つのタイプがあります。1 つは元の文字列で、もう 1 つは新しいシンボル タイプです。属性名はシンボル タイプであり、一意であるため、他の属性名と競合しません。
let s1=Symbol() let s2=Symbol() console.log(s1) //Symbol() console.log(s2) //Symbol() console.log(s1===s2) //false //Symbol函数能接受字符串作为参数,表示对Symbol实例的描述 let s1=Symbol('xxx') let s2=Symbol('hhh') console.log(s1) //Symbol(xxx) console.log(s2) //Symbol(hhh) console.log(s1===s2) //false复制代码
Symbol函数前不能使用new命令,会报错。这是因为生成的 Symbol 是一个原始类型的值,不是对象。也就是说,由于 Symbol 值不是对象,所以不能添加属性。相当于是一种特殊的字符串。
应用场景
作为属性名
由于 Symbol 值都是不相等的,这意味着 Symbol 值可以作为标识符,用在对象的属性名,就能保证不会出现同名的属性。这对于一个对象由多个模块构成的情况非常有用,防止某一个键被不小心改写或覆盖。
const grade={ 张三:{address:'qqq',tel:'111'}, 李四:{address:'aaa',tel:'222'}, 李四:{address:'sss',tel:'333'}, } console.log(grade) //张三: {address: "qqq", tel: "111"} 李四: {address: "sss", tel: "333"} //对象的key值不能重复 如果有重复 后面的value值就会覆盖前面的 //使用Symbol解决,相当于一个独一无二的字符串 const stu1=Symbol('李四') const stu2=Symbol('李四') console.log(stu1===stu2) //false const grade={ [stu1]:{address:'aaa',tel:'222'}, [stu2]:{address:'sss',tel:'333'}, } console.log(grade) //李四:{address:'sss',tel:'222'} 李四:{address:'sss',tel:'333'} console.log(grade[stu1]) //李四:{address:'sss',tel:'222'} console.log(grade[stu2]) //李四:{address:'sss',tel:'333'}
属性遍历
const sym=Symbol('imooc') class User{ constructor(name){ this.name=name this[sym]='imooc.com' } getName(){ return this.name+this[sym] } } const user=new User('www') //for in的方法不能遍历到Symbol属性 像被隐藏了 for(let key in user){ console.log(key)//name } //Object.keys(obj)方法也不能遍历到Symbol属性 for(let key of Object.keys(user)){ console.log(key)//name } //Object.getOwnPropertySymbols(obj)只能获取到Symbol属性 for(let key of Object.getOwnPropertySymbols(user)){ console.log(key)//Symbol(imooc) } //Reflect.ownKeys(obj)对象的属性都能获取到 for(let key of Reflect.ownKeys(user)){ console.log(key) //name //Symbol(imooc) }
消除魔术字符串
魔术字符串指的是,在代码中多次出现、与代码形成强耦合的某一个具体的字符串或者数值。风格良好的代码,应该尽量消除魔术字符串,改成一些含义清晰的变量代替。
function getArea(shape) { let area = 0 switch (shape) { case 'Triangle': area = 1 break case 'Circle': area = 2 break } return area } console.log(getArea('Triangle')) //Triangle和Circle就是魔术字符串。多次出现,与代码形成了“强耦合”,不利于后面的修改和维护。 const shapeType = { triangle: Symbol(), circle: Symbol() } function getArea(shape) { let area = 0 switch (shape) { case shapeType.triangle: area = 1 break case shapeType.circle: area = 2 break } return area } console.log(getArea(shapeType.triangle))
7、Object 类型
Object数据类型,称为对象,是一组由键、值组成的无序集合。可以用new操作符后跟要创建的对象类型的名称来创建。也可以用字面量表示法创建。在其中添加不同名(包含空字符串在内的任意字符串)的属性。
1)构造对象
使用 new 运算符调用构造函数,可以构造一个实例对象。具体用法如下:
var objectName = new functionName(args);
参数说明如下:
objectName:返回的实例对象。
functionName:构造函数,与普通函数基本相同,但是不需要 return 返回值,返回实例对象,在函数内可以使用 this 预先访问。
args:实例对象初始化配置参数列表。
示例
下面示例使用不同类型的构造函数定义各种实例。
var o = new Object(); //定义一个空对象
var a = new Array(); //定义一个空数组
var f = new Function(); //定义一个空函数
2)对象直接量
使用直接量可以快速创建对象,也是最高效、最简便的方法。具体用法如下:
var objectName = { 属性名1 : 属性值1, 属性名2 : 属性值2, ... 属性名n : 属性值n };
在对象直接量中,属性名与属性值之间通过冒号进行分隔,属性值可以是任意类型的数据,属性名可以是 JavaScript 标识符,或者是字符串型表达式。属性于属性之间通过逗号进行分隔,最后一个属性末尾不需要逗号。
在 JavaScript 中,对象类型的键都是字符串类型的,值则可以是任意数据类型。要获取对象中的某个值,可以使用对象名.键的形式,如下例所示:
var person = { name: 'Bob', age: 20, tags: ['js', 'web', 'mobile'], city: 'Beijing', hasCar: true, zipcode: null }; console.log(person.name); // 输出 Bob console.log(person.age); // 输出 20
8、Array 类型
数组(Array)是一组按顺序排列的数据的集合,数组中的每个值都称为元素(Element),每个元素的名称(键)被称为数组下标(Index)。数组的长度是弹性的、可读写的。
数组中可以包含任意类型的数据。
在 JavaScript 中定义(创建或者声明)数组的方法有两种:构造数组和数组直接量。
1)构造数组
使用 new 运算符调用 Array() 类型函数时,可以构造一个新数组。
示例:
直接调用 Array() 函数,不传递参数,可以创建一个空数组。
var a = new Array(); //空数组
传递多个值,可以创建一个实数组。
var a = new Array(1, true, "string", [1,2], {x:1,y:2}); //实数组
每个参数指定一个元素的值,值得类型没有限制。参数的顺序也是数组元素的顺序,数组的 length 属性值等于所传递参数的个数。
传递一个数值参数,可以定义数组的长度,即包含元素的个数。
var a = new Array(5); //指定长度的数组
参数值等于数组 length 的属性值,每个元素的值默认值为 undefined。
如果传递一个参数,值为 1,则 JavaScript 将定义一个长度为 1 的数组,而不是包含一个元素,其值为 1 的数组。
var a = new Array(1); console.log(a[0]);
2)数组直接量
数组直接量的语法格式:在中括号中包含多个值列表,值之间用逗号分隔。
下面代码使用数组直接量定义数组。
var a = []; //空数组 var a = [1, true, "0", [1,0], {x:1,y:0}]; //包含具体元素的数组
推荐使用数组直接量定义数组,因为数组直接量是定义数组最简便、最高效的方法。
9、Function 类型
函数(Function)是一段具有特定功能的代码块,函数并不会自动运行,需要通过函数名调用才能运行,如下例所示:
function sayHello(name){ return "Hello, " + name; } var res = sayHello("Peter"); console.log(res); // 输出 Hello, Peter
此外,函数还可以存储在变量、对象、数组中,而且函数还可以作为参数传递给其它函数,或则从其它函数返回,如下例所示:
var fun = function(){ console.log("http://c.biancheng.net/js/"); } function createGreeting(name){ return "Hello, " + name; } function displayGreeting(greetingFunction, userName){ return greetingFunction(userName); } var result = displayGreeting(createGreeting, "Peter"); console.log(result); // 输出 Hello, Peter
【推荐学习:javascript高级教程】
以上がJavaScriptにはいくつかの種類がありますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。