我一直看到JavaScript
有:
- 作业
=
- 比较
==
和===
我知道它==
做了类似的事情来比较变量的值,===
它还比较类型(如java equals)。
有人可以为我确认这一点并扩展它吗?. 我是爪哇人,有时我喜欢 javascript untypeing,有时我讨厌它。
javascript中比较和其他默认值的正确方法是undefined
什么null
?
variable == null
variable === null
它是undefined
用作文本字符串还是用作关键字?以下哪个比较对于html
没有的元素是正确的value
?(例如没有内容的标签)
variable == "undefined"
variable === "undefined"
variable == undefined
variable === undefined
运算符
===
和是严格!==
的比较运算符。这意味着如果操作数具有不同的类型,则它们是不相同的。例如,运算符
==
和是宽松!=
的比较运算符。也就是说,如果操作数有不同的类型,JavaScript 会尝试转换它们以使它们具有可比性。例如,值得一提的是,运算符
==
不具有传递性,不像===
.记住所有轻松比较的规则并不容易,有时它以违反直觉的方式工作。因此,我建议使用
===
而不是==
.operator 的小细节我不记得了
==
,所以让我们看一下规范,第 11.9.3 点:这个答案是我在俄罗斯网站上对同一问题的回答的翻译。
不同之处在于 == 在比较它们之前首先尝试转换类型。=== 运算符不会,它会进行直接比较,尽管如果类型不同,它总是返回 false。来源(英文)
前任:
这些图表可以帮助您可视化差异:
'==' 运算符
运算符'==='
(图片来源)
它有效地
==
比较了价值,同时===
也比较了类型。例如。您可以阅读平等比较和相同性中的技术细节(英文)
undefined
是保留字,不带引号使用。不完全的。确实,运算符
===
比较类型和值,而不像运算符那样进行转换==
。但是,这仅适用于值类型。在引用类型中,它所做的只是验证它是同一个对象,它具有相同的类型和值是不够的。所以它将===
是一个身份运算符,而不是==
.例如:
字符串大小写将用作值类型,除非您使用构造函数
String
,这将是一个引用类型。另请注意,运算符
==
在某些转换中不具有传递性。例如:鉴于此运算符的模糊性,建议
===
尽可能使用该运算符。无论如何,您都可以查看此页面,该页面将解决对这两个运营商的疑问。在那里,您可以检查
undefined == null
但undefined !== null
.很简单
==
这是价值的平等,而不是类型的平等。===
是价值和类型的平等。您的问题已得到正确回答,但我想对您的问题发表评论(我也是从 java 开始的,有些事情是 javascript 使事情变得容易)。
一个变量可以有 2 个状态,“未定义”或有一些东西,在 SQl 中的 null 是一种值,也就是说,如果你的变量有 null 它被定义并且有一些东西,除了一些东西 :P ,未定义意味着您的变量尚未定义,这一事实很奇怪,尤其是因为 null == undefined 响应为真。
现在,当您使用 js 搜索元素但找不到它(例如 document.getElementById("inpt"))时,它的值为 null,如果找到它,则询问它的值,如果它没有没有它回答“”。
有趣的部分是,如果你解决了很多问题,那么简单。
如果您不转译您的 JS 代码(例如使用 Babel),“==”操作比使用“===”的类型检查更快,因此如果您的代码将被多次使用(它是架构或某些库)最好使用“==”,因为您不会通过类型过滤器。在所有其他情况下(绝大多数),最好使用带有“===”的类型检查来避免意外结果。
让我们澄清概念:
JavaScript 中的每个变量都有一个类型和一个值。
在 JavaScript 中有一种叫做coercion的东西。强制转换是 JavaScript 引擎为了尝试对不同类型的值进行操作而执行的一种自动(和隐式)转换。例如:
由于 value1 是string类型, value2 是number类型,JavaScript 会自动转换第二个值以尝试求和。这样,变量的值
suma
将是string类型:结论
运算符
==
比较两个值,不考虑类型。也就是说,它先强制然后比较。如果转换后的值相同,则返回该值true
。运算符仅在值和类型匹配的情况下
===
返回。true
说明:这仅适用于 6 种原始类型。