字面数字应该没有引号吗?

时间:2014-05-19 11:01:07

标签: javascript

我知道字面数字不需要围绕值的引号。例如,var x=123;是可以接受的,不需要var x='123';var x="123";

话虽如此,是否有错误的引用了一个字面数字?

如果“number”是一个zipcode或数据库记录ID,而不是正常意义上可能用于算术的数字,那么答案会有所不同吗?

4 个答案:

答案 0 :(得分:2)

这不是一个数字。引用一个数字使它成为一个字符串,这可以使它们的处理方式有所不同。例如:

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

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

字符串也有不同的类型和方法来操纵它们。但是,对于大多数数字运算符(-/*和其他位运算符),它们会在执行操作之前将字符串形式转换为数字等效运算符。

由于JavaScript数据存储在浮点格式的性质,在某些情况下,数字不会以精确值存储也存在一些差异。字符串避免了这个问题,尽管操作它们要困难得多。将这些转换回数字会重新引入这些问题。例如,请看:

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

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

答案 1 :(得分:0)

添加引号会使数字成为字符串文字,因此与不带引号的数字文字的用途不同。

JavaScript具有类型强制的概念,可能会使您感到困惑。

答案 2 :(得分:0)

Quoting会生成一个数字字符串。这意味着例如+操作将连接而不是添加:

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

Here是对正在发生的事情的一个很好的解释。

答案 3 :(得分:0)

  

我知道字面数字不需要围绕值的引号。例如,var x = 123;是可接受的,不需要是var x =' 123&#39 ;;或var x =" 123&#34 ;;。

这不是必需 V 不需要(可选)

使用引号(单引号或双引号)表示它是一个字符串(一系列字符 - 无论它们是否为所有数字)

如果您不加引号,则说明它是一个数字。

  

话虽如此,引用一个字面数字有什么不对吗?

否,如果它所代表的实体实际上不是数字而是字符串。所以......

  

如果"号码"是一个邮政编码或数据库记录ID,而不是正常意义上可能用于算术的数字,答案会有所不同吗?

如果该号码是一个邮政编码,那么引用它可能是有意义的,因为它是一个"代码",而不是一个数字,不受算术运算的影响。

您不会将邮政编码除以2或两个拉链码,因为这没有意义。


但是,不是根据代表什么决定使用引号,而是建议您从语言角度

来考虑问题

您应该理解并始终牢记当您在表达式(赋值或比较)中使用字符串而不是数字时,语言运算符的行为方式。