JavaScript-javascript三种创建函数方法的区别

发布于 2016-11-15 04:06:45 字数 154 浏览 1167 评论 2

众所周知
javascript一般有三种方法来创建一个函数来说说对这三种方式的看法吧
代码一:

function t(x){
return x*x;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

虐人心 2017-07-03 12:02:33

 function a(x){
return xx;
}
var b=function(x){
return xx;
}

var t=new Function("x","return x*x;");

alert(typeof a); //function
alert(typeof b); //function
alert(typeof c); //function

表明他们都是function类型

 alert(a instanceof Function); //true
alert(b instanceof Function); //true
alert(c instanceof Function); //true

表明他们都是属于Function对象派生

 alert(a instanceof Object); //true
alert(b instanceof Object); //true
alert(c instanceof Object); //true

表明他们都是属于Object对象派生

 alert(Objcet.prototype.toString.call(a)); //[object function]
alert(Objcet.prototype.toString.call(b)); //[object function]
alert(Objcet.prototype.toString.call(c)); //[object function]

表明他们都是object下function类型

 alert(a.constructor); //Function
alert(b.constructor); //Function
alert(c.constructor); //Function
alert(a.prototype); //object object
alert(b.prototype); //object object
alert(c.prototype); //object object

//表明他们都是通过Function构造,而他们的原形都指向object

以上测试看来,他们在语言本身是没什么不同的.但是在定义上的处理方式会有不同
以function 形式声明的函数,会在词发分析的时候进行声明.

 b(); //1
var b = function(){aelrt(2)};
b(); //2
function b(){alert(1)};

在if内不同的声明,会有不同的效果.

 var fn = function(){return false};
(function(){
if(fn()){
function fn(){return true}
}
alert(fn());

})();

上面这段代码会产生歧义,不同浏览器下有不同的小规模
ie true
chrome true
firefox false
若上面的代码,把if内的fn定义,以变量形式定义,则不存在歧义

函数内部定义函数

 function a(b){
alert(b);
function b(){alert('this is b')}
b();
}
a(1);

上面代码输出function b的函数体,再执行b函数;
因为作用域会先分析arguments,然后再是function定义,然后再是以变量形式的声明
如果b以变量形式声明,则会先输出1,再执行b函数

晚风撩人 2017-05-22 08:45:07

函数声明式,函数表达式,函数构造器创建。
推荐看下:http://www.cnblogs.com/TomXu/archive/2012/01/30/2326372.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文