@mynameiszhangxu
2015-04-13T06:18:07.000000Z
字数 2420
阅读 2283
笔记
均遵循小驼峰大小写命名法
对于变量的命名,前缀应当是名词
对于函数的命名,第一个词为动词,常用动词如下
| 动词 | 含义 |
|---|---|
| can | 函数返回布尔值 |
| has | 函数返回布尔值 |
| is | 函数返回布尔值 |
| get | 函数返回非布尔值 |
| set | 函数用来保存一个值 |
大写字母和下划线来命名
使用大驼峰命名法
单引号和双引号都可以,但是在自己的代码中,需要从头到尾保持同一种风格
考虑到 Java是使用双引号,所以为了确保能在 js和 Java间切换,建议使用双引号
对于理解 null,最好的方式是将它当作对象的占位符(placeolder)
var person = null;console.log(typeof person); //object
值得注意 一个变量有没有被声明,typeof 的返回值都是 undefined
值得注意 null == undefined 结果为 true
var person;console.log(typeof person); //undefinedconsole.log(typeof foo); //undefined
在直接量中写出写出所有属性。
//不好的写法var book = new Object;book.title = "Maintainable JavaScript";book.author = "Nicholas C. Zakas";
//好的写法var book{title:"Maintainable JavaScript",book.author = "Nicholas C. Zakas";};
和对象直接量类似
//不好的写法var colors = new Array("red", "green","blue");var number = new Array(1, 2, 3, 4);
//好的写法var colors = ["red","green","blue"];var numbers = [1, 2, 3, 4];
var propfor(prop in object){if(object.hasOwnProperty(prop)){console.log("property name is " + prop);console.log("property vaule is " + object[prop]);}}
所有的 var 语句,都提前到包含这段逻辑的函数的顶部执行
单 var 语句:
将所有的 var 语句合并成一个语句,没有初始化的变量出现在var 语句的尾部,是一种不错的风格
function dosomethingWithItems(items) {var value = 10,result = value + 10,i,len;for (i=0, len=items.length; i < len; i++){dosomething(items[i]);}}
JavaScript允许声明匿名函数,并允许将其赋值给变量或属性。
var dosomething = function() {// 函数体};
这种匿名函数同样可以同过在最后加上一堆圆括号来立即执行并返回一个值,然后将这个值赋值给变量。
//不好的写法var value = function() {// 函数体return {message:"Hi"}}();
为了让直行的函数能够有被一眼看出来,可以将函数用以队员括号包裹起来:
//好的写法var value = (function() {// 函数体return {message:"Hi"}}());
所有的编程风格中都建议用===和!==来代替=和!=
注意
console.log(null == undefined); // true
eavl()会将传入的字符串当做代码来执行。
eval("alert('Hi')");
在 JavaScript 中 eval()并不是唯一可执行JavaScript字符串函数,使用Function 构造函数也能做到这一点,setTimeout()和setInterval()也可以。
var myfunc = new Function("alert('Hi!')");
setTimeout ("document.body.style.background='red'", 50);
setInterval("docunment.title = 'It is now'" + (new Date()), 1000);
但是一个通用的原则是,严禁使用Function,并且只在别无他法的时候使用eval()。
setTimeout()和setInterval()也是可以的,但不要使用字符串形式,要用函数。
setTimeout(function() {document.body.style.background='red';}, 50);
setInterval(function() {docunment.title = 'It is now' + (new Date());}, 1000);
有三种: String、Boolean、Number.
有这样的特殊用法:
var name = "NIcholas";console.log(name.toupperCase());
原始包装类型作用是让原始值具有对象般的行为
<li><a href="%s">%s</a></li>
这段模板中包含的%s占位符,这个未知的文本会被程序替换掉。JavaScript程序会将这些占位符替换成真的数据,然后将其注入DOM
function sprintf(text) {}// 用法var result =