关于编码风格的“最佳实践”是什么?
我应该将_用于私人会员吗? 我应该使用this._privateMember吗?
如果错误,请以正确的方式重新编写我的代码:
(function()){
var _blah = 1;
someFunction = function() {
alert(_blah);
};
someOtherFunction = function {
someFunction();
}
}();
答案 0 :(得分:4)
我会阅读此内容并纳入您同意的任何部分:
http://javascript.crockford.com/code.html
您不必同意所有
答案 1 :(得分:1)
我认为没有。如果您认为有帮助,请使用前缀。
我使用_作为私有成员,因为它区分了它们,当你有来自各地的变量时,这在Javascript中非常有帮助。但它们会使代码混乱不堪。
答案 2 :(得分:1)
对于使用_
声明的变量,我不使用var
。但是,我使用_
来表示不应该直接访问的对象成员。
有些人(我认为很奇怪:P),如果包含jQuery对象,前缀变量也带有$
。
只要你与你所做的一致,就没有问题。
除了你现在展示的代码之外,你应该使用Capital Letters来区分构造函数,并使用camelCase来命名对象的实例。
function Foo (val) {
this.set(val);
};
Foo.prototype.get = function () {
return this._dontTouchMePlease;
};
Foo.prototype.set = function(val) {
this._dontTouchMePlease = parseInt(val, 10);
};
var aFoo = new Foo(6);
答案 3 :(得分:1)
我认为,如果一个变量名以_开头,你可能不应该触摸它(在可靠的环境中接受,即使这样,也应该提供两个密钥和特殊代码)。
如果我正确地记住了我的Crockford,你会想要将var
放在两个内部函数的前面,否则它们将是隐式全局变量。如果你想让它们成为全局变量,那就没有实际意义了。无论哪种方式,你的第二个内部函数声明应该以分号结尾。
这可能是一个错误的事情,但我认为它普遍接受函数体被缩进了一个级别。而且,我从来没有之前见过(function()){/* stuff */}();
建筑,但几乎没有说什么
我会用这些方式写它 - 如果你只是声明一个函数而另一个用于你使用匿名函数并立即应用它来获得结果,因为我不是你想要做的那个(再次,如果你希望内部函数是全局的,那么这不是你想要的那样):
//function declaration
var myFunction = function () {
var _blah = 1;
var someFunction () {
alert(_blah); //or console.log(_blah); for debugging purposes
};
var someOtherFunction () {
someFunction();
};
};
//using a one-of to assign a result
/* NOTE: if you are using this version, myResult will be undefined
(at least given the functions you provided), but like I said,
I don't recognize the construction you provided, and am therefore
assuming that you meant one of these two, which could be a perfectly
falacious assumption, and in that case, my apologies
*/
var myResult = function () {
var _blah = 1;
var someFunction () {
alert(_blah);
};
var someOtherFunction () {
someFunction();
};
}();
BTW,(我不想超越)Crockford的“JavaScript:The Good Parts”是JavaScript语法的一个很好的参考。他在他的网站上也有各种各样的JavaScript风格指南(虽然我不知道它有多广泛的遵循)。链接是:http://javascript.crockford.com/code.html
答案 4 :(得分:0)
我也在c#中使用“_”作为私人/受保护成员。这是一种快速查看变量是否为成员变量的方法。并且您可以通过代码完成更快地访问它,因为您不会弄乱公共成员(私有:_blah,公共财产:Blah)。
但是,javascript中是否还有私人会员?我认为定义为成员的每个变量都可以从外部访问。 因此,您没有私有成员的公共包装器。这意味着“_”有点开销,用“this”可以实现相同的目标。
答案 5 :(得分:0)
我更喜欢你使用以下的东西,这些东西最好在世界各地的程序员中使用..见下文
i = Int f = Float o = Object r = Return a = Array e = Element g = Global declaration hook = a function which can be used for hooking with other functions call = a function which can be used for making call from client to server system sync = a function which can be used for SYNC
等等..您可以在编码上添加前缀...