函数:
函数定义方式:
- 函数声明:
function func(a,b){
return a*b;
}
- 函数表达式:
var func = function(a,b){
return a*b;
}
- 对象实例化(基本不用):
var func = new Function('a','b','return (a*b)');
函数定义的区别
- 函数声明和函数表达式,对象实例化的区别:
前者在编译之前,会声明提前,后者则不会。
|
|
- 对象实例化与函数声明,函数表达式的区别:
对象实例化无法访问到函数之外的变量,后者可以。
如:12345678(function () {var i = 10;function func(j) {console.log(i+j);//i = 10;debugger;}func(1);})();
对象实例化定义的函数都会定义在全局作用域上
作用域
- JS分为函数作用域和全局作用域。
- 函数作用域可以访问全局作用域,反之不能。
- 如果函数作用和全局作用域有相同的变量,则会使用就近原则。
参数
实参:调用函数的参数称为实参。
形参:定义函数的参数称为形参。
实参少于行参:少于的形参会变成undefined;
实参多于行参:多余的实参会忽略掉,且程序不会报错。