English 中文(简体)
Java声明职能[示范文本]
原标题:Declaring functions in JavaScript [duplicate]

这两种宣布职能的方式有何区别?

function someFunc() { ... }

var someFunc = function() { ... }

我不想在技术方面提出。 我不问什么是可读性更好的,或哪类是首选。

最佳回答

I am on different opinion with most of the people here. Technically this syntax may mean the same for declaring functions both ways (I stand incorrect on my last statement. I read up on a diff post why they are technically diff and I ll add in the end, why) ; but the way they play a role in evolving patterns is massive. I would highly recommend "Javascript: The Good Parts" by Doughlas Crockford.

但是,以微妙和简单的方式证明我的观点;这里是一个小的例子。

//Global function existing to serve everyone
function swearOutLoud(swearWord) {
    alert("You "+ swearWord);           
}
//global functions  territory ends here

//here is mr. spongebob. He is very passionate about his objects; but he s a bit rude.
var spongeBob = {
    name : "squarePants",
    swear : function(swearWord) {
                name = "spongy";
                alert("You "+ swearWord);
                return this;
            }
}

//finally spongebob learns good manners too. EVOLUTION!
spongeBob.apologize = function() {
    alert("Hey " + this.name + ", I m sorry man!");
    return this;
}


//Ask spongebob to swear and then apologize in one go (CASCADING EFFECT!!)
alert(spongeBob.swear("twit").apologize());

如果你看上上述守则,我就宣布一项带有佩戴面纱的职能。 从任何物体或呼吁中删除一字,并给你产出。 它可以在任何物体上操作,使用向其传递的“本”参数和论点。

然而,第二项声明被宣布为“pon”物体。 这一点很重要;因为我在这里正在走向由目标驱动的行为。 虽然我也保持“连带效应”,因为如果我没有其他东西可以返回,我就回去“这样做”。

如果你试图撰写一个框架或一些内容的话,这种 cas形模式非常重要。 你们也把它与建筑设计模式联系起来。

但是,如果职能被宣布为物体的属性,我就能够采取客观的行为,从而形成更好的方案拟订模式。 除非设计得好,否则在全球范围之外宣布的个人功能会导致一种非目标编码方式。 我倾向于后者。

如果看一 cas,则看上去你最后的发言,你可以要求 sp子一刀切,一劳永逸;即使道歉后来又增加为一种特性。

我希望我表明我的观点。 从技术角度看,差别可能很小,但从设计和编码演变的角度来看,差异巨大,使世界出现差异。

但这只是我! 选择或离开:

http://www.un.org。

因此,这两项呼吁在技术上是不同的;因为一项有名的宣言与全球名称空间有关,并在平时加以界定。 甚至在宣布这一职能之前,也可以如此。

 //success
 swearOutLoud("Damn");

function swearOutLoud(swearWord) {
    alert("You " + swearWord)
}

排外法将妥善运作。 但下文的法典将不予适用。

swear("Damn!");
    var swear = function(swearWord) {
    console.log(swearWord);
}
问题回答

使用<代码>运行某些Func(>{......}的一个好处是功能名称出现在火焰燃烧中。 宣布为另一种方式的职能(var someFunc =Function(){......})作为anonymous

实际上,区别在于,第二项声明使我们有能力宣布诸如这样的职能,从而有可能作为物体的财产发挥作用:

var myObject=new Object();
myObject.someFunc=function() { ... }; 

模棱两可的第二个例子更符合宣布职能的其他共同方式,因此可以说,这种方式更可读。

this.someFunc = function() { ... }
...
someFunc: function() { ... },

However, as also mentioned it s anonymous and therefore the name does not appear when profiling. Another way to declare the function is as follows which gets you the best of both worlds

var someFunc = function someFunc() { ... }

另一种不同之处是,大多数浏览器都允许你根据具体情况确定不同的执行,而前者则获得回报。 你们想要的是交叉浏览器活动。 如果你试图界定<代码>addEventListenerTo功能,则:

if (document.addEventListener) {
    function addEventListenerTo(target, event, listener) {
        ....
    }
} else if (document.attachEvent) {
    function addEventListenerTo(target, event, listener) {
        ....
    }
} else {
    function addEventListenerTo(target, event, listener) {
        ....
    }
}

在一些浏览器上,所有职能都归为平级,最后一项优先。 结果:以上只是工作。 但是,将匿名职能分派给变数将发挥作用。 http://en.wikipedia.org/wiki/Aspect-Orient_programming” rel=“nofollow noreferer”>.aspect 为导向的方案拟订 采用指定给变量的匿名功能的技术。

var fib = memoize(function (n) { 
    if (n < 0) return 0;
    if (n < 2) return 1;
    return fib(n-1) + fib(n-2); 
});

...
// patch the $ library function
if (...) {
    $ = around($, fixArg, fixResult);
}

第一种形式是:

function test() { }

这是一种更为公认的辛迪加,其次形式是:

var test = function() { ... }

允许你控制这一职能的范围(通过使用var;如果没有它,它将是全球性的。

你们甚至可以做到:

var test = function test() { ... test(); ... }

这使你能够以第二种方式界定休养职能。

关于可读性,我要说,第一句话显然更好。 未来的维护方案者,即使假设他们已经熟悉javascript,知道在座标上的许多微小点,也将采用第一种格式。

例如,如果他们应当有一天想寻找你的职能定义,以了解那里发生的情况,他们是否会首先寻找<条码> 某些Func =功能(或>某些Func(?

此外,为了直截了当地打字(因为我们再说二读二读),读者往往迅速扫描案文,如果他们重新研究功能定义,则会更倾向于绕过从“老”开始的线。

我知道这是一个非技术性的答案,但人类比电脑更难以阅读密码。

页: 1

function Test() {
}

Java形实际上正在形成一种财产,赋予功能标的,一旦要求,将执行功能定义中报告的代码。 该财产附在标的<代码>window或包含功能定义的物体上。





相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.

热门标签