Хэрвээ бид нар JS дээр нэг утгын төрлийг өөр утгын төрлөөр өөрчлөх ёстой бол анхаарах зүйлс бол 42 нь тоо бөгөөд харин "42" нь тэмдэгт мөр учир 42 + 1 гэж бичих боломжтой бол харин "42" + 1 гэж бичвэл 2 өөр төрлийн утгыг нэмж байгаа гэж ойлгох ёстой.
parseInt() гэдэг функц ашиглан текст төрлөөс тоон төрөл рүү оруулж болдог.
let str = "42";
let num = parseInt(str);
console.log(num + 8); // 50
console.log(parseInt( '42nd Street')); // 42
parseFloat() гэдэг функц ашиглан
let str = "42.5656";
let num = parseInt(str);
console.log(num + 8); // 50.5656
Хэрвээ тухайн текстийг тоон төрөл рүү хөрвүүлэхэд алдаа гарвал NaN гэж гарч ирнэ.
let str = 'Hello';
let num = parseInt(str);
console.log(num); // NaN
isNaN гэдэг функцээр тоо болгож өөрчлөхөд алдаа гарсан эсэхийг шалгаж болно.
let str = 'Hello';
let num = parseInt(str);
console.log(isNaN(num)); // true
Тоо болгож өөрчлөх үед toString() функц ашиглана.
let num = 42;
let str = num.toString();
console.log(str); // "42"
let sum = 80 + 20 ; console.log( 'Addition: ' + sum )
let sub = sum - 50 ; console.log( 'Subtraction: ' + sub )
let mul = sum * 5 ; console.log( 'Multiplication: ' + mul )
let div = sum / 4 ; console.log( 'Division: ' + div )
let mod = sum % 2 ; console.log( 'Modulus: ' + mod )
let inc = ++sum ; console.log( 'Increment: ' + inc )
let dec = --sum ; console.log( 'Decrement: ' + dec )
let sum = 5.00; sum += 5; console.log( 'Add & assign decimal: ' + sum ); // 10
sum = 8; sum -= 4; console.log( 'Subtract & assign: ' + sum ); // 4
sum = 8; sum *= 4; console.log( 'Multiply & assign: ' + sum ); // 32
sum = 8; sum /= 4; console.log( 'Divide & assign: ' + sum ); // 2
sum = 8; sum %= 4; console.log( 'Modulus & assign: ' + sum ); // 0
Basic Operators: Үндсэн Операторууд:
Relational Operators: Харьцуулах Операторууд
// Equality (==)
5 == "5" // true (type coercion)
null == undefined // true
0 == false // true
// Strict Equality (===)
5 === "5" // false (different types)
null === undefined // false
0 === false // false
Санана уу: === төрөл болон утга хоёулаа адилхан байна гэдгийг шалгана
| Expression | Үр дүн | Яагаад? |
|---|---|---|
| "1" == 1 | true | String converted to number |
| [1] == 1 | true | Array converted to primitive |
| ["1"] == 1 | true | Multiple conversions |
| {} == {} | false | Different references |
5 != "5" // false
5 != 6 // true
null != undefined // false
5 !== "5" // true
5 !== 5 // false
null !== undefined // true
// Number comparison
5 > 3 // true
5 >= 5 // true
3 < 5 // true
3 <= 3 // true
// String comparison (alphabetical)
"apple" < "banana" // true
"zebra" > "yellow" // true
// Mixed types
"5" > 3 // true (string "5" converted to number)
"10" < "5" // true (string comparison!)
| Expression | Үр дүн | Тайлбар |
|---|---|---|
| [] == false | true | Хоосон array 0-руу хөрвүүлэгддэг |
| "" == false | true | Хоосон string 0-руу хөрвүүлэгддэг |
| [0] == false | true | Complex type coercion |
| null >= 0 | true | null 0-руу хөрвүүлэгддэг |
// Good practices
const userAge = 25;
if (userAge === 25) { } // ✅
if (String(userAge) === "25") { } // ✅
// Avoid
if (userAge == "25") { } // ❌
if ([1] == 1) { } // ❌
let comparison = str === 'JAVASCRIPT'
console.log( 'String Equality?' + comparison )
comparison = str === 'JavaScript'
console.log( 'String Equality? ' + comparison )
comparison = sum === 8
console.log( 'Number Equality? ' + comparison )
comparison = sum > 5
console.log( 'Greater Than? ' + comparison )
comparison = sum < 5
console.log( 'Less Than? ' + comparison )
comparison = sum <= 8
console.log( 'Less Than or Equal To? ' + comparison )
Дараах харьцуулалтуудын хариу нь юу вэ?
1. "2" > 1
2. [2] === 2
3. null == undefined
4. null === undefined
Хариултууд:
Boolean values:
Common operators:
Зөвхөн 2 утга нь 2-лаа true үед TRUE буцаана.
| A | B | A AND B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Хэрвээ 2 утганы аль нэг нь үнэн байвал утгыг буцаана.
| A | B | A OR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
Тухайн утгын эсрэгийг нь буцаана
| A | !A |
|---|---|
| 0 | 1 |
| 1 | 0 |
// AND
let resultAND = true && true; // true
let resultAND2 = true && false; // false
// OR
let resultOR = true || false; // true
let resultOR2 = false || false; // false
// NOT
let resultNOT = !true; // false
AND Example:
if (isLoggedIn && hasPermission) {
allowAccess();
}
OR Example:
if (isAdmin || isModerator) {
showControlPanel();
}
NOT Example:
if (!isAuthenticated) {
redirectToLogin();
}
Answers: false, true, false, true
The Conditional (Ternary) Operator
// Syntax:
condition ? valueIfTrue : valueIfFalse
// Example:
let age = 20;
let status = age >= 18 ? "Adult" : "Minor";
let score = 75;
let result;
if (score >= 60) {
result = "Pass";
} else {
result = "Fail";
}
let score = 75;
let result = score >= 60
? "Pass"
: "Fail";
// Тухайн тоо нь нэмэх эсвэл хасах болохыг шалгах
let number = -5;
let type = number >= 0 ? "positive" : "negative";
// String нь хоосон эсэхийг шалгах
let text = "";
let message = text ? "Has content" : "Empty";
// Хэрэглэгчийн төлвийг шалгах
let isLoggedIn = true;
let greeting = isLoggedIn ? "Welcome back!" : "Please log in";
// Олон нөхцлүүд
let score = 85;
let grade = score >= 90 ? "A"
: score >= 80 ? "B"
: score >= 70 ? "C"
: score >= 60 ? "D"
: "F";
// Давхардсан нөхцлүүд
let age = 20;
let hasID = true;
let canDrive = age >= 16
? (hasID ? "Can drive" : "Need ID")
: "Too young";
let name = "John";
let isAdmin = false;
console.log(`${name} is ${isAdmin ? "an admin" : "a regular user"}`);
// Тоогоор илэрхийлэх
let quantity = 3;
let message = `You have ${quantity} item${quantity === 1 ? '' : 's'}`;
let isSubscribed = true;
let isPremium = false;
const user = {
name: "Alice",
access: isSubscribed ? "full" : "limited",
features: {
chat: true,
storage: isPremium ? "unlimited" : "10GB"
}
};
const button = {
class: isActive ? "btn-active" : "btn-inactive",
text: isLoading ? "Loading..." : "Submit"
};
const username = input ? input : "Guest";
// Эсвэл богиноор:
const username = input ?? "Guest";
// Good - энгийн бөгөөд тодорхой
let status = age >= 18 ? "Adult" : "Minor";
// Avoid - хэтэрхий давхардуулах
let result = a > b
? (c > d ? e : f)
: (g > h ? i : j);
Дараах if-else statement-үүдийг ternary-operator луу хөрвүүлнэ үү.
// Exercise 1
if (temperature > 30) {
weather = "Hot";
} else {
weather = "Normal";
}
// Exercise 2
if (userName) {
greeting = `Hello, ${userName}`;
} else {
greeting = "Hello, Guest";
}
// Exercise 3
if (score >= 75) {
result = "Pass";
} else if (score >= 50) {
result = "Retry";
} else {
result = "Fail";
}
// Хариулт 1
weather = temperature > 30 ? "Hot" : "Normal";
// Хариулт 2
greeting = userName ? `Hello, ${userName}` : "Hello, Guest";
// Хариулт 3
result = score >= 75 ? "Pass"
: score >= 50 ? "Retry"
: "Fail";
Битийн түвшний үйлдлүүд
| Оператор | Нэр | Тайлбар |
|---|---|---|
| & | AND | Битийн БАС |
| | | OR | Битийн ЭСВЭЛ |
| ^ | XOR | Битийн Онцгой ЭСВЭЛ |
| ~ | NOT | Битийн ҮГҮЙ |
| << | Зүүн шилжилт | Битүүдийг зүүн тийш шилжүүлэх |
| >> | Баруун шилжилт | Битүүдийг баруун тийш шилжүүлэх |
let a = 5; // 0101 хоёртын системд
let b = 3; // 0011 хоёртын системд
let result = a & b; // 0001 = 1 аравтын системд
// Жишээ:
console.log(5 & 3); // 1 гэж хэвлэнэ
let a = 5; // 0101 хоёртын системд
let b = 3; // 0011 хоёртын системд
let result = a | b; // 0111 = 7 аравтын системд
// Жишээ:
console.log(5 | 3); // 7 гэж хэвлэнэ
let a = 5; // 0101 хоёртын системд
let b = 3; // 0011 хоёртын системд
let result = a ^ b; // 0110 = 6 аравтын системд
// Жишээ:
console.log(5 ^ 3); // 6 гэж хэвлэнэ
let a = 5; // 0101 хоёртын системд
let result = ~a; // 11111111111111111111111111111010
// = -6 аравтын системд
// Жишээ:
console.log(~5); // -6 гэж хэвлэнэ
Тайлбар: NOT үйлдэл нь бүх битийг эсрэгээр нь болгоно
let a = 5; // 0101 хоёртын системд
let result = a << 1; // 1010 = 10 аравтын системд
// Жишээ:
console.log(5 << 1); // 10 гэж хэвлэнэ
console.log(5 << 2); // 20 гэж хэвлэнэ
let a = 5; // 0101 хоёртын системд
let result = a >> 1; // 0010 = 2 аравтын системд
// Жишээ:
console.log(5 >> 1); // 2 гэж хэвлэнэ
console.log(5 >> 2); // 1 гэж хэвлэнэ
// Эрхийн тохиргоо
const ADMIN = 4; // 100
const WRITE = 2; // 010
const READ = 1; // 001
// Хэрэглэгчийн эрх
let userPermission = READ | WRITE; // 011 = 3
// Эрх шалгах
if (userPermission & READ) {
console.log("Унших эрхтэй");
}
if (userPermission & ADMIN) {
console.log("Админ эрхтэй");
} else {
console.log("Админ эрхгүй");
}
const WORKING = 1; // 001
const BREAK = 2; // 010
const VACATION = 4; // 100
let employeeStatus = WORKING | BREAK; // 011
// Төлөв шалгах
function checkStatus(status) {
if (status & WORKING) {
console.log("Ажиллаж байгаа");
}
if (status & BREAK) {
console.log("Завсарлага авсан");
}
if (status & VACATION) {
console.log("Амралттай");
}
}
checkStatus(employeeStatus);
Дараах битийн үйлдлүүдийн хариу юу вэ?
1. 12 & 5
2. 12 | 5
3. 12 ^ 5
4. ~12
5. 12 << 2
Хариултууд:
Операторуудын ач холбогдлын эрэмбэ
| Түвшин | Операторууд | Тайлбар |
|---|---|---|
| 18 | ( ) | Хаалт |
| 17 | . [ ] | Элемент хандалт |
| 16 | ( ) | Функцын дуудалт |
| 15 | ++ -- | Нэгээр нэмэх/хасах |
| 14 | ! ~ | Logical NOT, Bitwise NOT |
| 13 | ** | Exponentiation (Зэрэг) |
| 12 | * / % | Үржих, хуваах, үлдэгдэл |
| Түвшин | Операторууд | Тайлбар |
|---|---|---|
| 11 | + - | Нэмэх, хасах |
| 10 | << >> >>> | Битээр баруун зүүн тийш шилжүүлэх |
| 9 | < <= => > | Утга харьцуулах |
| 8 | === === !== != | Адил болон адил биш утга шалгах |
| 7 | & | БИТ AND (&) |
| 6 | ^ | БИТ XOR |
| Түвшин | Операторууд | Тайлбар |
|---|---|---|
| 5 | | | БИТ OR |
| 4 | && | Логикийн бас |
| 3 | ?: | ternary operator |
| 2 | = += –= *= /= %= &= ^= |= <<= >>= >>>= | Утга оноох операторууд |
| 1 | , | Таслал |
// Жишээ 1: Үржих болон нэмэх
let result1 = 2 + 3 * 4; // 14 (3 * 4 эхэлж)
let result2 = (2 + 3) * 4; // 20 (хаалт эхэлж)
// Жишээ 2: Хуваах болон хасах
let result3 = 10 - 6 / 2; // 7 (6 / 2 эхэлж)
let result4 = (10 - 6) / 2; // 2 (хаалт эхэлж)
let a = 5;
let b = 5;
// Өмнө нь нэмэх
let result1 = ++a * 2; // a = 6, result1 = 12
// Дараа нь нэмэх
let result2 = b++ * 2; // result2 = 10, b = 6
console.log(a); // 6
console.log(b); // 6
console.log(result1); // 12
console.log(result2); // 10
// && нь || -оос өмнө гүйцэтгэгдэнэ
let result = true || false && false; // true
// Хаалт ашиглавал өөр үр дүн гарна
let result2 = (true || false) && false; // false
// Жиш болон логик операторууд
let x = 5;
let y = 10;
let z = 15;
let result3 = x < y && y < z; // true
let result4 = x > y || y < z; // true
let a = 5;
let b = 10;
let c = 15;
// Оноох үйлдэл баруунаас зүүн рүү
let result = a = b = c; // a, b, c бүгд 15 болно
// Нийлмэл оноолт
let x = 10;
x += 5; // x = x + 5
x *= 2; // x = x * 2
console.log(x); // 30
// Жишээ 1
let result1 = 2 * 3 + 4 * 5;
// 1. 2 * 3 = 6
// 2. 4 * 5 = 20
// 3. 6 + 20 = 26
// Жишээ 2
let result2 = 10 + 20 / 5 + 3 * 2;
// 1. 20 / 5 = 4
// 2. 3 * 2 = 6
// 3. 10 + 4 + 6 = 20
let x = 5;
let y = 3;
let result = x + y * 2++; // Алдаа!
let x = 5;
let y = 3;
y++;
let result = x + y * 2;
Дараах илэрхийллүүдийн үр дүн юу вэ?
1. 15 - 5 * 3 + 6 / 2
2. 10 + 20 / (5 + 5)
3. 2 + 3 * 4 / 2
4. (10 + 5) * 3 - 15 / 3
Хариултууд:
parseInt("123"); // 123
parseFloat("12.34"); // 12.34
String(123); // "123"
(123).toString(); // "123"
isNaN("тоо"); // true
isNaN(123); // false
isNaN("123"); // false
let x = 5;
console.log(++x); // 6
let y = 5;
console.log(y++); // 5 (дараа нь 6 болно)
let x = 5;
x += 3; // x = x + 3
let text = "Сайн";
text += " байна"; // "Сайн байна"
let nas = 20;
let status = nas >= 18 ? "насанд хүрсэн" : "насанд хүрээгүй";
let result = (2 + 3) * 4; // 20
let result2 = 2 + 3 * 4; // 14