0

これに続いて実装しています。

//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を実行しましたが、「名前が未定義」というエラーが発生しました。しかし、なぜ発生するのかわかりません。しかし、「var name=33」をname=33に変更してください、動作します...何か考えがありますか?前もって感謝します。

4

1 に答える 1

2

var別のコンテキストで発生するため、なしでのみ機能evalします。したがって、メソッドを使用してアクセスできるのはグローバルのみです。変数を宣言しない場合、グローバルは自動的に作成されます。ただし、node.jsでは、モジュールで宣言された変数はグローバルではありません。

これが、前述したように、言語を他の言語のイディオムに準拠させることは悪い考えである理由です。

于 2012-08-09T01:35:54.617 に答える