在javascript中, function 是一个很特殊的存在,因为它本身便是一个对象。
1. 关于function 的基本用法:
function test(a,b){console.log(a+b)};
test(1,2);
3
undefined
var test=function(a,b){console.log(a+b)};
test(1,2)
3
undefined
这就不用多说了,唯一的区别在于前者的function 有提升作用,不管放在文件的哪个地方,都可以使用,
可以这么写:test(1,2);function test(a,b){console.log(a+b)}; 但是后者就不行了。仅此而已。
2. 关于new function 和new Function.
谈这个之前,先 看看new在javascript中的意义和用处。new 主要用于对类进行实例化(虽然javascript中实际上没有类,姑且这么说吧。。),新建一个对象,例如:
var a=new object(); 但是请注意,new后面跟的实际上是该对象的构造函数,这一点对于理解关键字 new 至关重要!
那么 例子2 是什么意思呢?
例子2
记住:a不是后面那个function!不信?可以试一下:
功能和 1 的基本功能差不多是一样的,只是写法不同:
就是里面前面都是参数,后面是函数内容,具体执行语句。不过都要用字符串形式!
4. 好了,我们看看下面的例子:
function test(){
return 'you\'re welcome!';
};
var v001=new function(){
return 'you are welcome!';
};
alert(v001);
var v002=new function(){
return new String('you are welcome!';};
alert(v002);
输出:[object][object]
you are welcome!
这是为什么? 这是因为在‘v002’中,第一个new 后面的构造函数如果返回一个引用类型的对象(new String创造的是一个object对象),会自动覆盖new创造匿名对象,然后赋值给v002。