Comments (12)
I'd really prefer the clarity of 2 over the compressibility of 1.
from contribute.jquery.org.
Options x !== x and isNaN(x) are different since isNaN('a') === true etc. I'd prefer the first one since it's not broken as isNaN. We can even implement it as jQuery.isNaN for clarity.
EDIT: @gibson042 has updated his post so I updated mine as well. ;)
from contribute.jquery.org.
Right @mzgol; I updated to the full form for an apples-to-apples comparison.
from contribute.jquery.org.
Agree with @scottgonzalez.
Also, isNaN is not broken. It just casts it to a number first:
Number('a')
// returns: NaN
+'a'
// returns: NaN
+'a' === +'a' // -> NaN === NaN
// returns: false
isNaN('a')
// returns: true
So you shouldn't call isNaN
on values that aren't numbers in general, except when ...
- There is a
typeof
check first (e.g. when one really needs a strict answer to whether it is NaN) - You don't need the
typeof
check (e.g. when one can reasonably assume it to be a number, like fromparseFloat
, or if you only care about it not being a number).
Literally speaking both strings and NaN are "not a number", in the case of old IE length issue, the condition only needed wasif ( !isNaN( len ) {
(both the typeof check and number casting would be unneeded)
from contribute.jquery.org.
Agree with @scottgonzalez https://github.com/scottgonzalez.
Also, isNaN is not broken. It is just casts it to a number first:
That's exactly why it's broken. i'd understand if it just returned true on
non-numbers but having isNaN('a') and isNaN([2, 3]) true and isNaN(''),
isNaN([2]) and isNaN([]) false doesn't make sense from a semantic point of
view.
- There is a typeof check first (e.g. when one really needs a strict
answer to whether it is NaN)
I.e. when we make sure we're outside of isNaN insanity region first. In
many cases using x !== x eliminates the need for a typeof check.
Literally speaking both strings and NaN are "not a number",
An empty string is "not a number" and yet isNaN('') is false.
from contribute.jquery.org.
In browsers that support it, we should just use Number.isNaN(n)
Edit: Chrome's Number.isNaN()
is wrong
An empty string is "not a number" and yet isNaN('') is true.
I think you meant false
from contribute.jquery.org.
http://wiki.ecmascript.org/doku.php?id=harmony:number.isnan
from contribute.jquery.org.
@rwaldron What's wrong about Chrome's Number.isNaN? :/
(and I meant false, obviously, thx for pointing out my mistake; post corrected)
from contribute.jquery.org.
Since option 1 and option 2 are 2 different things, I'm not sure why this needs to be in the style guide. If it's unclear, either we should introduce a function that provides clarity, or add a clarifying comment.
from contribute.jquery.org.
I'm not in favor of option 1 i think this is confusing and since this is used very very little i cant see how the size difference is significant enough to warrant how confusing it is. I don't think the average dev knows that NaN is the only thing thats not equal to it self .isNaN is much clearer
from contribute.jquery.org.
The strict equality check feels like a trivia challenge since most people could live their life as JS programmers not knowing NaN
is unequal to itself. Since we know it's a number at this point, it seems like isNaN()
is the most straightforward way even if it's a few more bytes. I don't think we need a style guide issue for this though, the system worked if this was discussed in code review.
from contribute.jquery.org.
At this point it's safe to say that this won't go into our style guide. I would also not expect option 1 to be added in any more places than the one place it currently exists in Sizzle.
from contribute.jquery.org.
Related Issues (20)
- Style Guide: Context-changing methods as first method call HOT 2
- CLA Checker: Show time of attempted verification HOT 3
- Wrong link to the github repository for the http://sizzlejs.com/ website HOT 9
- Update CLA check text in maintainers guide HOT 2
- Deploying command is kind of confusing HOT 10
- fresh jQuery style guide
- Clarify the need to setup Wordpress locally HOT 5
- Commits and Pull Requests: Inconsistent with current workflow HOT 6
- Document focus problems in IE HOT 2
- JS styleguide: Replacement for onevar HOT 1
- Document consistency goods with files examples HOT 5
- Prefix commit subjects with semver level HOT 23
- Please clarify documentation issues in "How to Report Bugs" -> Where to Report HOT 4
- Don't require spaces inside expression parentheses HOT 2
- Plugin contribute HOT 1
- Adopt standard module (for new projects) HOT 14
- The JavaScript Style Guide incorrectly says all projects use JSHint HOT 3
- drag actions not working on microsoft touch screen laptops HOT 1
- Delete "Verify the Author Info and CLA" section HOT 1
- CLA link redirects to OpenJS Foundation page with no CLA in evidence HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from contribute.jquery.org.