我再次在Internet上發現了包含內聯函數的JavaScript代碼,在我看來,常規語句的意義非常重要。這是第一個示例:JavaScript:內聯函數與常規語句
function outerHTML(node){
// if IE, Chrome take the internal method otherwise build one
return node.outerHTML || (
function(n) {
var div = document.createElement('div'), h;
div.appendChild(n.cloneNode(true));
h = div.innerHTML;
div = null;
return h;
})(node);
}
如果你問我的代碼同樣的事情,它應該是這樣的:
function outerHTML(node){
var div, h;
// if IE, Chrome take the internal method otherwise build one
if (node.outerHTML) {
return node.outerHTML;
}
div = document.createElement('div')
div.appendChild(node.cloneNode(true));
h = div.innerHTML;
div = null;
return h;
}
編輯:作爲OverZealous stated,有這一個邏輯上的差異。我把它留在這裏,所以沒人會對這個答案感到困惑。
也許再原始樣本(是的,這不 「編譯」,因爲它只是一個代碼片段):
addGetters: function (attributes) {
var that = this;
function addGetter(attr) {
that.prototype["get" + attr.capitalize()] = function() { return this[attr]; };
}
for(var i = 0; i < attributes.length; i++) {
var attr = attributes[i];
addGetter(attr);
}
},
相比,我嘗試
addGetters: function (attributes) {
for(var i = 0; i < attributes.length; i++) {
var attr = attributes[i];
this.prototype["get" + attr.capitalize()] = function() { return this[attr]; };
}
},
有區別嗎?原始版本不需要更多的空間,因爲需要創建一個函數和/或不是因爲這個更慢?有沒有可能的內存泄漏?
CPU和內存的使用非常重要,因爲我在一個環境中進行編碼,因爲兩者都是有限的,任何「少」都是好的。而且由於JavaScript中沒有sizeof()
,並且它的實現嘗試不能安全地解釋任何想法 - 提前修復很重要。
請注意,就「我的版本」而言,我沒有對它進行測試。我只是想解釋我想問的問題。
編輯:即使這個問題有答案,我仍然想知道內存利用率。如果有人有一些見解,請不要猶豫,在這裏添加它。
我應該包括[鏈接到JSLint](http://www.jslint.com/)。 – OverZealous
好的,所以這是第二個示例中與邏輯有關的問題。也許我可以找到另一個樣本。但是,迄今爲止感謝。 – sjngm