لینک کوتاه مطلب : https://hsgar.com/?p=4478

از هیچ تا بی‌نهایت تا ریاضیات در جاوا اسکریپت

در دنیای کامپیوتر یکی از موضوعات بسیار مهم بحثی است به نام «هیچ». مشکل‌ترین کار تعریف درست «هیچ» است. «هیچ» چیست، «هیچ» دقیقا یعنی هیچ. یعنی ۰ نیست، تعریف نشده نیست، خالی نیست بلکه «هیچ» است. در جاوا اسکریپت هم «هیچ» داریم.

null == undefined; // true
null === undefined; // false
typeof null; // 'object';
var a = null;
a === null; // true

خوب، کد بالا برای یافتن null در جاوا اسکریپت کافی است. اما نوچه‌های تیمی برنزلی به این راضی نشدند و گفتند یک متد می‌نویسیم و null را به دلخواه خودمان و نه به دلخواه شما تعریف می‌کنیم.

window.isNaN()

این window پدر تمامی عناصر است. پس می‌توانیم آن را ننویسیم و فقط isNaN را بنویسیم.

sNaN(NaN); // true
isNaN(1); // false: 1 is a number
isNaN(-2e-4); // false: -2e-4 is a number (-0.0002) in scientific notation
isNaN(Infinity); // false: Infinity is a number
isNaN(true); // false: converted to 1, which is a number
isNaN(false); // false: converted to 0, which is a number
isNaN(null); // false: converted to 0, which is a number
isNaN(""); // false: converted to 0, which is a number
isNaN(" "); // false: converted to 0, which is a number
isNaN("45.3"); // false: string representing a number, converted to 45.3
isNaN("1.2e3"); // false: string representing a number, converted to 1.2e3
isNaN("Infinity"); // false: string representing a number, converted to Infinity
isNaN(new Date); // false: Date object, converted to milliseconds since epoch
isNaN("10$"); // true : conversion fails, the dollar sign is not a digit
isNaN("hello"); // true : conversion fails, no digits at all
isNaN(undefined); // true : converted to NaN
isNaN(); // true : converted to NaN (implicitly undefined)
isNaN(function(){}); // true : conversion fails
isNaN({}); // true : conversion fails
isNaN([1, 2]); // true : converted to "1, 2", which can't be converted to a number

خوب این تابع یک مشکلاتی داشت پس آمدند یک تابع دیگر به نام Number.isNaN() تعریف کردند.

// The one and only
Number.isNaN(NaN); // true
// Numbers
Number.isNaN(1); // false
Number.isNaN(-2e-4); // false
Number.isNaN(Infinity); // false
// Values not of type number
Number.isNaN(true); // false
Number.isNaN(false); // false
Number.isNaN(null); // false
Number.isNaN(""); // false
Number.isNaN(" "); // false
Number.isNaN("45.3"); // false
Number.isNaN("1.2e3"); // false
Number.isNaN("Infinity"); // false
Number.isNaN(new Date); // false
Number.isNaN("10$"); // false
Number.isNaN("hello"); // false
Number.isNaN(undefined); // false
Number.isNaN(); // false
Number.isNaN(function(){}); // false
Number.isNaN({}); // false
Number.isNaN([]); // false
Number.isNaN([1]); // false
Number.isNaN([1, 2]); // false
Number.isNaN([true]); // false

از NULL که بگذریم به بی‌نهایت می‌رسیم. منفی بی‌نهایت و مثبت بی‌نهایت.

Infinity > 123192310293; // true
-Infinity < -123192310293; // true
1 / 0; // Infinity
Math.pow(123123123, 9123192391023); // Infinity
Number.MAX_VALUE * 2; // Infinity
23 / Infinity; // 0
-Infinity; // -Infinity
-Infinity === Number.NEGATIVE_INFINITY; // true
-0; // -0 , yes there is a negative 0 in the language
0 === -0; // true
1 / -0; // -Infinity
1 / 0 === 1 / -0; // false
Infinity + Infinity; // Infinity
var a = 0, b = -0;
a === b; // true
1 / a === 1 / b; // false
// Try your own!

دانستن موارد زیر هم نیک است

Number.MAX_VALUE; // 1.7976931348623157e+308
Number.MAX_SAFE_INTEGER; // 9007199254740991
GoalKicker.com – JavaScript® Notes for Professionals 16
Number.MIN_VALUE; // 5e-324
Number.MIN_SAFE_INTEGER; // -9007199254740991
Number.EPSILON; // 0.0000000000000002220446049250313
Number.POSITIVE_INFINITY; // Infinity
Number.NEGATIVE_INFINITY; // -Infinity
Number.NaN; // NaN

عملیاتی که NaN می‌دهند:

"a" + 1
"b" * 3
"cde" - "e"
[1, 2, 3] * 2
0 / 0 // NaN

عملیاتی که NaN نمی‌دهد

[2] * [3] // Returns 6
"a" + "b" // Returns "ab"

توابع ریاضی در جاوا اسکریپت

Math.floor("a")
Math.sqrt(-1)
ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.