一.函数
--函数也是一个对象,具有普通对象的所有功能
--函数可以封装一些功能,在我们需要时,可以执行这些功能
--函数解决了复用的问题
--用typeof检查一个函数对象时,返回Function
--函数内部也可以声明函数
--创建函数
1.使用构造函数创建对象(在实际开发时,我们很少使用这种方法)
语法:var 函数名=new Function("代码");
封装到函数中的代码不会立即执行,在调用函数时才会执行
2.函数声明创建函数
语法:function 函数名([形参1,形参2,...]){-此处是代码,不是字符串-}
3.使用函数表达式
语法:var 函数名=function([形参1,形参2,....]){}
二.函数的参数
声明形参相当于在函数内部声明了相应的变量
调用函数时,不会检查实参的类型
所以我们要注意:是否有可能会接受非法的参数
调用函数时,解析器也不会检查实参的数量
如果实参的个数小于形参的个数,多余的实参的值为undefined
三.实参
实参可以是任意的数据类型,也可以是一个对象,当然也可以是一个函数对象
--调用函数: 函数名()
--函数对象: 函数名
四.返回值
--可以为任意数据类型
五.立即执行函数
用()圈起来的函数称为立即执行函数
--函数定义完,会立即被调用
六.枚举对象中的属性
枚举属性名
for (var 变量 in 对象){console.log(变量);}
枚举属性值
for (var 变量 in 对象){console.log(对象[变量]);}
七.作用域
指一个变量的作用范围
分为两种:
1.全局作用域
直接编写在script标签中的JS代码,都在全局作用域
全局作用域在页面打开时被创建,在页面关闭时销毁
全局作用域中有一个全局对象window,我们可以直接使用它
window代表的是一个浏览器的窗口,它由浏览器创建
在全局作用域中,创建的变量都作为window对象的属性保存,创建的函数作为方法保存
2.函数作用域
调用函数时创建,函数执行完被销毁
每调用一个函数都会产生一个新的函数作用域,它们之间相互独立
在函数作用域中可以访问到全局变量,反之不行‘
在函数中操作一个变量时,首先会在自身作用域中寻找,如果没有,则向上一级寻找
如果在函数中向范文全局变量,用window.属性名即可
八.提前声明
变量的提前声明
在函数中不使用var声明的变量会升为全局变量
--使用var关键字
函数的声明提前
--使用函数声明方式(function 函数名([]){}