08-JavaScript基础-数据和数据类型
数据
- 数据是指所有能输入到计算机并被计算机程序处理的符号的介质的总称,是具有一定意义的数字、字母、符号和模拟量等的通称。
数据类型
为什么会有数据类型?
var a = 10; var b = '10';
- 思考:变量名a和变量名b保存的数据是否一样?
JS中常用的数据类型
程序在运行过程中会产生各种各样的临时数据,为了方便数据的运算和操作,JavaScript对这些数据进行了分类,提供了丰富的数据类型;
在JavScript中一共有六种数据类型:
JS中如何查看数据类型?
typeof操作符
会将检查的结果以字符串的形式返回给我们
console.log(typeof 100); var name = "JiangNanMax"; console.log(typeof name);
数字类型(Number)
- 最基本的数据类型
- 不区分整型数值和浮点型数值
- 能表示的最大值是 1.7976931348623157*10^308,能表示的最小值是 5*10^-324
- 包含十六进制数据,以0x开头0到9之间的数字,a(A)-f(F)之间的字母构成。a-f对应的数字是10-15
八进制直接以数字0开始,由0-7之间的数字组成
在JS中所有的数值都是Number类型(整数和小数)
var num1 = 123; var num2 = 3,14; console.log(typeof num1); console.log(typeof num2);
由于内存的限制,ECMAScript并不能保存世界上所有的数值
// 最大值: Number.MAX_VALUE console.log(Number.MAX_VALUE); // 1.7976931348623157\*10^308 // 最小值: Number.MIN_VALUE console.log(Number.MIN_VALUE); // 5*10^-324 // 无穷大: Infinity,如果超过了最大值就会返回该值 console.log(Number.MAX_VALUE + Number.MAX_VALUE); //Infinity // 无穷小: -Infinity,如果超过了最小值就会返回该值 console.log(typeof Infinity); // number
NaN非法数字(Not a Number)
JS中当对数值进行计算是没有结果返回,则返回NaN
var str = NaN console.log(typeof str); //number
Number类型注意点
// JS中整数的运算能够保证精确的结果 var counter = 120 + 20; //140 // 在JS中浮点数的运算可能得到一个不精确的结果 var counter = 100.1 + 20.1;<br> console.log(counter); //120.200000000000003
字符串类型(string)
- 字符串由单引号或双引号括起
- 例如单独一个字母也被称为字符串(例如:‘a’)
- 使用字符串注意事项
“`
//正常的情况
var str1 = “hello”;
var str2 = ‘world’;
console.log(str1); //string
console.log(str2); //string//不能一单一双,必须成对出现 var str3 = 'hello world"; //错误 //相同引号不能嵌套,不同引号可以嵌套 var str3 = "hello "world""; //错误 var str4 = 'hello 'world''; //错误 var str5 = 'hello "world"'; //正确 var str6 = "hello 'world'"; //正确
“`
布尔类型(Boolean)
- 布尔类型也被称为逻辑值类型或者真假值类型
- 布尔类型只能够取真(true)和假(false)两种数值,也代表1和0,实际运算中true=1,false=0
var bool1 = true; var bool2 = false; console.log(typeof bool1) //boolean console.log(typeof bool2) //boolean
虽然Boolean类型的字面值只有两个,但ECMAScript中所有类型的值都有与这两个Boolean值等价的值
- 任何非零数值都是true,包括正负无穷大,只有0和NanN是false
任何非空字符串都是true,只有空字符串是false
任何对象都是true,只有null和undefined是false
- 任何非零数值都是true,包括正负无穷大,只有0和NanN是false
var bool1 = Boolean(0); console.log(bool1); //false var bool2 = Boolean(1); console.log(bool2); //true var bool3 = Booleean(-1); console.log(bool3); //true var bool4 = Boolean("hello"); console.log(bool4); //true var bool5 = Boolean(""); console.log(bool5); //false var bool6 = Boolean(undefined); console.log(bool6); //false var bool7 = Boolean(null); console.log(bool7); //false
Null和Undefined
Undefined是一种比较特殊的类型,表示变量未赋值,这种类型只有一种值就是undefined
var num;
console.log(typeof num); // 结果是undefinedundefined是Undefined类型的字面量
- 前者undefined和10、”abc”一样是一个常量
- 后者Undefined和Number,Boolean一样是一个数据类型
需要注意的是typeof对没有初始化和没有声明的变量都会返回undefined
var str1 = undefined;
cosole.log(typeof str1); // 结果是undefined
var str2;
console.log(typeof str2); // 结果是undefinedNull类型是第二个只有一个值的数据类型,这个特殊的值是null
从语义上看null表示的是一个空的对象。所以使用typeof检查null会返回一个Object
var test1 = null;
console.log(typeof test1);
undefined值实际上是由null值衍生出来的,所以如果比较undefined和null是否相等,会返回true
var str1 = null;
var str2 = undefined;
console.log(str1 == str2); // 值比较,结果为true
console.log(str1 === str2); // 值比较和类型比较,结果为false