zl程序教程

您现在的位置是:首页 >  前端

当前栏目

如何正确使用javascript来进行我们的程序开发

JavaScript 使用 如何 进行 正确 我们 程序开发
2023-06-13 09:15:32 时间

今天在github上面找到了一个关于如何正确使用javascript来进行我们的程序开发.我就恬不知耻的来了个原创啊..坑爹啊.拿来和大家分享一下吧.
AmostlyreasonableapproachtoJavascript.
Types//类型
Objects//对象
Arrays//数组
Strings//字符串
Functions//函数
Properties//属性
Variables//变量
Hoisting//变量提升
ConditionalExpressions&Equality//条件表达式和等式.
Blocks//块代码
Comments//注释
Whitespace//空格
Commas//逗号
Semicolons//分号
TypeCasting&Coercion//类型转换
NamingConventions//命名规则
Accessors//访问
Constructors//构造器
Events//时间
Modules//模型
jQuery//
ECMAScript5Compatibility//ECMA5兼容
Testing//测试
Performance//性能
Resources//资源
IntheWild
Translation
TheJavaScriptStyleGuideGuide
Contributors
License

Types(类型)
原始类型:当访问一个原始类型的时候,其实直接访问该原始类型的内容.
string
number
boolean
null
undefined
varfoo=1,
bar=foo;
bar=9;
console.log(foo,bar);//=>1,9

复杂类型:当你访问一个复杂类型数据类型的时候,其实是通过引用访问该变量的值.
object
array
function

varfoo=[1,2];
bar=foo;
bar[0]=9;
console.log(foo[0],bar[0]);//=>9,9

object(对象)
使用对象字面量来创建对象(literal)

//bad
varitem=newObject();
//good
varitem={};

不要使用保留关键字作为对象的属性名.这在IE8下无法工作.

//bad
varsuperman={
default:{clark:"kent"},
private:true
};
//good
varsuperman={
defaults:{clark:"kent"},
hidden:true
};

array(数组)
同样使用字面量方法来创建数组

//bad
varitems=newArray();
//good
varitems=[];

如果你不知道数组的长度,那么使用Array的内置方法push进行插入操作

varsomeStack=[];
//bad
someStack[someStack.length]="vein";
//good
someStack.push("vein");

当你想要拷贝一个数组的时候,使用array.slice

varlen=items.length,//指的就是上面的内容...
itemCopy=[],
i;
//bad
for(i=0;i<len;++i){
itemCopy[i]=items[i];
}
//good
itemCopy=items.slice();//这里要注意了.这个我还真不知道...

Strings字符串
使用单引号(singlequotes)来包围字符串...//这里我没有找到合适的关于性能方面的解释,我个人也喜欢这么用,(穿的少总比穿得多好看点吧..你懂得..)

//bad
varname="BobParr";
//good
varname="BobParr";
//bad
varfullName="Bob"+this.lastName;
//good
varfullName="Bob"+this.lastName;

字符串长于80个字符的时候需要使用字符串连接在多行进行编写..注意,如果过度使用,连接字符串将会影响性能(performance)

//bad
varerrorMessage="ThisisasuperlongerrorthatwasthrownbecauseofBatman.WhenyoustoptothinkabouthowBatmanhadanythingtodowiththis,youwouldgetnowherefast.";
//bad
varerrorMessage="Thisisasuperlongerrorthatwasthrownbecause\
ofBatman.WhenyoustoptothinkabouthowBatmanhadanythingtodo\
withthis,youwouldgetnowhere\
fast.";
//good
varerrorMessage="Thisisasuperlongerrorthatwasthrownbecause"+
"ofBatman.WhenyoustoptothinkabouthowBatmanhadanythingtodo"+
"withthis,youwouldgetnowherefast.";

如果是有计划的建立一个数组,像下面这样.使用Array.join效果会更好..

varitems,
messages,
length,
i;
messages=[{
stat:"success",
message:"Thisoneworked"
},{
stat:"success",
message:"Thisoneworked"
},{
stat:"success",
message:"Thisoneworked"
}
];
length=messages.length;
//bad
functioninbox(messages){
items="<ul>";
for(i=0;i<length;i++){
items+="<li>"+messages[i].message+"</li>";
}
returnitems+"</ul>";
}
//good
functioninbox(messages){
items=[];
for(i=0;i<length;i++){
items[i]=messages[i].message;
}
return"<ul><li>"+items.join("</li><li>")+"</li></ul>";
}

函数(Functions)

//匿名函数表达式..
varanonymous=function(){
returntrue;
};
//命名函数表达式.
varnamed=functionnamed(){
returntrue;
};
//即时引用函数
(function(){
console.log("WelcometotheInternet.Pleasefollowme.");
})();

永远不要在非函数的块代码(if,while)中定义函数.相应的,在代码块中间函数赋值给外部的变量名..

//bad
if(currentUser){
functiontest(){
console.log("Nope.");
}
}
//good
vartest;
if(currentUser){
test=function(){
console.log("Yup");
};//becarefulwiththesemi-colon.
}

Properties(属性)
使用点语法来访问属性.

varluke={
jedi:true,
age:28
};
//bad
varisJedi=luke["jedi"];
//good
varisJedi=luck.jedi;

当使用变量访问对象属性时,使用[]方括号来访问

varluke={
jedi:true,
age:28
};
functiongetProp(prop){
returnluke[prop];
}
varisJedi=getProp("jedi");