javascript中有哪些类型


这篇“javascript中有哪些类型”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“javascript中有哪些类型”文章吧。 有9种数据类型:1、字符串类型,是一段以引号包裹起来的文本;2、数值类型,用来定义数值;3、布尔类型,只有两个值;4、Null类型,表示一个“空”值,即不存在任何值;5、Undefined类型,表示未定义;6、Symbol类型,表示独一无二的值;7、对象类型,是一组由键、值组成的无序集合;8、数组类型,是一组按顺序排列的数据的集合;9、函数类型,是一段具有特定功能的代码块。本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。
数据类型指的是可以在程序中存储和操作的值的类型,每种编程语言都有其支持的数据类型,不同的数据类型用来存储不同的数据,例如文本、数值、图像等。JavaScript 是一种动态类型的语言,在定义变量时不需要提前指定变量的类型,变量的类型是在程序运行过程中由 JavaScript 引擎动态决定的,另外,您可以使用同一个变量来存储不同类型的数据,例如:

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

JavaScript 中的数据类型可以分为两种类型:基本数据类型(值类型):字符串(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 类型的,都是独一无二的,可以保证不会与其他属性名产生冲突。

lets1=Symbol()
lets2=Symbol()
console.log(s1)
//Symbol()
console.log(s2)
//Symbol()
console.log(s1===s2)
//false

//Symbol函数能接受字符串作为参数,表示对Symbol实例的描述
lets1=Symbol('xxx')
lets2=Symbol('hhh')
console.log(s1)
//Symbol(xxx)
console.log(s2)
//Symbol(hhh)
console.log(s1===s2)
//false复制代码

Symbol函数前不能使用new命令,会报错。这是因为生成的 Symbol 是一个原始类型的值,不是对象。也就是说,由于 Symbol 值不是对象,所以不能添加属性。相当于是一种特殊的字符串。应用场景作为属性名由于 Symbol 值都是不相等的,这意味着 Symbol 值可以作为标识符,用在对象的属性名,就能保证不会出现同名的属性。这对于一个对象由多个模块构成的情况非常有用,防止某一个键被不小心改写或覆盖。

constgrade={
张三:{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解决,相当于一个独一无二的字符串
conststu1=Symbol('李四')
conststu2=Symbol('李四')
console.log(stu1===stu2)
//false
constgrade={
[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'}

属性遍历

constsym=Symbol('imooc')
classUser{
constructor(name){
this.name=name
this[sym]='imooc.com'
}
getName(){
retu免费云主机域名rnthis.name+this[sym]
}
}
constuser=newUser('www')

//forin的方法不能遍历到Symbol属性像被隐藏了
for(letkeyinuser){
console.log(key)//name
}

//Object.keys(obj)方法也不能遍历到Symbol属性
for(letkeyofObject.keys(user)){
console.log(key)//name
}

//Object.getOwnPropertySymbols(obj)只能获取到Symbol属性
for(letkeyofObject.getOwnPropertySymbols(user)){
console.log(key)//Symbol(imooc)
}

//Reflect.ownKeys(obj)对象的属性都能获取到
for(letkeyofReflect.ownKeys(user)){
console.log(key)
//name
//Symbol(imooc)
}

消除魔术字符串魔术字符串指的是,在代码中多次出现、与代码形成强耦合的某一个具体的字符串或者数值。风格良好的代码,应该尽量消除魔术字符串,改成一些含义清晰的变量代替。

functiongetArea(shape){
letarea=0
switch(shape){
case'Triangle':
area=1
break
case'Circle':
area=2
break
}
returnarea
}
console.log(getArea('Triangle'))
//Triangle和Circle就是魔术字符串。多次出现,与代码形成了“强耦合”,不利于后面的修改和维护。

constshapeType={
triangle:Symbol(),
circle:Symbol()
}

functiongetArea(shape){
letarea=0
switch(shape){
caseshapeType.triangle:
area=1
break
caseshapeType.circle:
area=2
break
}
returnarea
}
console.log(getArea(shapeType.triangle))

7、Object 类型Object数据类型,称为对象,是一组由键、值组成的无序集合。可以用new操作符后跟要创建的对象类型的名称来创建。也可以用字面量表示法创建。在其中添加不同名(包含空字符串在内的任意字符串)的属性。1)构造对象使用 new 运算符调用构造函数,可以构造一个实例对象。具体用法如下:

varobjectName=newfunctionName(args);

参数说明如下:objectName:返回的实例对象。functionName:构造函数,与普通函数基本相同,但是不需要 return 返回值,返回实例对象,在函数内可以使用 this 预先访问。args:实例对象初始化配置参数列表。示例下面示例使用不同类型的构造函数定义各种实例。var o = new Object(); //定义一个空对象var a = new Array(); //定义一个空数组var f = new Function(); //定义一个空函数2)对象直接量使用直接量可以快速创建对象,也是最高效、最简便的方法。具体用法如下:

varobjectName={
属性名1:属性值1,
属性名2:属性值2,
...
属性名n:属性值n
};

在对象直接量中,属性名与属性值之间通过冒号进行分隔,属性值可以是任意类型的数据,属性名可以是 JavaScript 标识符,或者是字符串型表达式。属性于属性之间通过逗号进行分隔,最后一个属性末尾不需要逗号。在 JavaScript 中,对象类型的键都是字符串类型的,值则可以是任意数据类型。要获取对象中的某个值,可以使用对象名.键的形式,如下例所示:

varperson={
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() 函数,不传递参数,可以创建一个空数组。

vara=newArray();//空数组

传递多个值,可以创建一个实数组。

vara=newArray(1,true,"string",[1,2],{x:1,y:2});//实数组

每个参数指定一个元素的值,值得类型没有限制。参数的顺序也是数组元素的顺序,数组的 length 属性值等于所传递参数的个数。传递一个数值参数,可以定义数组的长度,即包含元素的个数。

vara=newArray(5);//指定长度的数组

参数值等于数组 length 的属性值,每个元素的值默认值为 undefined。如果传递一个参数,值为 1,则 JavaScript 将定义一个长度为 1 的数组,而不是包含一个元素,其值为 1 的数组。

vara=newArray(1);
console.log(a[0]);

2)数组直接量数组直接量的语法格式:在中括号中包含多个值列表,值之间用逗号分隔。下面代码使用数组直接量定义数组。

vara=[];//空数组
vara=[1,true,"0",[1,0],{x:1,y:0}];//包含具体元素的数组

推荐使用数组直接量定义数组,因为数组直接量是定义数组最简便、最高效的方法。9、Function 类型函数(Function)是一段具有特定功能的代码块,函数并不会自动运行,需要通过函数名调用才能运行,如下例所示:

functionsayHello(name){
return"Hello,"+name;
}
varres=sayHello("Peter");
console.log(res);//输出Hello,Peter

此外,函数还可以存储在变量、对象、数组中,而且函数还可以作为参数传递给其它函数,或则从其它函数返回,如下例所示:

varfun=function(){
console.log("http://c.biancheng.net/js/");
}
functioncreateGreeting(name){
return"Hello,"+name;
}
functiondisplayGreeting(greetingFunction,userName){
returngreetingFunction(userName);
}
varresult=displayGreeting(createGreeting,"Peter");
console.log(result);//输出Hello,Peter

以上就是关于“javascript中有哪些类型”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注百云主机行业资讯频道。

相关推荐: JS如何实现简单九宫格抽奖

这篇文章主要介绍了JS如何实现简单九宫格抽奖的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JS如何实现简单九宫格抽奖文章都会有所收获,下面我们一起来看看吧。HTML文件:通过position定位来固定奖盘各个板块的位置,将有奖品的…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 05/09 15:59
Next 05/09 16:00

相关推荐