wtfjs
Version:
A list of funny and tricky JavaScript examples
1,018 lines (742 loc) • 205 kB
Markdown
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
# Table of Contents
- [What the f\*ck JavaScript?](#what-the-f%5Cck-javascript)
- [Node හි ඇසුරුම් කරන ලද අත්පිටපත](#node-%E0%B7%84%E0%B7%92-%E0%B6%87%E0%B7%83%E0%B7%94%E0%B6%BB%E0%B7%94%E0%B6%B8%E0%B7%8A-%E0%B6%9A%E0%B6%BB%E0%B6%B1-%E0%B6%BD%E0%B6%AF-%E0%B6%85%E0%B6%AD%E0%B7%8A%E0%B6%B4%E0%B7%92%E0%B6%A7%E0%B6%B4%E0%B6%AD)
- [පරිවර්තන](#%E0%B6%B4%E0%B6%BB%E0%B7%92%E0%B7%80%E0%B6%BB%E0%B7%8A%E0%B6%AD%E0%B6%B1)
- [පටුන](#%E0%B6%B4%E0%B6%A7%E0%B7%94%E0%B6%B1)
- [💪 දිරිගැන්වුම](#-%E0%B6%AF%E0%B7%92%E0%B6%BB%E0%B7%92%E0%B6%9C%E0%B7%90%E0%B6%B1%E0%B7%8A%E0%B7%80%E0%B7%94%E0%B6%B8)
- [✍🏻 අංකනය](#-%E0%B6%85%E0%B6%82%E0%B6%9A%E0%B6%B1%E0%B6%BA)
- [👀 උදාහරණ](#-%E0%B6%8B%E0%B6%AF%E0%B7%8F%E0%B7%84%E0%B6%BB%E0%B6%AB)
- [`[]` සහ `![]` සමානය](#-%E0%B7%83%E0%B7%84--%E0%B7%83%E0%B6%B8%E0%B7%8F%E0%B6%B1%E0%B6%BA)
- [`true`, `![]`ට සම නොවේ, නමුත් `[]` ට ද සම නොවේ.](#true-%E0%B6%A7-%E0%B7%83%E0%B6%B8-%E0%B6%B1%E0%B7%9C%E0%B7%80%E0%B7%9A-%E0%B6%B1%E0%B6%B8%E0%B7%94%E0%B6%AD%E0%B7%8A--%E0%B6%A7-%E0%B6%AF-%E0%B7%83%E0%B6%B8-%E0%B6%B1%E0%B7%9C%E0%B7%80%E0%B7%9A)
- [සත්යය අසත්ය ය](#%E0%B7%83%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA-%E0%B6%85%E0%B7%83%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA-%E0%B6%BA)
- [baNaNa](#banana)
- [`NaN` යනු `NaN` නොවේ](#nan-%E0%B6%BA%E0%B6%B1%E0%B7%94-nan-%E0%B6%B1%E0%B7%9C%E0%B7%80%E0%B7%9A)
- [එය අසාර්ථකත්වයකි](#%E0%B6%91%E0%B6%BA-%E0%B6%85%E0%B7%83%E0%B7%8F%E0%B6%BB%E0%B7%8A%E0%B6%AE%E0%B6%9A%E0%B6%AD%E0%B7%8A%E0%B7%80%E0%B6%BA%E0%B6%9A%E0%B7%92)
- [`[]` සත්යමය නමුත් `true` නොවේ](#-%E0%B7%83%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%B8%E0%B6%BA-%E0%B6%B1%E0%B6%B8%E0%B7%94%E0%B6%AD%E0%B7%8A-true-%E0%B6%B1%E0%B7%9C%E0%B7%80%E0%B7%9A)
- [`null` අසත්යමය මුත් `අසත්ය` නොවේ](#null-%E0%B6%85%E0%B7%83%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%B8%E0%B6%BA-%E0%B6%B8%E0%B7%94%E0%B6%AD%E0%B7%8A-%E0%B6%85%E0%B7%83%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA-%E0%B6%B1%E0%B7%9C%E0%B7%80%E0%B7%9A)
- [`document.all` යනු වස්තුවකි, නමුත් එය අර්ථ විරහිතය.](#documentall-%E0%B6%BA%E0%B6%B1%E0%B7%94-%E0%B7%80%E0%B7%83%E0%B7%8A%E0%B6%AD%E0%B7%94%E0%B7%80%E0%B6%9A%E0%B7%92-%E0%B6%B1%E0%B6%B8%E0%B7%94%E0%B6%AD%E0%B7%8A-%E0%B6%91%E0%B6%BA-%E0%B6%85%E0%B6%BB%E0%B7%8A%E0%B6%AE-%E0%B7%80%E0%B7%92%E0%B6%BB%E0%B7%84%E0%B7%92%E0%B6%AD%E0%B6%BA)
- [අවම අගය, ශුන්යය ට වඩා විශාල ය.](#%E0%B6%85%E0%B7%80%E0%B6%B8-%E0%B6%85%E0%B6%9C%E0%B6%BA-%E0%B7%81%E0%B7%94%E0%B6%B1%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA-%E0%B6%A7-%E0%B7%80%E0%B6%A9%E0%B7%8F-%E0%B7%80%E0%B7%92%E0%B7%81%E0%B7%8F%E0%B6%BD-%E0%B6%BA)
- [කෘත්යය, කෘත්යයක් නොවේ](#%E0%B6%9A%E0%B7%98%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA-%E0%B6%9A%E0%B7%98%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA%E0%B6%9A%E0%B7%8A-%E0%B6%B1%E0%B7%9C%E0%B7%80%E0%B7%9A)
- [අරාවන් ආකලනය](#%E0%B6%85%E0%B6%BB%E0%B7%8F%E0%B7%80%E0%B6%B1%E0%B7%8A-%E0%B6%86%E0%B6%9A%E0%B6%BD%E0%B6%B1%E0%B6%BA)
- [අරාවක පසුයෙදුම් කොමා](#%E0%B6%85%E0%B6%BB%E0%B7%8F%E0%B7%80%E0%B6%9A-%E0%B6%B4%E0%B7%83%E0%B7%94%E0%B6%BA%E0%B7%99%E0%B6%AF%E0%B7%94%E0%B6%B8%E0%B7%8A-%E0%B6%9A%E0%B7%9C%E0%B6%B8%E0%B7%8F)
- [අරාවන් සැසඳීම යක්ෂයෙකි](#%E0%B6%85%E0%B6%BB%E0%B7%8F%E0%B7%80%E0%B6%B1%E0%B7%8A-%E0%B7%83%E0%B7%90%E0%B7%83%E0%B6%B3%E0%B7%93%E0%B6%B8-%E0%B6%BA%E0%B6%9A%E0%B7%8A%E0%B7%82%E0%B6%BA%E0%B7%99%E0%B6%9A%E0%B7%92)
- [`undefined` සහ `Number`](#undefined-%E0%B7%83%E0%B7%84-number)
- [`parseInt` නරක මිනිසෙකි](#parseint-%E0%B6%B1%E0%B6%BB%E0%B6%9A-%E0%B6%B8%E0%B7%92%E0%B6%B1%E0%B7%92%E0%B7%83%E0%B7%99%E0%B6%9A%E0%B7%92)
- [Math with `true` and `false`](#math-with-true-and-false)
- [JavaScript හි HTML ටීකාවන් වලංගු ය.](#javascript-%E0%B7%84%E0%B7%92-html-%E0%B6%A7%E0%B7%93%E0%B6%9A%E0%B7%8F%E0%B7%80%E0%B6%B1%E0%B7%8A-%E0%B7%80%E0%B6%BD%E0%B6%82%E0%B6%9C%E0%B7%94-%E0%B6%BA)
- [`NaN` is ~~not~~ a number](#nan-is-not-a-number)
- [`[]` සහ `null` වස්තූන් ය.](#-%E0%B7%83%E0%B7%84-null-%E0%B7%80%E0%B7%83%E0%B7%8A%E0%B6%AD%E0%B7%96%E0%B6%B1%E0%B7%8A-%E0%B6%BA)
- [ඉන්ද්රජාලිකව වැඩිවන සංඛ්යා](#%E0%B6%89%E0%B6%B1%E0%B7%8A%E0%B6%AF%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B6%A2%E0%B7%8F%E0%B6%BD%E0%B7%92%E0%B6%9A%E0%B7%80-%E0%B7%80%E0%B7%90%E0%B6%A9%E0%B7%92%E0%B7%80%E0%B6%B1-%E0%B7%83%E0%B6%82%E0%B6%9B%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B7%8F)
- [`0.1 + 0.2` හි නිරවද්යතාව](#01--02-%E0%B7%84%E0%B7%92-%E0%B6%B1%E0%B7%92%E0%B6%BB%E0%B7%80%E0%B6%AF%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%AD%E0%B7%8F%E0%B7%80)
- [සංඛ්යා පූරණය](#%E0%B7%83%E0%B6%82%E0%B6%9B%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B7%8F-%E0%B6%B4%E0%B7%96%E0%B6%BB%E0%B6%AB%E0%B6%BA)
- [සංඛ්යා තුනක් සැසඳීම](#%E0%B7%83%E0%B6%82%E0%B6%9B%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B7%8F-%E0%B6%AD%E0%B7%94%E0%B6%B1%E0%B6%9A%E0%B7%8A-%E0%B7%83%E0%B7%90%E0%B7%83%E0%B6%B3%E0%B7%93%E0%B6%B8)
- [හාස්යජනක ගණිතය](#%E0%B7%84%E0%B7%8F%E0%B7%83%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%A2%E0%B6%B1%E0%B6%9A-%E0%B6%9C%E0%B6%AB%E0%B7%92%E0%B6%AD%E0%B6%BA)
- [සෙවුම් ප්රකාශන ආකලනය](#%E0%B7%83%E0%B7%99%E0%B7%80%E0%B7%94%E0%B6%B8%E0%B7%8A-%E0%B6%B4%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B6%9A%E0%B7%8F%E0%B7%81%E0%B6%B1-%E0%B6%86%E0%B6%9A%E0%B6%BD%E0%B6%B1%E0%B6%BA)
- [පෙළ `String` හි නිදර්ශකයක් නොවේ](#%E0%B6%B4%E0%B7%99%E0%B7%85-string-%E0%B7%84%E0%B7%92-%E0%B6%B1%E0%B7%92%E0%B6%AF%E0%B6%BB%E0%B7%8A%E0%B7%81%E0%B6%9A%E0%B6%BA%E0%B6%9A%E0%B7%8A-%E0%B6%B1%E0%B7%9C%E0%B7%80%E0%B7%9A)
- [පසුලකුණු සමඟ කෘත්යයන් ඇමතීම](#%E0%B6%B4%E0%B7%83%E0%B7%94%E0%B6%BD%E0%B6%9A%E0%B7%94%E0%B6%AB%E0%B7%94-%E0%B7%83%E0%B6%B8%E0%B6%9F-%E0%B6%9A%E0%B7%98%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA%E0%B6%B1%E0%B7%8A-%E0%B6%87%E0%B6%B8%E0%B6%AD%E0%B7%93%E0%B6%B8)
- [අමතන්න අමතන්න අමතන්න](#%E0%B6%85%E0%B6%B8%E0%B6%AD%E0%B6%B1%E0%B7%8A%E0%B6%B1-%E0%B6%85%E0%B6%B8%E0%B6%AD%E0%B6%B1%E0%B7%8A%E0%B6%B1-%E0%B6%85%E0%B6%B8%E0%B6%AD%E0%B6%B1%E0%B7%8A%E0%B6%B1)
- [තැනුම් ගුණාංගයක්](#%E0%B6%AD%E0%B7%90%E0%B6%B1%E0%B7%94%E0%B6%B8%E0%B7%8A-%E0%B6%9C%E0%B7%94%E0%B6%AB%E0%B7%8F%E0%B6%82%E0%B6%9C%E0%B6%BA%E0%B6%9A%E0%B7%8A)
- [වස්තුවක්, වස්තුවක ගුණයක යතුර ලෙස](#%E0%B7%80%E0%B7%83%E0%B7%8A%E0%B6%AD%E0%B7%94%E0%B7%80%E0%B6%9A%E0%B7%8A-%E0%B7%80%E0%B7%83%E0%B7%8A%E0%B6%AD%E0%B7%94%E0%B7%80%E0%B6%9A-%E0%B6%9C%E0%B7%94%E0%B6%AB%E0%B6%BA%E0%B6%9A-%E0%B6%BA%E0%B6%AD%E0%B7%94%E0%B6%BB-%E0%B6%BD%E0%B7%99%E0%B7%83)
- [`__proto__` සමඟ මූලාකෘති වෙත ප්රවේශ වීම](#__proto__-%E0%B7%83%E0%B6%B8%E0%B6%9F-%E0%B6%B8%E0%B7%96%E0%B6%BD%E0%B7%8F%E0%B6%9A%E0%B7%98%E0%B6%AD%E0%B7%92-%E0%B7%80%E0%B7%99%E0%B6%AD-%E0%B6%B4%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B7%80%E0%B7%9A%E0%B7%81-%E0%B7%80%E0%B7%93%E0%B6%B8)
- [`` `${{Object}}` ``](#-object-)
- [පෙරනිමි අගයන් සමඟ බිඳීම](#%E0%B6%B4%E0%B7%99%E0%B6%BB%E0%B6%B1%E0%B7%92%E0%B6%B8%E0%B7%92-%E0%B6%85%E0%B6%9C%E0%B6%BA%E0%B6%B1%E0%B7%8A-%E0%B7%83%E0%B6%B8%E0%B6%9F-%E0%B6%B6%E0%B7%92%E0%B6%B3%E0%B7%93%E0%B6%B8)
- [තිත් සහ ව්යාප්ත කිරීම](#%E0%B6%AD%E0%B7%92%E0%B6%AD%E0%B7%8A-%E0%B7%83%E0%B7%84-%E0%B7%80%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B7%8F%E0%B6%B4%E0%B7%8A%E0%B6%AD-%E0%B6%9A%E0%B7%92%E0%B6%BB%E0%B7%93%E0%B6%B8)
- [නම් පත්](#%E0%B6%B1%E0%B6%B8%E0%B7%8A-%E0%B6%B4%E0%B6%AD%E0%B7%8A)
- [කූඩු කළ නම්පත්](#%E0%B6%9A%E0%B7%96%E0%B6%A9%E0%B7%94-%E0%B6%9A%E0%B7%85-%E0%B6%B1%E0%B6%B8%E0%B7%8A%E0%B6%B4%E0%B6%AD%E0%B7%8A)
- [ද්රෝහී `try..catch`](#%E0%B6%AF%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B7%9D%E0%B7%84%E0%B7%93-trycatch)
- [මෙය බහු උරුමය ද?](#%E0%B6%B8%E0%B7%99%E0%B6%BA-%E0%B6%B6%E0%B7%84%E0%B7%94-%E0%B6%8B%E0%B6%BB%E0%B7%94%E0%B6%B8%E0%B6%BA-%E0%B6%AF)
- [තමා විසින්ම නිපදවා ගන්නා උත්පාදකයෙක්](#%E0%B6%AD%E0%B6%B8%E0%B7%8F-%E0%B7%80%E0%B7%92%E0%B7%83%E0%B7%92%E0%B6%B1%E0%B7%8A%E0%B6%B8-%E0%B6%B1%E0%B7%92%E0%B6%B4%E0%B6%AF%E0%B7%80%E0%B7%8F-%E0%B6%9C%E0%B6%B1%E0%B7%8A%E0%B6%B1%E0%B7%8F-%E0%B6%8B%E0%B6%AD%E0%B7%8A%E0%B6%B4%E0%B7%8F%E0%B6%AF%E0%B6%9A%E0%B6%BA%E0%B7%99%E0%B6%9A%E0%B7%8A)
- [පන්තියක පන්තියක්](#%E0%B6%B4%E0%B6%B1%E0%B7%8A%E0%B6%AD%E0%B7%92%E0%B6%BA%E0%B6%9A-%E0%B6%B4%E0%B6%B1%E0%B7%8A%E0%B6%AD%E0%B7%92%E0%B6%BA%E0%B6%9A%E0%B7%8A)
- [ආයාස නොකළ හැකි වස්තූන්](#%E0%B6%86%E0%B6%BA%E0%B7%8F%E0%B7%83-%E0%B6%B1%E0%B7%9C%E0%B6%9A%E0%B7%85-%E0%B7%84%E0%B7%90%E0%B6%9A%E0%B7%92-%E0%B7%80%E0%B7%83%E0%B7%8A%E0%B6%AD%E0%B7%96%E0%B6%B1%E0%B7%8A)
- [උපක්රමශීලී ඊතල කෘත්යයන්](#%E0%B6%8B%E0%B6%B4%E0%B6%9A%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B6%B8%E0%B7%81%E0%B7%93%E0%B6%BD%E0%B7%93-%E0%B6%8A%E0%B6%AD%E0%B6%BD-%E0%B6%9A%E0%B7%98%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA%E0%B6%B1%E0%B7%8A)
- [ඊතල කෘත්යයන්ට තනන්නෙකු විය නොහැක](#%E0%B6%8A%E0%B6%AD%E0%B6%BD-%E0%B6%9A%E0%B7%98%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA%E0%B6%B1%E0%B7%8A%E0%B6%A7-%E0%B6%AD%E0%B6%B1%E0%B6%B1%E0%B7%8A%E0%B6%B1%E0%B7%99%E0%B6%9A%E0%B7%94-%E0%B7%80%E0%B7%92%E0%B6%BA-%E0%B6%B1%E0%B7%9C%E0%B7%84%E0%B7%90%E0%B6%9A)
- [`arguments` සහ ඊතල කෘත්යයන්](#arguments-%E0%B7%83%E0%B7%84-%E0%B6%8A%E0%B6%AD%E0%B6%BD-%E0%B6%9A%E0%B7%98%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA%E0%B6%B1%E0%B7%8A)
- [උපක්රමශීලී ප්රතිදානය](#%E0%B6%8B%E0%B6%B4%E0%B6%9A%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B6%B8%E0%B7%81%E0%B7%93%E0%B6%BD%E0%B7%93-%E0%B6%B4%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B6%AD%E0%B7%92%E0%B6%AF%E0%B7%8F%E0%B6%B1%E0%B6%BA)
- [වස්තුවක් මත පැවරුම් බැඳීම](#%E0%B7%80%E0%B7%83%E0%B7%8A%E0%B6%AD%E0%B7%94%E0%B7%80%E0%B6%9A%E0%B7%8A-%E0%B6%B8%E0%B6%AD-%E0%B6%B4%E0%B7%90%E0%B7%80%E0%B6%BB%E0%B7%94%E0%B6%B8%E0%B7%8A-%E0%B6%B6%E0%B7%90%E0%B6%B3%E0%B7%93%E0%B6%B8)
- [අරාවන් සමඟ වස්තුන්හි ගුණ වෙත ප්රවේශ වීම](#%E0%B6%85%E0%B6%BB%E0%B7%8F%E0%B7%80%E0%B6%B1%E0%B7%8A-%E0%B7%83%E0%B6%B8%E0%B6%9F-%E0%B7%80%E0%B7%83%E0%B7%8A%E0%B6%AD%E0%B7%94%E0%B6%B1%E0%B7%8A%E0%B7%84%E0%B7%92-%E0%B6%9C%E0%B7%94%E0%B6%AB-%E0%B7%80%E0%B7%99%E0%B6%AD-%E0%B6%B4%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B7%80%E0%B7%9A%E0%B7%81-%E0%B7%80%E0%B7%93%E0%B6%B8)
- [අභිශුන්යය සහ බන්ධුතා කාරක](#%E0%B6%85%E0%B6%B7%E0%B7%92%E0%B7%81%E0%B7%94%E0%B6%B1%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA-%E0%B7%83%E0%B7%84-%E0%B6%B6%E0%B6%B1%E0%B7%8A%E0%B6%B0%E0%B7%94%E0%B6%AD%E0%B7%8F-%E0%B6%9A%E0%B7%8F%E0%B6%BB%E0%B6%9A)
- [`Number.toFixed()` වෙනස් අංක පෙන්වයි](#numbertofixed-%E0%B7%80%E0%B7%99%E0%B6%B1%E0%B7%83%E0%B7%8A-%E0%B6%85%E0%B6%82%E0%B6%9A-%E0%B6%B4%E0%B7%99%E0%B6%B1%E0%B7%8A%E0%B7%80%E0%B6%BA%E0%B7%92)
- [`Math.min()`ට වඩා `Math.max()` කුඩා ය](#mathmin%E0%B6%A7-%E0%B7%80%E0%B6%A9%E0%B7%8F-mathmax-%E0%B6%9A%E0%B7%94%E0%B6%A9%E0%B7%8F-%E0%B6%BA)
- [`null` සහ `0` සැසඳීම](#null-%E0%B7%83%E0%B7%84-0-%E0%B7%83%E0%B7%90%E0%B7%83%E0%B6%B3%E0%B7%93%E0%B6%B8)
- [එකම විචල්යය ප්රති ප්රකාශ කිරීම](#%E0%B6%91%E0%B6%9A%E0%B6%B8-%E0%B7%80%E0%B7%92%E0%B6%A0%E0%B6%BD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA-%E0%B6%B4%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B6%AD%E0%B7%92-%E0%B6%B4%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B6%9A%E0%B7%8F%E0%B7%81-%E0%B6%9A%E0%B7%92%E0%B6%BB%E0%B7%93%E0%B6%B8)
- [සාමාන්ය හැසිරීම Array.prototype.sort()](#%E0%B7%83%E0%B7%8F%E0%B6%B8%E0%B7%8F%E0%B6%B1%E0%B7%8A%E2%80%8D%E0%B6%BA-%E0%B7%84%E0%B7%90%E0%B7%83%E0%B7%92%E0%B6%BB%E0%B7%93%E0%B6%B8-arrayprototypesort)
- [📚 වෙනත් සම්පත්](#-%E0%B7%80%E0%B7%99%E0%B6%B1%E0%B6%AD%E0%B7%8A-%E0%B7%83%E0%B6%B8%E0%B7%8A%E0%B6%B4%E0%B6%AD%E0%B7%8A)
- [🎓 බලපත්රය](#-%E0%B6%B6%E0%B6%BD%E0%B6%B4%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B6%BA)
- [What the f\*ck JavaScript?](#what-the-f%5Cck-javascript-1)
- [Node හි ඇසුරුම් කරන ලද අත්පිටපත](#node-%E0%B7%84%E0%B7%92-%E0%B6%87%E0%B7%83%E0%B7%94%E0%B6%BB%E0%B7%94%E0%B6%B8%E0%B7%8A-%E0%B6%9A%E0%B6%BB%E0%B6%B1-%E0%B6%BD%E0%B6%AF-%E0%B6%85%E0%B6%AD%E0%B7%8A%E0%B6%B4%E0%B7%92%E0%B6%A7%E0%B6%B4%E0%B6%AD-1)
- [පරිවර්තන](#%E0%B6%B4%E0%B6%BB%E0%B7%92%E0%B7%80%E0%B6%BB%E0%B7%8A%E0%B6%AD%E0%B6%B1-1)
- [පටුන](#%E0%B6%B4%E0%B6%A7%E0%B7%94%E0%B6%B1-1)
- [💪 දිරිගැන්වුම](#-%E0%B6%AF%E0%B7%92%E0%B6%BB%E0%B7%92%E0%B6%9C%E0%B7%90%E0%B6%B1%E0%B7%8A%E0%B7%80%E0%B7%94%E0%B6%B8-1)
- [✍🏻 අංකනය](#-%E0%B6%85%E0%B6%82%E0%B6%9A%E0%B6%B1%E0%B6%BA-1)
- [👀 උදාහරණ](#-%E0%B6%8B%E0%B6%AF%E0%B7%8F%E0%B7%84%E0%B6%BB%E0%B6%AB-1)
- [`[]` සහ `![]` සමානය](#-%E0%B7%83%E0%B7%84--%E0%B7%83%E0%B6%B8%E0%B7%8F%E0%B6%B1%E0%B6%BA-1)
- [`true`, `![]`ට සම නොවේ, නමුත් `[]` ට ද සම නොවේ.](#true-%E0%B6%A7-%E0%B7%83%E0%B6%B8-%E0%B6%B1%E0%B7%9C%E0%B7%80%E0%B7%9A-%E0%B6%B1%E0%B6%B8%E0%B7%94%E0%B6%AD%E0%B7%8A--%E0%B6%A7-%E0%B6%AF-%E0%B7%83%E0%B6%B8-%E0%B6%B1%E0%B7%9C%E0%B7%80%E0%B7%9A-1)
- [සත්යය අසත්ය ය](#%E0%B7%83%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA-%E0%B6%85%E0%B7%83%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA-%E0%B6%BA-1)
- [baNaNa](#banana-1)
- [`NaN` යනු `NaN` නොවේ](#nan-%E0%B6%BA%E0%B6%B1%E0%B7%94-nan-%E0%B6%B1%E0%B7%9C%E0%B7%80%E0%B7%9A-1)
- [එය අසාර්ථකත්වයකි](#%E0%B6%91%E0%B6%BA-%E0%B6%85%E0%B7%83%E0%B7%8F%E0%B6%BB%E0%B7%8A%E0%B6%AE%E0%B6%9A%E0%B6%AD%E0%B7%8A%E0%B7%80%E0%B6%BA%E0%B6%9A%E0%B7%92-1)
- [`[]` සත්යමය නමුත් `true` නොවේ](#-%E0%B7%83%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%B8%E0%B6%BA-%E0%B6%B1%E0%B6%B8%E0%B7%94%E0%B6%AD%E0%B7%8A-true-%E0%B6%B1%E0%B7%9C%E0%B7%80%E0%B7%9A-1)
- [`null` අසත්යමය මුත් `අසත්ය` නොවේ](#null-%E0%B6%85%E0%B7%83%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%B8%E0%B6%BA-%E0%B6%B8%E0%B7%94%E0%B6%AD%E0%B7%8A-%E0%B6%85%E0%B7%83%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA-%E0%B6%B1%E0%B7%9C%E0%B7%80%E0%B7%9A-1)
- [`document.all` යනු වස්තුවකි, නමුත් එය අර්ථ විරහිතය.](#documentall-%E0%B6%BA%E0%B6%B1%E0%B7%94-%E0%B7%80%E0%B7%83%E0%B7%8A%E0%B6%AD%E0%B7%94%E0%B7%80%E0%B6%9A%E0%B7%92-%E0%B6%B1%E0%B6%B8%E0%B7%94%E0%B6%AD%E0%B7%8A-%E0%B6%91%E0%B6%BA-%E0%B6%85%E0%B6%BB%E0%B7%8A%E0%B6%AE-%E0%B7%80%E0%B7%92%E0%B6%BB%E0%B7%84%E0%B7%92%E0%B6%AD%E0%B6%BA-1)
- [අවම අගය, ශුන්යය ට වඩා විශාල ය.](#%E0%B6%85%E0%B7%80%E0%B6%B8-%E0%B6%85%E0%B6%9C%E0%B6%BA-%E0%B7%81%E0%B7%94%E0%B6%B1%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA-%E0%B6%A7-%E0%B7%80%E0%B6%A9%E0%B7%8F-%E0%B7%80%E0%B7%92%E0%B7%81%E0%B7%8F%E0%B6%BD-%E0%B6%BA-1)
- [කෘත්යය, කෘත්යයක් නොවේ](#%E0%B6%9A%E0%B7%98%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA-%E0%B6%9A%E0%B7%98%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA%E0%B6%9A%E0%B7%8A-%E0%B6%B1%E0%B7%9C%E0%B7%80%E0%B7%9A-1)
- [අරාවන් ආකලනය](#%E0%B6%85%E0%B6%BB%E0%B7%8F%E0%B7%80%E0%B6%B1%E0%B7%8A-%E0%B6%86%E0%B6%9A%E0%B6%BD%E0%B6%B1%E0%B6%BA-1)
- [අරාවක පසුයෙදුම් කොමා](#%E0%B6%85%E0%B6%BB%E0%B7%8F%E0%B7%80%E0%B6%9A-%E0%B6%B4%E0%B7%83%E0%B7%94%E0%B6%BA%E0%B7%99%E0%B6%AF%E0%B7%94%E0%B6%B8%E0%B7%8A-%E0%B6%9A%E0%B7%9C%E0%B6%B8%E0%B7%8F-1)
- [අරාවන් සැසඳීම යක්ෂයෙකි](#%E0%B6%85%E0%B6%BB%E0%B7%8F%E0%B7%80%E0%B6%B1%E0%B7%8A-%E0%B7%83%E0%B7%90%E0%B7%83%E0%B6%B3%E0%B7%93%E0%B6%B8-%E0%B6%BA%E0%B6%9A%E0%B7%8A%E0%B7%82%E0%B6%BA%E0%B7%99%E0%B6%9A%E0%B7%92-1)
- [`undefined` සහ `Number`](#undefined-%E0%B7%83%E0%B7%84-number-1)
- [`parseInt` නරක මිනිසෙකි](#parseint-%E0%B6%B1%E0%B6%BB%E0%B6%9A-%E0%B6%B8%E0%B7%92%E0%B6%B1%E0%B7%92%E0%B7%83%E0%B7%99%E0%B6%9A%E0%B7%92-1)
- [Math with `true` and `false`](#math-with-true-and-false-1)
- [JavaScript හි HTML ටීකාවන් වලංගු ය.](#javascript-%E0%B7%84%E0%B7%92-html-%E0%B6%A7%E0%B7%93%E0%B6%9A%E0%B7%8F%E0%B7%80%E0%B6%B1%E0%B7%8A-%E0%B7%80%E0%B6%BD%E0%B6%82%E0%B6%9C%E0%B7%94-%E0%B6%BA-1)
- [`NaN` is ~~not~~ a number](#nan-is-not-a-number-1)
- [`[]` සහ `null` වස්තූන් ය.](#-%E0%B7%83%E0%B7%84-null-%E0%B7%80%E0%B7%83%E0%B7%8A%E0%B6%AD%E0%B7%96%E0%B6%B1%E0%B7%8A-%E0%B6%BA-1)
- [ඉන්ද්රජාලිකව වැඩිවන සංඛ්යා](#%E0%B6%89%E0%B6%B1%E0%B7%8A%E0%B6%AF%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B6%A2%E0%B7%8F%E0%B6%BD%E0%B7%92%E0%B6%9A%E0%B7%80-%E0%B7%80%E0%B7%90%E0%B6%A9%E0%B7%92%E0%B7%80%E0%B6%B1-%E0%B7%83%E0%B6%82%E0%B6%9B%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B7%8F-1)
- [`0.1 + 0.2` හි නිරවද්යතාව](#01--02-%E0%B7%84%E0%B7%92-%E0%B6%B1%E0%B7%92%E0%B6%BB%E0%B7%80%E0%B6%AF%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%AD%E0%B7%8F%E0%B7%80-1)
- [සංඛ්යා පූරණය](#%E0%B7%83%E0%B6%82%E0%B6%9B%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B7%8F-%E0%B6%B4%E0%B7%96%E0%B6%BB%E0%B6%AB%E0%B6%BA-1)
- [සංඛ්යා තුනක් සැසඳීම](#%E0%B7%83%E0%B6%82%E0%B6%9B%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B7%8F-%E0%B6%AD%E0%B7%94%E0%B6%B1%E0%B6%9A%E0%B7%8A-%E0%B7%83%E0%B7%90%E0%B7%83%E0%B6%B3%E0%B7%93%E0%B6%B8-1)
- [හාස්යජනක ගණිතය](#%E0%B7%84%E0%B7%8F%E0%B7%83%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%A2%E0%B6%B1%E0%B6%9A-%E0%B6%9C%E0%B6%AB%E0%B7%92%E0%B6%AD%E0%B6%BA-1)
- [සෙවුම් ප්රකාශන ආකලනය](#%E0%B7%83%E0%B7%99%E0%B7%80%E0%B7%94%E0%B6%B8%E0%B7%8A-%E0%B6%B4%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B6%9A%E0%B7%8F%E0%B7%81%E0%B6%B1-%E0%B6%86%E0%B6%9A%E0%B6%BD%E0%B6%B1%E0%B6%BA-1)
- [පෙළ `String` හි නිදර්ශකයක් නොවේ](#%E0%B6%B4%E0%B7%99%E0%B7%85-string-%E0%B7%84%E0%B7%92-%E0%B6%B1%E0%B7%92%E0%B6%AF%E0%B6%BB%E0%B7%8A%E0%B7%81%E0%B6%9A%E0%B6%BA%E0%B6%9A%E0%B7%8A-%E0%B6%B1%E0%B7%9C%E0%B7%80%E0%B7%9A-1)
- [පසුලකුණු සමඟ කෘත්යයන් ඇමතීම](#%E0%B6%B4%E0%B7%83%E0%B7%94%E0%B6%BD%E0%B6%9A%E0%B7%94%E0%B6%AB%E0%B7%94-%E0%B7%83%E0%B6%B8%E0%B6%9F-%E0%B6%9A%E0%B7%98%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA%E0%B6%B1%E0%B7%8A-%E0%B6%87%E0%B6%B8%E0%B6%AD%E0%B7%93%E0%B6%B8-1)
- [අමතන්න අමතන්න අමතන්න](#%E0%B6%85%E0%B6%B8%E0%B6%AD%E0%B6%B1%E0%B7%8A%E0%B6%B1-%E0%B6%85%E0%B6%B8%E0%B6%AD%E0%B6%B1%E0%B7%8A%E0%B6%B1-%E0%B6%85%E0%B6%B8%E0%B6%AD%E0%B6%B1%E0%B7%8A%E0%B6%B1-1)
- [තැනුම් ගුණාංගයක්](#%E0%B6%AD%E0%B7%90%E0%B6%B1%E0%B7%94%E0%B6%B8%E0%B7%8A-%E0%B6%9C%E0%B7%94%E0%B6%AB%E0%B7%8F%E0%B6%82%E0%B6%9C%E0%B6%BA%E0%B6%9A%E0%B7%8A-1)
- [වස්තුවක්, වස්තුවක ගුණයක යතුර ලෙස](#%E0%B7%80%E0%B7%83%E0%B7%8A%E0%B6%AD%E0%B7%94%E0%B7%80%E0%B6%9A%E0%B7%8A-%E0%B7%80%E0%B7%83%E0%B7%8A%E0%B6%AD%E0%B7%94%E0%B7%80%E0%B6%9A-%E0%B6%9C%E0%B7%94%E0%B6%AB%E0%B6%BA%E0%B6%9A-%E0%B6%BA%E0%B6%AD%E0%B7%94%E0%B6%BB-%E0%B6%BD%E0%B7%99%E0%B7%83-1)
- [`__proto__` සමඟ මූලාකෘති වෙත ප්රවේශ වීම](#__proto__-%E0%B7%83%E0%B6%B8%E0%B6%9F-%E0%B6%B8%E0%B7%96%E0%B6%BD%E0%B7%8F%E0%B6%9A%E0%B7%98%E0%B6%AD%E0%B7%92-%E0%B7%80%E0%B7%99%E0%B6%AD-%E0%B6%B4%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B7%80%E0%B7%9A%E0%B7%81-%E0%B7%80%E0%B7%93%E0%B6%B8-1)
- [`` `${{Object}}` ``](#-object--1)
- [පෙරනිමි අගයන් සමඟ බිඳීම](#%E0%B6%B4%E0%B7%99%E0%B6%BB%E0%B6%B1%E0%B7%92%E0%B6%B8%E0%B7%92-%E0%B6%85%E0%B6%9C%E0%B6%BA%E0%B6%B1%E0%B7%8A-%E0%B7%83%E0%B6%B8%E0%B6%9F-%E0%B6%B6%E0%B7%92%E0%B6%B3%E0%B7%93%E0%B6%B8-1)
- [තිත් සහ ව්යාප්ත කිරීම](#%E0%B6%AD%E0%B7%92%E0%B6%AD%E0%B7%8A-%E0%B7%83%E0%B7%84-%E0%B7%80%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B7%8F%E0%B6%B4%E0%B7%8A%E0%B6%AD-%E0%B6%9A%E0%B7%92%E0%B6%BB%E0%B7%93%E0%B6%B8-1)
- [නම් පත්](#%E0%B6%B1%E0%B6%B8%E0%B7%8A-%E0%B6%B4%E0%B6%AD%E0%B7%8A-1)
- [කූඩු කළ නම්පත්](#%E0%B6%9A%E0%B7%96%E0%B6%A9%E0%B7%94-%E0%B6%9A%E0%B7%85-%E0%B6%B1%E0%B6%B8%E0%B7%8A%E0%B6%B4%E0%B6%AD%E0%B7%8A-1)
- [ද්රෝහී `try..catch`](#%E0%B6%AF%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B7%9D%E0%B7%84%E0%B7%93-trycatch-1)
- [මෙය බහු උරුමය ද?](#%E0%B6%B8%E0%B7%99%E0%B6%BA-%E0%B6%B6%E0%B7%84%E0%B7%94-%E0%B6%8B%E0%B6%BB%E0%B7%94%E0%B6%B8%E0%B6%BA-%E0%B6%AF-1)
- [තමා විසින්ම නිපදවා ගන්නා උත්පාදකයෙක්](#%E0%B6%AD%E0%B6%B8%E0%B7%8F-%E0%B7%80%E0%B7%92%E0%B7%83%E0%B7%92%E0%B6%B1%E0%B7%8A%E0%B6%B8-%E0%B6%B1%E0%B7%92%E0%B6%B4%E0%B6%AF%E0%B7%80%E0%B7%8F-%E0%B6%9C%E0%B6%B1%E0%B7%8A%E0%B6%B1%E0%B7%8F-%E0%B6%8B%E0%B6%AD%E0%B7%8A%E0%B6%B4%E0%B7%8F%E0%B6%AF%E0%B6%9A%E0%B6%BA%E0%B7%99%E0%B6%9A%E0%B7%8A-1)
- [පන්තියක පන්තියක්](#%E0%B6%B4%E0%B6%B1%E0%B7%8A%E0%B6%AD%E0%B7%92%E0%B6%BA%E0%B6%9A-%E0%B6%B4%E0%B6%B1%E0%B7%8A%E0%B6%AD%E0%B7%92%E0%B6%BA%E0%B6%9A%E0%B7%8A-1)
- [ආයාස නොකළ හැකි වස්තූන්](#%E0%B6%86%E0%B6%BA%E0%B7%8F%E0%B7%83-%E0%B6%B1%E0%B7%9C%E0%B6%9A%E0%B7%85-%E0%B7%84%E0%B7%90%E0%B6%9A%E0%B7%92-%E0%B7%80%E0%B7%83%E0%B7%8A%E0%B6%AD%E0%B7%96%E0%B6%B1%E0%B7%8A-1)
- [උපක්රමශීලී ඊතල කෘත්යයන්](#%E0%B6%8B%E0%B6%B4%E0%B6%9A%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B6%B8%E0%B7%81%E0%B7%93%E0%B6%BD%E0%B7%93-%E0%B6%8A%E0%B6%AD%E0%B6%BD-%E0%B6%9A%E0%B7%98%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA%E0%B6%B1%E0%B7%8A-1)
- [ඊතල කෘත්යයන්ට තනන්නෙකු විය නොහැක](#%E0%B6%8A%E0%B6%AD%E0%B6%BD-%E0%B6%9A%E0%B7%98%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA%E0%B6%B1%E0%B7%8A%E0%B6%A7-%E0%B6%AD%E0%B6%B1%E0%B6%B1%E0%B7%8A%E0%B6%B1%E0%B7%99%E0%B6%9A%E0%B7%94-%E0%B7%80%E0%B7%92%E0%B6%BA-%E0%B6%B1%E0%B7%9C%E0%B7%84%E0%B7%90%E0%B6%9A-1)
- [`arguments` සහ ඊතල කෘත්යයන්](#arguments-%E0%B7%83%E0%B7%84-%E0%B6%8A%E0%B6%AD%E0%B6%BD-%E0%B6%9A%E0%B7%98%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA%E0%B6%B1%E0%B7%8A-1)
- [උපක්රමශීලී ප්රතිදානය](#%E0%B6%8B%E0%B6%B4%E0%B6%9A%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B6%B8%E0%B7%81%E0%B7%93%E0%B6%BD%E0%B7%93-%E0%B6%B4%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B6%AD%E0%B7%92%E0%B6%AF%E0%B7%8F%E0%B6%B1%E0%B6%BA-1)
- [වස්තුවක් මත පැවරුම් බැඳීම](#%E0%B7%80%E0%B7%83%E0%B7%8A%E0%B6%AD%E0%B7%94%E0%B7%80%E0%B6%9A%E0%B7%8A-%E0%B6%B8%E0%B6%AD-%E0%B6%B4%E0%B7%90%E0%B7%80%E0%B6%BB%E0%B7%94%E0%B6%B8%E0%B7%8A-%E0%B6%B6%E0%B7%90%E0%B6%B3%E0%B7%93%E0%B6%B8-1)
- [අරාවන් සමඟ වස්තුන්හි ගුණ වෙත ප්රවේශ වීම](#%E0%B6%85%E0%B6%BB%E0%B7%8F%E0%B7%80%E0%B6%B1%E0%B7%8A-%E0%B7%83%E0%B6%B8%E0%B6%9F-%E0%B7%80%E0%B7%83%E0%B7%8A%E0%B6%AD%E0%B7%94%E0%B6%B1%E0%B7%8A%E0%B7%84%E0%B7%92-%E0%B6%9C%E0%B7%94%E0%B6%AB-%E0%B7%80%E0%B7%99%E0%B6%AD-%E0%B6%B4%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B7%80%E0%B7%9A%E0%B7%81-%E0%B7%80%E0%B7%93%E0%B6%B8-1)
- [අභිශුන්යය සහ බන්ධුතා කාරක](#%E0%B6%85%E0%B6%B7%E0%B7%92%E0%B7%81%E0%B7%94%E0%B6%B1%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA-%E0%B7%83%E0%B7%84-%E0%B6%B6%E0%B6%B1%E0%B7%8A%E0%B6%B0%E0%B7%94%E0%B6%AD%E0%B7%8F-%E0%B6%9A%E0%B7%8F%E0%B6%BB%E0%B6%9A-1)
- [`Number.toFixed()` වෙනස් අංක පෙන්වයි](#numbertofixed-%E0%B7%80%E0%B7%99%E0%B6%B1%E0%B7%83%E0%B7%8A-%E0%B6%85%E0%B6%82%E0%B6%9A-%E0%B6%B4%E0%B7%99%E0%B6%B1%E0%B7%8A%E0%B7%80%E0%B6%BA%E0%B7%92-1)
- [`Math.min()`ට වඩා `Math.max()` කුඩා ය](#mathmin%E0%B6%A7-%E0%B7%80%E0%B6%A9%E0%B7%8F-mathmax-%E0%B6%9A%E0%B7%94%E0%B6%A9%E0%B7%8F-%E0%B6%BA-1)
- [`null` සහ `0` සැසඳීම](#null-%E0%B7%83%E0%B7%84-0-%E0%B7%83%E0%B7%90%E0%B7%83%E0%B6%B3%E0%B7%93%E0%B6%B8-1)
- [එකම විචල්යය ප්රති ප්රකාශ කිරීම](#%E0%B6%91%E0%B6%9A%E0%B6%B8-%E0%B7%80%E0%B7%92%E0%B6%A0%E0%B6%BD%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B6%BA-%E0%B6%B4%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B6%AD%E0%B7%92-%E0%B6%B4%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B6%9A%E0%B7%8F%E0%B7%81-%E0%B6%9A%E0%B7%92%E0%B6%BB%E0%B7%93%E0%B6%B8-1)
- [සාමාන්ය හැසිරීම Array.prototype.sort()](#%E0%B7%83%E0%B7%8F%E0%B6%B8%E0%B7%8F%E0%B6%B1%E0%B7%8A%E2%80%8D%E0%B6%BA-%E0%B7%84%E0%B7%90%E0%B7%83%E0%B7%92%E0%B6%BB%E0%B7%93%E0%B6%B8-arrayprototypesort-1)
- [📚 වෙනත් සම්පත්](#-%E0%B7%80%E0%B7%99%E0%B6%B1%E0%B6%AD%E0%B7%8A-%E0%B7%83%E0%B6%B8%E0%B7%8A%E0%B6%B4%E0%B6%AD%E0%B7%8A-1)
- [🎓 බලපත්රය](#-%E0%B6%B6%E0%B6%BD%E0%B6%B4%E0%B6%AD%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B6%BA-1)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
# What the f\*ck JavaScript?
[![WTFPL 2.0][license-image]][license-url]
[![NPM version][npm-image]][npm-url]
> හාස්යජනක සහ දුරවබෝධ JavaScript උදාහරණ
JavaScript යනු විශිෂ්ට ක්රමලේඛන භාෂාවකි.එයට සරල වින්යාසයක් සහ පුළුල් පද්ධතියක් ඇති අතර වඩාත්ම වැදගත් කරුණක් ලෙස එය සතුව විශිෂ්ට ප්රජාවක් සිටී.කෙසේ නමුත් JavaScript ක්රමලේඛන භාෂාවේ වටහා ගැනීමට දුෂ්කර කොටස් ද ඇති බව අපි සියල්ලෝම දනිමු. මෙවැනි සමහරක් කො ටස් අපගේ එදිනෙදා ක්රමලේඛන කාර්යයන් ඉක්මනින් මහත් අවුලට පත් කිරීමට සමත් අතර තවත් සමහරක් අපව මහා හඬින් සිනහ නැංවීමට සමත්ය.
WTFJS සඳහා මුල් අදහසේ හිමිකම Brian Leroux සතුය.මෙම ලැයිස්තුව ඔහුගේ [2012 DOTJS හි WTFJS දේශනය](https://www.youtube.com/watch?v=et8xNAc2ic8) විසින් පොළඹවන ලද්දකි.
[](https://www.youtube.com/watch?v=et8xNAc2ic8)
## Node හි ඇසුරුම් කරන ලද අත්පිටපත
ඔබට මෙම අත්පොත npm හරහා ස්ථාපනය කරගත හැකිය.මේ සඳහා පහත විධානය ක්රියාත්මක කරන්න.
$ npm install -g wtfjs
දැන් ඔබට විධාන පෙළ හරහා wtfjs ක්රියාත්මක කළ හැකි විය යුතුය. මෙය තෝරාගත් $PAGER හි අත්පිටපත විවෘත කරනු ඇත. එසේ නැත්නම් ඔබට මෙහිදී නොනැවතී කියවිය හැකිය.
මූලය මෙහිදී ලබාගත හැක: https://github.com/denysdovhan/wtfjs
## පරිවර්තන
දැනට wtfjs හි පහත පරිවර්තන පවතී.
- [中文版](https://github.com/denysdovhan/wtfjs/blob/master/README-zh-cn.md)
[නව පරිවර්තනයක් ඉල්ලන්න](https://github.com/denysdovhan/wtfjs/issues/new?title=Translation%20Request:%20%5BPlease%20enter%20language%20here%5D&body=I%20am%20able%20to%20translate%20this%20language%20%5Byes/no%5D)
# පටුන
- [💪 දිරිගැන්වුම](#-දිරිගැන්වුම)
- [✍🏻 අංකනය](#-අංකනය)
- [👀 උදාහරණ](#-උදාහරණ)
- [`[]` සහ `![] සම වේ`](#-සහ--සමානය)
- [`true` සහ `![]` සම නොවේ, නමුත් `[]` ද සම නොවේ.](#true-ට-සම-නොවේ-නමුත්--ට-ද-සම-නොවේ)
- [සත්යය අසත්යය](#සත්යය-අසත්ය-ය)
- [baNaNa](#banana)
- [`NaN` යනු `NaN` නොවේ](#nan-යනු-nan-නොවේ)
- [එය අසාර්ථකත්වයකි]()
- [`[]` සත්යමය මුත් `සත්ය` නොවේ](#-is-truthy-but-not-true)
- [null අසත්යමය මුත් `අසත්ය` නොවේ](#null-අසත්යමය-මුත්-අසත්ය-නොවේ)
- [`document.all` යනු වස්තුවකි , නමුත් එය අර්ථ විරහිතය ](#documentall-යනු-වස්තුවකි-නමුත්-එය-අර්ථ-විරහිතය)
- [අවම අගය ශුන්යයට වඩා විශාලය](#අවම-අගය-ශුන්යය-ට-වඩා-විශාල-ය)
- [කෘත්යය කෘත්යයක් නොවේ](#කෘත්යය-කෘත්යයක්-නොවේ)
- [අරාවන් ආකලනය](#අරාවන්-ආකලනය)
- [අරාවක පසුයෙදුම් කොමා](#අරාවක-පසුයෙදුම්-කොමා)
- [අරාවන් සමානතාව යක්ෂයෙකි](#array-equality-is-a-monster)
- [`undefined` සහ `Number`](#undefined-සහ-number)
- [`parseInt` නරක පුද්ගලයෙකි](#parseint-is-a-bad-guy)
- [`සත්ය` සහ `අසත්ය` සමඟ ගණිතය](#math-with-true-and-false)
- [JavaScript හි HTML ටීකාවන් වලංගුය](#javascript-හි-html-ටීකාවන්-වලංගු-ය)
- [`NaN` යනු සංඛ්යාවක් නොවේ](#nan-is-not-a-number)
- [`[]` සහ `null` යනු වස්තූන් ය](#-සහ-null-වස්තූන්-ය)
- [ඉන්ද්රජාලික ව ඉහළ යන අංක](#ඉන්ද්රජාලිකව-වැඩිවන-සංඛ්යා)
- [`0.1 + 0.2` හි නිරවද්යතාව]()
- [සංඛ්යා ඌනපූර්ණය](#patching-numbers)
- [අංක තුනක් සැසඳීම](#සංඛ්යා-තුනක්-සැසඳීම)
- [හාස්යජනක ගණිතය](#හාස්යජනක-ගණිතය)
- [සෙවුම් ප්රකාශන ආකලනය](#addition-of-regexps)
- [පෙළ, `String` හි නිදර්ශක නොවේ](#පෙළ--string-හි-නිදර්ශකයක්-නොවේ)
- [පසුලකුණු සමඟ කෘත්යයන් ඇමතීම](#පසුලකුණු-සමඟ-කෘත්යයන්-ඇමතීම)
- [අමතන්න අමතන්න අමතන්න]()
- [`ඉදිකරන්නා` ගුණයක්](#a-constructor-property)
- [වස්තුව, වස්තුවක ගුණයක යතුරක් ලෙස](#object-as-a-key-of-objects-property)
- [ `__proto__` සමඟ මූලාකෘති වෙත ප්රවේශ වීම](#__proto__-සමඟ-මූලාකෘති-වෙත-ප්රවේශ-වීම)
- [`` `${{Object}}` ``](#object)
- [පෙරනිමි අගයන් සමඟ බිඳීම](#පෙරනිමි-අගයන්-සමඟ-බිඳීම)
- [තිත් සහ ව්යාප්ත කිරීම](#තිත්-සහ-ව්යාප්ත-කිරීම)
- [නම්පත්](#නම්-පත්)
- [කූඩු කළ නම්පත්](#කූඩු-කළ-නම්පත්)
- [ද්රෝහී `try..catch`](#ද්රෝහී-trycatch)
- [මෙය බහු උරුමය ද?](#මෙය-බහු-උරුමය-ද)
- [තමා විසින්ම උත්පාදනය වන උත්පාදකයෙක්](#තමා-විසින්ම-නිපදවා-ගන්නා-උත්පාදකයෙක්)
- [පන්තියක පන්තියක්](#පන්තියක-පන්තියක්)
- [ආයාස නොකළැකි වස්තූන්](#non-coercible-objects)
- [උපක්රමශීලී ඊතල කෘත්යයන්](#උපක්රමශීලී-ඊතල-කෘත්යයන්)
- [ඊතල කෘත්යයන්ට තනන්නෙකු විය නොහැක](#ඊතල-කෘත්යයන්ට-තනන්නෙකු-විය-නොහැක)
- [`පරාමිතික අගයන්` සහ ඊතල කෘත්යයන්]()
- [උපායශීලී ප්රතිදානය](#උපක්රමශීලී-ප්රතිදානය)
- [වස්තුවක් මත පැවරුම් බැඳීම](#වස්තුවක්-මත-පැවරුම්-බැඳීම)
- [අරාවන් සමඟ වස්තුවක ගුණ වෙත ප්රවේශ වීම](#අරාවන්-සමඟ-වස්තුන්හි-ගුණ-වෙත-ප්රවේශ-වීම)
- [අභිශුන්යය සහ බන්ධුතා කාරක](#අභිශුන්යය--සහ-බන්ධුතා-කාරක)
- [`Number.toFixed()` වෙනස් අංක පෙන්වයි](#numbertofixed-වෙනස්-අංක-පෙන්වයි)
- [`Math.max()`, `Math.min()`ට වඩා කුඩා ය](#mathminට-වඩා-mathmax-කුඩා-ය)
- [`අභිශුන්යය` සහ `ශුන්යය` සැසඳීම](#null-සහ-0-සැසඳීම)
- [එකම විචල්යය ප්රතිප්රකාශ කිරීම](#එකම-විචල්යය-ප්රති-ප්රකාශ-කිරීම)
- [සාමාන්ය හැසිරීම Array.prototype.sort()](#සාමාන්ය-හැසිරීම-arrayprototypesort)
- [වෙනත් සම්පත්](#-වෙනත්-සම්පත්)
- [🎓 බලපත්රය](#-බලපත්රය)
# 💪 දිරිගැන්වුම
> හුදෙක් විනෝදය උදෙසා
>
> — _[**“හුදෙක් විනෝදය උදෙසා: අහඹු විප්ලවයක කතාව”**](https://en.wikipedia.org/wiki/Just_for_Fun), ලීනස් ටොවාල්ඩ්ස්_
මෙම ලැයිස්තුවේ මූලික අරමුණ වන්නේ උන්මාදනීය උදාහරණ එක්රැස් කිරීම සහ හැකිනම් ඒවා පැහැදිලි කිරීමයි; මක් නිසාද යත් අප මීට පෙර නොදැන සිටි දෙයක් ඉගෙනීම විනෝදජනක බැවිනි.
ඔබ ආධුනිකයකු නම් , JavaScript හි ගැඹුරට පිවිසෙන්නට මෙම සටහන් උපකාරී වනු ඇත. පිරිවිතර වැඩියෙන් කියවන්නට සහ ඒ සමඟ කල් ගෙවන්නට මෙම සටහන් ඔබට අභිප්රේරණයක් වනු ඇතැයි මම බලාපොරොත්තු වෙමි.
ඔබ වෘත්තීමය සංවර්ධකයෙකු නම්, ඔබට මෙම උදාහරණ අපගේ ආදරණීය JavaScript හි අනපේක්ෂිත සහ අසාමාන්ය අංශ පිළිබඳ යොමුවක් ලෙස සැලකිය හැක.
කවුරුන් හෝ වේවා, හුදෙක් මෙය කියවන්න. බොහෝ විට ඔබ අලුත් දෙයක් සොයා ගනු ඇත.
# ✍🏻 අංකනය
**`// ->`** භාවිත කෙරෙන්නේ ප්රකාශනයක ප්රතිඵලය දැක්වීමටයි. උදා:
```js
1 + 1; // -> 2
```
**`// >`** මඟින් අදහස් වන්නේ console . log () හෝ වෙනත් ප්රතිදානයක ප්රතිඵලයකි. :
```js
console.log("hello, world!"); // > hello, world!
```
**`//`** යනු හුදෙක් විවරණය සඳහා යොදා ගත් ටීකාවකි. උදා:
```js
// foo නියතයට කෘත්යයක් පැවරීම
const foo = function() {};
```
# 👀 උදාහරණ
## `[]` සහ `![]` සමානය
අරාව, නැත අරාව ට සමානය:
```js
[] == ![]; // -> true
```
### 💡 විවරණය:
වියුක්ත සමානතා කාරකය, සැසඳීම සඳහා දෙපසම සංඛ්යා බවට හරවයි, මෙවිට දෙපසම වෙනස් හේතු නිසා 0 බවට පත් වේ. අරාවන් සත්යමය බැවින් මෙහි දකුණු පස අසත්ය යන්නට ද අනතුරුව 0 බවට ද පත්වේ. කෙසේ නමුත් වම් පසෙහි හිස් අරාවක් බූලියානු අගයක් බවට පත් නොවී ම සංඛ්යාවක් බවට පත් වේ.(සත්යමය වීම නොසලකා, හිස් අරාවන් 0 බවට පත් කෙරේ.)
පහත දැක්වෙන්නේ මෙම ප්රකාශනය සරල වන ආකාරයයි.:
```js
+[] == +![];
0 == +false;
0 == 0;
true;
```
[`[]` සත්යමය මුත් `සත්ය` නොවේ](#-is-truthy-but-not-true) ද බලන්න.
- [**12.5.9** තාර්කික නිශේධ කාරකය (`!`)](https://www.ecma-international.org/ecma-262/#sec-logical-not-operator)
- [**7.2.13** වියුක්ති සමානතා සංසන්දනය](https://www.ecma-international.org/ecma-262/#sec-abstract-equality-comparison)
## `true`, `![]`ට සම නොවේ, නමුත් `[]` ට ද සම නොවේ.
අරාව සත්ය නොවන මුත් නැත අරාව ද සත්ය නොවේ
අරාව අසත්ය ය, එහෙත් නැත අරාව ද අසත්ය ය.
```js
true == []; // -> false
true == ![]; // -> false
false == []; // -> true
false == ![]; // -> true
```
### 💡 විවරණය:
```js
true == []; // -> false
true == ![]; // -> false
// පිරිවිතරයට අනුව
true == []; // -> false
toNumber(true); // -> 1
toNumber([]); // -> 0
1 == 0; // -> false
true == ![]; // -> false
![]; // -> false
true == false; // -> false
```
```js
false == []; // -> true
false == ![]; // -> true
// පිරිවිතරයට අනුව
false == []; // -> true
toNumber(false); // -> 0
toNumber([]); // -> 0
0 == 0; // -> true
false == ![]; // -> false
![]; // -> false
false == false; // -> true
```
- [**7.2.13** වියුක්ති සමානතා සැසඳීම](https://www.ecma-international.org/ecma-262/#sec-abstract-equality-comparison)
## සත්යය අසත්ය ය
```js
!!"false" == !!"true"; // -> true
!!"false" === !!"true"; // -> true
```
### 💡 විවරණය:
මෙය පියවරෙන් පියවර සලකන්න:
```js
//
true සත්යමය වන අතර අගය 1 මඟින් නිරූපණය වේ. පෙළ මාදිලියේදී 'true' යනු සංඛ්යාවක් නොවේ
true == "true"; // -> false
false == "false"; // -> false
// ‘false’ යනු හිස් පෙළක් නොවේ, එමනිසා එය සත්යමය අගයකි
!!"false"; // -> true
!!"true"; // -> true
```
- [**7.2.13** වියුක්ති සමානතා සැසඳීම](https://www.ecma-international.org/ecma-262/#sec-abstract-equality-comparison)
## baNaNa
```js
"b" + "a" + +"a" + "a"; // -> 'baNaNa'
```
මෙය JavaScriptහි පැරණි, එහෙත් වැඩිදියුණු කරන ලද විහිළුවකි.මුල් පිටපත පහත දැක්වේ:
```js
"foo" + +"bar"; // -> 'fooNaN'
```
### 💡 විවරණය:
මෙම ප්රකාශනය `'foo' + (+'bar')` ලෙස නිර්ණය වේ; `'bar'`, “සංඛ්යාවක් නොවේ( NaN )” යන්නට පරිවර්තනය වේ.
- [**12.8.3** ආකලන කාරකය (`+`)](https://www.ecma-international.org/ecma-262/#sec-addition-operator-plus)
- [12.5.6 ඒකක + කාරකය](https://www.ecma-international.org/ecma-262/#sec-unary-plus-operator)
## `NaN` යනු `NaN` නොවේ
```js
NaN === NaN; // -> false
```
### 💡 විවරණය:
පිරිවිතරය දැඩි ලෙස ම, මෙම හැසිරීමට හේතුවන තර්කය අර්ථ දක්වයි:
> 1. `Type(x)` සහ `Type(y)` වෙනස් නම්, **false** ප්රතිදානය කරන්න.
> 2. `Type(x)` සංඛ්යාවක් නම්, එවිට,
> 1. If `x`, **NaN** නම්, **false** දෙන්න.
> 2. If `y`, **NaN** නම්, **false** දෙන්න.
> 3. … … …
>
> — [**7.2.14** දැඩි සමානතා සැසඳීම](https://www.ecma-international.org/ecma-262/#sec-strict-equality-comparison)
IEEE හි `NaN` කාරකය පිළිබඳ අර්ථ දැක්වීම අනුගමනය කරමින්:
> අන්යොන්ය වශයෙන් බහිෂ්කාර බන්ධුතා හතරක් වලංගුය: වඩා කුඩා, සමාන, වඩා විශාල, සහ අපිළිවෙළ වශයෙනි. අවම වශයෙන් එක සම්ප්රදානයක් හෝ සංඛ්යාවක් නොවන විට අවසාන අවස්ථාව උද්ගත වේ. සෑම “සංඛ්යාවක් නොවේ” අගයක් ම , තමා ද ඇතුළු ව, සියල්ල සමඟ අපිළිවෙල සසඳයි.
>
> — [“IEEE754 සංඛ්යාවක් නොවේ අගයන් සැසඳීම් සියල්ල සඳහා අසත්ය ප්රතිදානය වීමට හේතුව කුමක් ද?”](https://stackoverflow.com/questions/1565164/1573715#1573715) at StackOverflow
## එය අසාර්ථකත්වයකි
ඔබ විශ්වාස නොකරනු ඇත, නමුත් …
```js
(![] + [])[+[]] +
(![] + [])[+!+[]] +
([![]] + [][[]])[+!+[] + [+[]]] +
(![] + [])[!+[] + !+[]];
// -> 'fail'
```
### 💡 විවරණය:
ඉහත සංකේත පෙළ කැබලිවලට කඩා ගැනීම මඟින්, පහත රටාව නිතර ඇතිවන බව අප හඳුනා ගනී:
```js
![] + []; // -> 'false'
![]; // -> false
```
ඉතින් අපි `false` ට [] එකතු කිරීමට තැත් කරමු. නමුත් අභ්යන්තර කෘත්ය ඇමතුම් ගණනාවක් නිසා (`binary + Operator` -> `ToPrimitive` -> `[[DefaultValue]]`), එය, දකුණු පස පෙළ ට පරිවර්තනය කිරීමෙන් අවසන් වේ.
```js
![] + [].toString(); // 'false'
```
පෙළ අරාවක් ලෙස සැලකීමෙන්, `[0]` මඟින් අපට එහි පළමු අක්ෂරය වෙත ප්රවේශ විය හැකිය:
```js
"false"[0]; // -> 'f'
```
ඉතිරිය ප්රත්යක්ෂ ය., නමුත් i නොමඟ යවන සුළු ය. “fail” හි i යන්න, `['10']` ස්ථානයේ ඇති අවයවය ග්රහණය කිරීමෙන් සහ පෙළ `'falseundefined'` උත්පාදනය වීමෙන් ග්රහණය කෙරෙනු ලැබේ.
## `[]` සත්යමය නමුත් `true` නොවේ
අරාවක් යනු සත්යමය අගයකි, කෙසේ නමුත් එය `true` ට සමාන නොවේ.
```js
!![] // -> true
[] == true // -> false
```
### 💡 විවරණය:
ECMA-262 පිරිවිතරයෙහි අදාළ කොටස් වලට සබැඳි පහත දැක්වේ:
- [**12.5.9** තාර්කික NOT කාරකය (`!`)](https://www.ecma-international.org/ecma-262/#sec-logical-not-operator)
- [**7.2.13** වියුක්ත සමානතා සැසඳීම](https://www.ecma-international.org/ecma-262/#sec-abstract-equality-comparison)
## `null` අසත්යමය මුත් `අසත්ය` නොවේ
`null` අසත්යමය යන්න නොසලකා, එය `false` යන්නට සම නොවේ
```js
!!null; // -> false
null == false; // -> false
```
කෙසේ නමුත්, `0` සහ `””` වැනි අසත්යමය අගයන් `false` ට සම වේ
```js
0 == false; // -> true
"" == false; // -> true
```
### 💡 විවරණය:
විවරණය ඉහත උදාහරණය සඳහා පරිදි ම වේ. අදාළ සබැඳිය පහත දැක්වේ:
- [**7.2.13** වියුක්ත සමානතා සැසඳීම](https://www.ecma-international.org/ecma-262/#sec-abstract-equality-comparison)
## `document.all` යනු වස්තුවකි, නමුත් එය අර්ථ විරහිතය.
> ⚠️ මෙය පිරික්සුම් යෙදුම් ක්රමලේඛ අතුරුමුහුණතේ කොටසක් වන අතර Node.js පරිසරයක ක්රියා නොකරනු ඇත ⚠️
`document.all` යන්න අරාවක් වැනි වස්තුවක් ය යන්න නොසලකා, එය, පිටුවේ DOM අවයව වෙත ප්රවේශය සපයයි. එය `typeof` කෘත්යය ට අර්ථ විරහිත ය යන්නෙන් ප්රතිචාර දක්වයි.
```js
document.all instanceof Object; // -> true
typeof document.all; // -> 'undefined'
```
තව ද, `document.all`, `undefined` ට සම නොවේ.
```js
document.all === undefined; // -> false
document.all === null; // -> false
```
නමුත්:
```js
document.all == null; // -> true
```
### 💡 විවරණය:
> `document.all`, විශේෂයෙන් IE හි පැරණි මාදිලියන්හිදී, DOM අවයව වෙත ප්රවේශ වීමේ මාර්ගයක් ලෙස සැලකුණි. එය කිසි විටෙකත් සම්මතයක් නොවුව ද පැරණි JS කේතයේ එය පුළුල්ව භාවිත විනි. සම්මතය නව අතුරුමුහුණත් සමඟ ප්රගමනය වන වූ විට මෙම අතුරුමුහුණත් ඇමතුම යල්පිනූ අතර සම්මත සම්පාදන කොමිසමට එමඟින් කරන්නේ කුමක්ද යන්න තීරණය කිරීමට සිදුව තිබිණි. නමුත් එහි පුළුල් භාවිතය නිසා ඔවුන්, පිරිවිතරයට සචින්ත්ය උල්ලංඝනයක් එක් කරමින්, එම අතුරුමුහුණත පවත්වා ගැනීමට තීරණය කරන ලදී.
> දැඩි සමානතා සැසඳීමේ දී එය `false` ට `undefined` ලෙසත්, වියුක්ති සමානතා සැසඳීමේ දී `true` ලෙසත් ප්රතිචාර දැක්වීමට හේතුව පිරිවිතරයේ සචින්ත්ය උල්ලංඝනය කිරීමයි.
>
> — [“යල්පිනු විශේෂාංග - document.all”](https://html.spec.whatwg.org/multipage/obsolete.html#dom-document-all) at WhatWG - HTML spec
> — [“පරිච්ජේදය 4 - ToBoolean - අසත්යමය අගයන්”](https://github.com/getify/You-Dont-Know-JS/blob/0d79079b61dad953bbfde817a5893a49f7e889fb/types%20%26%20grammar/ch4.md#falsy-objects) at YDKJS - Types & Grammar
## අවම අගය, ශුන්යය ට වඩා විශාල ය.
`Number.MIN_VALUE` යනු කුඩා ම සංඛ්යාවයි; එය ශුන්යය ට වඩා විශාල ය:
```js
Number.MIN_VALUE > 0; // -> true
```
### 💡 විවරණය:
> `Number.MIN_VALUE` හි අගය `5e-324` වන අතර එය float හි නිරවද්යතාව යටතේ නිරූපණය කළ හැකි කුඩාම ධන සංඛ්යාවයි. එය float දත්ත වර්ගයට ලබා දිය හැකි හොඳම විභේදනය අර්ථ දක්වයි.
>
> තදබල ලෙස සැලකීමේදී සත්ය වශයෙන් ම සංඛ්යාත්මක නොවුවත්,දැන් සමස්ත කුඩාතම අගය `Number.NEGATIVE_INFINITY` වේ.
>
> — ["JavaScript හි දී `Number.MIN_VALUE` ට වඩා ශුන්යය කුඩා වන්නේ මන් ද?"](https://stackoverflow.com/questions/26614728/why-is-0-less-than-number-min-value-in-javascript) StackOverflow හි
- [**20.1.2.9** Number.MIN_VALUE](https://www.ecma-international.org/ecma-262/#sec-number.min_value)
## කෘත්යය, කෘත්යයක් නොවේ
> ⚠️ V8 v5.5 හෝ පහළ (Node.js <=7) පවතින දෝෂයකි ⚠️
ඔබ සැවොම කරදරකාරී _undefined is not a function_ දනී, නමුත් මෙය කුමක් ද?
```js
// null දීර්ඝ කරන පන්තියක් අර්ථ දැක්වීම
class Foo extends null {}
// -> [Function: Foo]
new Foo() instanceof null;
// > TypeError: function is not a function
// > at … … …
```
### 💡 විවරණය:
මෙය පිරිවිතරයෙහි කොටසක් නොවේ. මෙය මේ වන විට නිරාකරණය කර ඇති දෝෂයකි, එමනිසා අනාගතයේදී මෙවැනි ගැටළුවක් පැන නොනඟිනු ඇත.
## අරාවන් ආකලනය
ඔබ අරාවන් දෙකක් එකතු කිරීමට තැත් කළහොත් කුමක් සිදුවනු ඇත් ද?
```js
[1, 2, 3] + [4, 5, 6]; // -> '1,2,34,5,6'
```
### 💡 විවරණය:
සමෝච්ජය සිදුවේ. මෙය පියවරෙන් පියවර, පහත පරිදි දැක්විය හැක:
```js
[1, 2, 3] +
[4, 5, 6][
//toString() කැඳවන්න
(1, 2, 3)
].toString() +
[4, 5, 6].toString();
// සමෝච්ජය
"1,2,3" + "4,5,6";
// ->
("1,2,34,5,6");
```
## අරාවක පසුයෙදුම් කොමා
ඔබ හිස් අයිතම 4 ක අරාවක් නිර්මාණය කර ඇත. කෙසේ නමුත් පසු යෙදුම් කොමාවන් නිසා, ඔබට අවයව 3කින් සමන්විත අරාවක් ලැබෙනු ඇත:
```js
let a = [, , ,];
a.length; // -> 3
a.toString(); // -> ',,'
```
### 💡 විවරණය:
> JavaScript කේතයට නව අවයව, පරාමිතීන් හෝ ගුණාංග එක් කිරීමේදී **පසුයෙදුම් කොමා** ( සමහර විට **අවසන් කොමා** ලෙස හැඳින්වෙන) ප්රයෝජනවත් විය හැක. ඔබට නව ගුණයක් එක් කිරීමට අවශ්ය විට, කලින් අවසාන පේලිය දැනටමත් පසුයෙදුම් කොමාවක් භාවිත කරන්නේ නම්, ඔබට සරලවම එම පේලිය විකෘත කිරීමකින් තොරව නව පේළියක් එක් කළ හැක. මෙය පිටපත්-පාලන වෙනස්කම් පිරිසිදුව පවත්වා ගන්නා අතරම කේත සංස්කරණ බාධා අවම කරයි.
>
> — [පසුයෙදුම් කොමා](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Trailing_commas) at MDN
## අරාවන් සැසඳීම යක්ෂයෙකි
ඔබ ට පහත දැකිය හැකි පරිදි, අරාවන් සැසඳීම යක්ෂයෙකි:
```js
[] == '' // -> true
[] == 0 // -> true
[''] == '' // -> true
[0] == 0 // -> true
[0] == '' // -> false
[''] == 0 // -> true
[null] == '' // true
[null] == 0 // true
[undefined] == '' // true
[undefined] == 0 // true
[[]] == 0 // true
[[]] == '' // true
[[[[[[]]]]]] == '' // true
[[[[[[]]]]]] == 0 // true
[[[[[[ null ]]]]]] == 0 // true
[[[[[[ null ]]]]]] == '' // true
[[[[[[ undefined ]]]]]] == 0 // true
[[[[[[ undefined ]]]]]] == '' // true
```
### 💡 විවරණය:
ඔබ ඉහත උදාහරණ සඳහා මහත් පරීක්ෂාවෙන් සිටිය යුතුය! මෙම හැසිරීම, පිරිවිතරයේ [**7.2.13** වියුක්ත සමානතා සැසඳීම](https://www.ecma-international.org/ecma-262/#sec-abstract-equality-comparison) අංශයේ විස්තර කෙරේ.
## `undefined` සහ `Number`
අප, `Number ` තනන්නාට කිසිදු පරාමිතියක් යොමු නොකරයි නම්, අපට 0 ලැබේ. සත්ය පරාමිතීන් නොමැතිවිට නිල පරාමිතීන්ට`අර්ථ විරහිත` අගය පැවරෙයි. මෙනිසා පරාමිති නොමැති `Number`, `අර්ථ විරහිත` යන්න එහි පරාමිතියේ අගය ලෙස ගනු ඇතැයි ඔබ බලාපොරොත්තු විය හැකිය. කෙසේ නමුත්, අප `අර්ථ විරහිත` යොමු කළ විට අපට `සංඛ්යාවක් නොවේ` යන්න ලැබේ
```js
Number(); // -> 0
Number(undefined); // -> NaN
```
### 💡 විවරණය:
පිරිවිතරයට අනුව:
1. මෙම කෘත්යයේ ඇමතීමට කිසිදු පරාමිතියක් ලබා දී නැත්නම්, `n = `+0`.ලෙස ගනිමු.
2. නැතිනම්. `n = `ToNumber(value)`.` ලෙස ගනිමු
3. `අර්ථ විරහිත` වීමක දී, `ToNumber(undefined)` විසින් `NaN` ප්රතිදානය කළ යුතුය.
අනුකූල අංශය පහත පරිදි වේ:
- [**20.1.1** සංඛ්යා තනන්නා](https://www.ecma-international.org/ecma-262/#sec-number-constructor)
- [**7.1.3** ToNumber(`argument`)](https://www.ecma-international.org/ecma-262/#sec-tonumber)
## `parseInt` නරක මිනිසෙකි
`parseInt`, එහි චරිත ලක්ෂණ නිසා ප්රසිද්ධය:
```js
parseInt("f*ck"); // -> NaN
parseInt("f*ck", 16); // -> 15
```
**💡 විවරණය:** මෙය සිදුවන්නේ කුමක් නිසා ද යත්, `parseInt` විසින් එය නොදන්නා අක්ෂරයක් හමු වනතුරු අකුරෙන් අකුර අඛණ්ඩව විග්රහ කරන බැවිනි. `'f*ck'` හි `f` යනු අගය `15` වන සොළොස්වන පාදයේ සංඛ්යාවයි.
`අනන්තය`, `පූර්ණ සංඛ්යාවක්` බවට විග්රහ කිරීම තරමක් වැදගත්ය
```js
//
parseInt("Infinity", 10); // -> NaN
// ...
parseInt("Infinity", 18); // -> NaN...
parseInt("Infinity", 19); // -> 18
// ...
parseInt("Infinity", 23); // -> 18...
parseInt("Infinity", 24); // -> 151176378
// ...
parseInt("Infinity", 29); // -> 385849803
parseInt("Infinity", 30); // -> 13693557269
// ...
parseInt("Infinity", 34); // -> 28872273981
parseInt("Infinity", 35); // -> 1201203301724
parseInt("Infinity", 36); // -> 1461559270678...
parseInt("Infinity", 37); // -> NaN
```
null විග්රහ කිරීමේදී ද ප්රවේශම් වන්න.:
```js
parseInt(null, 24); // -> 23
```
**💡 විවරණය:**
> එය අභිශුන්යය, පෙළ `null ` බවට පරිවර්තනය කිරීමට උත්සාහ කරයි. පාදම 0 සිට 23 දක්වා එයට පරිවර්තනය කළ හැකි සංඛ්යාවක් නොමැති නිසා එය `සංඛ්යාවක් නොවේ` යන්න ප්රතිදානය කරයි. 24 හිදී, 14 වනඅක්ෂරය වන n , සංඛ්යා පද්ධතියට එක් වේ. 31 හි දී, 21 වන අක්ෂරය වන “u ” එක් කෙරෙන අතර සම්පූර්ණ පෙළ විකේතනය කළ හැකි වේ. 37 හිදී, තවදුරටත්, ජනිත කළ හැකි වලංගු සංඛ්යාත්මක කුලකයක් නොමැති බැවින් `සංඛ්යාවක් නොවේ` යන්න ප්රතිදානය වේ.
>
> — [“parseInt(null, 24) === 23… මොකක්?”](https://stackoverflow.com/questions/6459758/parseintnull-24-23-wait-what) StackOverflow හි
අෂ්ටක අමතක නොකරන්න:
```js
parseInt("06"); // 6
parseInt("08"); // 8 if support ECMAScript 5
parseInt("08"); // 0 if not support ECMAScript 5
```
**💡 විවරණය:** ප්රතිදාන පෙළ “0” න් ආරම්භ වේ නම් , පාදය අට (8) හෝ දහය (10) වේ. නිශ්චිතවම කුමන පාදය තොරාගැනේද යන්න ක්රියාකාරීත්වය මත රඳා පවතී. 10 භාවිත වන බව ECMAScript 5 මඟින් නිශ්චය කෙරෙන මුත් සියලු වෙබ් පිරික්සුම් තවම මෙයට සහය නොදක්වයි. මේ හේතුව නිසා `parseInt ` භාවිතයේ දී සෑම විටම පාදය සඳහන් කරන්න.
`parseInt` සැමවිටම ප්රදානය පෙළ බවට හරවයි:
```js
parseInt({ toString: () => 2, valueOf: () => 1 }); // -> 2
Number({ toString: () => 2, valueOf: () => 1 }); // -> 1
```
Be careful while parsing floating point values
```js
parseInt(0.000001); // -> 0
parseInt(0.0000001); // -> 1
parseInt(1 / 1999999); // -> 5
```
**💡 විවරණය:** `ParseInt` විසින් පෙළ පරාමිතියක් ගෙන සඳහන් කරන ලද පාදයේ නිඛිලයක් ප්රතිදානය කරයි.තව ද එමඟින්, යොමු කළ පෙළ පරාමිතියේ, පළමු අංකයක් නොවන අක්ෂරය සහ ඊට පසු සියල්ල ඉවත් කරනු ලැබේ. `0.000001`, `"0.000001"` නම් පෙළ බවට පරිවර්තනය වන අතර `parseInt ` විසින් 0 ප්රතිදානය කෙරෙයි. `0.000001` පෙළ බවට හැරවූ විට එය `"1e-7"` ලෙස සැලකෙන අතර එහෙයින් `parseInt` විසින් `1` ප්රතිදානය කෙරෙයි. `1/1999999`, `5.00000250000125e-7` ලෙස නිරූපණය කෙරෙන අතර `parseInt` විසින් `5` ප්රතිදානය කෙරේ.
## Math with `true` and `false`
අපි ගණනය කිරීමක යෙදෙමු:
```js
true +
true(
// -> 2
true + true
) *
(true + true) -
true; // -> 3
```
හ්ම්… 🤔
### 💡 විවරණය:
`Number` තනන්නා මඟින් අපට අගයන් සංඛ්යා බවට පත් කළ හැකිය. `true`, `1` බවට හැරවෙන බව ඉතා ප්රත්යක්ෂය.:
```js
Number(true); // -> 1
```
ඒකක ආකලන කාරකය, එහි අගය සංඛ්යාවක් බවට පත්කිරීමට උත්සාහ කරයි. එයට, නිඛිල සහ දශම සංඛ්යා වල පෙළ නිරූපණයන් මෙන්ම පෙළ අගයන් නොවන `true`, `false ` සහ `null ` ද පරිවර්තනය කළ හැකිය. එයට කිසියම් අගයක් පරිවර්තනය කළ නොහැකි නම්, එය `Nan ` ලෙස නිර්ණය වේ. මෙයින් අදහස්වන්නේ අපට ඉතා පහසුවෙන් `true ` යන්න `1` බවට හැරවිය හැකි බවයි:
```js
+true; // -> 1
```
ඔබ එකතු කිරීම හෝ ගුණ කිරීම කරන විට, `ToNumber` විධිය ව්යකෘත වේ. පිරිවිතරය ට අනුව මෙම විධියෙන් ලබා දෙන්නේ:
> පරාමිතිය **සත්ය** නම්, **1** ප්රතිදානය කරන්න. **අසත්ය** නම් **+0** ප්රතිදානය කරන්න.
අපට සාමාන්ය සංඛ්යා පරිදි බූලියානු අගයන් ආකලනය කර නිවැරදි පිළිතුරු ලබා ගත හැක්කේ මේ නිසා ය..
අනුකූල අංශ:
- [**12.5.6** ඒකක `+` කාරකය](https://www.ecma-international.org/ecma-262/#sec-unary-plus-operator)
- [**12.8.3** ආකලන කාරකය (`+`)](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)
## JavaScript හි HTML ටීකාවන් වලංගු ය.
ඔබ පුදුම වනු ඇත, නමුත් `<!--`(HTML ටීකා ලෙස හැඳින්වෙන) යනු JavaScript හි වලංගු ටීකාවකි.
```js
// valid comment
<!-- valid comment too
```
### 💡 විවරණය:
HTML ආකාර ටීකාවන්හි අරමුණ වූයේ <script /> ඇමුණුමට සහය නොදක්වන වෙබ් පිරික්සුම් වලට සහය වීමයි. මෙම පිරික්සුම් (උදා: Netscape 1.x ආදී) තව දුරටත් ජනප්රිය නොවේ. එමනිසා ඔබේ <script /> ඇමිණුම් වටා HTML ටීකාවන් යෙදීමට කිසිදු සාධාරණ හේතුවක් නැත.
V8 engine මත Node.js පදනම් වී ඇති බැවින්, Node . js විසින් ද HTML-ආකාරයේ ටීකා සඳහා සහය දක්වයි. තව ද, එය පිරිවිතරයෙහි කොටසකි:
- [**B.1.3** HTML-ආකාරයේ ටීකාවන්](https://www.ecma-international.org/ecma-262/#sec-html-like-comments)
## `NaN` is ~~not~~ a number
`NaN ` හි වර්ගය `සංඛ්යා` වේ.:
```js
typeof NaN; // -> 'number'
```
### 💡 විවරණය:
`typeof` සහ `instanceof` ක්රියා කරන ආකාරය පිළිබඳ විවරණයන්:
- [**12.5.5** `typeof` කාරකය](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)
## `[]` සහ `null` වස්තූන් ය.
```js
typeof []; // -> 'object'
typeof null; // -> 'object'
// however
null instanceof Object; // false
```
### 💡 විවරණය:
`typeof` කාරකයේ හැසිරීම, පිරිවිතරයේ මෙම කොටසේ අර්ථ දැක්වේ:
- [**12.5.5** `typeof` කාරකය](https://www.ecma-international.org/ecma-262/#sec-typeof-operator)
පිරිවිතරයට අනුව, [වගුව 35: `typeof` කාරකයේ ප්රතිඵල ](https://www.ecma-international.org/ecma-262/#table-35). ට අනුකූලව `typeof ` කාරකය විසින් පෙළ ප්රතිදානය කරයි. `[[Call]]` ක්රියාත්මක නොකරන අභිශුන්යය , සාමාන්ය, සම්මත විදේශීය සහ අසම්මත විදේශීය වස්තුන් සඳහා, එය `“object ”` පෙළ ප්රතිදානය කරයි.
කෙසේ නමුත්, `toString` විධිය භාවිතයෙන් ඔබට වස්තුවක වර්ගය පරීක්ෂා කළ හැකිය.
```js
Object.prototype.toString.call([]);
// -> '[object Array]'
Object.prototype.toString.call(new Date());
// -> '[object Date]'
Object.prototype.toString.call(null);
// -> '[object Null]'
```
## ඉන්ද්රජාලිකව වැඩිවන සංඛ්යා
```js
999999999999999; // -> 999999999999999
9999999999999999; // -> 10000000000000000
10000000000000000; // -> 10000000000000000
10000000000000000 + 1; // -> 10000000000000000
10000000000000000 + 1.1; // -> 10000000000000002
```
### 💡 විවරණය:
මෙයට හේතු වන්නේ ද්විමය දශම අංක ගණිතය සඳහා වන IEEE 754-2008 සම්මතයයි. මෙම පරිමාණයේ දී, එය ළඟම ඉරට්ටේ සංඛ්යාවට වටයයි. වැඩිදුර කියවන්න:
- Wikipedia හි [**6.1.6** සංඛ්යා වර්ගය ](https://www.ecma-international.org/ecma-262/#sec-ecmascript-language-types-number-type)
- [IEEE 754](https://en.wikipedia.org/wiki/IEEE_754)
## `0.1 + 0.2` හි නිරවද්යතාව
හොඳින් දන්නා විහිළුවකි. An addition of `0.1` and `0.2` is deadly precise:
```js
0.1 +
0.2(
// -> 0.30000000000000004
0.1 + 0.2
) ===
0.3; // -> false
```
### 💡 විවරණය:
StackOverflow හි [”දශම සංඛ්යා අංක ගණිතය බිඳවැටී ද?”](https://stackoverflow.com/questions/588004/is-floating-point-math-broken) ප්රශ්නයට පිළිතුර:
ඔබේ ක්රමලේඛයේ `0.2` සහ `0.3`, ඒවායේ සත්ය අගයන්ට නිමානය කිරීම් වේ. `0.2` ට සමීපම දශම සංඛ්යාව `0.2` ට වඩා විශාල වන අතර `0.3` ට සමීපම දශම සංඛ්යාව, `0.3` ට සම වේ.`0.1` සහ `0.2` හි එකතුව `0.3` තාත්වික සංඛ්යාවට වඩා විශාල වී එය ඔබේ කේතයේ නියතයට අසමාන වේ.
මෙම ප්රශ්නය කෙතරම් ප්රසිද්ධ ද යත් [0.30000000000000004.com](http://0.30000000000000004.com) නමින් වෙබ් අඩවියක් පවා ඇත.එය JavaScript හි පමණක් නොව දශම සංඛ්යා ගණිතය භාවිත කරන සෑම භාෂාවකම ඇත
## සංඛ්යා පූරණය
ඔබට, `Number ` සහ `String `වැනි දැවටුම් වස්තූන් වලට ඔබේම විධීන් එක් කළ හැකිය.
```js
Number.prototype.isOne = function() {
return Number(this) === 1;
};
(1.0).isOne(); // -> true
(1).isOne(); // -> true
(2.0)
.isOne()(
// -> false
7
)
.isOne(); // -> false
```
### 💡 විවරණය:
ප්රත්යක්ෂව ම, JavaScript හි වෙනත් ඕනෑම වස්තුවක් මෙන් ඔබට `Number` වස්තුව දීර්ඝ කළ හැකිය. කෙසේ නමුත්, අර්ථ දක්වන ලද විධිය, පිරිවිතරයේ කොටසක් නොවේ නම්, එය නිර්දේශ කරනු නොලැබේ.
`Number`' හි ගුණාංග ලැයිස්තුවක් පහත දැක්වේ.
- [**20.1** සංඛ්යා වස්තූන් ](https://www.ecma-international.org/ecma-262/#sec-number-objects)
## සංඛ්යා තුනක් සැසඳීම
```js
1 < 2 < 3; // -> true
3 > 2 > 1; // -> false
```
### 💡 විවරණය:
මෙය ඒ අයුරින් ක්රියා කරන්නේ මන්ද? ප්රශ්නය ඇත්තේ ප්රකාශනයක පළමු කොටසේ ය.මෙය ක්රියා කරන්නේ මෙසේය.
```js
1 < 2 < 3; // 1 < 2 -> true
true < 3; // true -> 1
1 < 3; // -> true
3 > 2 > 1; // 3 > 2 -> true
true > 1; // true -> 1
1 > 1; // -> false
```
_Greater than or equal operator (`>=`)_ මඟින් අපට මෙය සැකසිය හැකිය:
```js
3 > 2 >= 1; // true
```
බන්ධුතා කාරක පිළිබඳ පිරිවිතරයෙහි වැඩිදුර කියවන්න:
- [**12.10** බන්ධුතා කාරක](https://www.ecma-international.org/ecma-262/#sec-relational-operators)
## හාස්යජනක ගණිතය
බොහෝ විට JavaScript හි අංක ගණිතය කර්ම වල ප්රතිඵල අනපේක්ෂිත විය හැකිය. පහත උදාහරණ සලකන්න:
```js
3 - 1 // -> 2
3 + 1 // -> 4
'3' - 1 // -> 2
'3' + 1 // -> '31'
'' + '' // -> ''
[] + [] // -> ''
{} + [] // -> 0
[] + {} // -> '[object Object]'
{} + {} // -> '[object Object][object Object]'
'222' - -'111' // -> 333
[4] * [4] // -> 16
[] * [] // -> 0
[4, 4] * [4, 4] // NaN
```
### 💡 විවරණය:
පළමු උදාහරණ හතරෙහි සිදුවන්නේ කුමක් ද? JavaScript හි ආකලනය වටහා ගැනීම සඳහා කුඩා වගුවක් පහත දැක්වේ.:
```
Number + Number -> addition
Boolean + Number -> addition
Boolean + Boolean -> addition
Number + String -> concatenation
String + Boolean -> concatenation
String + String -> concatenation
```
අනෙකුත් උදාහරණ පිළිබඳ කවරේ ද? `[]` සහ `{}` සඳහා, ආකලනයට පෙර, `ToPrimitive` සහ `ToString` විධීන් සම්පුර්ණයෙන් අමතනු ලැබේ. පිරිවිතරයේ ඇගයීම් ක්රියාවලිය පිළිබඳව වැඩිදුර කියවන්න.
- [**12.8.3** ආකලන කාරකය (`+`)](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)
## සෙවුම් ප්රකාශන ආකලනය
ඔබට මේ අයුරින් සං ඛ්යා එකතු කළ හැකි බව ඔබ දැන සිටියා ද?
```js
// Patch a toString method
RegExp.prototype.toString =
function() {
return this.source;
} /
7 /
-/5/; // -> 2
```
### 💡 විවරණය:
- [**21.2.5.10** get RegExp.prototype.source](https://www.ecma-international.org/ecma-262/#sec-get-regexp.prototype.source)
## පෙළ `String` හි නිදර්ශකයක් නොවේ
```js
"str"; // -> 'str'
typeof "str"; // -> 'string'
"str" instanceof String; // -> false
```
### 💡 විවරණය:
`String` තනන්නා පෙළ ප්රතිදානය කරයි:
```js
typeof String("str"); // -> 'string'
String("str"); // -> 'str'
String("str") == "str"; // -> true
```
අපි `new` සමඟ උත්සාහ කරමු:
```js
new String("str") == "str"; // -> true
typeof new String("str"); // -> 'object'
```
වස්තුවක්? එය කුමක් ද?
```js
new String("str"); // -> [String: 'str']
```