数据类型和值类型

时间:2018-01-22 09:47:30

标签: javascript

我是Javascript的新手。 (进入3周)。我试图了解基础知识。我的问题直截了当:" 3" === 3返回false。 "因为它们不是相同的数据类型 。"我理解数据类型的差异,因为" 3"是一个字符串,3是一个数字。它的价值部分似乎在我身上消失了。不应该因为数据类型的差异而不是价值而错误吗?我假设"价值"意思是3.对此的澄清将很高兴。

4 个答案:

答案 0 :(得分:0)

==运营商(平等)

等值运算符转换操作数(如果它们的类型不同),然后应用严格比较。如果两个操作数都是对象,那么JavaScript会比较内部引用,当操作数引用内存中的同一个对象时,它们是相等的。

==运算符

的示例
0    == false      // true
0    == null       // false

身份/严格平等(===)

如果操作数与无类型转换严格相等,则identity运算符返回true。

===运算符

的示例

3 === 3 // true  3 === '3' // false

Tou可以访问此site以找到更多JavaScript运算符。

答案 1 :(得分:0)

你应该把它读作

  

如果不相同

,那么'==='的两个操作数不等于

或更简单地理解:

  

如果操作数属于相同类型且内容匹配,则严格比较(例如===)仅 true

来源:Comparison operators

答案 2 :(得分:0)

JavaScript具有严格和类型转换相等性比较。对于严格相等,要比较的对象必须具有相同的类型和:

两个字符串在相应位置具有相同的字符序列,相同的长度和相同的字符时严格相等。

两个数字在数值上相等(具有相同的数值)时严格相等。 NaN不等于任何东西,包括NaN。正负零彼此相等。

如果两个布尔操作数均为真或两者都为假,则两个布尔操作数严格相等。

如果两个对象引用相同的对象,则它们严格相等。

Null和Undefined类型是==(但不是===)。 [即(Null == Undefined)为true但是(Null === Undefined)为false]

为了更好地理解,请查看下面的代码

0 == false   // true
0 === false  // false, because they are of a different type
1 == "1"     // true, automatic type conversion for value only
1 === "1"    // false, because they are of a different type
null == undefined // true
null === undefined // false
'0' == false // true
'0' === false // false

答案 3 :(得分:-1)

TL; DR:对于人类来说,3"3"具有相同的值,但对于计算机来说,它们看起来非常不同。

具有不同数据类型的变量不能具有相同的值,因为它们的数据存储方式不同。字符串分别存储每个字母(因此较长的字符串将需要更多的存储空间),而数字总是占用相同的空间(因此较大的数字不需要比小数字更多的存储空间)。

另一种思考方式是:3是数字3. "3"包含字母3.字母的存储方式与数字不同,因此即使它们看起来与您相同,{ {1}}和3看起来与计算机截然不同。

"3"二进制数字可能如下所示:

01000000 00001000 00000000 00000000 00000000 00000000 00000000 00000000

3这封信看起来像这样:

00000000 00110011