首页 - 信息 - JavaScript函数笔记-函数定义的三种方式

JavaScript函数笔记-函数定义的三种方式

2023-10-04 13:44

函数定义的三种方式:
1.函数声明

函数 添加(i,j){
返回 i+j;
}

函数声明的特点:
1)函数定义会放在前面;
2)重复定义函数时,最后一次定义的函数有效。

2. 函数表达式

var add=函数(i,j){
返回 i+j;
} 

3。函数实例化

var add=new 功能("i", "j","返回( i+j)");
添加(2,3);

函数实例化的特点:定义的函数只能访问局部作用域和全局作用域。

函数声明的特点:
1. 函数调用可以在函数定义之前执行,函数定义位于最上面
函数表达式:
函数调用在函数定义之前报错,函数定义在最前面。函数未定义。 (但是用Firebug调试执行正常,可能是因为Firebug修改了底层)

添加(1,2);
函数 添加(i,j){
返回i+j;
}//3add(1,2);
var add=函数(i,j){
返回i+j;
} //添加是不是一个函数(…)

函数声明 为什么可以在定义函数之前调用函数?
函数执行顺序:

添加(1);功能 添加(i){
console.log(i+1);
}
var add2=函数(i){
console.log(i+2);
添加2(1);
var add3=功能“i” )
add3(1);

实际执行顺序:
函数声明:函数定义将移至顶部。
由函数表达式和函数实例化定义的函数:变量声明移至顶部,变量赋值保留在原来的位置。

var添加2;
var添加3;
函数 添加(i){console.log(i+1);}
添加(1);
add2=函数(i){console.log(i+2);}
add2(1);
add3= 功能("i")
add3(1);

2。函数声明:当函数被重复定义时,函数声明执行最后定义的函数。
函数表达式和函数实例化的重复定义不受影响。

 功能 add1(i){console.log() “函数声明:”+(i+1)) ;}add1(1);//11var add2 = 函数(i){console.log("函数表达式: "+(i+2));}add2(1);//3var add2 = 函数(i) { console.log("函数表达式:"+(i+20));}add2(1);//21函数add1(i){console.log("函数声明:"+(i+10));}
add1(1);//11var add3 = new 函数 ("我", "console.log('函数实例化:'+(i+3));");add3(1);//4var   add3 =  功能("i","console.log('函数实例化:'+(i+30)); ");add3(1);//31

如果用几种定义函数的方式重复定义一个函数,那么该函数将如何执行?


函数 add1(i){console.log("函数声明: "+(i+1));}
add1(1);var add1 = 函数(i){console.log() “函数表达式:”+ (i+2));}添加1(1); "函数声明:"+(i+10));}
添加1(1);

执行结果:
函数声明:11
函数表达式:3
16 函数表达式:3

这是为什么?我们根据上面提到的函数声明的特点来分析一下。
首先,在函数预执行之前,将函数声明的函数定义前置到顶部。上述代码实际执行顺序为:

var add1;功能add1(i){console.log ("函数声明:"+( i+1));}函数 add1(i){console.log() “函数声明:”+( i+ 10));}add1(1);//11.执行上述函数 add1 = function(i){console.log("函数表达式:"+(i+2)) ;}
add1(1);//3
add1(1);//3

函数实例化定义的特点:
定义的函数只能访问局部作用域和全局作用域。

var人={姓名:“刘德华”,年龄:50};(功能(){var人= {姓名:"刘德华",年龄:30};var func = new Function("var person = {name:'刘德华',age:10};\console.log(www.gsm-guard.net+person.age+ '年');");func();
})();\\刘德华已经10岁了。是什么意思 ”\”? 
2 new Function("console.log(www.gsm-guard.net+person.age+'year');");
func();
})();//刘德华50岁了