JavaScript--数据类型

1、基本数据类型

①number 数字类型

包含了所有的数字(整数、浮点数、正数、负数、极大极小数、进制数)、NaN(not a number)、Infinity、-Infinity

 

②string 字符串类型

引号包含的任意内容

单双引号都可以,成对出现

' ' , " "

字符串之间可以相互嵌套,单引号内包含双引号,双引号内包含单引号

转义字符 \(反斜杠)

写在产生歧义内容的前面

\' \" \\

\n 换行

\t tab制表符 半角空格[1-4] 4个符号为一组

\b 回格 backspace

 

③boolean 布尔类型

true 真 转换为1

false 假 转换为0

 

④undefined 未定义类型

声明变量没有赋值,值为undefined,类型为undefined

undefined一般不会主动去赋值

undefined和任何值做计算时返回NaN

 

⑤null 空类型

null一般用来主动释放对象,空指向

typeof时返回object

null 做计算时转换为 0

 

2、引用数据类型

object 对象类型

(array 数组、function 函数、object 对象)

 

3、判断数据类型

typeof 值;

返回对应的数据类型

返回的数据类型:number string boolean undefined object function

 

4、js拥有动态的数据类型

数据类型根据变量或者常量的赋值来决定

 

5、动态输入框

prompt('提示','默认值')

默认值可以省略

返回string类型

eg:

var age = prompt('请输入您的年龄');

console.log(age,typeof age);

 

6、随机数

Math.random() [0,1) 默认返回0-1之间的小数,取不到1 [0,1)

[]:闭区间 可以取到

():开区间 取不到

 

生成随机数,不包括最大值

parseInt(Math.random()*(MAX-MIN)+MIN)

生成随机数,包括最大值

parseInt(Math.random()*(MAX-MIN+1)+MIN)

 

交换两个变量的值

//假如ran1 = 10 ran2 = 77

var temp;//声明一个空变量

temp = ran1;//temp=10

ran1 = ran2;//ran1=77

ran2 = temp;//ran2=10

console.log(ran1);

console.log(ran2);

 

7、运算符

运算符也可以称之为操作符

一元运算符:只有一个操作数|表达式 +3 -6

二元运算符:有两个操作数 |表达式 2+3 5*9

三元运算符:有三个操作数|表达式?条件运算符:三目运算符

 

2+3:

操作数: 2 3

运算符: +

表达式: 2+3

返回值:js运算符操作的都是操作数和表达式的返回值

 

运算符:

1)算数运算符

2)比较运算符(关系运算符)

3)逻辑运算符

4)赋值运算符

5)位运算符

6)条件运算符

 

①、算数运算符

+ - * / %(模|取余) ++ --

 

1)遇到字符串

+直接进行字符串拼接,返回string类型

- * / %转换为number类型进行计算,如果不能转换,返回NaN

 

2)遇到布尔类型

true转换为1进行计算

false转换为0进行计算

 

3)遇到undefined类型

返回NaN

 

4)遇到null类型

转换为0参与计算

 

5)遇到数组

+ 直接进行字符串拼接,返回string类型

- * / % 转换为number进行计算,当只有一个数组元素时,正常的运算,当有多个数组元素时,返回NaN

 

6)遇到对象

+ 直接进行字符串拼接,返回string类型 对象的字符串[object Object]

- * / % 转换为number进行计算,返回NaN

 

7)遇到NaN

返回NaN

 

8)++ --

++:自增 相当于自己+1 i++ ++i 相当于 i = i + 1

--:自减 相当于自己-1 i-- --i 相当于 i = i - 1

 

不管前++还是后++对于变量自身来说没有区别

前++ 先+1 再返回

后++ 先返回 再+1

 

②、关系运算符 比较运算符

只能比较两个值,返回布尔类型

> >= < <= == != === !==

== 等于 只判断数值

!= 不等于 等于取反

=== 全等|绝对等于 即判断数值,又判断数据类型

!== 不全等 全等取反

 

注意:

1)NaN和任何值做等于比较,返回false

2)undefined和null做等于比较返回true,全等返回false

3)0 false ‘’ 做等于比较返回true

 

字符集

字符的集合

所有的字符集都包含了ASCII码(128个字符:0-127)

0——48

A——65

a——97

 

ASCII:美国

utf-8:国际

gb2312:中国

GBK:中国 包含繁体

 

③、逻辑运算符

连接多个表达式,返回布尔值

&& 逻辑与 所有表达式都为true,结果就为true

|| 逻辑或 只要有一个表达式的结果为true,结果就为true

! 逻辑非 取反

 

短路条件:

&& 第一个表达式返回值为false

|| 第一个表单式返回值为true

短路逻辑

var i = 5;

// console.log(3<2&&i++>5);//false

// console.log(i);//5 3<2 返回false,&&出现了短路 后面的i++没有执行

 

// console.log(3>2&&i++>5);//false

// console.log(i);//6

 

// console.log(3>2||i++>5);//true

// console.log(i);//5

 

// console.log(3<2||++i>5);//true

// console.log(i);//6

 

逻辑与和逻辑或同时存在,与的优先级大于或

console.log(3 > 2 || 5 > 4 && 6 < 9);//true

 

不是布尔类型的情况:

1)逻辑与

①第一个表达式为true,不能决定最终结果,返回第二个值

②第一个表达式为false,能决定最终结果,返回第一个值

 

2)逻辑或

①第一个表达式为true,能决定最终结果,返回第一个值

②第一个表达式为false,不能决定最终结果,返回第二个值

 

3)转换为false的只有下面六个操作符,其他都转换为true

①0——number类型

②false

③null

④undefined

⑤NaN

⑥'' 或者 "" 空字符串

 

④、赋值运算符

= 等号右侧的内容赋值给等号左侧

+= i+=j 相当于 i = i + j

-= i-=j 相当于 i = i - j

*= i*=j 相当于 i = i * j

/= i/=j 相当于 i = i / j

%= i%=j 相当于 i = i % j

 

⑤、条件运算符 三目运算符

布尔类型(条件)?表达式1:表达式2;

1)布尔类型为true,执行表达式1

2)布尔类型为false,执行表达式2

 

⑥、位运算符

& | ~ ^ >> << >>>

位运算符操作二进制,位运算符只能操作32位整数

位运算符有取整作用

 

1)~ 按位取反

实质位取负,再-1

 

var num1 = 10; //00000000000000000000000000001010

var num2 = ~num1;//11111111111111111111111111110101 32位二进制1开始为负数 转换为负数:取反+1 1010+1 = 1011 转换为十进制 11 负数 -11

console.log(num2);//-11

 

2)^ 按位异或

相同位0 相异位1

应用:

// 交换两个变量的值

var num = 25;

var num2 = 26;

num = num^num2;

num2 = num^num2;

num = num^num2;

console.log('num:'+num);

console.log('num2:'+num2);

 

 

3)>> 带符号右移

num>>n

实质位除以2的n次幂

 

4)<< 左移动

num<<n

实质位乘以2的n次幂

 

运算符的优先级

1)优先级相同从左到右计算

2)乘除取余优先级大于加减

3)小括号优先级最高

4)一元运算符的优先级高于二元运算符

5)二元运算符的优先级高于三元运算符

6)赋值运算符优先级最低

7)逻辑与的优先级大于逻辑或

 

8、数据类型转换

1)分类

①强制类型转换

通过方法去转换

 

②隐式转换 自动类型转换

自己转换

 

2)隐式转换 自动类型转换

①转换为number

- * / %

自动转换为number类型进行计算,不能转换返回NaN

 

②转换为string类型

+运算符遇到字符串直接进行字符串拼接,返回string类型

 

 

③转换为boolean类型

三目运算符条件、if条件、for条件

 

以下转换为false,其余都转换为true

1)0

2)'' , ""

3)undefined

4)null

5)NaN

 

9、string类型转换为number

parseInt()

1)转换为整数

2)不会四舍五入,直接去整数部分

3)忽略前面的空格

4)以0开头,忽略

5)当包含数字和其他符号,如果以数字开头,返回数字部分;如果不是数字开头,返回NaN

 

 

parseFloat()

1)转换为小数

2)不会四舍五入,只能识别一个小数点

3)忽略前面的空格

4)以0开头,忽略

5)当包含数字和其他符号,如果以数字开头,返回数字部分;如果不是数字开头,返回NaN

 

10、Number()方法

1)作用

转换为number类型

 

2)语法

Number(值)

 

3)注意

①只要包含不是数字的内容,返回NaN

②忽略前后的空格

③忽略数字前面的0

④true转换为1

⑤false 、'' 、 null 转换为0

⑥undefined 、NaN 转换为NaN

 

11、String类型

1)作用

转换为string类型

 

2)语法

String(值)

 

3)注意

①对象转换为字符串为[object Object]

②数组转换为字符串直接取出数组元素

 

12、Boolean方法

1)作用

转换为布尔类型,true 、false

 

2)语法

Boolean(值)

 

3)注意

以下转换为false,其他都转换为true

0 、 '' 、 "" 、 NaN 、 undefined 、 null

 

13、程序

程序 = 数据 + 算法

数据:变量、常量

算法(流程控制):

1)顺序结构

2)分支结构 根据不同的条件,做出不同的选择

if、if-else、else-if、switch

3)循环结构 重复执行相同的代码

for、while、do-while

 

14、分支结构

1)单分支结构

语法:

if(条件){

满足条件执行的语句

}

注意:

①条件为布尔类型

②当条件为true,进入到if分支中,执行大括号中的代码

③当条件为false,什么也不做

④小括号后不能加分号

⑤当执行语句只有一条语句时,大括号可以省略

 

2)双分支结构

①语法

if(布尔值的条件){

条件为true执行的语句

}else{

条件为false执行的语句

}

注意:

当只有一条语句if和else的大括号都可以省略

else不可以单独使用

 

3)多分支结构

if(布尔类型的条件){条件为true执行的语句}

else if(布尔类型的条件){条件为true执行的语句}

else if(布尔类型的条件){条件为true执行的语句}

...

else{以上条件都不满足执行的语句}

 

意:

①else if的个数没有限制

②else可以省略

③上面的条件一旦满足,就不再往下执行

④多选一执行,也有可能一个也不执行

 

4)分支结构可以相互嵌套

 

5)switch-case

①语法

switch(表达式1){

case 表达式2(常量):

代码块

break;

case 表达式3(常量):

代码块

break;

case 表达式4(常量):

代码块

break;

default:

代码块;

}

 

②注意

a、表达式1可以返回任何数据类型

b、case后面表达式常为一个常量,然后做等值(===)比较

c、break可以省略,break可以结束整个switch结构

d、default可以省略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值