| route-pattern | /:user_id/:repository |
| route-controller | files |
| route-action | disambiguate |
| fetch-nonce | v2:4b1ce352-8c32-2940-89c2-b63d09143116 |
| current-catalog-service-hash | f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb |
| request-id | CA92:359E0B:840A50:A8BFB2:697FB32D |
| html-safe-nonce | d0f1c9b4c06ff52b7daaca5d448150866d323cff4052ba12e957557f93370e8f |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDQTkyOjM1OUUwQjo4NDBBNTA6QThCRkIyOjY5N0ZCMzJEIiwidmlzaXRvcl9pZCI6IjMwNzYwMzA5MDAyODMwOTM4MDUiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 4dcba9cc01a57e1b1a0992427a7a0ec7053816674b2d1e15c18a14c44ccbf88c |
| hovercard-subject-tag | repository:530294264 |
| github-keyboard-shortcuts | repository,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | // |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/ECMAScript2k/wtfjs |
| twitter:image | https://opengraph.githubassets.com/d41955c3782a539e8c795b8eb27c2b23188d0faacc06ba5ad6a919f16c00c8c8/ECMAScript2k/wtfjs |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/d41955c3782a539e8c795b8eb27c2b23188d0faacc06ba5ad6a919f16c00c8c8/ECMAScript2k/wtfjs |
| og:image:alt | 🤪 A list of funny and tricky JavaScript examples. Contribute to ECMAScript2k/wtfjs development by creating an account on GitHub. |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | 60279d4097367e16897439d16d6bbe4180663db828c666eeed2656988ffe59f6 |
| turbo-cache-control | no-preview |
| go-import | github.com/ECMAScript2k/wtfjs git https://github.com/ECMAScript2k/wtfjs.git |
| octolytics-dimension-user_id | 111299978 |
| octolytics-dimension-user_login | ECMAScript2k |
| octolytics-dimension-repository_id | 530294264 |
| octolytics-dimension-repository_nwo | ECMAScript2k/wtfjs |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | true |
| octolytics-dimension-repository_parent_id | 97249406 |
| octolytics-dimension-repository_parent_nwo | denysdovhan/wtfjs |
| octolytics-dimension-repository_network_root_id | 97249406 |
| octolytics-dimension-repository_network_root_nwo | denysdovhan/wtfjs |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 7c85641c598ad130c74f7bcc27f58575cac69551 |
| ui-target | canary-1 |
| theme-color | #1e2327 |
| color-scheme | light dark |
| Skip to content | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#start-of-content |
|
| https://patch-diff.githubusercontent.com/ |
|
Sign in
| https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2FECMAScript2k%2Fwtfjs |
| GitHub CopilotWrite better code with AI | https://github.com/features/copilot |
| GitHub SparkBuild and deploy intelligent apps | https://github.com/features/spark |
| GitHub ModelsManage and compare prompts | https://github.com/features/models |
| MCP RegistryNewIntegrate external tools | https://github.com/mcp |
| ActionsAutomate any workflow | https://github.com/features/actions |
| CodespacesInstant dev environments | https://github.com/features/codespaces |
| IssuesPlan and track work | https://github.com/features/issues |
| Code ReviewManage code changes | https://github.com/features/code-review |
| GitHub Advanced SecurityFind and fix vulnerabilities | https://github.com/security/advanced-security |
| Code securitySecure your code as you build | https://github.com/security/advanced-security/code-security |
| Secret protectionStop leaks before they start | https://github.com/security/advanced-security/secret-protection |
| Why GitHub | https://github.com/why-github |
| Documentation | https://docs.github.com |
| Blog | https://github.blog |
| Changelog | https://github.blog/changelog |
| Marketplace | https://github.com/marketplace |
| View all features | https://github.com/features |
| Enterprises | https://github.com/enterprise |
| Small and medium teams | https://github.com/team |
| Startups | https://github.com/enterprise/startups |
| Nonprofits | https://github.com/solutions/industry/nonprofits |
| App Modernization | https://github.com/solutions/use-case/app-modernization |
| DevSecOps | https://github.com/solutions/use-case/devsecops |
| DevOps | https://github.com/solutions/use-case/devops |
| CI/CD | https://github.com/solutions/use-case/ci-cd |
| View all use cases | https://github.com/solutions/use-case |
| Healthcare | https://github.com/solutions/industry/healthcare |
| Financial services | https://github.com/solutions/industry/financial-services |
| Manufacturing | https://github.com/solutions/industry/manufacturing |
| Government | https://github.com/solutions/industry/government |
| View all industries | https://github.com/solutions/industry |
| View all solutions | https://github.com/solutions |
| AI | https://github.com/resources/articles?topic=ai |
| Software Development | https://github.com/resources/articles?topic=software-development |
| DevOps | https://github.com/resources/articles?topic=devops |
| Security | https://github.com/resources/articles?topic=security |
| View all topics | https://github.com/resources/articles |
| Customer stories | https://github.com/customer-stories |
| Events & webinars | https://github.com/resources/events |
| Ebooks & reports | https://github.com/resources/whitepapers |
| Business insights | https://github.com/solutions/executive-insights |
| GitHub Skills | https://skills.github.com |
| Documentation | https://docs.github.com |
| Customer support | https://support.github.com |
| Community forum | https://github.com/orgs/community/discussions |
| Trust center | https://github.com/trust-center |
| Partners | https://github.com/partners |
| GitHub SponsorsFund open source developers | https://github.com/sponsors |
| Security Lab | https://securitylab.github.com |
| Maintainer Community | https://maintainers.github.com |
| Accelerator | https://github.com/accelerator |
| Archive Program | https://archiveprogram.github.com |
| Topics | https://github.com/topics |
| Trending | https://github.com/trending |
| Collections | https://github.com/collections |
| Enterprise platformAI-powered developer platform | https://github.com/enterprise |
| GitHub Advanced SecurityEnterprise-grade security features | https://github.com/security/advanced-security |
| Copilot for BusinessEnterprise-grade AI features | https://github.com/features/copilot/copilot-business |
| Premium SupportEnterprise-grade 24/7 support | https://github.com/premium-support |
| Pricing | https://github.com/pricing |
| Search syntax tips | https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax |
| documentation | https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax |
|
Sign in
| https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2FECMAScript2k%2Fwtfjs |
|
Sign up
| https://patch-diff.githubusercontent.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&source=header-repo&source_repo=ECMAScript2k%2Fwtfjs |
| Reload | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs |
| Reload | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs |
| Reload | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs |
|
ECMAScript2k
| https://patch-diff.githubusercontent.com/ECMAScript2k |
| wtfjs | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs |
| denysdovhan/wtfjs | https://patch-diff.githubusercontent.com/denysdovhan/wtfjs |
|
Notifications
| https://patch-diff.githubusercontent.com/login?return_to=%2FECMAScript2k%2Fwtfjs |
|
Fork
0
| https://patch-diff.githubusercontent.com/login?return_to=%2FECMAScript2k%2Fwtfjs |
|
Star
0
| https://patch-diff.githubusercontent.com/login?return_to=%2FECMAScript2k%2Fwtfjs |
| bit.ly/wtfjavascript | http://bit.ly/wtfjavascript |
|
WTFPL license
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/LICENSE |
|
0
stars
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/stargazers |
|
2.7k
forks
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/forks |
|
Branches
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/branches |
|
Tags
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/tags |
|
Activity
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/activity |
|
Star
| https://patch-diff.githubusercontent.com/login?return_to=%2FECMAScript2k%2Fwtfjs |
|
Notifications
| https://patch-diff.githubusercontent.com/login?return_to=%2FECMAScript2k%2Fwtfjs |
|
Code
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs |
|
Pull requests
0
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/pulls |
|
Actions
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/actions |
|
Projects
0
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/projects |
|
Security
0
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/security |
|
Insights
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/pulse |
|
Code
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs |
|
Pull requests
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/pulls |
|
Actions
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/actions |
|
Projects
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/projects |
|
Security
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/security |
|
Insights
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/pulse |
| Branches | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/branches |
| Tags | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/tags |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/branches |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/tags |
| 427 Commits | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/commits/master/ |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/commits/master/ |
| .github | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/tree/master/.github |
| .github | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/tree/master/.github |
| .husky | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/tree/master/.husky |
| .husky | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/tree/master/.husky |
| .editorconfig | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/.editorconfig |
| .editorconfig | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/.editorconfig |
| .gitignore | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/.gitignore |
| .gitignore | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/.gitignore |
| CONTRIBUTING.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/CONTRIBUTING.md |
| CONTRIBUTING.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/CONTRIBUTING.md |
| LICENSE | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/LICENSE |
| LICENSE | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/LICENSE |
| README-fr-fr.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-fr-fr.md |
| README-fr-fr.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-fr-fr.md |
| README-hi.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-hi.md |
| README-hi.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-hi.md |
| README-it-it.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-it-it.md |
| README-it-it.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-it-it.md |
| README-kr.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-kr.md |
| README-kr.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-kr.md |
| README-pl-pl.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-pl-pl.md |
| README-pl-pl.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-pl-pl.md |
| README-pt-br.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-pt-br.md |
| README-pt-br.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-pt-br.md |
| README-si.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-si.md |
| README-si.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-si.md |
| README-zh-cn.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-zh-cn.md |
| README-zh-cn.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-zh-cn.md |
| README.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README.md |
| README.md | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README.md |
| package-lock.json | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/package-lock.json |
| package-lock.json | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/package-lock.json |
| package.json | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/package.json |
| package.json | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/package.json |
| wtfjs.js | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/wtfjs.js |
| wtfjs.js | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/wtfjs.js |
| README | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs |
| Contributing | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs |
| License | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs |
| https://stand-with-ukraine.pp.ua/ |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#what-the-fck-javascript |
| http://www.wtfpl.net |
| https://npmjs.org/package/wtfjs |
| https://patreon.com/denysdovhan |
| https://patreon.com/denysdovhan |
| Brian Leroux | https://twitter.com/brianleroux |
| “WTFJS” at dotJS 2012 | https://www.youtube.com/watch?v=et8xNAc2ic8 |
| https://www.youtube.com/watch?v=et8xNAc2ic8 |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#node-packaged-manuscript |
| https://github.com/denysdovhan/wtfjs | https://github.com/denysdovhan/wtfjs |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#translations |
| 中文 | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-zh-cn.md |
| हिंदी | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-hi.md |
| Français | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-fr-fr.md |
| Português do Brasil | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-pt-br.md |
| Polski | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-pl-pl.md |
| Italiano | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-it-it.md |
| Russian | https://habr.com/ru/company/mailru/blog/335292/ |
| 한국어 | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/blob/master/README-kr.md |
| Help translating to your language | https://github.com/denysdovhan/wtfjs/blob/master/CONTRIBUTING.md#translations |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#table-of-contents |
| 💪🏻 Motivation | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-motivation |
| ✍🏻 Notation | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-notation |
| 👀 Examples | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-examples |
| [] is equal ![] | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-is-equal- |
| true is not equal ![], but not equal [] too | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#true-is-not-equal--but-not-equal--too |
| true is false | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#true-is-false |
| baNaNa | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#banana |
| NaN is not a NaN | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#nan-is-not-a-nan |
| Object.is() and === weird cases | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#objectis-and--weird-cases |
| It's a fail | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#its-a-fail |
| [] is truthy, but not true | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-is-truthy-but-not-true |
| null is falsy, but not false | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#null-is-falsy-but-not-false |
| document.all is an object, but it is undefined | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#documentall-is-an-object-but-it-is-undefined |
| Minimal value is greater than zero | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#minimal-value-is-greater-than-zero |
| function is not a function | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#function-is-not-a-function |
| Adding arrays | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#adding-arrays |
| Trailing commas in array | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#trailing-commas-in-array |
| Array equality is a monster | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#array-equality-is-a-monster |
| undefined and Number | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#undefined-and-number |
| parseInt is a bad guy | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#parseint-is-a-bad-guy |
| Math with true and false | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#math-with-true-and-false |
| HTML comments are valid in JavaScript | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#html-comments-are-valid-in-javascript |
| NaN is not a number | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#nan-is-not-a-number |
| [] and null are objects | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-and-null-are-objects |
| Magically increasing numbers | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#magically-increasing-numbers |
| Precision of 0.1 + 0.2 | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#precision-of-01--02 |
| Patching numbers | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#patching-numbers |
| Comparison of three numbers | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#comparison-of-three-numbers |
| Funny math | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#funny-math |
| Addition of RegExps | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#addition-of-regexps |
| Strings aren't instances of String | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#strings-arent-instances-of-string |
| Calling functions with backticks | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#calling-functions-with-backticks |
| Call call call | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#call-call-call |
| A constructor property | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#a-constructor-property |
| Object as a key of object's property | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#object-as-a-key-of-objects-property |
| Accessing prototypes with __proto__ | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#accessing-prototypes-with-__proto__ |
| `${{Object}}` | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-object- |
| Destructuring with default values | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#destructuring-with-default-values |
| Dots and spreading | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#dots-and-spreading |
| Labels | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#labels |
| Nested labels | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#nested-labels |
| Insidious try..catch | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#insidious-trycatch |
| Is this multiple inheritance? | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#is-this-multiple-inheritance |
| A generator which yields itself | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#a-generator-which-yields-itself |
| A class of class | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#a-class-of-class |
| Non-coercible objects | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#non-coercible-objects |
| Tricky arrow functions | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#tricky-arrow-functions |
| Arrow functions can not be a constructor | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#arrow-functions-can-not-be-a-constructor |
| arguments and arrow functions | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#arguments-and-arrow-functions |
| Tricky return | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#tricky-return |
| Chaining assignments on object | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#chaining-assignments-on-object |
| Accessing object properties with arrays | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#accessing-object-properties-with-arrays |
| Number.toFixed() display different numbers | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#numbertofixed-display-different-numbers |
| Math.max() less than Math.min() | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#mathmax-less-than-mathmin |
| Comparing null to 0 | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#comparing-null-to-0 |
| Same variable redeclaration | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#same-variable-redeclaration |
| Default behavior Array.prototype.sort() | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#default-behavior-arrayprototypesort |
| resolve() won't return Promise instance | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#resolve-wont-return-promise-instance |
| {}{} is undefined | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-is-undefined |
| arguments binding | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#arguments-binding |
| An alert from hell | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#an-alert-from-hell |
| An infinite timeout | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#an-infinite-timeout |
| A setTimeout object | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#a-settimeout-object |
| Double dot | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#double-dot |
| Extra Newness | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#extra-newness |
| Why you should use semicolons | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#why-you-should-use-semicolons |
| Split a string by a space | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#split-a-string-by-a-space |
| A stringified string | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#a-stringified-string |
| Non-strict comparison of a number to true | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#non-strict-comparison-of-a-number-to-true |
| 📚 Other resources | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-other-resources |
| 🤝 Supporting | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-supporting |
| 🎓 License | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-license |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-motivation |
| “Just for Fun: The Story of an Accidental Revolutionary” | https://en.wikipedia.org/wiki/Just_for_Fun |
| consider supporting the author of this collection | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-supporting |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-notation |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-examples |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-is-equal- |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation |
| [] is truthy, but not true | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-is-truthy-but-not-true |
| 12.5.9 Logical NOT Operator (!) | https://www.ecma-international.org/ecma-262/#sec-logical-not-operator |
| 7.2.15 Abstract Equality Comparison | https://262.ecma-international.org/11.0/index.html#sec-abstract-equality-comparison |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#true-is-not-equal--but-not-equal--too |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-1 |
| 7.2.15 Abstract Equality Comparison | https://262.ecma-international.org/11.0/index.html#sec-abstract-equality-comparison |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#true-is-false |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-2 |
| 7.2.15 Abstract Equality Comparison | https://262.ecma-international.org/11.0/index.html#sec-abstract-equality-comparison |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#banana |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-3 |
| 12.8.3 The Addition Operator (+) | https://www.ecma-international.org/ecma-262/#sec-addition-operator-plus |
| 12.5.6 Unary + Operator | https://www.ecma-international.org/ecma-262/#sec-unary-plus-operator |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#nan-is-not-a-nan |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-4 |
| 7.2.14 Strict Equality Comparison | https://www.ecma-international.org/ecma-262/#sec-strict-equality-comparison |
| “What is the rationale for all comparisons returning false for IEEE754 NaN values?” | https://stackoverflow.com/questions/1565164/1573715#1573715 |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#objectis-and--weird-cases |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-5 |
| Here are the TC39 specs about Object.is | https://tc39.es/ecma262/#sec-object.is |
| Equality comparisons and sameness | https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#its-a-fail |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-6 |
| Brainfuck beware: JavaScript is after you! | http://patriciopalladino.com/blog/2012/08/09/non-alphanumeric-javascript.html |
| Writing a sentence without using the Alphabet | https://bluewings.github.io/en/writing-a-sentence-without-using-the-alphabet/#weird-javascript-generator |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-is-truthy-but-not-true |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-7 |
| 12.5.9 Logical NOT Operator (!) | https://www.ecma-international.org/ecma-262/#sec-logical-not-operator |
| 7.2.15 Abstract Equality Comparison | https://262.ecma-international.org/11.0/index.html#sec-abstract-equality-comparison |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#null-is-falsy-but-not-false |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-8 |
| 7.2.15 Abstract Equality Comparison | https://262.ecma-international.org/11.0/index.html#sec-abstract-equality-comparison |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#documentall-is-an-object-but-it-is-undefined |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-9 |
| Strict Equality Comparison | https://www.ecma-international.org/ecma-262/#sec-strict-equality-comparison |
| Abstract Equality Comparison | https://262.ecma-international.org/11.0/index.html#sec-abstract-equality-comparison |
| “Obsolete features - document.all” | https://html.spec.whatwg.org/multipage/obsolete.html#dom-document-all |
| “Chapter 4 - ToBoolean - Falsy values” | https://github.com/getify/You-Dont-Know-JS/blob/0d79079b61dad953bbfde817a5893a49f7e889fb/types%20%26%20grammar/ch4.md#falsy-objects |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#minimal-value-is-greater-than-zero |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-10 |
| “Why is 0 less than Number.MIN_VALUE in JavaScript?” | https://stackoverflow.com/questions/26614728/why-is-0-less-than-number-min-value-in-javascript |
| 20.1.2.9 Number.MIN_VALUE | https://www.ecma-international.org/ecma-262/#sec-number.min_value |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#function-is-not-a-function |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-11 |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#super-constructor-null-of-foo-is-not-a-constructor |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-12 |
| An explanation of this issue | https://github.com/denysdovhan/wtfjs/pull/102#discussion_r259143582 |
| @geekjob | https://github.com/geekjob |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#adding-arrays |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-13 |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#trailing-commas-in-array |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-14 |
| Trailing commas | https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Trailing_commas |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#array-equality-is-a-monster |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-15 |
| 7.2.15 Abstract Equality Comparison | https://262.ecma-international.org/11.0/index.html#sec-abstract-equality-comparison |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#undefined-and-number |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-16 |
| 20.1.1 The Number Constructor | https://www.ecma-international.org/ecma-262/#sec-number-constructor |
| 7.1.3 ToNumber(argument) | https://www.ecma-international.org/ecma-262/#sec-tonumber |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#parseint-is-a-bad-guy |
| “parseInt(null, 24) === 23… wait, what?” | https://stackoverflow.com/questions/6459758/parseintnull-24-23-wait-what |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#math-with-true-and-false |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-17 |
| 12.5.6 Unary + Operator | https://www.ecma-international.org/ecma-262/#sec-unary-plus-operator |
| 12.8.3 The Addition Operator (+) | https://www.ecma-international.org/ecma-262/#sec-addition-operator-plus |
| 7.1.3 ToNumber(argument) | https://www.ecma-international.org/ecma-262/#sec-tonumber |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#html-comments-are-valid-in-javascript |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-18 |
| B.1.3 HTML-like Comments | https://www.ecma-international.org/ecma-262/#sec-html-like-comments |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#nan-is-not-a-number |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-19 |
| 12.5.5 The typeof Operator | https://www.ecma-international.org/ecma-262/#sec-typeof-operator |
| 12.10.4 Runtime Semantics: InstanceofOperator(O,C) | https://www.ecma-international.org/ecma-262/#sec-instanceofoperator |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-and-null-are-objects |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-20 |
| 13.5.3 The typeof Operator | https://262.ecma-international.org/12.0/#sec-typeof-operator |
| Table 37: typeof Operator Results | https://262.ecma-international.org/12.0/#table-typeof-operator-results |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#magically-increasing-numbers |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-21 |
| 6.1.6 The Number Type | https://www.ecma-international.org/ecma-262/#sec-ecmascript-language-types-number-type |
| IEEE 754 | https://en.wikipedia.org/wiki/IEEE_754 |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#precision-of-01--02 |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-22 |
| ”Is floating point math broken?” | https://stackoverflow.com/questions/588004/is-floating-point-math-broken |
| 0.30000000000000004.com | http://0.30000000000000004.com/ |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#patching-numbers |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-23 |
| 20.1 Number Objects | https://www.ecma-international.org/ecma-262/#sec-number-objects |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#comparison-of-three-numbers |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-24 |
| 12.10 Relational Operators | https://www.ecma-international.org/ecma-262/#sec-relational-operators |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#funny-math |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-25 |
| 12.8.3 The Addition Operator (+) | https://www.ecma-international.org/ecma-262/#sec-addition-operator-plus |
| 7.1.1 ToPrimitive(input [,PreferredType]) | https://www.ecma-international.org/ecma-262/#sec-toprimitive |
| 7.1.12 ToString(argument) | https://www.ecma-international.org/ecma-262/#sec-tostring |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#addition-of-regexps |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-26 |
| 21.2.5.10 get RegExp.prototype.source | https://www.ecma-international.org/ecma-262/#sec-get-regexp.prototype.source |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#strings-arent-instances-of-string |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-27 |
| 21.1.1 The String Constructor | https://www.ecma-international.org/ecma-262/#sec-string-constructor |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#calling-functions-with-backticks |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-28 |
| magic behind | http://mxstbr.blog/2016/11/styled-components-magic-explained/ |
| 💅 styled-components | https://www.styled-components.com/ |
| 12.3.7 Tagged Templates | https://www.ecma-international.org/ecma-262/#sec-tagged-templates |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#call-call-call |
| @cramforce | http://twitter.com/cramforce |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-29 |
| 19.2.3.3 Function.prototype.call(thisArg, ...args) | https://www.ecma-international.org/ecma-262/#sec-function.prototype.call |
| **19.2.3.1 ** Function.prototype.apply(thisArg, argArray) | https://www.ecma-international.org/ecma-262/#sec-function.prototype.apply |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#a-constructor-property |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-30 |
| Object.prototype.constructor | https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor |
| 19.1.3.1 Object.prototype.constructor | https://www.ecma-international.org/ecma-262/#sec-object.prototype.constructor |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#object-as-a-key-of-objects-property |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-31 |
| Object initializer | https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer |
| 12.2.6 Object Initializer | http://www.ecma-international.org/ecma-262/6.0/#sec-object-initializer |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#accessing-prototypes-with-__proto__ |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-32 |
| B.2.2.1 Object.prototype.proto | https://www.ecma-international.org/ecma-262/#sec-object.prototype.__proto__ |
| 7.1.13 ToObject(argument) | https://www.ecma-international.org/ecma-262/#sec-toobject |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#object |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-33 |
| 12.2.9 Template Literals | https://www.ecma-international.org/ecma-262/#sec-template-literals |
| Object initializer | https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#destructuring-with-default-values |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-34 |
| Object initializer | https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#dots-and-spreading |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-35 |
| spread operator | http://www.ecma-international.org/ecma-262/6.0/#sec-array-initializer |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#labels |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-36 |
| 13.13 Labelled Statements | https://tc39.github.io/ecma262/#sec-labelled-statements |
| Labeled statements | https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#nested-labels |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-37 |
| 12.16 Comma Operator (,) | https://www.ecma-international.org/ecma-262/#sec-comma-operator |
| 13.13 Labelled Statements | https://tc39.github.io/ecma262/#sec-labelled-statements |
| Labeled statements | https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#insidious-trycatch |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-38 |
| 13.15 The try Statement | https://www.ecma-international.org/ecma-262/#sec-try-statement |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#is-this-multiple-inheritance |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-39 |
| 14.5 Class Definitions | https://www.ecma-international.org/ecma-262/#sec-class-definitions |
| 12.16 Comma Operator (,) | https://www.ecma-international.org/ecma-262/#sec-comma-operator |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#a-generator-which-yields-itself |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-40 |
| 25 Control Abstraction Objects | https://www.ecma-international.org/ecma-262/#sec-control-abstraction-objects |
| 25.3 Generator Objects | https://www.ecma-international.org/ecma-262/#sec-generator-objects |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#a-class-of-class |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-41 |
| 14.3 Method Definitions | https://www.ecma-international.org/ecma-262/#sec-method-definitions |
| 14.5 Class Definitions | https://www.ecma-international.org/ecma-262/#sec-class-definitions |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#non-coercible-objects |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-42 |
| A gist by Sergey Rubanov | https://gist.github.com/chicoxyzzy/5dd24608e886adf5444499896dff1197 |
| 6.1.5.1 Well-Known Symbols | https://www.ecma-international.org/ecma-262/#sec-well-known-symbols |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#tricky-arrow-functions |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-43 |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#arrow-functions-can-not-be-a-constructor |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-44 |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#arguments-and-arrow-functions |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-45 |
| Arrow functions | https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#tricky-return |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-46 |
| 11.9.1 Rules of Automatic Semicolon Insertion | https://www.ecma-international.org/ecma-262/#sec-rules-of-automatic-semicolon-insertion |
| 13.10 The return Statement | https://www.ecma-international.org/ecma-262/#sec-return-statement |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#chaining-assignments-on-object |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-47 |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#accessing-object-properties-with-arrays |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-48 |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#numbertofixed-display-different-numbers |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-49 |
| 20.1.3.3 Number.prototype.toFixed (fractionDigits) | https://www.ecma-international.org/ecma-262//#sec-number.prototype.tofixed |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#mathmax-less-than-mathmin |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-50 |
| 15.8.2.11 Math.max | https://262.ecma-international.org/5.1/#sec-15.8.2.11 |
| 15.8.2.11 Math.min | https://262.ecma-international.org/5.1/#sec-15.8.2.12 |
| Why is Math.max() less than Math.min()? | https://charlieharvey.org.uk/page/why_math_max_is_less_than_math_min |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#comparing-null-to-0 |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-51 |
| 7.2.12 Abstract Relational Comparison | https://www.ecma-international.org/ecma-262/#sec-abstract-relational-comparison |
| 7.2.15 Abstract Equality Comparison | https://262.ecma-international.org/11.0/index.html#sec-abstract-equality-comparison |
| An in-depth explanation | https://blog.campvanilla.com/javascript-the-curious-case-of-null-0-7b131644e274 |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#same-variable-redeclaration |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-52 |
| 13.3.2 Variable Statement | https://www.ecma-international.org/ecma-262/#sec-variable-statement |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#default-behavior-arrayprototypesort |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-53 |
| 22.1.3.25 Array.prototype.sort ( comparefn ) | https://www.ecma-international.org/ecma-262/#sec-array.prototype.sort |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#hint |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#resolve-wont-return-promise-instance |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-54 |
| Promise.resolve() on MDN | https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve |
| ECMAScript 25.6.1.3.2 Promise Resolve Functions | https://tc39.es/ecma262/#sec-promise-resolve-functions |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-is-undefined |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-55 |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#arguments-binding |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-56 |
| The arguments object | https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#an-alert-from-hell |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-57 |
| Martin Kleppe tweet about it | https://twitter.com/aemkei/status/897172907222237185 |
| JavaScript character escape sequences | https://mathiasbynens.be/notes/javascript-escapes#octal |
| Multi-Line JavaScript Strings | https://davidwalsh.name/multiline-javascript-strings |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#an-infinite-timeout |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-58 |
| WindowOrWorkerGlobalScope.setTimeout() | https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout |
| Node.js Documentation on Timers | https://nodejs.org/api/timers.html#timers_settimeout_callback_delay_args |
| Timers | https://www.w3.org/TR/2011/WD-html5-20110525/timers.html |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#a-settimeout-object |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-59 |
| eval() | https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval |
| WindowOrWorkerGlobalScope.setTimeout() | https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout |
| Content Security Policy | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy |
| Timers | https://www.w3.org/TR/2011/WD-html5-20110525/timers.html |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#double-dot |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-60 |
| Usage of toString in JavaScript | https://stackoverflow.com/questions/6853865/usage-of-tostring-in-javascript/6853910#6853910 |
| Why does 10..toString() work, but 10.toString() does not? | https://stackoverflow.com/questions/13149282/why-does-10-tostring-work-but-10-tostring-does-not/13149301#13149301 |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#extra-newness |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-61 |
| Class Extends Function: Extra Newness | https://github.com/denysdovhan/wtfjs/issues/78 |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#why-you-should-use-semicolons |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-62 |
| An original tweet with an example | https://twitter.com/SeaRyanC/status/1148726605222535168 |
| TC39 meeting when they debated about it | https://github.com/tc39/notes/blob/master/meetings/2017-09/sept-26.md |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#split-a-string-by-a-space |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-63 |
| 22.1.3.21 String.prototype.split | https://tc39.es/ecma262/#sec-string.prototype.split |
| An original tween with an example | https://twitter.com/SeaRyanC/status/1331656278104440833 |
| A tween with an explanation | https://twitter.com/kl13nt/status/1331742810932916227?s=20 |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#a-stringified-string |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-64 |
| ECMA-404 The JSON Data Interchange Standard. | https://www.json.org/json-en.html |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#non-strict-comparison-of-a-number-to-true |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-explanation-65 |
| 7.2.15 Abstract Equality Comparison | https://262.ecma-international.org/11.0/index.html#sec-abstract-equality-comparison |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-other-resources |
| wtfjs.com | http://wtfjs.com/ |
| Wat | https://www.destroyallsoftware.com/talks/wat |
| What the... JavaScript? | https://www.youtube.com/watch?v=2pL28CcEijU |
| Zeros in JavaScript | http://zero.milosz.ca/ |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-supporting |
| Become a patron | https://patreon.com/denysdovhan |
| https://patreon.com/denysdovhan |
| Buy me a cup of ☕️ or 🥤 | https://patreon.com/denysdovhan |
| https://buymeacoffee.com/denysdovhan |
| https://user-images.githubusercontent.com/3459374/107130426-0ae4f800-68d6-11eb-9b86-15bf33467615.png |
| https://user-images.githubusercontent.com/3459374/107130370-55b24000-68d5-11eb-93f5-075355c7fcd4.png |
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#-license |
| http://www.wtfpl.net |
| Denys Dovhan | http://denysdovhan.com |
| bit.ly/wtfjavascript | http://bit.ly/wtfjavascript |
|
Readme
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#readme-ov-file |
|
WTFPL license
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#WTFPL-1-ov-file |
|
Contributing
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs#contributing-ov-file |
| Please reload this page | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs |
|
Activity | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/activity |
|
Custom properties | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/custom-properties |
|
0
stars | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/stargazers |
|
0
watching | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/watchers |
|
0
forks | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/forks |
|
Report repository
| https://patch-diff.githubusercontent.com/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2FECMAScript2k%2Fwtfjs&report=ECMAScript2k+%28user%29 |
| Releases | https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/releases |
|
39
tags
| https://patch-diff.githubusercontent.com/ECMAScript2k/wtfjs/tags |
| Packages
0 | https://patch-diff.githubusercontent.com/orgs/ECMAScript2k/packages?repo_name=wtfjs |
|
| https://github.com |
| Terms | https://docs.github.com/site-policy/github-terms/github-terms-of-service |
| Privacy | https://docs.github.com/site-policy/privacy-policies/github-privacy-statement |
| Security | https://github.com/security |
| Status | https://www.githubstatus.com/ |
| Community | https://github.community/ |
| Docs | https://docs.github.com/ |
| Contact | https://support.github.com?tags=dotcom-footer |