我是Javascript的新手。 (进入3周)。我试图了解基础知识。我的问题直截了当:" 3" === 3返回false。 "因为它们不是相同的数据类型 或 值。"我理解数据类型的差异,因为" 3"是一个字符串,3是一个数字。它的价值部分似乎在我身上消失了。不应该因为数据类型的差异而不是价值而错误吗?我假设"价值"意思是3.对此的澄清将很高兴。
答案 0 :(得分:0)
==运营商(平等)
等值运算符转换操作数(如果它们的类型不同),然后应用严格比较。如果两个操作数都是对象,那么JavaScript会比较内部引用,当操作数引用内存中的同一个对象时,它们是相等的。
==运算符
的示例0 == false // true
0 == null // false
身份/严格平等(===)
如果操作数与无类型转换严格相等,则identity运算符返回true。
===运算符
的示例 3 === 3 // true
3 === '3' // false
Tou可以访问此site以找到更多JavaScript运算符。
答案 1 :(得分:0)
你应该把它读作
如果不相同
,那么'==='的两个操作数不等于
或更简单地理解:
如果操作数属于相同类型且内容匹配,则严格比较(例如===)仅 true 。
答案 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