1 JavaScript
1 Javascript 简介
1.1 javascript特点
动态,弱类型,解释性,基于对象的脚本语言。
**动态:**程序执行时候才会确定数据类型。
**弱类型:**数据类型可以自动转换。
**解释型:**边编译,边运行,开发效率更高。
**脚本:**一般都是可以嵌在其他编程语言中执行。
1.2 javascript 组成
ECMAscript, 语法标准
DOM,文档对象模型
BOM,浏览器对象模型
1.3 javascript运行环境
浏览器或者Node.js
1.4 script使用
行内式,内嵌式,外链式
2 变量
2.1 数据,直接量,变量
**数据:**计算机计算的数据,所有信息都需要用数据表示,参与运算的数据进入内存。
**直接量:**直接使用数据就是直接量。
**变量:**命名,并通过名字来使用数据。
2.2 变量的意义
1.方便数据多次使用。
2.可以延长在内存中的时间,多次使用数据保证一致性。
2.3 变量的语法
1.使用关键字var声明
var a = 1;
2.4 变量的命名规范(标识符的命名规范)
1 强制规范
变量名必须由数字,字母,下划线,$组成,不能以数字开头;
变量名不能是关键字或保留字
--关键字:在javascript中具有特殊意义的词
--保留字:将来可能在javascript中具有特殊意义的词
2 建议规范
驼峰命名法;帕斯卡命名法
小驼峰命名法(用于命名变量);大驼峰命名法(用于命名类名)
3 数据类型
3.1 数据类型划分
1 原始类型:
number 数字
string 字符串
boolean 布尔值
null 空
undefined 未定义
2 对象类型
Function 函数
Array 数组
Object 对象
...
3.2 判断数据类型
typeof(数据)
**注:**null使用typeof判断得到的结果是’object’
3.3 number数值类型
1 整型
899 //十进制表示的整型
023 //八进制表示的整型
0xa8 //十六进制表示的整型
2 浮点型
带有小数的就是浮点数。浮点数运算存在精度问题
3 科学计数法表示
3.45e4,3e-2
4 NaN(not a number)
NaN是number类型中的一个值,也属number类型,不是一个有效数字。
特点:
NaN与任何数进行任何计算,结果仍然是NaN.
NaN与任何数都不等,与自身也不等.
isNaN()函数:
判断一个数据是不是NaN,结果返回值为布尔值。
5 javascript中数字的有效范围
-1.7976931348623157e308 ~ 1.7976931348623157e308;
最小正数 5e-324 ,接近0;
Infinity(无穷),属于无效数字;
isFinite(),判断一个数字是否是有效数字,返回布尔值
3.4 string字符串类型
1 字符串表示方式
'xxxx'或者"xxx"
2 转义字符
\n 表示换行
\' 表示单引号
\" 表示双引号
\\ 表示\本身
3.5 boolean布尔类型
ture 是,正确
false 否,错误
4 数据类型转换
4.1 数据类型转换规则
1 其他类型转number 类型 Number(),parselnt()
string转number:
纯数字字符串可以转换为数字,包括科学计数法,十六进制,八进制;
''-->0;
其他字符串转为 NaN;
字符两端的空格在转换时会取消,字符中间空格不会取消
boolean转number:
ture-->1;
false-->0
undefined转number:
NaN
2 其他类型转为string类型
数据变成相应的字符串,内容为数据内容
3 其他类型转为boolean类型
number转Boolean:
0,NaN--->false;
其他为ture
string转Boolean:
''-->false;
其他为true
null转Boolean:
false
undefined转Boolean:
fasle
4.2 数据类型隐式转换
5 运算符
5.1 运算符
1 运算符:
进行运算,运算符号(+,-,*,/);
与运算符一起进行运算的数据(直接量,变量,表达式)称为操作数
2 表达式:
由数据,运算符组成的计算公式,并具有计算结果的功能;
一个变量,一个直接量也可作为表达式,原始表达式;
通过运算符可以将多个简单表达式组成复杂表达式;
有些表达式带有副作用,副作用:表达式除了得到计算结果,还会对参与表达式的数据本身进行修改,由表达式中的运算符决定
5.2 运算符分类
1 按照运算符需要的操作数个数
一元运算符(一目);二元运算符(二目);三元运算符(三目)
2 按照运算符的功能
算术运算符
比较运算符(关系运算符)
逻辑运算符
赋值运算符
位运算符
其他运算符
5.3 算术运算符
+,-,*, /,%,+(正),-(负),++,–
累加累减:
i++:取操作数在累加之前的值,即先使用,再运算;
++i:取操作数在累加之后的值,即先运算,再使用
5.4 关系运算符(比较运算符)
>,<,>=,<=,==,===,!=,!==
比较大小的运算符对操作数的类型要求:
如果两个操作数都是string,按照字符串规则(即比较第一个字符的ASCII码)比较大小,不会发生类型转换;
如果两个操作数不都是string,自动转为number
部分unicode编码:
a -> 97;b-> 98;...
A -> 65;B-> 66;...
NaN比较大小:
NaN与任何值比较都为false,NaN与自身比较也为false
null比较大小:
null == 0 ; //false
null == ''; //false
null == false; //false
null == undefined; //true
全等判断和相等判断:
相等判断:如果操作数类型不一致,自动转为number比较;
全等判断:如果操作数类型不一致,直接不成立,类型,值都一致才相等
5.3 逻辑运算符
&&,||,!
&&运算:
如果第一个操作数为ture,取第二个操作数为表达式值。
如果第一个操作数为false,取第一个操作数为表达式值,且第二个操作数不会执行
||运算:
如果第一个操作数为ture,取第一个操作数为表达式值,第二个操作数不会执行。
如果第一个操作数为false,取第二个操作数为表达式值。
5.4 赋值运算符
=,+=,-=,*=,/=,%=,+=(字符连接)
都存在副作用;
赋值运算符要求左边的操作数必须是变量形式,右边操作数可以是变量,直接量,表达式
5.5 其他运算符
, typeof + ?:(三目运算符)
加号,字符串连接符,正号
如果操作数只有一个,则正号;
如果操作数有两个,且其中至少一个操作数是字符串,则字符串连接符;
如果操作数有两个,且没有字符串,则正号
三目运算符:
操作数1 ? 操作数2 : 操作数3
操作数1为ture,取紧接后面的表达式;
操作数1为ture,取隔后面的后面的表达式
5.6 运算符优先级
一元运算符
算术运算符 *,/,% 高于 +,-
关系(比较)运算符 比大小 高于 判等
逻辑运算符 &&高于||
三元运算符
赋值运算符
逗号运算符
-
6 条件语句
6.1 单向分支
if (条件表达式) {
...
}
6.2 双向分支
if (条件表达式) {
...
}else{
...
}
6.3 多向分支 else if
if(条件表达式){
...
}else if (条件表达式){
...
}
6.4 多向分支 switch case
switch (表达式) {
case 表达式可能的值:语句...;break;
case 表达式可能的值:语句...;break;
case 表达式可能的值:语句...;break;
default:语句...;
}
switch 后面表达式的值与case值相比较,相等则对应指向case后面的语句;
表达式的值没有与case对应值,则指向default,执行后面语句;
break可以结束当前case
7 循环语句
7.1 while循环
while (循环条件表达式){
语句...;
}
--需要明确循环结束的条件;
--循环次数增加,越来越趋于结束循环
7.2 do while循环
do {
语句...;
}while(循环条件表达式);
--do while 只有第一次没有判断,以后每一次循环都先判断;
--多次循环, while , do while 的循环标记变量初始值和循环条件表达式都是一样的
7.3 for 循环
for(循环标记变量初始化;循环条件表达式;循环标记变量的变化){
语句...;
}
--循环标记变量初始化在循环开始之前执行一次;
--循环条件表达式,每次循环先判断,同 while;
--循环标记变量变化,每次循环语句
8 跳转语句
8.1 break 语句
在 switch case 中使用,结束本次 case ;
在循环中使用,结束循环
8.2 continue 语句
在循环中使用,跳出本次循环,下一次循环继续
9 异常处理
9.1 异常处理语句
try{
}catch (e) {
//如果try中代码出现运行时错误,会执行到catch
//变量e可以获取错误信息
}
9.2 主动抛出异常语句
throw '错误信息';
--主动定义运行时错误,浏览器可以捕获, try catch 可以捕获