数据类型
基本数据类型
Number 数字型
String 字符串型
Boolean 布尔类型
Undefined (声明了未赋值)
Null (空值)
复杂数据类型
object 对象
function 函数
Array 数组
类型转换
-
转换为String类型
toString()
String()强制转换
-
转换为Number型
parseInt() 将string转换成整数数值型
parseFloat() 将string转换成浮点型
Number() 强制转换成整型
-
转换为布尔类型
Boolean()
代表空,否定的值都会返回false
(’ '、0、NaN、null、undefined)
运算符
运算符的分类
算术运算符 + - * / %
递增递减运算符 ++ –
比较运算符 > ,<, >=,<=,,=
逻辑运算符 &&,||,! (注意逻辑中断)
赋值运算符 =,+=,-=,*=,/=,%=
运算符的优先级
() > 一元运算符(++ -- !) > 算术运算符(先乘除后加减)> 比较运算符(> >= <= ) > 逻辑运算符(&& 高于||) > 赋值运算符 > ,逗号
流程控制
分支结构
-
if分支
//单分支 if(条件表达式){ //执行代码 } //双分支 if(条件表达式){ //执行代码 }else { //执行代码 } //多分支 if(条件表达式){ //执行代码 }else if(条件表达式){ //执行代码 }else{ //执行代码 }
-
switch 分支
switch(表达式){ case value1: //表达式的值等于value1的值时执行的代码 break; //break不可省略 否则会一直往下执行 case value2: //表达式的值等于value2的值时执行的代码 break; ...... default: //表达式不等于任何一个value时要执行的代码 }
-
三目表达式
条件表达式1?表达式2:表达式3; 表达式1为true 返回表达式2的值 否则返回表达式3的值
循环结构
-
for循环
//单层for循环 for(初始化变量;条件表达式;操作表达式){ //循环体 } //双重for循环 //外层循环一次内层循环多次 for(初始化变量;条件表达式;操作表达式){ //循环体 for(初始化变量;条件表达式;操作表达式){ //循环体 } }
-
while循环
while(条件表达式){ //循环体 里面应该有计数器 ++ -- } //先执行条件表达式 如果为true 则执行循环体 否则直接退出循环
-
do while循环
do{ //循环体 }while(条件表达式); //先执行一次循环体在判断条件 如果为true则继续执行循环体 否则直接退出循环
三种循环在很多情况下可以相互替代使用
continue与break
两者都是退出循环
continue 跳出本次循环继续执行下一次循环
break 终止循环不在进行循环
Array数组
一组数据的集合,每个数据都称作元素。
数组中可以存放任意数据类型的元素
创建数组
-
new 创建数组
var arr =new Array();
-
字面量创建数组
var arr=[];
获取数组中的元素(遍历数组)
通过下标来访问,从0开始。
数组的长度是元素的个数,不要与索引号混淆
var arr=[1,2,4];
for(var i=0;i<arr.length;i++){
console.log(arr[i]);
}
数组新增元素
1.通过修改length长度新增元素
var arr=[1,2,3];
arr.length=5;
arr[3]='123';
//不给值默认是undefined
2.修改索引号追加新元素
var arr=[1,2,3];
arr[3]=4;//直接根据索引号赋值
arr[1]='abc';//这里是替代
注:不要直接给数组名赋值,否则里面的数组元素都没有了。
函数
函数的使用
//声明函数
function 函数名(){
}
var 变量名 =function(){ //匿名函数
}
//调用函数
函数名();
函数的参数
形参:形式上的参数,函数定义是传递的参数
实参:实际的参数,调用函数传递的参数
函数调用的时候是将实参值传递给形参值
函数的返回值return
return 语句
注意:
- return终止函数return后面的代码不会执行
- return 只能返回一个值
- 没有return返回undefined
- return 也能返回一个数组
arguments的使用
当不确定的传递参数的个数有多少时,可以用arguments来获取
arguments相当于一个伪数组也可以进行遍历
具有length属性
按照索引进行存储
他没有真正数组的一些方法
只有函数才有arguments对象,而且每个函数都内置了这个对象
作用域
代码在某个范围内起作用和效果
全局作用域(整个script或一个js文件)
局部作用域(在函数内部使用)
全局变量
在全局作用域下的变量
注:如果在函数内部没有声明直接赋值的也是全局变量
局部变量
在局部作用域下的变量
注:函数的参数也可以看作示局部变量
作用域链
内部函数访问外部函数的变量(就近原则)
预解析
会把变量和function在代码执行之前会完成
变量预解析
变量的声明会被提升到作用域的最前面,变量的赋值不会提升
函数预解析
把所有的函数的声明提升到作用域最前面,调用函数不会提升。
对象
创建对象
1.利用字面量创建对象
var obj={
obj.属性=值,
};
2.new Object()创建对象
var obj=new Object();
obj.属性=值;
3.利用构造函数创造对象
function Obj(){
this.属性=值;
}
new Obj();
Math对象
Math.PI 圆周率
Math.max() 最大值
Math.min() 最小值
Math.abs() 取绝对值
Math.floor() 向下取整
Math.ceil() 向上取整
Math.round() 四舍五入 (注意.5往大的取)
Math.random() 随机小数[0,1)
//随机生成n-m之间的随机整数
function getRandom(min,max){
return min+parseInt(Math.random() * (max-min+1));
}
getRandom(min,max);
Date日期对象
使用前必须var date = new Date();
date.getFullYear() 获取当前年份
date.getMonth() 获取当前月份
date.getDate() 获取当前日期
date.getDay() 获取当前周几(周日0,周六6)
date.getHours() 获取当前小时
date.getMinutes() 获取当前分钟
date.getSecond() 获取当前秒
获取时间戳的方法
date.getTime();
date.valueOf();
+new Date();
Date.now();
Array数组对象
instanceof Array 检测是否为数组对象
Array.isArray(arr) 检测是否为数组对象
arr.push() 从数组元素最后添加一个或多个元素
arr.unshift() 从数组元素前面添加一个或多个元素
arr.pop() 删除数组中最后一个元素
arr.shift() 删除数组中的第一个元素
arr.reverse() 翻转数组
arr.sort() 对数组排序
//对数组排序
arr.sort(function(a,b){
return a-b;升序
//return b-a; //降序
});
arr.indexOf() 获取数组中元素的索引
arr.indexOf(‘目标元素’,起始位置)
arr.lastIndexOf() 从后面开始查找获取数组元素的索引
arr.toString() 将数组转换为字符串
arr.join(‘分隔符’) 默认为逗号 将数组转换为字符串
arr.splice() 删除,增加,替换数组元素
String字符串对象
str.indexOf() 查找某一元素所在位置的索引
str.indexOf(‘目标字符’,起始位置) 查找某一元素所在位置的索引
str.charAt(索引号) 根据位置返回字符
str.charCodeAt() 返回相应的索引号的字符的ASCII值
str.concat(‘字符串1’,‘字符串2’…) 连接字符串
str.substr(‘起始位置’,目标长度) 截取字符串
str.replace(‘被替换的字符’,‘替换为的字符’) 替换字符
str.split(‘分隔符’) 将字符串转换为数组