ECMAScript基本数据类型
阅读 (489)一、JS中的数据类型
-
基本数据类型
- 数字(Number):包括浮点数与整数
- 字符串(String):包括由任意数量字符组成的序列
- 布尔值(Boolean):包括true和false
- Undefined:当我们试图访问一个不存在的变量时,就会得到一个特殊的值undefined。除此之外,使用已定义却未赋值的变量也会如此,因为js会自动将变量在初始化之前的值设定为undefined。而Undefined类型的值只有一个,那就是undefined
- Null:只包含一个值的特殊数据类型。所谓的null值,通常是没有值或空值,不代表任何东西。null与undefined最大的不同在于,被赋予null的变量通常被认为是已经定义了的,只不过它不代表任何东西
-
非基本数据类型
就是对象类型
二、标识符
-
什么是标识符?
是一个字符串(注意:字符串未必是标识符)
-
标识符规则
-
只能由字母、数字、下划线和$组成
-
开头不能是数字
-
不能是JS的关键字和保留字
关键字:
保留字:
-
区分大小写
-
遵循驼峰或者下划线连接原则
-
见名知意
-
-
作用
给变量、函数、等命名
三、变量与常量
-
变量概述
a、程序可操作的存储区的名称
b、程序运行期间能改变的数据
c、每个变量都有特定的类型
-
变量作用
将不同类型的数据存储到内存
-
变量的定义
var 变量名;
注意:此时变量的值为undefinedvar 变量名 = 值;
注意:此时给变量值进行初始化赋值 -
变量的数据存储
变量名 = 数据值;
注意:变量在使用前必须先"定义"(即赋予变量一个值),否则会出现错误
-
常量
程序运行期间不能改变的数据
四、数字(Number)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>数字(Number)</title>
</head>
<body>
<script type="text/javascript">
//定义了一个名为num的变量
var num;
//打印变量num的值,当num定义后没有任何赋值的情况下num的类型是Undefined,值为undefined
console.log(num);
//打印变量的数据类型
//查看类型操作符typeof
console.log(typeof num);
//定义了一个名为num1的变量
var num1;
//给变量赋值
//此时num1变量类型为数字类型,变量可以根据值的不同而改变类型
num1 = 1;
//打印类型
console.log(typeof num1);
//打印num1变量的值
console.log(num1);
//改变变量的值,直接赋值即可
num1 = 10;
console.log(num1);
//八进制数字,以0开头
num1 = 0377;
//打印出的是八进制0377的十进制形式
console.log(num1);
//十六进制数字,以0x开头
num1 = 0xff;
//打印出的是十六进制0xff的十进制形式
console.log(num1);
</script>
</body>
</html>
五、Infinity与NaN
Infinity:特殊值,代表的是超出js处理范围的数值,但它依然是一个数字。任何数除以0结果为Infinity,Infinity与其他任何操作数执行任何算术运算的结果也是Infinity
NaN:如果我们在算术运算中使用了不恰当的操作数,导致运算失败,就会得到NaN。表示不是数字,但事实上它依然属于数字类型,只不过是一种特殊的数字罢了。NaN具有传染性,只要算术运算中存在一个NaN,整个运算就会失败
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Infinity与NaN</title>
</head>
<body>
<script type="text/javascript">
//Infinity:特殊值,代表的是超出js处理范围的数值,但它依然是一个数字。
num = 1e308;
console.log(num);
//超出表示范围
num = 1e309;
console.log(num);
//任何数除以0结果为Infinity
console.log(10 / 0);
//Infinity与其他任何操作数执行任何算术运算的结果也是Infinity
console.log(num + 2);
//正负Infinity相加的结果?
//结果为NaN
console.log(Infinity + (-Infinity));
//NaN:表示不是数字,但事实上它依然属于数字类型,只不过是一种特殊的数字罢了
console.log(typeof NaN);
//如果我们在算术运算中使用了不恰当的操作数,导致运算失败,就会得到NaN
console.log(10 * 'f');
//NaN具有传染性,只要算术运算中存在一个NaN,整个运算就会失败
console.log(1 + 2 + NaN);
</script>
</body>
</html>
六、命名空间
在同一个HTML中,不论script引入的是外部JS代码还是内部JS代码,所有的script均是在同一命名空间之下
sunck.js
var a = 10;
命名空间.js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>命名空间</title>
<script type="text/javascript" src="sunck.js"></script>
</head>
<body>
<script type="text/javascript">
console.log(a);
a = 20;
</script>
<script type="text/javascript">
console.log(a);
</script>
</body>
</html>
七、字符串
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>字符串</title>
</head>
<body>
<script type="text/javascript">
//js中一对双引号或单引号之间的任何都会被视为一个字符串
//定义了一个名为str的变量,类型为字符串类型
var str1 = "sunck is a good man";
//打印
console.log(str1);
console.log(typeof str1);
var str2 = "!";
//两个字符串相加,相当于拼接
var ret = str1 + str2;
console.log(ret);
//数字+字符串:将数字转换成字符串后相加拼接
var num = 10;
ret = str1 + num;
console.log(ret);
</script>
</body>
</html>
八、布尔值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>布尔值</title>
</head>
<body>
<script type="text/javascript">
//布尔类型 Boolean
//只有两种值:true和false
var br = true;
console.log(br);
console.log(typeof br);
</script>
</body>
</html>
九、falsy值和truthy值
作用:常用于判断
falsy:
- 数字:0,NaN
- 字符串:""
- 布尔值:false
- Undefined:undefined
- Null:null
十、类型转换
-
其它基本类型转换成Number类型
函数 功能 Number() 将其他类型数据转成Number类型数据 parseInt() 会试图将其收到的任何输入值(通常是字符串)转成整数类型,如果转换失败就返回NaN parseFloat() 会试图将其收到的任何输入值(通常是字符串)转成浮点数类型,如果转换失败就返回NaN parseInt()转换规则:如果第一个非空白字符(空格、换行、tab)是数字或者正负号则开始转换,直到碰到第一个非数字字符停止转换。如果第一个非空白字符不是数字或者正负号,转换失败,结果是NaN
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>其它基本类型转换成Number类型</title> </head> <body> <script type="text/javascript"> //Number() //功能:将其他类型数据转成Number类型数据 //1、Null-->Number console.log(Number(null));//0 //2、Undefined-->Number console.log(Number(undefined));//NaN //3、Boolean-->Number console.log(Number(true));//1 console.log(Number(false));//0 //4、String-->Number //如果字符串中只有数字、小数点、(最前面空格 正负号)则转换成对应的十进制数 console.log(Number("123"));//123 console.log(Number("12.3"));//12.3 console.log(Number("+123"));//-123 console.log(Number("-123"));//-123 console.log(Number(" 123"));//123 //如果是一个空字符串,结果是0 console.log(Number(""));//0 console.log(Number(" "));//0 //如果字符串中含有非数字,非正负号,转换失败,结果NaN console.log(Number("123abc"));//NaN console.log(Number("123+456"));//NaN console.log(Number("abc"));//NaN //parseInt() //功能:会试图将其收到的任何输入值(通常是字符串)转成整数类型,如果转换失败就返回NaN。 //转换规则:如果第一个非空白字符(空格、换行、tab)是数字或者正负号则开始转换,直到碰到第一个非数字字符停止转换。如果第一个非空白字符不是数字或者正负号,转换失败,结果是NaN. console.log(parseInt("123"));//123 console.log(parseInt("+123"));//123 console.log(parseInt("-123"));//-123 console.log(parseInt(" 123"));//123 console.log(parseInt("12a3"));//12 console.log(parseInt("12.3"));//12 console.log(parseInt("12 3"));//12 //NaN console.log(parseInt("true")); console.log(parseInt(" .123")); console.log(parseInt("+-123")); //parseFloat() //功能:会试图将其收到的任何输入值(通常是字符串)转成浮点数类型,如果转换失败就返回NaN。 console.log( parseFloat(" 2.5a") );//2.5 console.log( parseFloat(" .56") ); //0.56 console.log( parseFloat(" -.23")); //- 0.23 console.log( parseFloat(" +.23 + .1") );//0.23 console.log( parseFloat(" 3.14.956") ); //3.14 console.log( parseFloat("a3.14") ); //NaN </script> </body> </html>
-
其它基本类型转换成String类型
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>其它基本类型转换成String类型</title> </head> <body> <script type="text/javascript"> //Null-->String var str0 = "sunck" + null; console.log(typeof str0); console.log(str0); //Undefined-->String var str1 = "sunck" + undefined; console.log(typeof str1); console.log(str1); //Boolean-->String var str2 = true.toString(); console.log(typeof str2);//string console.log(str2);//"true" console.log(false.toString());//"false" //Number-->String var num = 10; var str3 = num.toString(); console.log(typeof str3);//string console.log(str3);//"10" </script> </body> </html>
-
其它基本类型转换成Boolean类型
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>其它基本类型转换成Boolean类型</title> </head> <body> <script type="text/javascript"> //绝大部分值在转换为布尔类型时都为true,但以下6中falsy值除外 /** * 1、"" * 2、null * 3、undefined * 4、0 * 5、NaN * 6、false */ console.log(Boolean("")); console.log(Boolean(null)); console.log(Boolean(undefined)); console.log(Boolean(0)); console.log(Boolean(NaN)); console.log(Boolean(false)); </script> </body> </html>
十一、isNaN()函数和isFinite()函数
isNaN():判断值是否是NaN。无法使用普通运算符,因为NaN不等于自身
isFinite():检测输入是否是一个既非Infinity也非NaN的数字
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>isNaN()函数和isFinite()函数</title>
</head>
<body>
<script type="text/javascript">
//isNaN() 判断值是否是NaN,如果info===NaN则返回true,否则返回false
console.log(NaN == NaN)
console.log(NaN === NaN)
console.log(isNaN(NaN));//true
console.log(isNaN(parseInt("abc")));//true
console.log(isNaN(123));
</script>
<script type="text/javascript">
//isFinite() 检测输入是否是一个既非Infinity也非NaN的数字
console.log(isFinite(Infinity));//false
console.log(isFinite(-Infinity));//false
console.log(isFinite(NaN));//false
console.log(isFinite(123));//true
</script>
</body>
</html>
十二、prompt输入框
作用:可以接收外部数据的值
需求:定义两个变量a和b,通过框给变量a和b赋值,输出a+b的结果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>prompt输入框</title>
</head>
<body>
<script type="text/javascript">
//通过输入框接收外部输入的值,存储给变量
var a = prompt("请输入变量a的值");
var b = prompt("请输入变量b的值");
//输入框接收到的默认为设置为string类型
console.log(typeof a);
console.log(typeof b);
a = parseInt(a)
b = parseInt(b)
console.log(a + b);
</script>
</body>
</html>
十三、常用打印占位符
符号 | 说明 |
---|---|
%d | 整数占位 |
%f | 浮点数占位 |
%s | 字符串占位 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>常用打印占位符</title>
</head>
<body>
<script type="text/javascript">
// var name = prompt("输入您的姓名");
// var age = parseInt(prompt("输入您的年龄"));
// var height = parseFloat(prompt("输入您的身高"));
// var weight = parseFloat(prompt("输入您的体重"));
var name = "sunck";
var age = 8;
var height = 173.5;
var weight = 80;
console.log(name,"is a good man!他",age,"岁,身高",height,"cm,体重",weight,"kg")
console.log("%s is a good man!他%d岁,身高%fcm,体重%fkg", name, age, height, weight)
console.log(`${name} is a good man!他${age}岁,身高${height}cm,体重${weight}kg`);
</script>
</body>
</html>