var current = null;
function init() {
…
}
function change() {
…
}
function verify() {
…
}
var myNameSpace = {
current:null,
init:function() {
…
},
change:function() {
…
},
verify:function() {
…
}
}
myNameSpace = function() {
var current = null;
function init() {
…
}
function change() {
…
}
function verify() {
…
}
}();
myNameSpace = function() {
var current = null;
function verify() {
…
}
return {
init:function() {
…
}
change:function() {
…
}
}
}();
myNameSpace = function() {
var current = null;
function init() {
…
}
function change() {
…
}
function verify() {
…
}
return{
init:init,
change:change
}
}();
myNameSpace = function() {
var current = null;
function init() {
…
}
function change() {
…
}
function verify() {
…
}
return{
init:init,
set:change
}
}();
(function() {
var current = null;
function init() {
…
}
function change() {
…
}
function verify() {
…
}
})();
var a = 1;
var b = 2;
(function() {
var b = 3;
a += b;
})();
a; // 4
b; // 2
var charsInBody = (function counter(elm) {
if (elm.nodeType == 3) { // 文本节点
return elm.nodeValue.length;
}
var count = 0;
for (var i = 0, child; child = elm.childNodes[i]; i++) {
count += counter(child);
}
return count;
})(document.body);
如上所提供的函数表达式的名称的作用域仅仅是该函数自身。这允许引擎去做更多的优化,并且这种实现更可读、友好。该名称也显示在调试器和一些堆栈跟踪中,节省了调试时的时间。