范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Javascript编码规范

  缩进
  使用soft tab(4个空格)。 var x = 1,     y = 1;  if (x < y) {     x += 10; } else {     x += 1; } 单行长度
  不要超过80,但如果编辑器开启word wrap可以不考虑单行长度。 分号
  以下几种情况后需加分号: 变量声明 表达式 return throw break continue do-while /* var declaration */ var x = 1;  /* expression statement */ x++;  /* do-while */ do {     x++; } while (x < 10); 空格以下几种情况不需要空格:对象的属性名后 前缀一元运算符后 后缀一元运算符前 函数调用括号前 无论是函数声明还是函数表达式,’(‘前不要空格 数组的’[‘后和’]’前 对象的’{‘后和’}’前 运算符’(‘后和’)’前 以下几种情况需要空格: 二元运算符前后 三元运算符’?:’前后 代码块’{‘前 下列关键字前:else, while, catch, finally 下列关键字后:if, else, for, while, do, switch, case, try, catch, finally, with, return, typeof 单行注释’//‘后(若单行注释和代码同行,则’//‘前也需要),多行注释’*’后 对象的属性值前 for循环,分号后留有一个空格,前置条件如果有多个,逗号后留一个空格 无论是函数声明还是函数表达式,’{‘前一定要有空格 函数的参数之间 // not good var a = {     b :1 };  // good var a = {     b: 1 };  // not good ++ x; y ++; z = x?1:2;  // good ++x; y++; z = x ? 1 : 2;  // not good var a = [ 1, 2 ];  // good var a = [1, 2];  // not good var a = ( 1+2 )*3;  // good var a = (1 + 2) * 3;  // no space before "(", one space before "{", one space between function parameters var doSomething = function(a, b, c) {     // do something };  // no space before "(" doSomething(item);  // not good for(i=0;i<6;i++){     x++; }  // good for (i = 0; i < 6; i++) {     x++; } 空行
  以下几种情况需要空行: 变量声明后(当变量声明在代码块的最后一行时,则无需空行) 注释前(当注释在代码块的第一行时,则无需空行) 代码块后(在函数调用、数组、对象中则无需空行) 文件最后保留一个空行 // need blank line after variable declaration var x = 1;  // not need blank line when variable declaration is last expression in the current block if (x >= 1) {     var y = x + 1; }  var a = 2;  // need blank line before line comment a++;  function b() {     // not need blank line when comment is first line of block     return a; }  // need blank line after blocks for (var i = 0; i < 2; i++) {     if (true) {         return false;     }      continue; }  var obj = {     foo: function() {         return 1;     },      bar: function() {         return 2;     } };  // not need blank line when in argument list, array, object func(     2,     function() {         a++;     },     3 );  var foo = [     2,     function() {         a++;     },     3 ];   var foo = {     a: 2,     b: function() {         a++;     },     c: 3 }; 换行
  换行的地方,行末必须有’,’或者运算符; 以下几种情况不需要换行:下列关键字后:else, catch, finally 代码块’{‘前 以下几种情况需要换行:代码块’{‘后和’}’前 变量赋值后 // not good var a = {     b: 1     , c: 2 };  x = y     ? 1 : 2;  // good var a = {     b: 1,     c: 2 };  x = y ? 1 : 2; x = y ?     1 : 2;  // no need line break with "else", "catch", "finally" if (condition) {     ... } else {     ... }  try {     ... } catch (e) {     ... } finally {     ... }  // not good function test() {     ... }  // good function test() {     ... }  // not good var a, foo = 7, b,     c, bar = 8;  // good var a,     foo = 7,     b, c, bar = 8; 单行注释
  双斜线后,必须跟一个空格;
  缩进与下一行代码保持一致;
  可位于一个代码行的末尾,与代码间隔一个空格。 if (condition) {     // if you made it here, then all security checks passed     allowed(); }  var zhangsan = "zhangsan"; // one space after code 多行注释
  最少三行, ‘*’后跟一个空格,具体参照右边的写法; 建议在以下情况下使用:难于理解的代码段 可能存在错误的代码段 浏览器特殊的HACK代码 业务逻辑强相关的代码 /*  * one space after "*"  */ var x = 1; 文档注释
  各类标签@param, @method等请参考usejsdoc和JSDoc Guide; 建议在以下情况下使用:所有常量 所有函数 所有类 /**  * @func  * @desc 一个带参数的函数  * @param {string} a - 参数a  * @param {number} b=1 - 参数b默认值为1  * @param {string} c=1 - 参数c有两种支持的取值
1—表示x
2—表示xx * @param {object} d - 参数d为一个对象 * @param {string} d.e - 参数d的e属性 * @param {string} d.f - 参数d的f属性 * @param {object[]} g - 参数g为一个对象数组 * @param {string} g.h - 参数g数组中一项的h属性 * @param {string} g.i - 参数g数组中一项的i属性 * @param {string} [j] - 参数j是一个可选参数 */ function foo(a, b, c, d, g, j) { ... } 引号   最外层统一使用单引号。 // not good var x = "test"; // good var y = "foo", z = ""; 变量命名标准变量采用驼峰式命名(除了对象的属性外,主要是考虑到cgi返回的数据) ‘ID’在变量名中全大写 ‘URL’在变量名中全大写 ‘Android’在变量名中大写第一个字母 ‘iOS’在变量名中小写第一个,大写后两个字母 常量全大写,用下划线连接 构造函数,大写第一个字母 jquery对象必须以’$’开头命名 var thisIsMyName; var goodID; var reportURL; var AndroidVersion; var iOSVersion; var MAX_COUNT = 10; function Person(name) { this.name = name; } // not good var body = $("body"); // good var $body = $("body"); 变量声明   一个函数作用域中所有的变量声明尽量提到函数首部,用一个var声明,不允许出现两个连续的var声明。 function doSomethingWithItems(items) { // use one var var value = 10, result = value + 10, i, len; for (i = 0, len = items.length; i < len; i++) { result += 10; } } 函数   无论是函数声明还是函数表达式,’(‘前不要空格,但’{‘前一定要有空格;   函数调用括号前不需要空格;   立即执行函数外必须包一层括号;   不要给inline function命名;   参数之间用’, ‘分隔,注意逗号后有一个空格。 // no space before "(", but one space before"{" var doSomething = function(item) { // do something }; function doSomething(item) { // do something } // not good doSomething (item); // good doSomething(item); // requires parentheses around immediately invoked function expressions (function() { return 1; })(); // not good [1, 2].forEach(function x() { ... }); // good [1, 2].forEach(function() { ... }); // not good var a = [1, 2, function a() { ... }]; // good var a = [1, 2, function() { ... }]; // use ", " between function parameters var doSomething = function(a, b, c) { // do something }; 数组、对象   对象属性名不需要加引号;   对象以缩进的形式书写,不要写在一行;   数组、对象最后不要有逗号。 // not good var a = { "b": 1 }; var a = {b: 1}; var a = { b: 1, c: 2, }; // good var a = { b: 1, c: 2 }; 括号   下列关键字后必须有大括号(即使代码块的内容只有一行):if, else, for, while, do, switch, try, catch, finally, with。 // not good if (condition) doSomething(); // good if (condition) { doSomething(); } null适用场景:初始化一个将来可能被赋值为对象的变量 与已经初始化的变量做比较 作为一个参数为对象的函数的调用传参 作为一个返回对象的函数的返回值 不适用场景:不要用null来判断函数调用时有无传参 不要与未初始化的变量做比较 // not good function test(a, b) { if (b === null) { // not mean b is not supply ... } } var a; if (a === null) { ... } // good var a = null; if (a === null) { ... } undefined   永远不要直接使用undefined进行变量判断;   使用typeof和字符串’undefined’对变量进行判断。 // not good if (person === undefined) { ... } // good if (typeof person === "undefined") { ... } jshint   用’===’, ‘!==’代替’==’, ‘!=’;   for-in里一定要有hasOwnProperty的判断;   不要在内置对象的原型上添加方法,如Array, Date;   不要在内层作用域的代码里声明了变量,之后却访问到了外层作用域的同名变量;   变量不要先使用后声明;   不要在一句代码中单单使用构造函数,记得将其赋值给某个变量;   不要在同个作用域下声明同名变量;   不要在一些不需要的地方加括号,例:delete(a.b);   不要使用未声明的变量(全局变量需要加到.jshintrc文件的globals属性里面);   不要声明了变量却不使用;   不要在应该做比较的地方做赋值;   debugger不要出现在提交的代码里;   数组中不要存在空元素;   不要在循环内部声明函数;   不要像这样使用构造函数,例:new function () { … }, new Object; // not good if (a == 1) { a++; } // good if (a === 1) { a++; } // good for (key in obj) { if (obj.hasOwnProperty(key)) { // be sure that obj[key] belongs to the object and was not inherited console.log(obj[key]); } } // not good Array.prototype.count = function(value) { return 4; }; // not good var x = 1; function test() { if (true) { var x = 0; } x += 1; } // not good function test() { console.log(x); var x = 1; } // not good new Person(); // good var person = new Person(); // not good delete(obj.attr); // good delete obj.attr; // not good if (a = 10) { a++; } // not good var a = [1, , , 2, 3]; // not good var nums = []; for (var i = 0; i < 10; i++) { (function(i) { nums[i] = function(j) { return i + j; }; }(i)); } // not good var singleton = new function() { var privateVar; this.publicMethod = function() { privateVar = 1; }; this.publicMethod2 = function() { privateVar = 2; }; }; 杂项   不要混用tab和space;   不要在一处使用多个tab或space;   换行符统一用’LF’;   对上下文this的引用只能使用’_this’, ‘that’, ‘self’其中一个来命名;   行尾不要有空白字符;   switch的falling through和no default的情况一定要有注释特别说明;   不允许有空的代码块。 // not good var a = 1; function Person() { // not good var me = this; // good var _this = this; // good var that = this; // good var self = this; } // good switch (condition) { case 1: case 2: ... break; case 3: ... // why fall through case 4 ... break; // why no default } // not good with empty block if (condition) { }

重磅!华为mate50pro预计10月21日发布华为的Mate50系列之前消息是今年将无缘与大众见面,不过最新消息却是将会在10月份将会到来!来自DSCC的资深专家屏幕供应链分析师DavidNaranjo分享了一份更新文件,指出减不了肥?这要怪你的肠道微生物群根据一项新的研究,与减肥成败最密切相关的因素是肠道微生物群,与体重指数(BMI)无关。研究结果于本周发表在美国微生物学会开放获取期刊mSystems上。研究主要作者美国西雅图系统生4nm加持,苹果A16处理器曝光CPU单核提升20一年一度的苹果秋季发布会也终于拉上了帷幕,在发布会上我们不仅见到了新一代的iPhone13,也见到迭代的A15芯片。只是在欣喜见到新品A15的同时,也不免得有些疑惑,为何苹果没有在今天微信还是打不开淘宝链接但淘宝可以打开抖音微信了亿邦动力讯9月17日消息,亿邦动力获悉,有媒体报道称,此前工信部会议要求各平台按标准于9月17日解除屏蔽网址链接的行为。时限已至,亿邦动力发现,平台间的高墙虽有松动,但仍有平台尚未竞争对手乏力苹果iPhone13预定量已超上代iPhone12在北京时间9月15日(周三)的流媒体直播过后,新发布的苹果iPhone13系列智能机,已在大陆市场创下了超过去年iPhone12系列的预定量。南华早报指出截止周四,仅京东平台上的i苹果失去信仰陈白文到今年十月为止,苹果创始人乔布斯已然溘然长逝十周年。他应该怎么也不会想到,曾经被他定位为极客艺术品的iPhone已经出到了13代,而主打的核心竞争力,居然是性价比。2021年市面上的编程书籍去书店买吗?根本不需要!实测PDF电子书下载记得有位知友说过,不更新的高赞文章不是好的高赞文章,所以这里我默默地爆肝整理了一批新的干货出来,添加到原文里。本文干货满满,建议各位同学看到最后哦,相信一定能有所收获的!Pytho恒驰5现身街头!亮相后迟迟没有下文的可不止恒驰一家近日,一组恒驰5的路试谍照在网上曝光,令圈哥想到了最近负面消息缠身的恒大造车梦。随着新能源汽车的大力发展,造车新势力犹如春笋般涌出,一举让我国新能源汽车行业走到了全球领先行列。不过15。79万元起!小鹏P5受追捧上市24小时订单达61599月15日,小鹏P5正式上市,是全球首款搭载激光雷达的量产智能汽车,全国补贴后零售价为15。79万元22。39万元。小鹏P5小鹏P5上市后受到了不少消费者追捧。9月17日,小鹏汽车苹果官网iPhone12全线降价但是想买的等一等iPhone13发布之后,iPhone12和iPhone12mini迎来了一定幅度的降价。具体的价格如下iPhone12mini64GB4499元128GB4899元256GB56国家能源集团携手华为首次部署矿鸿操作系统国内国家能源集团携手华为首次部署矿鸿操作系统国家能源集团携手华为公司9月14日发布矿鸿操作系统。该系统在煤矿领域第一次实现了统一的设备层操作系统,以统一的接口和协议标准,解决了不同
用网友的话来说这颜值可以横着走的汽车来了近年来不断推陈出新的长安汽车,继UNIK之后,UNI系列再发新车,也是UNI系列的首款轿车,新车命名为UNIV,就此UNI家族KTV组合正式组合完成。univ从目前流出的谍照来看,年轻智能的颜值担当,下月就会上市,你想知道是长安的哪辆汽车吗今日首发长安新CS55官图,外观配置全面升级,首次线上曝光新轻年智色SUV长安新CS55。新CS55在全球五国九地的设计研发对外观内饰配置进行了全面升级,不仅拥有更多样化的外观内饰梦想中的汽车没有不可能,北斗天枢帮你实现将梦想的汽车变为现实,汽车商业生态将被重新构建。长安汽车总裁朱华荣在8月24日的北斗天枢智能化战略发布会上,首次公布41行动计划,进一步夯实长安智能化体系。未来已来时代洪流剑指智能7nm芯片突破核心!紫光股份Q4发布16nm256核心智擎660处理器紫光集团在上周被债权人申请破产重整的消息传出后震惊中国科技业,虽然母公司紫光集团目前正面临破产申请的困境,但旗下多家子公司却表明将不受影响,而在近日紫光股份就透露公司基于16nm制苹果新自研芯片究竟有多强?M1要超神吗?双十一的你是在逛淘宝还是看了苹果的发布会?当然,这两件事我都没有干!但最近很多平台都在讨论苹果M1芯片的性能,在一家平台上的单核测试性能竟然直接超过5900X!真假如何?相信大家最想五千万的大红包吗?知道怎么抢嘛?那就做好准备9月10日开抢哟自4月北京国际车展亮相以来,不止7座的中大型SUV欧尚COS1(科赛)就一跃成为SUV界的网红车,以用户为主导的大尺寸大空间核心优势,吸引无数新城市新中产的眼球。而其何时上市也成了MicrosoftSurfacePro8外观配置泄露微软SurfacePro8外观配置在eBay上泄露Redditorunreliablenoob发布了一篇surfacepro8的图文,确认此时,与SurfacePro7相比,SuriPhone12评价褒贬不一!究竟值不值得入手?近期,就最近华为和苹果发布新机以来,各大媒体都在忙着测试新机,所以在网络上流传着各大媒体的测试信息。那么不少网友就iPhone12的测试进行讨论,所表达的观点不一。首先就是发热!i三星GalaxyS21或将于2021年1月推出都知道,三星一般在每年2月份推出自家的旗舰机型Galaxy系列,并且将会在发布一月后进行销售。但今年有消息称三星将会在2021年一月中旬推出下一部Galaxy旗舰机型S21,据之情计算机的原理究竟是什么?灵魂拷问相信在这个时代,工作工程中使用最多的莫过于计算机,那么你知道计算机的原理是什么吗?近期在V2EX论坛就有这样一个类似问题引起大家的讨论,就是计算机的原理是图灵机吗?这位网友所提出的苹果最新的BigSur更新导致大部分MacBook黑屏变砖近期,在苹果官网,有不少用户反应在更新MacBigSur过程中,笔记本黑屏现象,导致更新失败,无法启动至桌面在网上有很多投诉,有用户说通过重置nvram重置SMC等方法,但是并不会