user1032531
user1032531

Reputation: 26281

Should literal numbers not have quotes?

I know that literal numbers do not require quotes around the value. For instance, var x=123; is acceptable and does not need to be var x='123'; or var x="123";.

That being said, is there anything wrong with quoting a literal number?

If the "number" was a zipcode or database record ID, and not a number in the normal sense which might be used in arithmetic, would the answer be different?

Upvotes: 0

Views: 83

Answers (4)

Paolo
Paolo

Reputation: 15827

I know that literal numbers do not require quotes around the value. For instance, var x=123; is acceptable and does not need to be var x='123'; or var x="123";.

It's not a matter of required Vs not required (optional)

Using quotes (single or double) you state that it is a string (a sequence of characters - no matter if they're all digits)

If you don't place quotes you state it is a number.

That being said, is there anything wrong with quoting a literal number?

No if the entity it represents is not actually a number but a string. So...

If the "number" was a zipcode or database record ID, and not a number in the normal sense which might be used in arithmetic, would the answer be different?

If the number is a zipcode it may make sense to put quotes, because it is a "code", not a number and is not subject to arithmetics operations.

You're not going to divide a zipcode by 2 or sum two zipcodes because that would not make sense.


But instead of deciding to use quotes or not based on what the value represents I suggest you to consider the problem from the language perspective

You should understand and keep always in mind how do the language's operators behave when you use a string instead of a number in an expression (assignment or comparison).

Upvotes: 0

Qantas 94 Heavy
Qantas 94 Heavy

Reputation: 16020

It isn't a number. Quoting a number makes it a string, which can make for some differences in the way they're handled. For example:

var a = 1;
var b = '33';

console.log(a + b === 34); // false
console.log(a + b === '34'); // true

Strings also have different types and methods for manipulating them. However, for most of the numeric operators (-, /, *, and other bitwise operators), they convert the string form to its numeric equivalent before performing the operation.

There are also a few differences where numbers are not stored with their exact value in some cases, due to the nature of the floating point format JavaScript numbers are stored in. Strings avoid this problem, though it is much harder to manipulate them. Converting these back to numbers reintroduces these issues. For example, see this:

var recordID = 9007199254740992;
var previousID = recordID;
recordID += 1;

console.log(recordID === previousID); // true

Upvotes: 2

mareckmareck
mareckmareck

Reputation: 1580

Quoting makes a string of a number. It means that for example + operation will concatenate instead of add:

var a = 'asdf';
var b = '20';
var c = a + b; // asdf20

Here is a great explanation of what is going on.

Upvotes: 0

Ben Aston
Ben Aston

Reputation: 55729

Adding quotes makes the number a string literal and so serves a different purpose than the Number literal defined without quotes.

JavaScript has the concept of type coercion which might have confused you.

Upvotes: 0

Related Questions