一:为什么需要数据类型
数据类型是人类定义出来的,而分多种数据类型其实是为了方便人类去理解,辨别数据,但计算机只认识二进制,最后这么多种数据类型都会被编译成二进制数。
如果没有定义数据类型会发生什么?那程序员在进行编程的时候只能通过输入一些01的东西,非常麻烦,那这样很不利于程序的开发。
那为什么要分这么多种数据类型?当方便了人类理解之后,就要考虑数据在计算机中的存储的状况,故不同的数据类型在计算机中占有的存储空间大小又是不一样的,即有的占用空间大,有的占用空间小,这样一来,计算机存储就更加灵活,空间利用率也会更高。
二:变量的数据类型
变量是用来存储值的所在外,它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。JavaScript是一种弱类型或者说动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。
var age = 10; //这是一个数字型
var areYouok =是的; //这是一个字符串
在代码运行时,变量的数据类型是由JS引擎根据 = 右边变量值的数据类型来判断 的,运行完毕之后,变量就确定了数据类型。
JavaScript拥有动态类型,同时也意味着相同的变量可用作同的类型:
var x = 6; //x为数字
var x = 'Bill'; //x为字符串
三:数据类型的分类
JS把数据类型分为两类:
- 简单数据类型(Number,string,Boolean,Undefined,Null)
- 复杂数据类型 (object)
3.2 数字型 Number
JavaScript数字类型既可以用来保存整数值,也可以保存小数(浮点数)。
var age = 21; //整数
var Age = 21.3789; //小数
3.2.1 数字型进制
最常见的进制有二进制、八进制、十进制、十六进制。
// 1.八进制数字序列范围:0~7
var num1=07; //对应十进制的7
varnum2=019; //对应十进制的19
// 对应十进制的8var num3=08;
//2.十六进制数字序列范围:0~9以及A~F
var num = 0xA;
现阶段我们只需要记住,在JS中八进制前面加0,十六进制前面加 0x
3.2.2 数字型范围
JavaScript中的数值得最大值和最小值。
alert(Number.MAX_VALUE); //1.7976931348623157e+308
alert(Number.MIN_VALUE); //5e-324
3.2.3数字型的三个特殊值
alert(Infinity); // Infinity
alert(-Infinity); // -Infinity
alert(NaN);// NaN
- Infinity,代表无穷大,大于任何数值
- -lnfinity,代表无穷小,小于任何数值
- NaN,Nota number,代表一个非数值
3.2.4 isNaN()
2.4 字符串型 String
字符串型可以是引号中的任意文本,其语法为双引号"和单引号”
var strMsg="我爱北京天安门~”; // 使用双引号表示字符串
var strMsg2 =我爱吃猪蹄~;//使用单引号表示字符串
// 常见错误
var strMsg3 = 我爱大肘子//报错,没使用引号,会被认为是s代码,但s没有这些语法
因为HTML标签里面的属性使用的是双引号,JS这里我们更推荐使用单引号.
2.4.1 字符串引号嵌套
JS 可以用单引号嵌套双引号 ,或者用双引号嵌套单引号(外双内单,外单内双)
var strMsg =,我是”高帅富”程序猿 ; // 可以用,包含”
var strMsg2 ="我是高帅富程序猿”; // 也可以用””包含
// 常见错误
var badQuotes =what on earth?";// 报错,不能单双引号搭配
2.4.2 字符串转义字符
类似HTML里面的特殊字符,字符串中也有特殊字符,我们称之为转义符转义符都是开头的,常用的转义符及其说明如下:
转义符 | 解释说明 |
\n | 换行符,n是newline的意思 |
| 斜杆\ |
| ‘单引号 |
| "" 双引号 |
\t | tab缩进 |
\b | 空格,b是blank的意思 |
2.3.3 字符串长度
字符串是由若干字符组成的,这些字符的数量就是字符串的长度。通过字符串的length 属性可以获取整个字符串的长度。
var str = 'my name is bettery';
alert(str.length); //显示18
2.3.4 字符串的拼接
- 多个字符串之间可以使用 +进行拼接,其拼接方式为字符串 + 何种类型 = 拼接之后的新字符串
- 拼接前会把与字符串相加的任何类型转成字符串,再拼接成一个新的字符串
//1.1 字符串”相加”
alert('hello'+ · + world'); // hello world
//1.2 数值字符串”相加”
alert('100'+100 ); // 100100
//1.3 数值字符串 + 数值
alert('11'+ 12);
// 1112
+号总结口诀 :数值相加,字符相连
2.4 字符串拼接的加强
console.log('pink老师' + 18); // 只要有字符就会相连
var age = 18;
console.log('pink老师age岁啦'); // 这样不行哦
console.log('pink老师'+ age); // pink老师18
console.log('pink老师' + age +'岁啦' ); // pink老师18岁啦
- 我们经常会将字符串和变量来拼接,因为变量可以很方便地修改里面的值
- 变量是不能添加引号的,因为加引号的变量会变成字符串
- 如果变量两侧都有字符串拼接,口诀“引引加加”,删掉数字,变量写加中间
案例
这是利用Js编写一个非常简单的交互效果程序。
交互编程的三个要素:
- 你喜欢我吗? ---- 这是用户输入
- 女孩想了想------这是 程序的内部处理
- 最后给了你一巴掌-------这是输出结果
那么在程序中怎么实现呢?
var age = prompt('请输入您的年龄');
var answer = '您今年已经' + age + '岁了';
alert(answer);
- 弹出一个输入框(prompt)让用户输入年龄(用户输入)
- 把用户输入的值用变量保存起来,把刚才输入的年龄与所要输出的字符串拼接(程序内部处理)
- 使用alert语句弹出警示框(输出结果)
2.5 布尔类型 Boolean
- 布尔类型有两个值:true和false,其中true 表示真(对)而false 表示假(错)
- 布尔型和数字型相加的时候,true的值为1,false的值为0
console.log(true + 1); // 2
console.log(false + 1); // 1
console.log(flag1 + 1); //结果为2 表示我们这个布尔类型的true在参与运算时是当1来看的
console.log(flag2 + 1); //结果为1 表示我们这个布尔类型的false在参与运算时适当0来看的
//如果一个变量声明未赋值 就是 undefined 未定义的数据类型
var str;
console.log(str); //undefined
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
2.6 Undefined和Null
一个声明后没有被赋值的变量会有一个默认值undefined(如果进行相连或者相加时,注意结果)
var variable;
console.log(variable);// undefined
console.log(你好,+ variable); // 你好undefined
console.log(11 + variable);// NaN
Nanconsole.log(true + variable); //NaN
一个声明变量给null值,里面存的值为空
var vari = null;
console.log(你好'+ vari); // 你好null
console.log(11 + vari);// 11
console.log(true + vari); //1