ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript 算術式計算機のコード実装

JavaScript 算術式計算機のコード実装

黄舟
黄舟オリジナル
2017-03-18 14:53:511500ブラウズ

最初のステップは、createOperator 関数を実装し、クロージャ関数を返すことです:

var Add = createOperator("+" , function(a,b){return a + b;});
var Minus = createOperator("-" , function(a,b){return a - b;});
var Mul = createOperator("*" , function(a,b){return a * b;});
var pide = createOperator("/" , function(a,b){return a / b;});

1。クロージャ関数のインスタンスには、eval と to

String2 の 2 つのメソッドがあります。eval メソッドは計算を担当します。 arithmetic

expression

3 の値。 toString メソッドは式の計算プロセスを

string

4 の形式で表示します。適用範囲はバイナリ

operators

var a = new Add(new Value(3), new Value(5));
//8
console.log(a.eval());
//"3 + 5"
console.log(a.toString());

var b = new Mul(new Value(6), new Value(2));
//12
console.log(b.eval());
//"6 * 2"
console.log(b.toString());

var c = new Add(a,b);
//20
console.log(c.eval());
//"3 + 5 + 6 * 2"
console.log(c.toString());
の値に限定されます。操作中の値は Value

function Value(value){
    this.value = value || 0;
}

Value.prototype.toString = function(){ 
	return this.value.toString(); 
};

createOperator 関数のコード実装:

//IIFE
var createOperator = (function() {
	//name:"+","-","*","/"
	//oper:对应的加减乘除函数
    return function(name, oper){
		//闭包函数
        var Foo = function(){
			//获取2个操作数
            var args = arguments;
            var nums = [].slice.call(arguments);
            nums = nums.map(function(e){return e.value;});          
            var val = new Value(oper.apply(null,nums));
			//给实例绑定toString和eval方法
            val.toString = function(){
                return args[0].toString() + " " + name + " " + args[1].toString();
            };
			val.eval = function(){
                return this.value;
            };
            return val;
        };  
        return Foo;
    }; 
})();
の形式で保存されます

以上がJavaScript 算術式計算機のコード実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。