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可以省略