1.函数的简介
与java不同,函数里面可以声明函数。
2.函数的参数
函数的参数包括形参和实参
fuction sum(a,b){
console.log(a+b);
};
注意:
a.调用函数的解析器不会检查实参的类型,实参的函数可以是任意数据类型,所以如果有可能请对传入实参的类型进行检查。如
sum(1,2);
控制台将会打印结果:3
sum(123,"hello");
控制台将会打印结果:”123hello”
b.调用函数的解析器不会检查实参的个数,多余的参数将不会被赋值,如果实参数量少于形参数量,则没有对应实参的形参是undefined。如
sum(2);//a=2,b=undefined
控制台将会打印结果:undefined
3.函数的返回值
function sum(a,b,c){
var result=a+b+c;
return result;
}
通过一个var来获得,返回的是什么类型,var变量获得的就是什么类型
var r=sum(3,2,5);
console.log(r)
控制台打印结果:10
注意:函数里return语句后面的语句都不再执行,不写return语句或者只写“return;“,r得到的结果都是undefined。
4.函数的实参可以是任意值的深入理解
函数的实参还可以传入”对象“,”方法“,”方法对象“
例如:
var obj={
name:"kjs",
age:12
};
function fun(o){
console.log(obj.name);
return obj.name;
}
function fun2(o){
//如果传进来的是方法
if(typeof o==Function){
o(obj);
}
};
fun(obj);//fun2方法可以直接使用obj这个对象
fun2(fun);//fun2方法可以直接使用fun这个方法,
fun2(fun(obj));//fun2方法可以直接使用fun这个方法返回的值,即fun(obj)等价于obj.name
5.函数嵌套的调用
function fun3(){
function fun4(){
}
}
var a=fun3();
a.fun4();//等价于fun3()();
6.函数调用的时机
普通函数:定义后需要写明调用时机才会被调用,如:
function fun5(a,b){
}
fun5(a,b);//此时才被调用
立即执行函数:在定义时就被调用,通常对只是用一次的匿名函数才这样使用,如:
(function fun5(a,b){
})(3,4);//相当于这种结构:(方法对象)(参数,参数)
7.函数与方法
普通的函数叫”函数“
对象属性里的函数叫做”对象的方法“
8.枚举对象的属性
使用for…in..,如:
var obj={
name:"kjs",
gender:"male"
}
for(var n in obj){
console.log("属性名:"+n);
console.log("属性值:"+obj[n]);
}
9.函数的作用域
在<script></script>
标签里声明的变量和函数,都是全局的,页面有一个默认的全局对象window,页面不关闭,该对象不销毁。
10.声明和初始化的时机
注意:以下都是在同一等级的作用于来说的
var声明的变量,不管在什么位置,都是在代码运行前,就声明的,而具体的赋值,就看在代码的什么位置赋值,例:
console.log(a);
var a=3;
这段代码,控制台会显示,a是undefined,而不是说a是not defined
而函数的声明,不管在什么位置,都是在代码运行前,就声明的并且创建的,例如:
fun();
function fun(){
console.log("hello");
}
虽然代码编写时,fun的调用是在声明的位置之前,但是控制台会正常执行打印,而不是报错。