javaScript的数据类型,有六种。
基本数据类型:
字符串(string):文本(比如hello)
数值(number):整数和小数(浮点数)(比如123和1.23)
布尔值(boolean):表示真假的两个特殊值,即true(真)和false(假)
undefined:表示未定义的或不存在的,即由于目前没有定义,所以此处暂时没有任何价值
null:表示空值,即此处的值为空
复杂数据类型:
对象(object):各种值组成的集合
可以分为三个子类型
1.对象(object)
2.数组(array)
3.函数(function)
typeof运算符
typeof运算符可以返回一个值的数据类型
1.数值,字符串,布尔值,`undefined`分别返回
number,string,boolean,undefined
2.函数返回function
3.null对象返回object
null的类型是object,这是由于历史原因造成的.1995年的 JavaScript 语言第一版,只设计了五种数据类型
(对象、整数、浮点数、字符串和布尔值),没考虑null,只把它当作object的一种特殊值。后来null独立出来,
作为一种单独的数据类型,为了兼容以前的代码,typeof null返回object就没法改变了。
字符串(string)
1.定义
字符串就是零个或多个排在一起的字符,放在单引号或双引号中
abc
abc
* 多行字符串
如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠。
(注意,反斜杠的后面必须是换行符,而不能有其他字符(比如空格),否则会报错。)
连接运算符(+)可以连接多个单行字符串,将长字符串拆成多行书写,输出的时候也是单行。
输出多行字符串
2.转义
反斜杠(\)在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。
数值(number)
number表示整数和浮点数
1.JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。
所以,1与1.0是相同的,是同一个数。
由于浮点数不是精确的值,所以涉及小数的比较和运算要特别小心。
2.数值的表示方法
JavaScript 的数值有多种表示方法,可以用字面形式直接表示,
比如35(十进制)和0xFF(十六进制)。
数值也可以采用科学计数法表示
3.数值的进制
默认情况下,JavaScript
内部会自动将八进制、十六进制、二进制转为十进制。
nul和undefined
null:指一个空对象(object),没有赋值
undefined:指一个非对象(数据类型中除了object以外的值),没有赋值
null与undefined都可以表示没有
undef`是派生自null值的,所以undefined==null
布尔值(boolean)
布尔值只有两个值。
布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。
当值为false时浏览器是不执行该代码,为true时执行,所以可以这样使用,达到网页中控制鼠标点击按钮,
开关状态的切换
对象(object)
对象(object)是 JavaScript语言的核心概念,也是最重要的数据类型。
1.什么是对象?
对象(object):各种值组成的集合
上面代码中,大括号就定义了一个对象,它被赋值给变量obj,所以变量obj就指向一个对象。该对象内部
包含两个键值对,
第一个键值对是name: marry,其中name是键名,字符串marry是键值。键名与键值之间用冒号分隔。
第二个键值对是age: 18,age是键名,18是键值。两个键值对之间用逗号分隔。
2.键名
对象的所有键名都是字符串
键名不符合标识名的条件(比如第一个字符为数字,或者含有空格或运算符),且也不是数字,则必须加上引号,否则会报错。
3.属性的读取
读取对象的属性,有两种方法,一种是使用点运算符,还有一种是使用方括号运算符。
4.属性的赋值
点运算符和方括号运算符,不仅可以用来读取值,还可以用来赋值。
5.属性的查看
查看一个对象本身的所有属性,可以使用Object.keys方法。
6.属性的删除:delete 命令
delete命令用于删除对象的属性,删除成功后返回true。
删除后,再读取p属性就会返回undefined,而且Object.keys方法的返回值也不再包括该属性。
7.属性是否存在:in运算符
in运算符用于检查对象是否包含某个属性(键名)包含就返回true,否则返回false
in运算符的一个问题是,它不能识别哪些属性是对象自身的,哪些属性是继承的。就像上面代码中
,对象obj本身并没有toString属性,但是in运算符会返回true,因为这个属性是继承的。
8.属性是否为对象自身的属性hasOwnProperty
9.属性的遍历:for...in 循环
for...in循环用来遍历一个对象的全部属性。
*它遍历的是对象所有可遍历(enumerable)的属性,会跳过不可遍历的属性。
它不仅遍历对象自身的属性,还遍历继承的属性。