gpt4 book ai didi

javascript - Jslint:太严格了? == 和 === 之间的区别

转载 作者:行者123 更新时间:2023-11-28 11:08:46 25 4
gpt4 key购买 nike

Possible Duplicate:
Javascript === vs == : Does it matter which “equal” operator I use?

当我用 JSLINT 检查我的代码时,它充满了错误...即使在 Ie6 中它也能完美工作,但由于某种原因,因为我不是一个优雅的编码器,我遇到了超过 100 个错误...

所以我想学习如何更好地编写代码,没有错误...但是当我使用 JSLINT 给我的一些建议时,就像用 === 替换 == 一样,我做到了,但没有任何效果。 .

所以我的问题是:我们是否必须严格遵循所有 JSLINT 建议?

最佳答案

JSLint 测试由 Douglas Crockford 创建的专业 Javascript 子集。从本质上讲,他寻求只从 JavaScript 语言中提取“好的部分”,以使程序员的生活更轻松,并使代码更清晰和可预测。所以,简短的回答是否定的。您不必遵循说明。完全有效的 JavaScript 代码将会并且确实会导致 JSLint 始终失败。

但长远的答案是,从长远来看,如果你这样做,你的生活将会变得更加轻松。

以 === 与 == 为例。区别在于平等测试与同一性测试。或者,正如克罗克福德在他的书中所说,JavaScript: The Good Parts :

JavaScript has two sets of equality operators: === and !==, and their evil twins == and !=. The good ones work the way you would expect. If the two operands are the same type and have the same value, then === produces true and !== produces false. The evil twins do the right thing when the operands are of the same type, but if they are of different types, they attempt to coerce the values. The rules by which they do that are complicated and unmemorable.

因此,如果您使用 === 而不是 ==,您的代码几乎总是会按照您的预期执行,只需为键入额外的字符付出很小的代价。但是,如果您使用 == 并且操作数不是同一类型(例如字符串和整数),JavaScript 会首先将这些值转换为相同类型,然后对它们进行比较。他们可能不会做你想要或你期望的事。而且,由于在 JavaScript 中,您经常处理从 DOM 引入的元素(这些元素以字符串形式出现),因此您总是会遇到字符串转换问题。

正如 Crockford 所写,以下是您可能遇到的一些问题:

'' == '0'   => false
0 == '' => true
0 == '0' => true

false == 'false' => false
false == '0' => true

古怪,是吗? JavaScript: The Good Parts是一本很棒的书,超薄,如果您已经使用 JavaScript 一段时间,它会更好地改变您的编码方式。如果你像一名优秀的海军陆战队员一样低下头,JSLint 也会如此。

所以。答案很长?不。您不必执行 JSLint 告诉您的所有操作。但你应该这样做。

关于javascript - Jslint:太严格了? == 和 === 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5474260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com