2013-04-18 3 views
-3

Попробуйте приведенный ниже фрагмент кода, он дает странные результаты. Может ли кто-нибудь объяснить это?Weird eval output

var s = "10+10"; 
alert("Evaluation 1: " + eval(s+s+s)); // 2040 
alert("Evaluation 2: " + eval(s+2)); // 112 

Вывод, который я ожидал 30 и 22

+0

, что выход ??? –

+0

Что такое ожидаемый результат? ... –

+2

Я получаю 2040 (eval («10 + 1010 + 1010 + 10»)) и 112 (eval («10 + 102»)) в двух боксах, что имеет смысл мне. – developmentalinsanity

ответ

4

Ничего странно об этом вообще:

s + s + s === "10+10" + "10+10" + "10+10" === "10+1010+1010+10" => 2040 
s + 2 === "10+10" + "2" === "10+102" => 112 
+0

Спасибо за объяснение. Я не учитывал конкатенацию –

-4

Возьмите переменную s из цитат:

var s = 10 + 10; 

ВОЗВРАТЫ

Оценка 1: 60

Оценка 2: 22