标签:
1.函数的声明
(1) function命令方式
function fn(){};
(2) 函数的表达式
采用变量赋值的方式,function命令后面不带有函数名。如果加上函数名,那么该函数名只在函数体内部有效,在函数体外部无效。
var add = function fn(){};
(3) function的构造函数
var add = new function("x","y","return(x+y)");
Function对象接受多个参数,除了最后一个参数是add函数的“函数体”,其他参数都是add函数的参数。
(4)函数的重复声明
如果重复声明同一个函数,那么后面的声明则会覆盖前面的声明。
2.函数名的提升
采用function命令方式声明函数时,整个代码会被提升到代码头部,原因是因为javascript引擎将函数名视同变量名,因此下面的代码不会报错。
f();
function f(){};
但是如果采用赋值语句定义函数,那么javascript就会报错:
f();
var f = function(){};
上面的代码相当于:
var f;
f();
f = function (){};
当调用f的时候,f只是被声明,还没有被赋值,等于undefined,所以会报错。因此,如果同时采用function命令和赋值语句声明同一个函数,最后总是采用赋值语句的定义。
var f = function() {
console.log (‘1‘);
}
function f() {
console.log(‘2‘);
}
f()
// 1
3.name属性
大多数JavaScript引擎,支持函数非标准的name属性。该属性返回函数名。
function f1() {}
f1.name // ‘f1‘
var f2 = function () {};
f2.name // ‘ ‘
var f3 = function myName() {};
f3.name // ‘myName‘
标签:
原文地址:http://www.cnblogs.com/LingZi-0214/p/5065137.html