前端的进阶其实和如何使用规范是完全相关的。
新手: 啊,什么,这有规范吗? 我不会诶
进阶: 恩,每次,这里需要加分号。 这个逗号应该放这里...
大神: 啊,前端有规范吗? 这里需要放分号,那里不需要放分号。 这里可以不大写,我偏大写。
总结起来整个流程就是:无规范 -> 有规范 -> 无规范。
所以,这里我们来谈一谈规范在前端的意义吧。由于,本人纯属小白,所以,咱不装逼,我们谈谈有规范的那一块。%>_<%
其实前端规范,就这几个,命名,分隔符,缩进等。
分号
这个应该算是我们最常见的,但是也是坑最多的一个。即,每条语句结尾都需要加分号.
我们来看个例子:
var a = 2
2
console.log(a); //2
本来我们想要的结果应该是a=22,但是现实往往是不要脸的。他的结果是2。
为什么呢? 为什么呢? 为什么呢?
我们来看一下ECMA的对此的解释。
我们只在看起来像是一条语句的后面加上分号表示一句
实际上其实是这样的:
var a = 2;
2;
所以,一条语句写完之后别手贱 换行,因为你不知道你正在做一件十分 keai的事,而且每条语句最好都加上分号,至少不会出错。
好吧,还说服不了你的话。我们来看一个经典的问题
;(function(){
// ...
})();
如果 你看过一些插件的话,应该会发现这个普遍的现象。
为什么呢? 为什么呢? 为什么呢?
为了防止出Bug呀。。。 艹
咳咳~ 开玩笑,
举个实例吧。
var speak = function(para){console.log(para); return "speak is "+para;}
("I want to Speak").toString();
console.log(speak);
如果看代码的话,应该能读懂我的意图吧? 但是,js解释器,从不给你解释的机会。
上面代码的结果是:
I want to Speak
speak is I want to Speak
我真*了狗。第一个I want to Speak 是函数表达式里面的console.log(para)里面的。第二个 "speak is I want to Speak" 就是console.log(speak)
里面的内容了。
总结一下,原因,我们最怕遇见这种情况,在函数后面使用"()"就相当于调用该函数并且传入参数,所以上面执行情况是。
var speak = function(para){console.log(para); return "speak is "+para}("I want to Seapk").toString();
//首先获得函数表达式的执行结果.
function(para){console.log(para); return "speak is "+para}("I want to Seapk")
//然后将结果内容toString,返回给speak
speak = xxx.toString(); //返回的结果
所以,懂了吧, 一些插件之所以要在IIFE前面加上";"就是这个道理。 加分号的时候,我们一定要不怕苦,不怕累,就怕出bug。
命名
普遍而言,我们最常使用的就是两种方法。
-
给类命名(原谅我说类)--使用首字母大写的camel式
var person = new People(); //People就是使用首字母大写的camel式
-
给变量命名--使用首字母小写的camel式
var myBook = new Books(); //myBook就是采用变量名的命名
当然,这个只是命名的简单两种方法,也是广为接受的。另外,还有一个名叫"BEM"的命令规范,不过他主要正对于css的命名。如果感兴趣的同学可以了解一下: 传送门。
注释
感觉在js里面真的是弱化了注释的效果, 从以前几十行代码就可以写完的一个js,到现在的大型webApp,单页应用,你再写30+的js试一试。 所以,可能是被遗传了吧,我大部分的朋友都不喜欢写注释,但这里真的希望大家在写代码的时候一定要多写注释。 坊间有个不成文的规定,如果你的注释不占你程序的2/3的话,你这个程序won't pass. 同时,写注释也是给你的接手人,一个很好的指导意义。
通常我们写注释可以直接使用快捷键:
//windows
ctrl+/
//MAC
command+/
这样方便,易记。
我们来说说那些地方需要使用注释。
文件开头:一个main.js的开头需要使用注释,来说明你js文件的相关信息,以及功能描述。通常是:
/**
* @author jimmy
* @file Image.js
* @description 功能详细描述
*/
重要函数:给你的函数加上一些基本描述是很有必要的。通常有功能,参数效果,是否有返回值。
/**
* 简述
*
* 功能详细描述
*
* @param arg1 参数1
* @param arg2 参数2,默认为0
* @return 看xxx是否成功
*/
function doSth (arg1, arg2) {
}
重要语句:其实js程序里面,要么不是函数,要么就是单语句。关于语句的注释应该没什么说的。 就是在每行语句上,加上一条注释,可以不用上面这么复杂的,直接使用command + /即可。
//是否登录
var isOk = isLogin?true:false;
OK,注释差不多就是这几个部分。
另外,js规范当然还有很多,比如缩进,空格,逗号等。,(艹)
宝宝不想说啦。 其实这些规范你使用code pretty一下就好看了。如果你使用sublime 你可以下一个package HTML pretty 等相关的代码美化插件。都是可以的。