JS基础-02-数据类型,运算符

138 阅读5分钟

1.数据类型

分为原始类型和引用类型

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

1.1数值型Number

整型

10进制

1 2 3 .... 7 8 9 10 11 ... 15 16

8进制

1 2 3 ... 7 10 11 12

16进制

1 2 3 ... 7 8 9 a ... f 10

8进制以0开头的数字,例如012

16进制以0x开头的数字,af代表1015,不区分大小写

浮点型

3141.5E-1

314.15

31.415E+1

3.1415E+2

typeof 检测数据类型

var a;
console.log(typeof 12);		//number
console.log(typeof true);	//boolean
console.log(typeof a);	    //undefined
console.log(typeof 'abc');	//string
console.log(typeof null);	//object

isNan 检测变量是否为非数字的类型

console.log(isNaN(12));			//false
console.log(isNaN('abc'));		//true

1.2字符串型String

被引号包含的数据,不区分单双引号

查看任意一个字符的Unicode码

'a'.charCodeAt()

console.log('a'.charCodeAt());		//97

1.3布尔型Boolean

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

通常用于保存只有两个状态的数据,例如是否登录、是否在线... 一些运算符的结果也是布尔型

1.4未定义型Undefined

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

1.5空Null

只有一个值是null,类型是object,常结合对象一起使用

2.数据类型转换

分为隐式转换和强制转换

2.1隐式转换

在运算过程中自动产生的数据转换

2.1.1数字+字符串 数字转换为字符串

1 + '2'======>// '12'

2.1.2数字+布尔型 布尔型转换数值 true -> 1 false -> 0

2 + true======>//3

2 + false======>//2

2.1.3布尔型+字符串 布尔型转为字符串

true + '5'======>//'true5'

加号(+)的作用
执行数字之间的加法运算
执行字符串之间的拼接
var a = 3, b = true, c = 'tedu';
console.log(a+b+c); 	        //'4tedu'   ==>3+1+'tedu'
console.log(b+c+a);		//'truetedu3'   ==>'true'+'tedu'+3
console.log(c+a+b);		//'tedu3true'   ==>'tedu'+3+'true'
NaN:Not a Number(不是一个数字)
在将一个数据转换为数值型时候,没有成功得到一个数字就会返回NaN
NaN和任意数字执行运算,结果还是NaN

所有的隐式转换为数字都是会自动调用函数Number完成的

2.2强制转换

2.2.1强制转换为数值型

Number()

Number('1')  //1
Number(true)  //1
Number(false)  //0
Number(undefined)  //NaN
Number(null)  //0
Number('1a')  //NaN

2.2.2强制转换为整型

parseInt()

强制将字符串和小数转为整型

parseInt('3.94')  //3  
parseInt('6.18a')  //6
parseInt('a6.18') //NaN
parseInt(5.9)  //5

undefined null true false都是返回NaN

2.2.3强制转换为浮点型

parseFloat()

强制将字符串转换为浮点型

parseFloat('3.14')  //3.14
parseFloat('6.18a')  //6.18
parseFloat('6a')  //6
parseFloat('a6.18')  //NaN

2.2.4数值和布尔型强制转字符串

toString()

var num = 5;
num.toString()  //'5'

3.运算符

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

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

3.1算术运算符

+ - * / % ++ --

% 取余

++ 自增,在原来的基础之上加1

-- 自减,在原来的基础之上减1

3.2比较运算符

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

等于:只是比较两者的值是否相同,可能会发生隐式转换

全等于:同时比较类型,都相同结果才是true,否则false

不等于:比较值是否不相同

不全等于:同时比较类型和值,有一个不等为true,否则false

3>'10' 数字和字符串比较,字符串转为数值

'3'>'10' 字符串比较,比较的是首个字符的Unicode码

'3' -> 51 '1' -> 49

3>'10a'======>//false

3<'10a'======>//false

3=='10a'======>//false

NaN和任何值比较(> < >= <= == ===)结果都是false

NaN == NaN //false

3.3逻辑运算符

&& || !

&& 逻辑与,关联的两个条件都为true,结果是true,否则false,如果第一个条件是false,就不再执行第二个条件

|| 逻辑或,关联的两个有一个为true,结果是true,否则false,如果第一个条件是true,就不再执行第二个条件

! 逻辑非,取反

关注点在于是否会执行第二个表达式。

短路逻辑

& 逻辑与,关联的两个条件都为true,结果是true,

| 逻辑或,关联的两个有一个为true,结果是true,

| & 两个条件都执行,不推荐使用

    var a = 3;
    a > 1  &&  console.log(a);  //3 	条件1 为true,所以要执行 条件2
    a < 5  ||  console.log(a);	//	条件1 为true,所以要不执行条件2
    a > 1  &  console.log(a);  //3  	两个条件都执行
    a < 5  |  console.log(a);  //3  	两个条件都执行

3.4位运算符

模拟计算机底层的运算,先把数据转为2进制,然后进行运算;当运算完以后再把结果转回成10进制。

12345678
110111001011101111000

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

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

^ 按位异或,上下两位不同是1,相同是0

>> 按位右移,删除最后的位数,相当于在原来基础之上除以2再取整,例如7>>1 执行 parseInt(7/2)

<< 按位左移,在末尾补0,相当于在原来的基础之上乘以2,例如3<<1 执行3*2

3 & 77&1112|86 ^ 15
011011111000110
111101110001111
011001111001001

3.5赋值运算符

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

运算赋值:先执行运算,再执行赋值

3.6三目运算符

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

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

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

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

如果条件表达式为true,执行表达式1

如果条件表达式为false,执行表达式2

4.浏览器端函数

alert() 弹出警示框

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

程序 = 数据 + 算法

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