我正在研究使用对象和自执行匿名函数创建命名空间。哪个被认为是更好的选择?
使用对象,是否提供一个唯一的名称“myAppName”足以防止冲突?
var myAppName = {
val1: "abc",
val2: "xyz",
myFunc1: function() {
return this.val2;
}
}
console.log(myAppName.val1); // abc
console.log(myAppName.myFunc1()); // xyz
使用自执行匿名函数:
(function () {
val1 = "abc";
var val2 = "xyz";
myFunc1 = function() {
return val1;
}
var myFunc2 = function() {
return val2;
}
})();
console.log(val1); // abc
console.log(myFunc1()); // abc
console.log(myFunc2()); // xyz
在上面的自执行功能代码中,它们似乎都在执行。在变量和函数名之前使用和不使用 var 是否有含义?我不太明白。有没有办法使变量和函数成为私有和公共的?还是自执行函数中的所有内容都是私有的?
如果我在下面的自执行函数之前使用“var”会发生什么?
var myAppName = (function () {
val1 = "abc";
var val2 = "xyz";
myFunc1 = function() {
return val1;
}
var myFunc2 = function() {
return val2;
}
})();