函数:封装一段可重复执行调用的代码块
1.声明函数
function 函数名(){
} **function是关键字,函数不调用,自己不执行 **
2、调用函数
函数名();
函数的参数
多个参数之间用逗号隔开
实参不够 为NaN
函数返回值
return语句(不应该在函数内部打印结果)
return终止函数
return只能返回一个值
**4、函数如果没有return返回的是 undefined **
arguments的使用
(可以不写形参了)
函数的两种申明方式
var是变量名不是函数名 是匿名函数
作用域
为了提高程序可靠性,减少命名冲突
1、全局作用域
2、局部作用域
1、全局变量
如果在函数内部,未声明 直接赋值的变量也属于全局变量
2、局部变量
函数的形参也可以看做是局部变量
作用域链
就近原则
预解析
运行js:
1、预解析:
js引擎把js里面所有的var还有function提升到当前作用域的最前面
预解析分为变量预解析(变量提升到作用域的最前面,不提供赋值操作)
函数预解析(函数提升,把函数声明提升到作用域的最前面,不调用函数)
函数表达式调用必须写在函数表达式的下面
2、代码运行:
按照代码书写顺序从上往下执行
对象
对象是一个具体事物,游戏不是对象,星露谷是对象
创建对象的三种方法(object)
利用字面量创建对象:
1、属性或者方法采用键 属性名:值 属性值
2、多个属性或者方法里面用逗号隔开
3、方法冒号后面跟一个匿名函数
使用对象
1、 对象名.属性名
obj.uname
2、obj[’ uname’]
3、对象名.方法名
利用new Object创建对象
var obj = new Object();
追加属性
obj.uname=’’;
obj.sex=’’;
obj.sayhi=function(){
console.log(‘hi~’);
}
构造函数
前面创建对象的方式一次只能创建一个对象,里面很多属性方法是大量相同的,利用构造函数来重复这些相同的代码,构造函数就是把相同属性方法抽象出来封装到函数里面
function 构造函数名(){
this.属性=值;
this.方法=function(){
}
}
调用: new 构造函数名();
函数首字母一定要大写
不需要return就可以返回结果
调用构造函数 一定要用new
new在内存中创建了一个空的对象,this指向创建的对象,执行构造函数里的代码,为这个空对象添加属性和方法,返回这个对象
遍历对象
for (变量 in 对象){
}
内置对象
js中对象分为三类:自定义对象,内置对象,浏览器对象
查询文档
math对象
不是构造函数,直接使用内部属性方法,不需要new
math.abs去绝对值
math.floor向下取整
math.ceil向上取整
math.round四舍五入,遇到负数的.5往大了取
random
返回一个随机浮点数【0-1)
math.random();
两个数之间的随机整数 并且包含这两个整数
日期对象
是构造函数
日期格式化
获取日期的总的毫秒形式(时间戳,永远不会重复)
date对象基于1970年一月一日开始
date.valueOf();
date.getTime();
常用写法
var date=+new Date();
H5新增
Date.now();
数组内置对象
创建的两种方式
检测是否为数组
添加删除元素的方法
1、push
2、unshift
3.pop
删除最后一个
无参数,一次只能删除一个
返回值是删除的元素,
4、shift
删除第一个,无参数
数组排序
1、翻转数组
2、冒泡排序
(只能个位数)
数组索引
indexOf //返回第一个满足条件的索引号,找不到返回-1
lastIndexOf//从后往前找,同样返回找到的第一个的索引号
数组去重
数组转换成字符串
1、toString();
2.join(‘分隔符’)
基本包装类型
字符串的不可变
地址不改变,保留地址空间
根据字符返回位置
str.indexOf
根据位置返回字符(重点)
1、charAt(index)根据位置返回字符
2.charCodeAt(index)返回ASCII值,
目的:判断按下了哪个键
3、str[index] H5新增 获取字符
568
字符串操作方法
1、concat
2、substr('起始位置’,‘截取字符个数’);
3、replace(‘被替换的’,‘替换成的’);
只会替换第一个
4、字符转换为数组
split('分隔符’);这里的分隔符是圆字符串里的符号,是分隔成数组的依据,连在一起是分不了的
简单类型(基本类型或者值类型)与复杂类型(引用类型)
值类型:存储时变量中存储的是值本身
string,number,boolean,null(返回空的对象),undifined
**引用类型 **:存储时变量中存储的仅仅是地址(引用)
通过New关键字创建的对象(系统对象、自定义对象)
如object,Array,Date
JS中没有堆栈的概念
复杂数据类型传递的是地址