目录
1、数据类型简介
1.1为什么需要数据类型
在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同的数据类型。
简单来说,数据类型就是数据的类别型号。比如姓名“张三”,年龄18,这些数据的类型是不一样的.
1.2变量的数据类型
变量是用来存储值的所在处,它们有名字和威据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。JavaScript是一种弱类型或者说动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。
var age = 10;//这是一个数字型
var arerouok =‘是的";//这是一个字符串
在代码运行时,变量的数据类型是由JS引擎根据=右边变量值的数据类型来判断的,运行完毕之后,变量就确定了数据类型。
JavaScript所拥有动态类型,同时也意味着相同的变量可用作不同的类型
var x=6;//x为数字
var x="Bill"; //x为字符串
js的变量数据类型是只有程序运行过程中,根据等号右边的值来确定的
1.3数据类型的分类
JS把数据类型分为两类:
- 简单数据类型( Number,string , Boolean , Undiefined,Nul1 )
- 复杂数据类型( object)
// 八进制 0~ 7 我们程序里面数字前面加0 表示八进制
var num1 = 010;
console.log(num1); //010八进制转换为10进制就是8
var num2 = 012;
console.log(num2);
// 十六进制0~9 a ~f #ffffff 数字的前面加 0x 表示十六进制
var num3 = ex9;
console.log(num3);
var num4 = 0xa;
console.log(num4);
// 3,数字型的最大值
console.log(Number.MAx_VALUE);
// 4.数字型的最小值
console.log(Number.MIN_VALUE);
// 5.无穷大
console.log(Number.MNAx_VALUE * 2);//Infinity 无穷大
// 6、无穷小
console.log(-Number.MNAx_VALUE * 2)
2、isNaN
3、字符串型
字符串是由若干字符组成的,这些字符的数量就是字符串的长度,通过字符串的lengtn属性可以获取整个字符串的长度
字符串拼接:
// 1.检测获取字符串的长度length
var str = 'my name is andy ';
console.log(str.length);// 15
// 2.字符串的拼接+只要有字符串和其他类型相拼接最终的结果是字符串类型
console.log('沙漠' + '骆驼');//字符串的沙漠骆驼
console.log(" 晓明" + 18); // "晓明18"
console.log('pink' + true); // pinktrue
console.log(12 + 12); // 24
console.log("12" + 12);// "1212'
我们变量不要写到字符串里面,是通过和 字符串相连的方式实现的
变量和字符串相连的是引引加加
简单数据类型案例
//弹出一个输入框( prompt),让用户输入年龄(用户输入)
//把用户输入的值用变量保存起来,把刚才输入的年龄与所要输出的字符串拼接(程序内部处理)
//使用alert语句弹出警示框(输出结果)
var age = prompt('请输入您的年龄');
var str = '您今年已经' + age + '岁了';
alert(str);
布尔型
布尔类型有两个值: true和false ,其中true表示真(对),而false表示假(错)。布尔型和数字型相加的时候,true的值为1 , false的值为0.
var flag = true; //flag 布尔值
var flag1 = false; //flag1布尔型
console.log(flag + 1); //true参与加法运算当1来看
console.log(flag1 + 1); // false参与加法运算当0来看1
// 如果一个变量声明未赋值就是undefined 未定义数据类型
var str;
console.log(str);
var variable = undefined;
console.log(variable + 'pink '); // undefinedpink
console.log(variable + 1); // NaN undefined 和数字相加最后的结果是 NaNl
// null空值
var space = null;
console.log(space + "pink");//nullpink
console.log(space + 1);//1
检测数据类型
var num = 10;
console.log(typeof num); // number
var str = " pink ";
console.log(typeof str);// string
var flag = true;
console.log(typeof flag); //boolean
var vari = undefined;
console.log(typeof vari); // undefined
var timer = null;
console.log(typeof timer); //object
// prompt 取过来的值是 字符型的
var age = prompt("请输入您的年龄");
console.log(age);
console.log(typeof age);//string
字面量
字面量是在源代码中一个固定值的表示法,通俗来说,就是字面量表示如何表达这个值
数据类型的转换
什么是数据类型转换
使用表单、prompt 获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算,而需要转换变量的数据类型。通俗来说,就是把一种数据类型的变量转换成另外一种数据类型。
我们通常会实现3种方式的转换:
- 转换为字符串类型
- 转换为数字型
- 转换为布尔型
转换为字符串
//1.把数字型转换为字符串型变量.tostring()
var num = 10;
var str = num.tostring();
console.log(str);
console.log(typeof str);
// 2.我们利用string(变量)
console.log(string(num));
// 3.利用+拼接字符串的方法实现转换效果隐式转换
console.log(num + "");
转换为数字型
var age = prompt('请输入你的年龄');
// 1、parseInt(变量) 可以把 字符型的转换为数字型 得到是整数
console.log(parseInt(age));
console.log(parseInt(3.14));//3 取整
console.log(parseInt('3.14'));//3 取整
console.log(parseInt(3.94));//3 取整
console.log(parseInt('120px'));//120 会去到这个px单位
console.log(parseInt('rem120px'));//NaN
// 2、parseFloat(变量) 可以把 字符型的转换为数字型 得到是小数 浮点型
console.log(parseFloat(3.14));//3.14
console.log(parseFloat('3.14'));//3.14
console.log(parseFloat('120px'));//120 会去到这个px单位
console.log(parseFloat('rem120px'));//NaN
// 3、利用 Number(变量)
var str = '123';
console.log(Number(str));
console.log(Number(12));
// 4、利用了算术运算 - + / 隐式转换
console.log('12' - 0);//12
console.log('123' - '120');//3
console.log('123' * 1);//123
计算年龄
var year = prompt('请你输入你的出生年月');
var data = new Date();
var d = data.getFullYear();
var age = d - year;//year 取过来的是字符串型 但是这里用的减法 有隐式转换
alert('你今年已经' + age + '岁了');
简单加法器
计算两个数的值,用户输入第一个值后,继续谈出第二个输入框并输入第二个值,最后通过弹出窗口显示两次输入值相加的结果
相加
// 求两数值相加的结果
var num1 = prompt("请输入第一个值");
var num2 = prompt("请输入第二个值");
var result = parseFloat(num1) + parseFloat(num1);
alert('你输入的结果是:' + result);
转换为布尔型
方式 | 说明 | 案例 |
---|---|---|
Boolean()函数 | 其他类型转换成布尔值 | Boolean('true'); |
- 代表空、否定的值会被转换为false,如''、0、NaN、null、undefined
- 其余值都会被转换为true
var flag = true; // flag 布尔型
var flag1 = false; // flag1 布尔型
console.log(flag + 1); // true 参与加法运算当1来看
console.log(flag1 + 1); // false 参与加法运算当 0来看
// 如果一个变量声明未赋值 就是 undefined 未定义数据类型
var str;
console.log(str);
var variable = undefined;
console.log(variable + 'pink'); // undefinedpink
console.log(variable + 1); // NaN undefined 和数字相加 最后的结果是 NaN
// null 空值
var space = null;
console.log(space + 'pink'); // nullpink
console.log(space + 1); // 1
解释型语言和编译型语言
1、概述
计算机不能直接理解任何除机器语言以外的语言,所以必须要把程序员所写的程序语言翻译成机器语言才能执行程序。程序语言翻译成机器语言的工具,被称为翻译器。
- 翻译器翻译的方式有两种:一个是编译,另外一个是解释。两种方式之间的区别在于翻译的时间点不同
- 编译器是在代码执行之前进行编译,生成中间代码文件
- 解释器是在运行时进行及时解释,并立即执行(当编译器以解释方式运行的时候,也称之为解释器)
2、执行过程
标识符
标识符:就是指开发人员为变量、属性、函数、参数取的名字
标识符不能是关键字或保留字
关键字
关键字:是指JS本身已经使用了的字,不能再用它们充当变量名.方法名。
包括: break、case、catch、continue、default、delete、do、else、finally、for、function、if、in.instanceof、new、return.switch、this、throw、try、typeof、var、void、while、with等。
保留字
保留字︰实际上就是预留的“关键字”,意思是现在虽然还不是关键字,但是未来可能会成为关键字,同样不能使用它们当变量名或方法名。
包括: boolean、byte、char、class、const、debugcer、double、enum、export、extends,fimal、float、goto、implements、import、int、interface、long、mative、package、
private、protected,public、 short,static、 super、synchronized、throws、transient,volatile等。