数据类型是指可以在程序中存储和操作的值的类型,每种编程语言都有其支持的数据类型,不同的数据类型用来存储不同的数据,例如文本,数字等
JavaScript是一种弱类型语言,在定义变量时不需要提前指定变量的类型,变量的类型是在程序运行过程中由JavaScript引擎动态决定的。
JavaScript也是一种动态类型语言,这意味着变量不与特定类型关联。所以可以这么说,一个变量可以用来存储不同类型的数据。例如:
var a //此时a为undefined
a="hello world" //a现在为string类型
a=1 //a现在为number类型
基本数据类型(值类型):
数据类型 | 实例 | 说明 |
---|---|---|
Number | 12,-1,17.23,3.1E-2 | 数值型数据 |
String | “message”,“str”,“name” | 字符型数据,需加英文双引号或单引号 |
Boolean | true,false | 布尔型数据,不用加引号,表示逻辑真与假 |
Undefined | undefined | javaScript中未定义的值 |
Null | null | 表示空值 |
通过 typeof 操作符可以检测数据类型,也就是返回变量的数据类型
typeof操作符有带括号和不带括号两种写法
typeof x; //作为运算符的形式--获取变量x的数据类型
typeof(x); //作为函数形式--获取变量x的数据类型
实例:
<script>
var a=1;
var b="message";
var c=true;
console.log(typeof a); //输出数据类型为number
console.log(typeof b); //输出数据类型为string
console.log(typeof c); //输出数据类型为boolean
</script>
注意:
JS 是弱数据类型,变量到底属于那种类型,只有赋值之后,我们才能确认
例如Java是强数据类型 例如 int a = 3 必须是整数
Number型数据即为数值型数据用来表示整数和浮点数。
JavaScript 中的数值类型与数学中的数字是一样的,分为正数、负数、小数等。
整数型数值可以使用十进制、八进制以及十六进制标识
var numn1=1; //十进制,输出值为1
var numn12=-23; //十进制,输出值为-23
var numn2=0177;//八进制,输出值为127
var numn3=0xA3;//十六进制,输出值为163
console.log(numn1,numn2,numn3);//输出值为1,127,163
需要注意的是,当你在JavaScript中使用八进制或十六进制数值时,它们会被自动转换为十进制表示。例如,010会被解释为十进制的8,0xFF会被解释为十进制的255。
浮点数是指包含小数点的实数,且可用科学计数法来表示。科学计数法一般用于值极大或者极小的时候。
//Number--浮点数
var numfloat=1.23; //输出值为1.23
var numfloat1=-12.34; //输出值为-12.34
//科学计算法
var numfloat2=152e5; //值是152乘以10的5次方,即15200000
var numfloat3=152e-5; //值是152乘以10的-5次方,即0.00152
如果浮点数看起来是整数,JavaScript会自动将浮点数转换为整数。
原因是JavaScript总是希望使用更少的内存,因为浮点数使用的内存是整数值的两倍。
var message=120.00; //JavaScript解释整数为200
Number类型所能定义的数值并不是无限的,JavaScript中的Number类型只能表示-(253-1)到(253-1)之间的值
获取Number数字类型的范围
0
。//Number.MIN_VALUE和Number.MAX_VALUE
console.log(Number.MAX_VALUE); //输出值:1.7976931348623157e+308
console.log(Number.MIN_VALUE); //输出值:5e-324
这两个属性在处理大量数据或者进行数值范围检查时非常有用。例如,如果你正在处理大量的小数,并且想要检测某个数是否超出了 Number 类型能够表示的范围,你可以使用这两个属性进行比较。
另外,当数值范围超过最大值或最小值时,可以使用Infinity和-Infinity来表示无限数
Infinity:
-Infinity:
console.log(Number.MAX_VALUE+Number.MAX_VALUE); //输出值:Infinity
console.log(-Number.MAX_VALUE-Number.MAX_VALUE); //输出值:-Infinity
NaN表示值不是数字。他是一个特殊的数值,表示无效数字。当一个操作或计算机结果不是一个有效的数字时,JavaScript会返回NaN
实例:字符串除以数字返回NaN
console.log("a"/2); //NaN
NaN特点
实例:
console.log(NaN/2);//NaN
console.log(NaN==NaN);//false
在JavaScript中,字符串是零个或多个字符的序列。JavaScript不区分单个字符和字符串,任何字符或字符串以英文单引号(‘’)或双引号(“”)开头和结尾
通过单引号( ‘’) 、双引号( “”)或反引号(`)包裹的数据都叫字符串,单引号和双引号没有本质上的区别。
特点:
以双引号开头的字符串必须是双引号结尾,以单引号开头的字符串也必须是单引号结尾,以什么引号开头就以什么引号结尾
无论单引号或是双引号必须成对使用
单引号/双引号可以互相嵌套,但是不以自已嵌套自已
必要时可以使用转义符 \ ,输出单引号或双引号
实例:
var user_name = '小明' // 使用单引号
var gender = "男" // 使用双引号
var str = '123' // 看上去是数字,但是用引号包裹了就成了字符串了
var str1 = '' // 这种情况叫空字符串
console.log("hello world") //hello world
console.log('hello world') //hello world
console.log("hello 'world'") //hello 'world'
console.log('hello "world"') //hello "world"
console.log(`hello world`) //hello world
console.log('hello \'world\'') //hello 'world'
JavaScript字符串是不可变的,意味着一旦被创建就无法修改。但是可以从现有字符串创建新字符串。例如:
var str="hello"
str=str+"world"
console.log(str) //输出helloworld
boolean型数据表示的是布尔型数据,它有两个固定的值 true 和 false,表示肯定的数据用 true,表示否定的数据用 false,且任何时刻都只能使用两种状态中的一种,不能同时出现。
实例:
var chooseA=true //true
var chooseB=false //false
·console.log(typeof chooseA,chooseB) //输出值:boolean false
注意:Boolean型变量赋值时,不能在true或false外面加引号,否则就变成字符串(string)型
undefined型是未定义类型,未定义是比较特殊的类型,只有一个值 undefined。
默认情况下,当声明变量时但未赋值的情况下,变量的默认值为 undefined。
它用于不存在或者没有被赋初始值的变量或对象的属性。
// 只声明了变量,并末赋值
var str
console.log(typeof str) // 结果为 undefined
注意:JavaScript 中变量的值决定了变量的数据类型。
Null型数据表示空值,作用是表明数据空缺的值,只有一个值null。一般在设定已存在的变量(或对象的属性)为空时较为常见。
var str=null
console.log(str) // null
对于null和undefined,一般情况下,JavaScript定义null等于undefined
console.log(null == undefined) //输出值:true