Javascript 文字数字应该没有引号吗?

Javascript 文字数字应该没有引号吗?,javascript,Javascript,我知道文字数字不需要在值周围加引号。例如,varx=123是可接受的,不需要是var x='123'或var x=“123” 也就是说,引用文字数字有什么不对吗 如果“数字”是一个zipcode或数据库记录ID,而不是一个在算术中可能使用的正常意义上的数字,那么答案会不同吗?它不是一个数字。引用一个数字会使它成为一个字符串,这可能会导致处理它们的方式有所不同。例如: var a = 1; var b = '33'; console.log(a + b === 34); // false con

我知道文字数字不需要在值周围加引号。例如,
varx=123是可接受的,不需要是
var x='123'
var x=“123”

也就是说,引用文字数字有什么不对吗


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

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

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

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


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

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

var a = 'asdf';
var b = '20';
var c = a + b; // asdf20
这是对正在发生的事情的一个很好的解释

我知道文字数字不需要在值周围加引号。例如,var x=123;是可接受的,不需要是var x='123';或var x=“123”

这不是必需的非必需的之间的问题(可选)

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

如果你不加引号,你就说这是一个数字

也就是说,引用文字数字有什么不对吗

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

如果“数字”是zipcode或数据库记录ID,而不是算术中可能使用的正常意义上的数字,那么答案会不同吗

如果数字是一个zipcode,那么加引号可能是有意义的,因为它是一个“代码”,而不是一个数字,并且不受算术运算的影响

你不会把一个zipcode除以2或者两个zipcode求和,因为那是没有意义的


但不是根据引用的值来决定是否引用引文,我建议你从<强>语言透视>/P>来考虑这个问题。
当在表达式(赋值或比较)中使用字符串而不是数字时,您应该理解并始终记住语言运算符的行为。

我的意思是,它不是非法的或任何东西。您只是创建了一个字符串而不是一个整数。我的案例使用的是一个记录ID。我以前使用的是一个整数,但现在改为文本。谢谢。如果整数是zipcode或数据库记录ID怎么办?@user1032531:这取决于具体情况。对于zipcode,并不是所有国家都使用数字zipcode,也没有太多需要对其执行算术运算的变量。对于其他用途,将它们存储为数字可能更有意义。