2012-08-09 65 views
0

我在這之後執行。node.js需要問題

//to_s.js 
(function(){ 
String.prototype.to_s = function(){ 
     var str = this.toString(); 
     var convert = function(s){ 
      return eval(s); 
     }; 

     while(/#{(\w+)}/.test(str)){ 

      // bad because I use eval... 

      var matchStr =RegExp.$1; 

      var str = str.replace(/#{(\w+)}/,convert(matchStr)); 

     } 
     return str; 
    }; 
})(); 

module.exports = String.prototype.to_s; 


// test/to_s_test.js 

require("./../to_s"); 

var name = 33; 

"hello #{name}".to_s(); 

我跑to_s_test.js,但它的發生錯誤「的名字是undefined'.But我不知道爲什麼它happen.But改變‘變種名稱= 33’來命名= 33,它的工作原理。 .. 你有什麼主意嗎?提前致謝。

回答

2

它只會在沒有var的情況下工作,因爲eval發生在另一個上下文中,因此只能使用您的方法訪問全局變量。當你不聲明變量時會自動創建一個全局變量;但是,在node.js中,模塊中聲明的變量不是全局變量。

這就是爲什麼,as I previously mentioned,試圖使語言符合其他語言的成語是壞主意