javascript中有几种类型

有9种数据类型:1、字符串类型,是一段以引号包裹起来的文本;2、数值类型,用来定义数值;3、布尔类型,只有两个值;4、Null类型,表示一个“空”值,即不存在任何值;5、Undefined类型,表示未定义;6、Symbol类型,表示独一无二的值;7、对象类型,是一组由键、值组成的无序集合;8、数组类型,是一组按顺序排列的数据的集合;9、函数类型,是一段具有特定功能的代码块。

javascript中有几种类型

本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

数据类型指的是可以在程序中存储和操作的值的类型,每种编程语言都有其支持的数据类型,不同的数据类型用来存储不同的数据,例如文本、数值、图像等。

JavaScript 是一种动态类型的语言,在定义变量时不需要提前指定变量的类型,变量的类型是在程序运行过程中由 JavaScript 引擎动态决定的,另外,您可以使用同一个变量来存储不同类型的数据,例如:

var a;  // 此时 a 为 Undefineda = "http://c.biancheng.net/"; // 此时 a 为 String 类型a = 123;  // 此时 a 为 Number 类型

登录后复制

JavaScript 中的数据类型可以分为两种类型:

立即学习“Java免费学习笔记(深入)”;

基本数据类型(值类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol;

引用数据类型:对象(Object)、数组(Array)、函数(Function)。

提示:Symbol 是 ECMAScript6 中引入的一种新的数据类型,表示独一无二的值。

1、String 类型

字符串(String)类型是一段以单引号”或双引号””包裹起来的文本,例如 ‘123’、”abc”。需要注意的是,单引号和双引号是定义字符串的不同方式,并不是字符串的一部分。

2、Number 类型

数值(Number)类型用来定义数值,JavaScript 中不区分整数和小数(浮点数),统一使用 Number 类型表示

注意:Number 类型所能定义的数值并不是无限的,JavaScript 中的 Number 类型只能表示 -(2∧53 – 1) 到 (2∧53 -1) 之间的数值。

3、Boolean 类型

布尔(Boolean)类型只有两个值,true(真)或者 false(假),在做条件判断时使用的比较多,您除了可以直接使用 true 或 false 来定义布尔类型的变量外,还可以通过一些表达式来得到布尔类型的值

4、Null 类型

Null 是一个只有一个值的特殊数据类型,表示一个“空”值,即不存在任何值,什么都没有,用来定义空对象指针。

使用 typeof 操作符来查看 Null 的类型,会发现 Null 的类型为 Object,说明 Null 其实使用属于 Object(对象)的一个特殊值。因此通过将变量赋值为 Null 我们可以创建一个空的对象。

5、Undefined 类型

Undefined 也是一个只有一个值的特殊数据类型,表示未定义。当我们声明一个变量但未给变量赋值时,这个变量的默认值就是 Undefined。

6、Symbol 类型

Symbol 是 ECMAScript6 中引入的一种新的数据类型,表示独一无二的值。

Symbol值通过Symbol函数生成。对象的属性名可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。属性名属于 Symbol 类型的,都是独一无二的,可以保证不会与其他属性名产生冲突。

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)//falseconst 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);       // 输出 Bobconsole.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中有几种类型的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2925512.html

(0)
上一篇 2025年3月11日 19:07:31
下一篇 2025年3月6日 01:06:49

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • javascript数组怎么求平均数

    两种求平均数的方法:1、利用forEach()和length属性来求,语法“function f(v){s+=v;}数组对象.forEach(f);avg=s/数组对象.length;”;2、利用reduce()和length属性来求,语法…

    2025年3月11日
    200
  • javascript支持不定长参数吗

    javascript支持不定长参数。实现不定长参数的两种方法:1、利用arguments对象,arguments对象的长度是由实参个数而不是形参个数决定的;对于arguments和值都存在的情况下,两者值是同步的,但是针对其中一个无值的情况…

    2025年3月11日 编程技术
    200
  • javascript中double的意思是什么

    double的意思是“双精度浮点数”,使用64位(8字节) 来存储一个浮点数,它是JavaScript的一种保留字。double(双精度浮点数)可以表示十进制的15或16位有效数字,其可以表示的数字的绝对值范围大约是“-1.79E+308”…

    2025年3月11日
    200
  • JavaScript只能写前端吗

    JavaScript不是只能写前端,它也可写后端;JavaScript可以利用Node.js来实现后端开发。Node.js是一个让JavaScript运行在服务端的开发平台,是一个事件驱动“I/O”服务端JavaScript环境,可以将No…

    2025年3月11日
    200
  • JavaScript怎么求两个数的商

    两种实现方法:1、使用算术运算符“/”,语法“操作数1 / 操作数2”,可以将运算符两侧的操作数相除并返回商;2、使用赋值运算符“/=”,会先进行除法运算,再将结果赋值给运算符左侧的变量,语法“x /= y”,等同于“x = x / y”。…

    2025年3月11日 编程技术
    200
  • javascript怎么求次方和

    求次方和的步骤:1、利用Math对象的pow()函数来分别求出指定数的N次方,语法“Math.pow(指定数, N)”,会返回指定数的次方值;2、使用“+”运算符将获取的多个次方值相加求和即可,语法“次方值1 + 次方值2 + 次方值3&#…

    2025年3月11日 编程技术
    200
  • javascript怎么求偶数的和

    求偶数和的步骤:1、将多个数存入数组中,语法“var 数组变量名 =[数值1,数值2,数值3…];”;2、定义一个变量并赋值为0,用于存储求和结果,语法“var sum=0;”;3、使用for语句遍历数组找出偶数值,并利用“+=…

    2025年3月11日 编程技术
    200
  • javascript怎么实现正则替换

    javascript实现正则替换的两种方法:1、使用replace()函数,可在字符串中替换一个与正则表达式匹配的子串,语法“字符串对象.replace(/[]/g,’替换值’)”;2、使用replaceAll()函…

    2025年3月11日 编程技术
    200
  • ES6怎么判断是否为小数

    两种判断方法:1、利用test()函数配合正则表达式“/[.]/”来检查指定数值是否包含小数点,语法“/[.]/.test(指定数值)”,如果包含则是小数,反之则不是。2、利用indexOf()函数来检查指定数值是否包含小数点,语法“Str…

    2025年3月11日
    200
  • es6 filter()怎么用

    在es6中,filter()是一个数组过滤方法,会调用一个回调函数来过滤数组中的元素,返回符合条件的所有元素,语法“Array.filter(callback(element[, index[, array]])[, thisArg])”。…

    2025年3月11日 编程技术
    200

发表回复

登录后才能评论