数据类型

2022/4/19 6:16:17

本文主要是介绍数据类型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.原始类型

分为原始类型和引用类型, 原始类型分为数值型、字符串型、布尔型、未定义型、空

查看数据类型方法:typeof 变量名
1.1数值型

分为整型和浮点型

整形:

十进制整数:1  2  3  4  5  6  7   8  9  10  ...  15  16
8进制整数,8进制是以0开头的数字,例如012: 1  2  3  4  5  6  7  10  11  12
16进制整数,16进制以0x开头的数字,例如0xf, a~f代表10~15,不区分大小写:1  2  3  4  5  6  7   8  9   a  ...   f   10

浮点型

 指数型浮点型:3141.5e-1,==314.15, 31.415e+1,==314.15,3.1415e+2 ==314.15
 正常的小数:314.15 
1.2字符串型

被引号包含的数据就是字符串型,不区分单双引号

查看任意一个字符的Unicode码
  '涛'.charCodeAt()    ----查询unicode码的方法
1.3布尔型

只有两个值,分别是true和false,代表真和假

通常用于保存只要两个状态的数据,例如:是否登录、是否为会员...

1.4未定义型

只有一个值undefined,表示一个空值,例如声明了变量未赋值

1.5空

只有一个值null,表示一个空值,类型是object(对象),常和引用类型的数据一起使用

typeof  数据    检测数据类型'number' / 'string' / 'boolean' / 'undefined' / 'object'

2.数据类型转换

分为隐式转换和强制转换

2.1隐式转换(运算过程中自动转换)

①数值+字符串 数值转换为字符串

  1+'2'  // '12'

②数值+布尔型 布尔型转换为数值 true->1 false->0

  3+true    //4,  3+false    //3 

③字符串+布尔型 布尔型转换为字符串

'5'+true  //'5true'

*加号(**+)的作用*执行数值之间的加法运算执行字符串之间的拼接

 练习:查看以下程序的输出结果

 var a=2, b=true, c='tedu';   

 console.log(a+b+c);// '3tedu'

 console.log(b+c+a);//'truetedu2'

 console.log(c+a+b);//'tedu2true'

除了加号两端有一个是字符串会隐式转换为字符串,其它的(+ - * /)都是隐式转换为数值; 所有隐式转换为数值会自动的调用函数Number。

将运算符俩端的数据转为数值型,如果转换失败,返回NaN(Not a Number),不是一个数字,任何和NaN执行加减乘除都会返回NaN。

2.2 强制转换

①强制转换为数值

  Number()

  Number('4')  //4

  Number(true) //1

  Number(false) //0

  Number('2a') //NaN   

  Number(undefined) //NaN

  Number(null)  //0

NaN : Not a Number,不是一个数字,在转换为数值的时候,没有成功的得到一个数值则返回NaN,NaN和任何值执行加减乘除,结果还是NaN

②强制转换为整型

  parseInt()
  通常用于将字符串或者小数转换为整型,其它的(布尔型、未定义型、空)或者转换的字符串开头是非数字,则返   回NaN

  parseInt(3.94)  //3

  parseInt('5.18')  //5

  parseInt('4.7a')  //4

  parseInt('b5.3')  //NaN

③强制转换为浮点型

  parseFloat()

  通常用于将字符串转换为浮点型,和parseInt()用法一致

  parseFloat('3.14a')  //3.14

  parseFloat('4b')  //4

  parseFloat('c5.2')  //NaN

④将数值和布尔型转为字符串(了解)

  toString()

  var num=2;

  var str=num.toString(); //'2'

3.运算符

表达式:由数据本身或者由运算符连接的操作数据组成的形式

运算符分为算术运算符、比较运算符、逻辑运算符、位运算符、赋值运算符、三目运算符

3.1算术运算符

+ - * / %(取余) ++ (自增) --(自减)

 % 取余

 ++ 自增,一个变量在原来基础之上加1   如:var m2=m1--;

 -- 自减,一个变量在原来基础之上减1

 a=b++  先把b赋给a,然后b再执行自增  

 a=++b  先让b执行自增,然后再自增的结果赋给a  
3.2 比较运算符

> < >= <= == != ===(全等于) !==(不全等于)

== 等于,只是比较值是否相同

=== 全等于,先比较类型,再比较值

3>'10'  //false  字符串转为数值

'3'>'10'  //true  比较的是首个字符的Unicode码

3>'10a'

3<'10a'

3=='10a'

NaN和任何值比较(包含NaN本身) >  <  >=  <=  ==  === 结果都是false
3.3逻辑运算符
  && 逻辑与(并且),关联的两个条件都是true结果是true,否则是false

  || 逻辑或(或者),关联的两个条件有一个是true结果是true,否则是false

  !  逻辑非(取反)

*短路逻辑*

  && 当第一条件为false的时候,不再执行第二个条件

  ||  当第一个条件为true的时候,不再执行第二个条件

  短路逻辑重点是看第二个条件(表达式)是否执行,无需关注整体结果是true还是false。
3.4位运算符(了解)
先把数据转为2进制然后进行运算,最后将结果转回成10进制

 1   2  3   4   5   6   7

 1  10  11  100  101  110  111

 &  按位与,上下两位都是1结果是1,否则是0

 |  按位或,上下两位含有1结果是1,否则是0

 ^  按位异或,上下两位不同为1,否则为0 

 >>  按位右移,删除末尾的位数

 <<  按位左移,在末尾补0

 10>>2     5<<1

 1010      101

  101     1010

  10     10100

 3&5    5&7    7|10    9^13

 011    101    0111   1001

 101    111    1010   1101

———  ———   ————  ———

 001    101    1111   0100

​      5      15     4
3.5赋值运算符

= += -= *= /= %= ...

运算赋值

3.6三目运算符

一目运算符:由一个运算符连接的一个操作数据或者表达式 ++ -- !

二目运算符:由一个运算符连接的两个操作数据或者表达式

三目运算符:由两个运算符连接的三个操作数据或者表达式

条件表达式 ? 表达式1 : 表达式2

如果条件表达式为true,执行表达式1,否则条件表达式为false,执行表达式2

 

4.浏览器端的函数

alert() 弹出警示框(消息框)

prompt() 弹出提示框(输入框),需要使用变量来保存输入的值,类型是字符串型,如果输入的内容为空得到的是空字符(''),如果点击取消返回null

练习:弹出两次提示框,分别输入数字,最后计算两个数字相加的和,将结果以警示框形式弹出。

程序 = 数据 + 算法

程序的执行方式:顺序执行、选择执行、循环执行

5.流程控制

5.1 if语句

满30减20

if(条件表达式){ 语句块}

 

如果语句块中只有一行代码,则大括号可以省略

以下作为条件表达式隐式转换为false:0 NaN '' undefined null

5.2 if-else语句

if(条件表达式){ 语句块1}else{ 语句块2}

 

//判断一个人是否为成年人
var age=11;
if(age>=18){
  console.log('成年人');
}else{
  console.log('未成年人');
}
5.3 if-else嵌套

if(条件表达式1){ 语句块1}else if(条件表达式n){ 语句块n}else{ 语句块n+1 //以上所有的条件都是false}

 

var n;
if(n===1){
  console.log('非洲');
}else if(n===2){
  console.log('日本');
}else if(n===3){
  console.log('印度');
}else{
  console.log('八宝山');
}
5.4 switch-case语句

switch(表达式){ case 值1: //如果表达式和case后的值相同,则执行对应语句块 语句块1 break; //跳出switch-case语句 case 值n: 语句块n break; default: 语句块n+1 //以上表达式和每个case后的值比较都是false}

switch-case是一种特殊的多项分支语句,只能进行全等于的比较

//练习:声明变量保存任意一个城市,打印出这个城市对应的特色美食
var city='成都';
switch(city){
  case '北京':    #相当于执行条件判断 执行 city===“北京”:
    console.log('烤鸭');
    break;
  case '重庆':
    //console.log('火锅');
    //break;
  case '成都':
    console.log('火锅');
    break;
  case '乌鲁木齐':
    console.log('羊肉串');
    break;
  default:
    console.log('面条');
}

*对比if**-**else嵌套和**s**witch-case*

相同点:都是多项分支语句

不同点:if-else嵌套可以进行各种情况的判断,switch-case只能使用全等于的比较;switch-case执行效率更高。if-else嵌套适用范围更广泛

 

 

 

 

 

 

 

 

 

 

 

 



这篇关于数据类型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程