Почему мы не можем использовать «+» или «-» в console.log () - PullRequest
0 голосов
/ 18 апреля 2020

Я не могу выполнить сложение и вычитание в console.log (). Умножение и деление работают, как и ожидалось.

var x = 100;
var y = 50;

//This Works fine.
console.log('Mathematical Operators : ' + '\n' + 'Multiplication Result : ' + x*y + '\n' + 'Division Result : ' + x/y + '\n\n\n\n');  

//This gives the Output as "NaN".
console.log('Mathematical Operators : ' + '\n' + 'Addition Result : ' + x+y + '\n' + 'Subtraction Result : ' + x-y + '\n\n\n\n');

Есть ли другой способ?

Ответы [ 3 ]

2 голосов
/ 18 апреля 2020

Взять операции в скобки. Вы комбинируете строки и числа и получаете результат от них. так что если есть операции с числами, вы должны взять их в скобки. Причина, по которой работает первая консоль, заключается в том, что умножение и деление предшествуют сложению или вычитанию, поэтому у вас не возникло проблем. Не забывайте, что скобки ставятся перед математическими операциями.

U вы можете посмотреть здесь порядок очередности info

var x = 100; var y = 50;
console.log('Mathematical Operators : ' + '\n' + 'Multiplication Result : ' +( x*y) + '\n' + 'Division Result : ' + (x/y) + '\n\n\n\n');

console.log('Mathematical Operators : ' + '\n' + 'Addition Result : ' +( x+y) + '\n' + 'Subtraction Result : ' +( x-y) + '\n\n\n\n');
0 голосов
/ 18 апреля 2020

Альтернативой является использование template literals

var x = 100;
var y = 50;
const output = `Mathematical Operators :\nAddition Result : ${x+y}\nSubtraction Result :${x-y}`
console.log(output);
0 голосов
/ 18 апреля 2020

Это из-за приоритета оператора. Посмотрите на выражение:

'Mathematical Operators : ' + '\n' + 'Addition Result : ' + x+y + '\n' + 'Subtraction Result : ' + x-y + '\n\n\n\n'

Это упрощает до:

'foo ' + x + y + ' bar ' + x - y + ' baz'

И +, и - имеют одинаковый приоритет и оценивают слева направо. Когда строка находится по обе стороны от +, результат конкатенации:

'foo ' + x + y + ' bar ' + x - y + ' baz' // simplifies to:
'foo ' + 100 + 50 + ' bar ' + 100 - 50 + ' baz' // simplifies to:
'foo 100' + 50 + ' bar ' + 100 - 50 + ' baz' // simplifies to:
'foo 10050' + ' bar ' + 100 - 50 + ' baz' // simplifies to:
'foo 10050 bar ' + 100 - 50 + ' baz' // simplifies to:
'foo 10050 bar 100' - 50 + ' baz'

Но - всегда означает вычитание, и строки, которые не могут быть преобразованы в числа, не могут быть вычтены, поэтому это дает NaN в результате. Аналогично:

console.log('foo' - 5);

Поставьте скобки вокруг выражений, которые вы хотите вычислить первыми.

'Mathematical Operators : ' + '\n' + 'Addition Result : ' + (x+y) +
//                                                          ^^^^^
'\n' + 'Subtraction Result : ' + (x-y) + '\n\n\n\n'
//                               ^^^^^
...