2013-11-21 6 views
-3

Я просто наткнулся на эту строку кода в JavaScript:Почему в этом фрагменте кода есть косая черта?

Math.round(someVariable\*100) 

Это не должно быть просто:

Math.round(someVariable*100) 

я проверил, и оба, кажется, дают мне те же результаты. Можете ли вы по какой-либо причине, почему он был закодирован с обратной косой чертой?

+3

Это не должно даже работать. Где вы это видите? –

+4

'Uncaught SyntaxError: Неожиданный токен ILLEGAL' – tymeJV

+0

' SyntaxError: Неожиданный токен ILLEGAL' - то, что хром бросает на эту строку ... –

ответ

1

Если эта линия не как-то в окружении /* и */, это не действует Javascript :-)

Спецификация ECMAScript упоминает только слеш контексте строк (включая JSONStrings) и регулярных выражения. Если вы используете следующий HTML-файл:

<!DOCTYPE html> 
<html> 
    <body> 
    <p id="demo">Click the button.</p> 
    <button onclick="myFunction()">Try it</button> 
    <script> 
     function myFunction() { 
     document.getElementById("demo").innerHTML = Math.round(2.57\*10); 
     } 
    </script> 
    </body> 
</html> 

вы обнаружите, что большинство браузеров дают ошибку:

Firefox 24esr: SyntaxError: illegal character @ ... 
Chrome 31 : Uncaught SyntaxError: Unexpected token ILLEGAL 
IE 8   : Invalid character 

Это все те, которые я на моем первичном поле развития.

Фактически, поскольку Math.round() возвращает значение, которое вы как-то должны использовать, этот оператор бесполезен, даже если он делает работы. Может быть, есть какой-то дополнительный контекст для этого вопроса, который вы не предоставили.

Это может быть в том, что ваша конкретная реализация интерпретатора Javascript слабее того, что она принимает, трудно различить, не зная фактического интерпретатора, который вы используете. Но, если это так, я бы серьезно пересмотрел его использование. Относительно незначительные различия между реализациями, но ничто не мешает им нарушать самые основные биты спецификации языка.

+1

Не знаете, почему downvote. Не стесняйтесь ссылаться на раздел ECMAScript, в котором указывается, что код действителен. – paxdiablo

+1

Это то, что у многих строк кода перед этой строкой есть эта косая черта в моем коде, и все начинается с этой строки: var product = price \\ * quantity \\ * tax_rate; Любые идеи о том, почему эта строка вызывает/позволяет мне использовать обратную косую черту позже в JS-коде? – goe

0

Вам нужно будет предоставить нам больше информации, но причина, по которой я увижу *, будет избегать регулярного выражения *. Вы уверены, что это не часть какой-либо строки или запроса регулярного запроса?

И да, это меня смутило бы, потому что любой символ мог идти между математикой и кругом.

Это единственная идея, о которой я могу думать, у которой были бы экранированные астерики (*).

Смежные вопросы