# 数据类型简介
- 为什么需要数据类型
- 变量的数据类型
变量是用来储存值的所在处,他们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中,
JavaScript是一种弱类型或者说动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定var age =10; //这是一个数字型 var areYouok = 'ok' //这是一个字符串
在代码运行时,变量的数据类型是由JS引擎
根据=右边变量值的数据类型来判断的,运行完毕之后,变量就确定了数据类型。
JavaScript拥有动态类型,同时也意味着相同的变量可能作不同的类型:var x = 6; //x为数字 var x = "Bill"; //x为字符串
- 简单的数据类型(基本数据类型)
JavaScrip中的简单数据类型及其说明如下:
| 简单数据类型 | 说明 | 默认值 |
|---|---|---|
| Number | 数字型,包含整数值和浮点类型值,如21、0.21 | 0 |
| Boolean | 布尔型,如true false 等价于 0 和1 | false |
| String | 字符串型,如“张三” 注意 js里面 字符串都带引号 | "" |
| Undefined | var a; 声明了变量a 但是没有给值,此时a = Undefined | undefined |
| Null | var a= null; 声明了变量a为空值 | null |
# 数字类型Number
var num = 10;
var n = 10.1;
// 1.八进制 0-7 我么程序里面数字前面加0 表示八进制
var num1 = 010;
console.log(num1);
// 2.十六进制 0-9 a-f #ffffff 数字的前面加0x 表示16进制
var num2 = 0x9;
console.log(num2);
var num3 = 0xa;
console.log(num3);
// 3.数字型最大值
console.log(Number.MAX_VALUE);
// 4.数字型最小值
console.log(Number.MIN_VALUE);
// 5.无穷大
console.log(Number.MAX_VALUE*2); //Infinity 无穷大
// 6.无穷小
console.log(-Number.MAX_VALUE*2); //Infinity 无穷小
// 7.非数字
console.log('小唐' - 10); //NaN
isNaN()
用来判断一个变量是否为非数字的类型返回true 或者false
var usrAge = 21; var isok= isNaN(usrAge); colsole.log(isNum); //false 21 不是一个非数字 var usrName = "andy"; console.log(isNaN(userName)); //true ,andy 是一个非数字
1.字符串型String
字符串型可以是引号中的任意文本,其语法为“双引号”和“单引号”
var strMsg = "我爱北京";//使用双引号表示字符串 var strmsg = '我爱吃猪蹄'; //使用单引号表示字符串 //常见错误 var strMsg = 我爱吃饭 ; //报错,没有使用引号 会被认为是js代码 但是js没有这些语法
因为HTML 标签里面的属性使用的是双引号,JS这里更
推荐使用单引号。
字符串引号嵌套JS可以单引号嵌套双引号,或者双引号嵌套单引号(
外双内单,外单内双)不能混搭
2.字符串转义符
| 转义符 | 解释说明 |
|---|---|
| \n | 换行符,n是newline的意思 |
\ |斜杠\ | |
| ' | ' 单引号 |
| " | " 双引号 |
| \t | tab 缩进 |
| \b | 空格,b是blank的意思 |
3.字符串长度
字符串是由若干个字符组成的,这些字符的鼠来那个就是字符串的长度。通过字符串的
length属性可以获取整个字符串的长度。// 1.检测获取字符串的长度length var str = 'my name is mai'; console.log(str.length); //14
4.字符串的拼接
- 多个字符串之间可以使用
+来进行拼接,其拼接方式为字符串+任何类型= 拼接之后的新字符串- 拼接前会把与字符串相加的任何类型转成字符串,再拼接成一个新的字符串
// 1.检测获取字符串的长度length var str = 'my name is mai'; console.log(str.length); // 2字符串的拼接 console.log('小'+'唐'); console.log('小唐'+ 18); console.log(12+12); //24 console.log('12'+12); //1212
5.字符串连接加强
console.log('小唐' + 18); console.log('小唐' + 18 +' 岁'); var age = 19; console.log('小唐' + age); console.log('小唐' + age +' 岁');
- 我们经常会将字符串和变量来拼接,因为变量可以很方便地修改里面的值
- 变量是不能添加引号的,因为加引号的变量会变成字符串
- 如果变量两侧都有字符串拼接,口诀
引引 加加删掉数字,变量写加中间``
6.布尔型Boolean
布尔类型有两个值: true 和false 其中true 表示真(对) 而false表示假(错)。
var lg = true; //Boolean类型 var ll = false;//Boolean类型 console.log(lg + 1); //true 参加加法运算当1来看 console.log(ll + 1);//false 参加加法运算当0来看
7.Undefined 和 Null
- 一个声明后没有被赋值的变量会有一个默认值undefined(如果进行相连或者相加时,注意结果)
// 如果一个变量声明未赋值 就是undefined 未定义数据类型 var str; console.log(str); var variable = undefined; console.log(variable + 'xiaotang'); //undefinexiaotang console.log(variable + 1);//NaN undefined 和数字相加 最后的结果是Nall
- 一个声明变量给null 里面存的值为空(学习对象时, 我们继续研究null)
// null var space = null; console.log(space + 'xiaotang');//nullxiaotang console.log(space +1); //1
8.typeof
var num = 10; console.log(typeof num); //number var str = 'xiaotang'; console.log(typeof str);//string var l = true; console.log(typeof l); //boolean var v= undefined; console.log(typeof v);//undefined var n = null; console.log(typeof n);//object //prompt 取过来的值是 字符串型 var age =prompt('input your name'); console.log(age); console.log(typeof age);
9.字面量
字面量是在源代码中一个固定值的表示法,通俗来说,就是字面量表示如何表达这个值
- 数字字面量 :8,9,10
- 字符串字面量: '小唐',"老唐"
- 布尔字面量: true ,false
# 数据类型转换
属于哪个表单、prompt获取过来的数据默认是字符串类型此时就不能直接简单的进行加法运算,而需要转换变量的数据类型。通俗来说,就是
把一种数据类型的变量转换成另外一个数据类型我们通常会实现3种方式的转换:
- 转换为字符串类型
- 转换为数字型
- 转换为布尔型
1.转换为字符串
| 方式 | 说明 | 案例 |
|---|---|---|
| toString() | 转成字符串 | var num =1; alert(num.String()); |
| String()强化转换 | 转成字符串 | var num = 1; alert(String(num)); |
| 加号拼接字符串 | 和字符串拼接的结果都是字符串 | var num = 1 ; alert(num + "我是字符串") |
// 把数字类型转换为字符串型 变量.toString() var num =10 ; var str = num.toString(); console.log(str); console.log(typeof str); // 我们利用 String(变量) console.log(String(num)); // 利用 + 拼接字符串的方法实现转换效果 隐式转换 console.log(num + '');
2.转换为数字型(重点)
| 方式 | 说明 | 案例 |
|---|---|---|
| parselnt(string)函数 | 将string类型转成整数数值型 | parselnt('8') |
| parseFloat(string)函数 | 将string类型转成浮点数数值型 | parseFloat('78.21') |
| Number()强制转换函数 | 将string类型转换为数值型 | Number('12') |
| js隐式转换( - * /) | 利用算术运算隐式转换为数值型 | '12' - 0 |
- 注意preseInt 和preseFloat单词的
大小写- 隐式转换是我们在进行算术运算的时候,js自动转换了数据类型
var age = prompt('input your age'); console.log(age); console.log(typeof age); //1. parseInt() 可以把字符型的转换为数字型 得到的是整数 console.log(parseInt(age)); console.log(typeof parseInt(age)); console.log(parseInt('3.14'));//3取整 console.log(parseInt('3.98')); //3取整 console.log(parseInt('120px')); //120 会去掉px单位 console.log(parseInt('rem120px'));//NaN //2.parseFloat() 可以把字符型的转换为数字型 得到的是小数 浮点数 console.log(parseFloat('3.14')); //3.14 console.log(parseFloat('120px')); //120 会去掉px单位 console.log(parseFloat('rem120px'));//NaN //3.利用Number(变量) var str ='2323'; console.log(Number(str)); console.log(Number('12')); //4. 利用了算数运算 - * / 隐式转换 console.log('12' - 0); console.log('120' + '120'); console.log('124' * 1 );
转换为boolean型
方式 说明 案例 Boolean()函数 其他类型转成boolean Boolean('true');
- 代表
空、否定的值会被转换为false 如" 0 NaN null undefuned - 其余的值会被转换为true
console.log(Boolean('')); //false console.log(Boolean((0))); //false console.log(Boolean(NaN)); //false console.log(Boolean(null)); //false console.log(Boolean(undefined)); //false console.log(Boolean('百度')); //true console.log(Boolean(12)); //true