Допустим, я пишу 0.5
как-то 0.-5
неожиданным образом, но все равно может работать. Что 0.
в 0.-5
сделать так , чтобы он все еще может работать и оценивает до -5?
Я также попробовал , alert(0.-5+1)
который печатает -4, делает JavaScript игнорировать 0.
в 0.-5
?
javascript
numbers
ocomfd
источник
источник
0.
нравится0.0
. Или просто0
.0.-5
это «неожиданный способ»?0.-5
допустить синтаксическую ошибку и не разрешать литералы с плавающей запятой с.0
конечной точкой, но заставлять людей писать в конце..
вы не сможете написать что-то вроде123.toString(16)
(Обычный трюк123..toString(16)
, который на самом деле есть(123.).toString(16)
)Ответы:
Конечные цифры после a
.
необязательны:console.log(0. === 0); // true
Так
0.-5
оценивается в
0 - 5
что справедливо
-5
. Так же,0.-5+1
является
0 - 5 + 1
который
-5 + 1
или
-4
.источник
0.-5
может быть успешно проанализирован в работах0.
[1] ,-
и5
. Ниже представлено абстрактное синтаксическое дерево для выражения, созданного проводником AST:Это (неожиданным образом) правильный JavaScript и оценивается как
-5
.[1] Согласно грамматике числовых литералов, десятичные цифры и экспоненты являются необязательными:
источник
В JS вы можете выразить число с помощью необязательной десятичной точки.
x = 5.; //5 x = 5. + 6. //11
И, что касается комментария Tvde1, можно применить любой числовой метод.
5..toString()
Этот синтаксис позволяет запускать числовые функции без скобок.
5.toString() //error (5).toString() //good 5..toString() //good 5 .toString() // awesome
См. Этот вопрос, чтобы узнать почему.
источник
5..toString()
.1.0
используется плавающая точка, но1.
целое число.float
s имеют методы, а5.
этоfloat
.(1).toMethod()
это разрешено, запрещает(1.)
анализ должным образом. Самый традиционный подход к синтаксическому анализу (жадное лексирование токенов, включая литералы, затем синтаксический анализ) приводит к поведению Javascript.Я бы подумал, что настоящий ответ касается не десятичной точки, а знака минус: разве это не будет интерпретировано как оператор, если ему предшествует что-нибудь, похожее на число?
источник
console.log(0. - 5) // -5 console.log(0 - 5) // -5 console.log('0.' - 5) // -5 console.log('0' - 5) // -5 console.log(0.-5 === -5) // true
'0.' или «0» то же самое в JavaScript, потому что тип уникален для чисел, называемый Number. Оператор минус находится между числами, старайтесь всегда преобразовывать то, что вы передаете, в число. В Python все по-другому: первое - это число с плавающей запятой, а второе - целое число, потому что оно имеет несколько типов.
источник