Değişkende artı işareti nasıl alınır

İki sayıyı hesaplamak istiyorum ve oldukça basit.

Ancak işleci değişken olarak alıp hesaplama yapabilir mi?

<div class="snippet" data-lang="js" data-hide="false"> <div class="snippet-code">

var x = 5;
var y = 5;
var p = '+';
var z = x + p + y;

$(".button").click(function() {
  alert(z);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="button">Click ME !</div>
</div> </div>
5
Basit bir anahtarı ... case olur.
katma yazar Salman A, kaynak
Basit bir anahtarı ... case olur.
katma yazar Salman A, kaynak
İşte sorunuza cevap - stackoverflow.com/questions/5834318/…
katma yazar Yellen, kaynak
İşte sorunuza cevap - stackoverflow.com/questions/5834318/…
katma yazar Yellen, kaynak
Yalnızca + ve - arasında karar vermeniz gerekiyorsa, var p = 1 veya var p = -1 ile de çarpabilirsiniz. .
katma yazar Nils_M, kaynak
Yalnızca + ve - arasında karar vermeniz gerekiyorsa, var p = 1 veya var p = -1 ile de çarpabilirsiniz. .
katma yazar Nils_M, kaynak

7 cevap

Mümkün olduğunca eval 'dan kaçının. Bu örnek için, basit bir anahtarı ... case ifadesi yeterli olacaktır:

var x = 5;
var y = 5;
var z;
var p = "+";
switch (p) {
    case "+":
        z = x + y;
        break;
    case "-":
        z = x - y;
        break;
}

Ayrıca bir işlev haritasını da kullanabilirsiniz:

var fnlist = {
    "+": function(a, b) { return a + b; },
    "-": function(a, b) { return a - b; }
}
var x = 5;
var y = 5;
var p = "+";
var z = fnlist[p](x, y);
15
katma
Gerçekten func map çözümünü beğeniyorum ... Çok zarif!
katma yazar Lix, kaynak

Veya değişkeni ekleyeceğiniz dizgede parseInt kullanın:

<div class="snippet" data-lang="js" data-hide="false"> <div class="snippet-code">

        var x = 5;
        var y = 5;
        var p = '-';
        var z = x + parseInt(p + y);

$(".button").click(function(){
  alert(z);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="button">Click ME !</div>
</div> </div>
7
katma
akıllı ama okuması/bakımı oldukça zor
katma yazar A. Wolff, kaynak
eval 'u kullanmamak güzel bir çözüm
katma yazar Jivings, kaynak

Veya değişkeni ekleyeceğiniz dizgede parseInt kullanın:

<div class="snippet" data-lang="js" data-hide="false"> <div class="snippet-code">

        var x = 5;
        var y = 5;
        var p = '-';
        var z = x + parseInt(p + y);

$(".button").click(function(){
  alert(z);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="button">Click ME !</div>
</div> </div>
7
katma
akıllı ama okuması/bakımı oldukça zor
katma yazar A. Wolff, kaynak
eval 'u kullanmamak güzel bir çözüm
katma yazar Jivings, kaynak

eval işlevini arıyorsunuz:

<div class="snippet" data-lang="js" data-hide="false" data-console="false" data-babel="false"> <div class="snippet-code">

        var x = 5;
        var y = 5;
        var p = '+';
        var z = x + p + y;

$(".button").click(function(){
  alert(eval(z));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="button">Click ME !</div>
</div> </div>

However, you have to remember that using eval function is potentially risky. For example, if used in the wrong way it can allow one to make injection attacks. Debugging can be also more difficult. I suggest to read this question.

3
katma
Teşekkürler ! Tamam .. 10 dakika sonra kabul edeceğim .. çok teşekkür ederim :)
katma yazar Twix, kaynak
@Twix - eval 'ı kullanmanın bazı uyarılarla birlikte geldiğini unutmayın - işlev, sağlandığı herhangi bir JS kodunu çalıştırmayı deneyecektir. Değişkenlerinizin "güvenebileceğiniz" değerler/işleçler içerdiğini doğrulayarak, yalnızca niyetlendiğiniz kodu çalıştırdığınızdan emin olun. Değişkenlerden birinin alert ('gottcha!') gibi bir şey içerip içermediğini düşünün.
katma yazar Lix, kaynak

eval işlevini arıyorsunuz:

<div class="snippet" data-lang="js" data-hide="false" data-console="false" data-babel="false"> <div class="snippet-code">

        var x = 5;
        var y = 5;
        var p = '+';
        var z = x + p + y;

$(".button").click(function(){
  alert(eval(z));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="button">Click ME !</div>
</div> </div>

However, you have to remember that using eval function is potentially risky. For example, if used in the wrong way it can allow one to make injection attacks. Debugging can be also more difficult. I suggest to read this question.

3
katma
Teşekkürler ! Tamam .. 10 dakika sonra kabul edeceğim .. çok teşekkür ederim :)
katma yazar Twix, kaynak
@Twix - eval 'ı kullanmanın bazı uyarılarla birlikte geldiğini unutmayın - işlev, sağlandığı herhangi bir JS kodunu çalıştırmayı deneyecektir. Değişkenlerinizin "güvenebileceğiniz" değerler/işleçler içerdiğini doğrulayarak, yalnızca niyetlendiğiniz kodu çalıştırdığınızdan emin olun. Değişkenlerden birinin alert ('gottcha!') gibi bir şey içerip içermediğini düşünün.
katma yazar Lix, kaynak

eval işlevini kullanabilirsiniz:

<div class="snippet" data-lang="js" data-hide="false"> <div class="snippet-code">

var x = 5;
var y = 5;
var p = '+';
var z = eval(x + p + y);

alert(z);
</div> </div>
0
katma
eval 'ı kullanmanızı önerecekseniz - lütfen keyfi kod çalıştırmanın tehlikeleri hakkında uygun uyarıları ekleyin.
katma yazar Lix, kaynak

eval işlevini kullanabilirsiniz:

<div class="snippet" data-lang="js" data-hide="false"> <div class="snippet-code">

var x = 5;
var y = 5;
var p = '+';
var z = eval(x + p + y);

alert(z);
</div> </div>
0
katma
eval 'ı kullanmanızı önerecekseniz - lütfen keyfi kod çalıştırmanın tehlikeleri hakkında uygun uyarıları ekleyin.
katma yazar Lix, kaynak