1.递归
在函数的内部调用自身,默认是一个无限循环。
2.匿名函数
没有名称的函数 function(){ }
(1)创建函数
函数声明 function fn1(){ } |
函数表达式 var fn2=function(参数){ 函数体; } 变量名就是函数的名称 |
对比函数声明和函数表达式的区别
函数声明创建函数存在提升,可以在任意位置创建;
函数表达式使用变量创建的,只是存在变量提升,不存在函数提升,只能先创建,再调用。
(2)匿名函数自调用
目的:创建函数作用域包裹起来,防止污染全局。
(function(形参列表){ //函数体中的变量和函数不能被外部访问 })(实参列表); |
(3)回调函数
把匿名函数以实参的形式传递,意味着形参就是传递的匿名的函数名称
function fn(a){ //调用fn的时候,匿名函数赋值给参数a,a就是函数名称 a() //执行传递的匿名函数函数体中的代码 } fn( function(){ ... } ); |
3.全局函数
parseInt()/parseFloat()/isNaN()
encodeURI() 对网址中的汉字进行编码
decodeURI() 对已经编码网址进行解码
isFinite() 判断一个值是否为有限值
是->true 不是-false
2/0 ->Infinity(无穷) 0/2 ->0
eval() 执行字符串中的表达式
eval('1+2') //3
4.对象
属于引用类型数据
对象:是一组属性(property)和方法(method)的集合
一台电脑: 属性有颜色、尺寸、品牌、内存大小...方法有看视频、上网、敲代码..
一辆汽车: 属性有颜色、长度、品牌、空间大小...方法有代步,拉货、撞人...
万物皆对象
(1)JS中的对象
内置对象: JS提供的
宿主对象: 根据不同的执行环境划分
自定义对象: 自己创建的对象
(2)创建自定义对象
对象字面量
内置构造函数
自定义构造函数
(3)对象字面量创建对象
使用大括号创建空对象
属性名和属性值之间用冒号隔开
多组属性之间用逗号隔开
属性名中的引号可加可不加,如果含有特殊字符必须加
(4)访问对象中的属性
对象.属性名
对象['属性名']
如果访问的属性名不存在,返回undefined
(5)内置构造函数创建对象
new Object() 创建一个空对象
需要单独为对象添加每一个属性
(6)遍历对象中的属性
访问对象中的每一个属性
for(var key in 对象){ key 代表对象中的每个属性名 对象[key] 通过属性名或者对应属性值 } |