js 风格(注意事项)

var foo = 1,
bar = foo; bar = 9; console.log(foo, bar); // => 1, 9

• 复合类型:我们通过`引用`对值进行间接访问。
ο object
ο array
ο function

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

// bad
var item = new Object(); // good
var item = {};
• 不要使用保留字作为关键字。

// bad
var superman = {
class: 'superhero',
default: { clark: 'kent' },
private: true
}; // good
var superman = {
klass: 'superhero',
defaults: { clark: 'kent' },
hidden: true
};

• 使用[]创建数组
// bad
var items = new Array(); // good
var items = [];
• 如果你不知道数组长度,使用Array#push。

var someStack = []; // bad
someStack[someStack.length] = 'abracadabra'; // good
someStack.push('abracadabra');

• 当你需要复制数组的时候,请使用Array#slice。

var len = items.length,
itemsCopy = [],
i; // bad
for (i = 0; i < len; i++) {
itemsCopy[i] = items[i];
} // good
itemsCopy = items.slice();

• 对于字符串,我们使用单引号''。

// bad
var name = "Bob Parr"; // good
var name = 'Bob Parr'; // bad
var fullName = "Bob " + this.lastName; // good
var fullName = 'Bob ' + this.lastName;

• 超过80个字符的字符串,我们使用串联符号(\),让字符串多行显示。
• 注意:如果过度使用带串联符号的字符可能会影响到性能。

// bad
var errorMessage = 'This is a super long error that was thrown because of Batman. When you stop to think about how Batman had anything to do with this, you would get nowhere fast.'; // bad
var errorMessage = 'This is a super long error that \
was thrown because of Batman. \
When you stop to think about \
how Batman had anything to do \
with this, you would get nowhere \
fast.'; // good
var errorMessage = 'This is a super long error that ' +
'was thrown because of Batman.' +
'When you stop to think about ' +
'how Batman had anything to do ' +
'with this, you would get nowhere ' +
'fast.';

• 当我们在编程的时候,需要拼接出一个字符串,我们可以使用Array#join 代替字符串连接。尤其是对IE浏览器。

var items,
messages,
length, i; messages = [{
state: 'success',
message: 'This one worked.'
},{
state: 'success',
message: 'This one worked as well.'
},{
state: 'error',
message: 'This one did not work.'
}]; length = messages.length; // bad
function inbox(messages) {
items = '<ul>'; for (i = 0; i < length; i++) {
items += '<li>' + messages[i].message + '</li>';
} return items + '</ul>';
} // good
function inbox(messages) {
items = []; for (i = 0; i < length; i++) {
items[i] = messages[i].message;
} return '<ul><li>' + items.join('</li><li>') + '</li></ul>';
}

• 函数表达式

// anonymous function expression
var anonymous = function() {
return true;
}; // named function expression
var named = function named() {
return true;
}; // immediately-invoked function expression (IIFE)
(function() {
console.log('Welcome to the Internet. Please follow me.');
})();

• 绝对不要在非函数块(if,while)申明一个函数。我们可以把函数申明变成一个函数表达式。

// bad
if (currentUser) {
function test() {
console.log('Nope.');
}
} // good
if (currentUser) {
var test = function test() {
console.log('Yup.');
};
}

• 绝对不要把一个参数命名为arguments,arguments参数是函数作用域内给出的一个特殊变量,如果你把参数命名为arguments,那么这个参数就会覆盖它原有的特殊变量。

// bad
function nope(name, options, arguments) {
// ...stuff...
} // good
function yup(name, options, args) {
// ...stuff...
}
js 风格(注意事项)的更多相关文章
- 「标准」的 JS风格
首先,这份 JS风格指南已经在我司的前端团队实行半年多了: 其次,在程序员的世界里,从入行到资深都需要面对几个世界级的难题,如: 世界上最好的编辑器是什么? 是用空格还是 TAB?用空格还特么衍生出 ...
- Vue.js 使用注意事项
Vue.js 使用注意事项 1 过滤器主要用于简单的文本转换,如果要实现复杂的数据变换,应使用计算属性 指令的使用 v-bind基本用于HTML元素上的属性,如id.class.href.src等 v ...
- soui使用wke时,设置js回调注意事项
wke响应网页js函数调用时注意: 必须等网页加载完成后,才能通过SetJsFunc设置js函数与c++回调的对应.网页未加载就设置,不会响应c++函数. 示例代码: wkeJSData* data ...
- js兼容注意事项--仅供参考
做BS开发就难免会用到javascript,而每个浏览器对javascript的支持有不同.这就需要我们程序员去兼容他们,不然有些浏览器就无法运行我们的代码.就会造来客户的投诉,如果让BoSS知道了, ...
- JS中注意事项
(一)判断中注意事项 一.所有的相对路径都别拿来做判断 1.img src='...' 2.href='1.css', href='html/index.html' 3.img src='http:/ ...
- 关于HTML中标签<a>使用js的注意事项
以下两点都不可取: 1.<a href="#" onClick="popUp('http://www.baidu.com');return false;" ...
- 最近兰州的js风格写个插件和一个template engine
/* *@Product Name: Rational Framework Author: Calos Description: pager !important: pager */ (functio ...
- js风格技巧
1.一个页面的所有js都可以写成这样,比如: var index ={}; index.User = ****; index.Init = function(){ $("$tes ...
- js操作注意事项
1.函数赋值给变量时,不能加括号 function fun() { ... } var str=fun; 2.js创建构造函数和调用对象,对象内不能用var 变量,只能用this function f ...
随机推荐
- vue - 选项
1.计算属性(computed):主要是对原数据进行改造输出.改造输出:包括格式化数据(价格,日期),大小写转换,排序,添加符号 2.methods(methods):用于绑定html中的事件对应的方 ...
- java设计模式之组合
听说你们公司最近新推出了一款电子书阅读应用,市场反应很不错,应用里还有图书商城,用户可以在其中随意选购自己喜欢的书籍.你们公司也是对此项目高度重视,加大了投入力度,决定给此应用再增加点功能. 好吧,你 ...
- Android版俄罗斯方块的实现
学习Android的基本开发也有一段时间了,可是由于没有常常使用Android渐渐的也就忘记了. Android编程学的不深,不过为了对付逆向,可是有时还是会感到力不从心的.毕竟不是一个计算机专业毕业 ...
- 使用js+Ajax请求API接口数据-带请求头方式
C# http请求带请求头部分 先上代码: <script type="text/javascript"> function zLoginCheck() { var A ...
- No enclosing instance of type Demo is accessible. Must qualify the allocation with an enclosing instance of type Demo (e.g. x.new A() where x is an instance of Demo).
No enclosing instance of type Demo is accessible. Must qualify the allocation with an enclosing inst ...
- 003实现字符串反转reverse
这个简单就直接代码了 //写代码翻转一个C风格的字符串. (C风格的意思是"abcd"须要用5个字符来表示,包括末尾的 结束字符) #include <stdio.h> ...
- [Jobdu] 题目1337:寻找最长合法括号序列
题目描述: 给你一个长度为N的,由’(‘和’)’组成的括号序列,你能找出这个序列中最长的合法括号子序列么?合法括号序列的含义便是,在这个序列中,所有的左括号都有唯一的右括号匹配:所有的右括号都有唯一的 ...
- Android 中查看内存的使用情况集经常使用adb命令
1. 在IDE中查看Log信息 当程序执行垃圾回收的时候,会打印一条Log信息.其格式例如以下: D/dalvikvm: <GC_Reason> <Amount_freed>, ...
- Atitit.检测文本文件的编码 自动获取文件的中文编码
Atitit.检测文本文件的编码 自动获取文件的中文编码 1 不能使用load来检测编码..1 2 使用convert来检测编码1 3 程序检测文本编码2 3.1 根据utf bom头2 3.2 检测 ...
- delete void *
看代码的时候看到 typedef char xxx[sizeof(T) ? 1 : -1]; 这种语句 如:JavaScriptCore/wtf/OwnPtrCommon.h template < ...