函数function
函数也是一个对象,
函数中可以封装一些功能代码,在需要的时候可以调用执行这些代码
使用typeof检查一个函数对象是,返回的是function
创建一个函数对象的第一种方法
var fun= Function();
第二种方法
使用函数声明来创建一个函数对象
function fun(形参1,形参2){语句}
封装到函数中的代码不会立即执行,而是调用的时候执行。
调用函数语法:
函数对象名() 例如:fun()
创建一个匿名函数
function(){}
可以在函数的()中指定一个或多个形式参数
多个形参之间使用,隔开,声明形参就相当于在函数内部声明了对应的变量
function fun(a,b){
console.log(a+b);
}
调用函数时可以在()中指定实参,实参会赋值给对应的形参
fun(1,2)
;
调用函数时,解析器不会检查实参的类型,
所以要注意,是否可能会接收到非法的参数,如果有可能则需要对参数进行检查
调用函数时,解析器也不会检查实参的数量
多余的实参不会被赋值
如果实参的数量少于形参的数量
则没有对应实参的形参的值时undefined
实参可以是任意类型的值
也可以是一个对象
当我们参数过多时,可以考虑将它封装到一个对象中,然后通过对象传递
函数的返回值
可以使用return来设置函数的返回值
语法:
return 值
return后的值将会作为函数的执行结果返回
可以定义一个变量来接收这个值
在函数后面的语句都不会执行
如果return后面不跟任何的值都会返回undefined
不写return也会返回一个undefined
Js中的函数与方法的区别
JS中的方法和函数没有本质上的区别
当一个函数作为一个对象的参数时我们就把他叫做方法
枚举对象中的属性
for。。。in。。
语法:for(var 变量 in 对象){
}
for。。in语句 对象中有几个属性,循环就会执行几次
例如:
fun={
name:“孙悟空”,
age:18,
gender:“男”
};
for(var n in fun){
console.log(“"hello");
}
这个时候就会输出三个hello
每次执行时会将对象中的一个属性名赋值给变量
作用域:
全局作用域
全局作用域在页面打开时创建,在页面关闭时销毁
·在全局作用域中有一个全局对象widow
它代表的是一个浏览器窗口,它有浏览器创建,我们可以直接使用
·在全局作用域中:
创建的变量都会作为window对象的属性保存
创建的函数都会作为window对象的方法保存
在全局作用域中创建的变量都是全局变量
在页面的任意地方都可以访问的到
函数作用域
调用函数时函数作用域创建,调用结束后销毁
每调一次就会创建一个新的函数作用域,他们之间是相互独立的
在函数作用域中可以访问到全局作用域的变量
但是在函数作用域中声明的变量不能在别的作用域中访问
当函数作用域操作一个变量时,他会现在自己的作用域中寻找,有就直接使用
如果没用就向它的上一级寻找
如果在全局作用域中还是没有找到,则会报错referenceError
在函数作用域中如果想跳过函数作用域直接使用全局变量可以用“window . ”来实现
在函数作用域中,不适用var关键字声明的变量则会成为全局变量
变量的声明提前
·使用var关键字声明的变量,会在所有代码执行前提前声明,但是不会赋值
但如果声明变量时不使用var关键字,变量则不会被声明提前
上面两种方式的效果是一样的,使用var关键字声明这样不会报错
这样则会报错
函数的声明提前
使用函数声明创建的函数会在所有代码运行前提前创建
function 函数名 ( ) { }
使用函数表达式创建的函数不会提前被创建
var 函数名=function( ){ }