Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Terdapat beberapa jenis dalam javascript
mempunyai 9 jenis data: 1. Jenis rentetan, iaitu sekeping teks yang dibalut dengan petikan; 2. Jenis angka, digunakan untuk mentakrifkan nilai berangka; Jenis, mewakili nilai "kosong", iaitu, tiada nilai 5. Jenis tidak ditentukan, mewakili tidak ditentukan 6. Jenis simbol, mewakili nilai unik, yang merupakan set kunci dan nilai yang tidak tertib ; 8. Jenis tatasusunan, iaitu himpunan data yang disusun mengikut urutan;
Persekitaran pengendalian tutorial ini: sistem Windows 7, versi JavaScript 1.8.5, komputer Dell G3.
Jenis data merujuk kepada jenis nilai yang boleh disimpan dan dimanipulasi dalam program Setiap bahasa pengaturcaraan mempunyai jenis data yang berbeza digunakan untuk menyimpan data yang berbeza, seperti Teks. nilai, imej, dsb.
JavaScript ialah bahasa yang ditaip secara dinamik semasa mentakrifkan pembolehubah, anda tidak perlu menentukan jenis pembolehubah terlebih dahulu. Jenis pembolehubah ditentukan secara dinamik oleh enjin JavaScript semasa menjalankan program . Selain itu, anda boleh menggunakan Pembolehubah yang sama untuk menyimpan jenis data yang berbeza, contohnya:
var a; // 此时 a 为 Undefined a = "http://c.biancheng.net/"; // 此时 a 为 String 类型 a = 123; // 此时 a 为 Number 类型
Jenis data dalam JavaScript boleh dibahagikan kepada dua jenis:
Jenis data asas (jenis nilai): String, Nombor, Boolean, Null, Undefined, Simbol;
1. Jenis rentetan
Jenis rentetan (Rentetan) ialah perenggan yang dibalut dengan petikan tunggal '' atau petikan berganda " " teks, seperti '123', "abc". Perlu diingatkan bahawa petikan tunggal dan petikan berganda adalah cara yang berbeza untuk menentukan rentetan dan bukan sebahagian daripada rentetan.
2. Jenis nombor
Jenis nombor digunakan untuk mentakrifkan nilai berangka JavaScript tidak membezakan antara integer dan perpuluhan (nombor titik terapung). . Gunakan jenis Nombor secara seragam untuk mewakili Nota: Bilangan nilai yang boleh ditakrifkan oleh jenis Nombor tidak terhad Jenis Nombor dalam JavaScript hanya boleh mewakili -(2∧53 - 1) kepada (2∧53 -1) nilai antara.
3 Jenis Boolean
Jenis Boolean hanya mempunyai dua nilai, benar (benar) atau salah (salah). digunakan. Selain menggunakan benar atau salah secara langsung untuk menentukan pembolehubah jenis Boolean, anda juga boleh menggunakan beberapa ungkapan untuk mendapatkan nilai jenis Boolean
4 >
Null ialah jenis data khas dengan hanya satu nilai, yang mewakili nilai "null", iaitu, tiada nilai, tiada apa-apa ia digunakan untuk mentakrifkan penunjuk objek nol. Gunakan operator jenis untuk menyemak jenis Null Anda akan mendapati bahawa jenis Null ialah Object, yang bermaksud Null sebenarnya menggunakan nilai khas kepunyaan Object. Jadi dengan memberikan pembolehubah kepada Null kita mencipta objek kosong.
5 Jenis tidak ditentukan
Undefined juga merupakan jenis data khas dengan hanya satu nilai, yang bermaksud tidak ditentukan. Apabila kita mengisytiharkan pembolehubah tetapi tidak memberikan nilai kepada pembolehubah, nilai lalai pembolehubah adalah Tidak Ditakrifkan. 6. Jenis simbol
Simbol ialah jenis data baharu yang diperkenalkan dalam ECMAScript6 yang mewakili nilai unik. Nilai simbol dijana oleh fungsi Simbol. Nama atribut objek boleh mempunyai dua jenis, satu ialah rentetan asal dan satu lagi ialah jenis Simbol baharu . Nama atribut adalah daripada jenis Simbol dan unik, memastikan ia tidak akan bercanggah dengan nama atribut lain.
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高级教程】
Atas ialah kandungan terperinci Terdapat beberapa jenis dalam javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!