Google JavaScript 规范(上)
来源:互联网 发布:mysql主键和索引 编辑:程序博客网 时间:2024/06/04 17:54
JavaScipt 语言规范:
变量:声明变量必须加上 var 关键字。
当你没有写 var
, 变量就会暴露在全局上下文中, 这样很可能会和现有变量冲突. 另外, 如果没有加上, 很难明确该变量的作用域是什么, 变量也很可能像在局 部作用域中, 很轻易地泄漏到 Document 或者 Window 中, 所以务必用 var
去声明变量.
常量:使用大写字符, 并用下划线分隔,也可用 @const
标记来指明它是一个常量,但请永远不要使用 const
关键词。
对于基本类型,只需要转换命名.
/** * The number of seconds in a minute. * @type {number} */ goog.example.SECONDS_IN_A_MINUTE = 60;
对于非基本类型,使用@const标记.
/** * The number of seconds in each of the given units. * @type {Object.<number>} * @const */goog.example.SECONDS_TABLE = { minute: 60, hour: 60 * 60, day: 60 * 60 * 24}分号:总是使用分号
JavaScript 的语句以分号作为结束符, 除非可以非常准确推断某结束位置才会省略分号. 上面的几个例子产出错误, 均是在语句中声明了函数/对象/数组直接量, 但 闭括号('}'或']')并不足以表示该语句的结束. 在 JavaScript 中, 只有当语句后的下一个符号是后缀或括号运算符时, 才会认为该语句的结束.
遗漏分号有时会出现很奇怪的结果, 所以确保语句以分号结束.
嵌套函数:可以使用减少代码
块内函数声明:
不要写成:if (x) { function foo() {}}
ECMAScript 规范:if (x) { var foo = function() {}}异常:在写一个比较复杂的应用时, 不可能完全避免不会发生任何异常. 大胆去用吧。
自定义异常:在适当的时候使用自定义异常。
标准特性:总是优于非标准特性。
不要封装基本类型。
不建议使用多原结构,使用
goog.inherits()
或其他类似的用于继承的函数, 会是更好的选择。方法定义,倾向于如下形式:
Foo.prototype.bar = function() { /* ... */};闭包:小心使用
有一点需要牢记, 闭包保留了一个指向它封闭作用域的指针, 所以, 在给 DOM 元素附加闭包时, 很可能会产生循环引用, 进一步导致内存泄漏. 比如下面的代码:function foo(element, a, b) { element.onclick = function() { /* uses a and b */ };}这里, 即使没有使用element
, 闭包也保留了element
,a
和b
的引用, . 由于element
也保留了对闭包的引用, 这就产生了循环引用, 这就不能被 GC 回收. 这种情况下, 可将代码重构为:function foo(element, a, b) { element.onclick = bar(a, b);}function bar(a, b) { return function() { /* uses a and b */ }}
0 0
- Google JavaScript 规范(上)
- Google JavaScript规范
- Google JavaScript 编码规范指南
- Google JavaScript 编码规范指南
- Google javascript 规范中文链接
- Google JavaScript 编码规范指南
- Google JavaScript 编码规范指南
- 【JavaScript】Google JavaScript 编码规范指南
- JavaScript的google编写规范杂记Tips
- JavaScript 编码规范(Google Coding-style for JavaScript)
- 编程规范(上)
- google的编码规范----背景(一)
- Google C++ 编程规范(1.1)
- Google的C++编码规范(总结)
- Google C++ 编码规范(中文版)
- Java编程风格规范(Google )
- google c++编程规范(重点记录)
- R语言编码规范(Google)
- 字符串排序(qsort函数用法小结)
- XCL-Charts android 图表
- 冷笑话
- 关于IOS的屏幕高度宏
- C语言多线程编程《3个足球运动员》
- Google JavaScript 规范(上)
- 微信JS-SDK说明文档
- ibatis重点总结
- Android Please ensure that adb is correctly located at 问题解决
- 十一、PYTHON 面向对象编程
- 【Darwin学习笔记】之RTSP连接监听初始化
- 沟通是康熙微服私访
- UVALive2238 Fixed Partition Memory Management
- sql access 一个access数据库的表复制到另一个access数据库