git clone https://github.com/joyent/node.git
cd node/
./configure
make
make install
make test
make doc
curl http://npmjs.org/install.sh | sh
npm install -g n
npm install -g supervisor
npm install -g node-inspector
node --debug-brk=5858 debug.js
node-inspector
Node.js不適合做的事情
計算密集型的程序
如果有計算密集型程序,給用戶一個提示,說服務器正在處理
單用戶多任務型應用
Node.js進程之間的通信很不便
邏輯十分複雜的事務
Node.js適合處理邏輯簡單但是訪問頻繁的任務
Unicode與國際化
Node.js不支持完整的Unicode,很多字符無法用string來表示.
只能把所有字符當作二進制的buffer數據來處理
作用域
if(true){
var somevar='value';
}
console.log(somevar);//輸出 value,因爲if,for 語句中的花括號不是獨立的作用域
作用域從裏到外var v1='v1';
var f1=function(){
console.log(v1);// 輸出v1
};
f1();
var f2=function(){
var v1='local';
console.log(v1);// 輸出 v2
}
f2();
var scope='global';
var f=function(){
console.log(scope);// 輸出undefined
var scope='f';//屏蔽上層scope的定義
}
var f=function(){
var scope='f0';
(function(){
var scope='f1';
(function(){
console.log(scope);//輸出f1
})();
})();
};
f();
var scope='top';
var f1=function(){
console.log(scope);
};
f1();//輸出top
var f2=function(){
var scope='f2';
f1();
}
f2();//輸出top
JavaScript的作用域是靜態作用域,是在定義時決定的,不是在調用時決定的。閉包
var generateClosure=function(){
var count=0;
var get=function(){
count++;
return count;
};
return get;
};
var counter=generateClosure();
console.log(counter());//輸出1
console.log(counter());//輸出2
console.log(counter());//輸出3
閉包作用實現嵌套的回調函數
實現私有成員
引號建議用單引號,因爲JSON,XML都規定必須使用雙引號,這樣便於無轉義地直接引用。
等號建議使用===
var num=9;
var literal='9'
if(num===literal){
console.log("ok")
}