一 数据类型
数据类型
五种常见的数据类型
字符串
string(显示网页文本,一切以单引号或者双引号引起来的内容)
数字
number(用于数学计算,一切数学中的数字)
有一个特殊的值NaN
布尔
Boolean(表示对立面, 只有两个值 (1)true 表示真(2)false表示假)
undefined(变量只声名,未赋值默认值undefined)
null(只能手动赋值为null,表示空值,定义了但是目前想不到要给什么值)
两种复杂的数据类型
数组
Array[元素1,元素2,元素3,… ](一个变量存储多个数据,有序存储)
对象
object{元素1,元素2,元素3,}(无序存储)
二 变量
变量的作用
在内存中存储数据
变量的语法
声名变量 var 变量名
变量赋值 变量名=值
变量取值 变量名
变量的注意点
作用域 变量起作用的范围
全局作用域 全局变量 函数外声名
局部作用域 局部变量 函数内声名
变量访问作用域链的规则 就近原则
预解析
变量提升
js将var 与function声名提前,赋值调用还是在原地
三 运算符 表达式
运算符与表达式
赋值运算符 = (将右边的数据 ,存入左边的变量中)
连接符 + (两边需要有一边是字符串)
算术运算符+ - * / % += -= *= /= %=
自增自减运算符 ++ –
关系运算符 > < >= <= ==(比较值) !=(比较值) =(比较值以及数据类型) !(比较值与数据类型)
逻辑运算符 && (一真则真 ) || (一假则假) !(取反)
表达式
1 运算符单独使用无意义 要与数字一起组成式子
2 只要是关系表达式 ,就一定有结果 要么打印 要么存入变量
3 关系表达式的结果一定是布尔类型 true(成立) false (不成立)
四 程序流程
程序流程控制
顺序结构
默认的顺序结构是代码从上往下依次执行
分支结构
if单分支 (一个条件判断)
if(条件判断表达式)
if-else双分支结构 (两个互斥条件)
if(条件判断表达式){成立时执行的代码}else{不成立时执行的代码}
if-lese-if-lese 多分支结构(多个条件)
只有当上面的代码都不成立时才会执行下一行代码判断
必须以if开头 中间的条件判断可以是多个 结尾的else可以省略,一般不省 会有逻辑漏洞
if(条件判断表达式){成立时执行的代码}else{不成立时执行的代码}
固定值匹配
switch-case (匹配值){
值1=匹配值 1需要执行的代码
break;
值2=匹配值 2需要执行的代码
break;
default:
匹配值与case后面的值都不匹配,需要执行的代码
break;
}
注意点:
小括号匹配值 与 case的值 一定要是全等的关系
break关键字作用:
结束switch-case语句,如果忘记添加break关键字则会发生穿透效果
从上一个代码块,执行到下一个代码块。
三元表达式
功能与if-else相似 代码更简洁
表达式?代码1:代码2
循环结构
代码重复执行
适用于循环次数不固定
while(条件){
循环体代码 需要重复执行的代码
}
适用于循环次数不固定,至少执行一次
do{
循环体代码
}while(条件)
适用于循环次数固定
for(语句1,语句2,语句3){
循环体代码
}
五 数组
数组
数组的作用 一个变量可以存储多个数据
数组的三要素
元素 数组中存储的数据
下标 数组中元素的位置 (下标从零开始)
长度 数组中元素的数量 (最大下标等于数组名.length-1)
数组的语法
声名数组(常用) var arr=[元素1,元素2,元素3]
数组取值 数组名[下标]
特点:如果没有超过最大下标 获取数组元素
如果超过 最大下标,获取undefined
数组赋值 数组名[下标]=值
特点: 如果没有超过最大下标 修改数组元素
超过最大下标 动态添加元素
数组的长度
获取 数组名.length
设置 数组名.length=值 (特点:修改数组长度,数组元素也会变化)
扩展语法
删除数组最后一个元素 数组名.length--
获取数组最后一个元素 数组名[数组名.length-1]
给数组后面添加元素 数组名[数组名.length] =值
数组遍历
固定的for循环结构
for(var i=0;i<数组名.length;i++){数组名[ i ] }
六 函数
函数
作用 将代码存入变量中 实现代码复用
函数语法
声名函数 代码存入函数
function(){函数体:一段代码}
函数在声名的时候不会执行
调用函数 执行函数体代码
函数名()
函数参数
作用 调用者传递数据给函数
语法
传 调用者 函数名(实参)
收 函数 function 函数名(形参){函数体}
本质是实参给形参赋值
注意点:
实参给形参赋值时按照顺序意义赋值的
实参数量可以和形参数量不一致,默认参数时undefined
函数的返回值
存在意义 函数特点 在函数外无法获取函数内部数据
作用 函数将数据传递给调用者
语法
传 函数 function(形参 ){函数体代码 return 值}
收 调用者 var res=函数名(形参)
注意点
如果一个函数没有return 函数的返回值时undefined
如果一个函数有return 但是return 没有值 函数的返回值也是undefined
return作用有两个
1 返回值
2 结束函数体代码执行
如果一个函数有return 且return 后面又值 则函数返回值 就是return后面的值
七 对象
对象的作用 一个变量可以存储多个数据
对象的存储是无序存储 属性名和属性值 一一对应(键值对)
对象语法
声明对象
声名空对象 var obj={}
对象初始化 var obj={属性名:属性值}
对象取值
点语法 对象名.属性名
字符串语法 对象名[‘属性名]
特点
如果有属性名则获取属性值
如果没有属性名 则获取undefined
对象赋值
点语法 对象名.属性名=值
字符串语法 对象名['属性名’]=值
特点
如果有属性名,则修改属性值
如果没有属性名,则动态属性
对象遍历
for(var key in 对象名){对象名[ key ]}
对象的遍历只能使用字符串语法
this关键字
谁调用这个方法,this就指向谁
new关键字作用原理
作用 : new 自定义构造函数 : 创建对象
工作流程
a. 创建一个空对象
b. this指向这个对象
c. 执行构造函数赋值代码
d. 自动返回这个对象
注意点
(1)构造函数首字母大写 : 提醒别人不要忘记new
(2)构造函数不要手动return
return 基本数据类型:无效
return 复杂数据类型:覆盖new创建的对象