Module ā§§ ¡ āĻĒā§āϰāĻĨāĻŽ program: console, let āĻāϰ const, type, typeof
typeof, undefined āĻāϰ null: āĻāĻāĻāĻž value-āĻā§ āĻāĻŋāĻā§āĻā§āϏ āĻāϰāĻž āϏ⧠āĻā§
āĻāĻ lesson-āĻ āϝāĻž āĻļāĻŋāĻāĻŦā§
- āϏāĻŦ āϰāĻāĻŽā§āϰ value-āϰ āĻāĻĒāϰ
typeofāĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§, āĻāϰ āĻāϰ āĻāϤā§āϤāϰāĻā§āϞ⧠āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰāĻŦā§, āĻāĻŽāĻā§ āĻĻā§āĻāϝāĻŧāĻž āĻĻā§āĻāĻāĻžāϏāĻšāĨ¤ undefinedāϰā§āĻ āϝ⧠āϤāĻŋāύ āĻāĻžāϝāĻŧāĻāĻž āĻĨā§āĻā§ āĻāϏā§, āϏā§āĻā§āϞā§āϰ āύāĻžāĻŽ āĻŦāϞāϤ⧠āĻĒāĻžāϰāĻŦā§, āĻāϰ āĻŦāϞāϤ⧠āĻĒāĻžāϰāĻŦā§ āĻāĻāĻāĻžnullāĻā§ āĻŦāϏāĻžāϝāĻŧāĨ¤- āĻāĻāύ⧠declare āύāĻž āĻšāĻāϝāĻŧāĻž āύāĻžāĻŽ āĻāϰ
undefinedāϧāϰ⧠āĻĨāĻžāĻāĻž āύāĻžāĻŽā§āϰ āĻĒāĻžāϰā§āĻĨāĻā§āϝ āϧāϰāϤ⧠āĻĒāĻžāϰāĻŦā§, āĻāϰ crash āĻāĻžāĻĄāĻŧāĻžāĻ āĻĻā§āĻāĻāĻž check āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āĨ¤
David-āĻāϰ āĻĻā§āĻāĻžāύ āĻĒā§āϰāϤāĻŋāĻāĻž āϰāϏāĻŋāĻĻā§āϰ āϏāĻā§āĻā§ āĻāĻāĻāĻž āĻļā§āĻā§āĻā§āĻāĻž āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤ āĻāĻ āϏāĻāĻžāϞ⧠āĻĻā§āĻāĻž āĻā§āϞ, āϰāϏāĻŋāĻĻā§ āĻāĻžāϏā§āĻāĻŽāĻžāϰā§āϰ āύāĻžāĻŽā§āϰ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āϞā§āĻāĻž Hello, undefinedāĨ¤ āĻāĻŋāĻā§ crash āĻāϰā§āύāĻŋ, āĻā§āĻ āϏāϤāϰā§āĻāĻ āĻāϰā§āύāĻŋ, āĻāϰ āĻļāĻŦā§āĻĻāĻāĻž āĻĻā§āĻā§ āĻŽāύ⧠āĻšāϝāĻŧ printer-āĻāϰ āĻā§āύ⧠bugāĨ¤ āĻāϏāϞ⧠āϤāĻž āύāĻžāĨ¤ āĻāĻāĻž āĻāĻāĻāĻž value, āĻāĻāĻĻāĻŽ āĻ āĻŋāĻāĻ āĻžāĻ āĻāĻžāĻĒāĻž āĻšāϝāĻŧā§āĻā§, āĻāϰ āĻāĻ lesson āĻāĻāĻžāϰ āĻĒāĻŋāĻā§ āύāĻŋāϝāĻŧā§ āĻĒā§āĻāĻāĻžāĻŦā§ āϏā§āĻ āϞāĻžāĻāύā§, āϝā§āĻāĻžāϰ āĻāϤ⧠value āĻŦāϏāĻžāύā§āϰ āĻāĻĨāĻž āĻāĻŋāϞāĨ¤
typeof: value-āĻā§ āĻāĻŋāĻā§āĻā§āϏ āĻāϰ⧠āϏ⧠āĻā§
Lesson 03-āĻ typeof āĻāĻ āĻāϞāĻ āĻĻā§āĻā§āĻāĨ¤ āĻāĻāĻž āĻāĻāĻāĻž operator, --āĻāϰ āĻŽāϤā§, āϝā§āĻāĻž āĻāĻāĻāĻž value-āϰ āϏāĻžāĻŽāύ⧠āĻŦāϏ⧠āĻāϰ āϤāĻžāϰ type-āĻāϰ āύāĻžāĻŽ āĻĢā§āϰāϤ āĻĻā§āϝāĻŧ, āĻāĻāĻāĻž string āĻšāĻŋāϏā§āĻŦā§āĨ¤
typeof operator
typeof value
typeofāĻāĻāĻāĻž keyword, āϝā§āĻāĻž operator-āĻāϰ āĻāĻžāĻ āĻāϰā§; āĻāϰ āĻāύā§āϝ bracket āϞāĻžāĻā§ āύāĻžāĨ¤valueāϝā§āĻā§āύ⧠expression: āĻāĻāĻāĻž literal, āĻāĻāĻāĻž āύāĻžāĻŽ, āĻāĻāĻāĻž āϝā§āĻāĻĢāϞāĨ¤- āĻĢāϞ āϏāĻŦ āϏāĻŽāϝāĻŧ āĻāĻāĻāĻž string, āϝā§āĻŽāύ
"number"āĻŦāĻž"string", āϤāĻžāĻ āĻāĻāĻž āĻāĻžāĻĒāϤ⧠āĻĒāĻžāϰā§, āϤā§āϞāύāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻ āĻšāϞ⧠āϏā§āĻ āĻāĻāĻāĻž program, āϝā§āĻāĻž āĻŦāĻžāϰā§āĻāĻž value-āĻā§ āĻāĻŋāĻā§āĻā§āϏ āĻāϰā§, āĻāĻ track-āĻ āϝāϤ āϰāĻāĻŽā§āϰ value-āϰ āϏāĻā§āĻā§ āϤā§āĻŽāĻžāϰ āĻĻā§āĻāĻž āĻšāĻŦā§, āϤāĻžāϰ āĻĒā§āϰāϤāĻŋāĻāĻžāϰ āĻāĻāĻāĻž āĻāϰā§āĨ¤
console.log(typeof 42);
console.log(typeof 3.14);
console.log(typeof NaN);
console.log(typeof "hi");
console.log(typeof "");
console.log(typeof true);
console.log(typeof undefined);
console.log(typeof null);
console.log(typeof 10n);
console.log(typeof Symbol("id"));
console.log(typeof { name: "Zara" });
console.log(typeof console.log);
number
number
number
string
string
boolean
undefined
object
bigint
symbol
object
function
āĻāĻāĻ āĻāϤā§āϤāϰāĻā§āϞā§, āĻāĻāĻāĻž table-āĻ, āĻšāĻžāϤā§āϰ āĻāĻžāĻā§ āϰāĻžāĻāĻžāϰ āĻŽāϤ⧠āĻāϰā§:
| Value | typeof āĻŦāϞ⧠| āĻāĻāĻž āĻāĻŋ lesson 03-āĻāϰ type? |
|---|---|---|
42, 3.14, NaN, Infinity | "number" | āĻšā§āϝāĻžāĻ |
"hi", "" | "string" | āĻšā§āϝāĻžāĻ |
true, false | "boolean" | āĻšā§āϝāĻžāĻ |
undefined | "undefined" | āĻšā§āϝāĻžāĻ |
null | "object" | āύāĻž: type āĻšāϞ⧠null |
10n | "bigint" | āĻšā§āϝāĻžāĻ |
Symbol("id") | "symbol" | āĻšā§āϝāĻžāĻ |
{ name: "Zara" }, [1, 2] | "object" | āĻšā§āϝāĻžāĻ |
console.log, āϝā§āĻā§āύ⧠function | "function" | āύāĻž: function āĻāϏāϞ⧠āĻāĻāĻāĻž object |
āϤāĻžāĻ typeof āĻāĻāĻāĻž type-āĻāϰ āύāĻžāĻŽ āĻĻā§āϝāĻŧ string āĻšāĻŋāϏā§āĻŦā§, āĻāϰ āĻāϰ āϏāĻžāϤāĻāĻž āĻāϤā§āϤāϰ lesson 03-āĻāϰ table-āĻāϰ āϏāĻā§āĻā§ āĻšā§āĻŦāĻšā§ āĻŽā§āϞā§āĨ¤
āϝ⧠āĻĻā§āĻāĻāĻž āĻāϤā§āϤāϰ āĻāĻŽāĻā§ āĻĻā§āϝāĻŧ
typeof null āĻšāϞ⧠"object", āĻāϰ āĻāĻāĻž āĻāĻāĻāĻž bugāĨ¤ āĻĒā§āϰāĻĨāĻŽ JavaScript engine, 1995-āĻ Netscape-āĻ āϞā§āĻāĻž, āĻĒā§āϰāϤāĻŋāĻāĻž value-āϰ āĻĒāĻžāĻļā§ āĻā§āĻ āĻāĻāĻāĻž type tag āϰāĻžāĻāϤāĨ¤ Object-āĻāϰ tag āĻāĻŋāϞ 0, āĻāϰ null āϰāĻžāĻāĻž āĻšāϤ⧠zero pointer āĻšāĻŋāϏā§āĻŦā§āĨ¤ āϤāĻžāĻ check-āĻāĻž null-āĻā§ object āĻŦāϞ⧠āĻĒāĻĄāĻŧāϤāĨ¤ āϝāϤāĻĻāĻŋāύ⧠āĻā§āĻ āĻāĻāĻž āϏāĻžāϰāĻžāϤ⧠āĻāĻžāĻāϞ, āϤāϤāĻĻāĻŋāύ⧠āϞāĻžāĻ āϞāĻžāĻ page āĻĒā§āϰā§āύ⧠āĻāϤā§āϤāϰā§āϰ āĻāĻĒāϰ āĻāϰ āĻāϰ⧠āĻŦāϏ⧠āĻāĻā§āĨ¤ ES2015-āĻāϰ āĻāύā§āϝ āĻāĻāĻāĻž fix āĻĒā§āϰāϏā§āϤāĻžāĻŦ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ, āĻāϰ āĻ āĻŋāĻ āĻāĻ āĻāĻžāϰāĻŖā§āĻ āϏā§āĻāĻž āĻŦāĻžāĻĻ āĻĒāĻĄāĻŧā§āĨ¤ āϤāĻžāĻ bug-āĻāĻž āĻāĻāύ standard-āĻāϰ āĻ
āĻāĻļ, āĻāϰ āĻāĻāĻž āĻĨā§āĻā§āĻ āϝāĻžāĻŦā§āĨ¤
āĻāĻāĻāĻž function-āĻāϰ typeof āĻšāϞ⧠"function"āĨ¤ Function āĻāĻ āϰāĻāĻŽā§āϰ object, āϤāĻžāĻ table āĻŽāĻžāύāϞ⧠āĻāϤā§āϤāϰ āĻšāĻāϝāĻŧāĻžāϰ āĻāĻĨāĻž "object"āĨ¤ āĻāĻžāώāĻžāĻāĻž āĻāĻāĻžāύ⧠āĻā§āύā§āĻŦā§āĻā§ āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ āϰā§āĻā§āĻā§, āĻāĻžāϰāĻŖ "āĻāĻāĻž āĻāĻŋ call āĻāϰāĻž āϝāĻžāϝāĻŧ?" āĻĒā§āϰāĻļā§āύāĻāĻž program-āĻā§ āĻĒā§āϰāĻžāϝāĻŧāĻ āĻāϰāϤ⧠āĻšāϝāĻŧāĨ¤ āĻāĻāĻž feature, bug āύāĻžāĨ¤
āϤāĻžāĻ typeof āĻāĻāĻāĻž null āĻāĻŋāύāϤ⧠āĻĒāĻžāϰ⧠āύāĻž, āĻāĻŋāύā§āϤ⧠function āĻāĻŋāύāϤ⧠āĻĒāĻžāϰā§āĨ¤ null-āĻāϰ āĻ āĻŋāĻ test āĻĻā§āĻāĻžāĻŦā§ "āĻĒā§āϰāϤāĻŋāĻāĻž āĻĢāĻžāĻāĻāĻž āĻāϞāĻžāĻĻāĻž āĻāϰ⧠check āĻāϰāĻž" āĻ
āĻāĻļāĨ¤
undefined āĻā§āĻĨāĻž āĻĨā§āĻā§ āĻāϏā§
undefined āĻŽāĻžāύ⧠"āĻāĻāύ⧠āĻā§āύ⧠value āύā§āĻ"āĨ¤ āĻāĻāĻž āϤā§āĻŽāĻŋ āĻā§āĻŦ āĻāĻŽāĻ āύāĻŋāĻā§ āϞā§āĻā§āĨ¤ Engine āĻāĻāĻž āĻŦāϏāĻžāϝāĻŧ āϰā§āĻāĻāĻžāϰ āϤāĻŋāύāĻāĻž āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ, āĻāϰ David-āĻāϰ bug āĻāϏā§āĻāĻŋāϞ āĻĒā§āϰāĻĨāĻŽāĻāĻž āĻĨā§āĻā§āĨ¤
let customerName;
console.log("Hello,", customerName);
function greet(name) {
console.log("Hello,", name);
}
greet();
const customer = { name: "David" };
console.log(customer.phone);
Hello, undefined
Hello, undefined
undefined
- Value āĻāĻžāĻĄāĻŧāĻž declare āĻāϰāĻž āύāĻžāĻŽāĨ¤
let customerName;āύāĻžāĻŽāĻāĻž āĻŦāĻžāύāĻžāϝāĻŧ, āĻāϰ āϤāĻžāϤ⧠āϰāĻžāĻā§undefinedāĨ¤ David āĻā§āĻŦā§āĻāĻŋāϞ order āĻĨā§āĻā§ āĻāĻāĻž āĻāϰ⧠āĻĻā§āĻŦā§, āĻāĻŋāύā§āϤ⧠āĻāĻāύ⧠āĻĻā§āϝāĻŧāύāĻŋāĨ¤ - āĻŦāĻžāĻĻ āĻĒāĻĄāĻŧāĻž argumentāĨ¤
greetāĻāĻāĻāĻž function, āϝā§āĻāĻž āĻāĻāĻāĻžnameāĻāĻļāĻž āĻāϰ⧠(function āĻļā§āĻāĻžāĻŦā§ Module 5)āĨ¤ Bracket-āĻ āĻāĻŋāĻā§ āύāĻž āĻĻāĻŋāϝāĻŧā§ call āĻāϰāϞ⧠āĻāϰname-āĻ āĻĨāĻžāĻā§undefinedāĨ¤ - āύāĻž āĻĨāĻžāĻāĻž propertyāĨ¤
customerāĻāĻāĻāĻž object, āϝāĻžāϤ⧠āĻāĻā§ āĻāĻāĻāĻžname, āĻāϰ āĻāĻŋāĻā§ āύāĻž (Module 8)āĨ¤customer.phoneāĻāĻžāĻāϞ⧠āĻāϏā§undefined, āĻā§āύ⧠error āύāĻžāĨ¤
āϤāĻžāĻ undefined āĻĻā§āĻāĻž āĻĻāĻŋāϞ⧠āϤāĻŋāύāĻāĻž āĻĒā§āϰāĻļā§āύ āĻāϰā§āĨ¤ āύāĻžāĻŽāĻāĻž āĻāĻŋ āĻāĻāύ⧠value āĻĒā§āϝāĻŧā§āĻāĻŋāϞ? āĻā§āύ⧠argument āĻāĻŋ āĻŦāĻžāĻĻ āĻĒāĻĄāĻŧā§āĻā§? Property-āĻāĻž āĻāĻŋ āϏāϤā§āϝāĻŋāĻ āĻāĻā§?
null: āĻā§āύ⧠value āύā§āĻ, āĻāĻā§āĻāĻž āĻāϰā§āĻ
Engine āύāĻŋāĻā§ āĻĨā§āĻā§ āĻā§āύ⧠āύāĻžāĻŽā§ null āĻŦāϏāĻžāϝāĻŧ āύāĻž, āϝā§āĻāĻžāĻŦā§ undefined āĻŦāϏāĻžāϝāĻŧāĨ¤ null āϏāĻŦ āϏāĻŽāϝāĻŧ āĻāĻžāϰāĻ āĻāĻāĻāĻž āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ: āϤā§āĻŽāĻžāϰ, āϤā§āĻŽāĻžāϰ code āϝ⧠data āĻĒā§āϝāĻŧā§āĻā§ āϤāĻžāϰ āϞā§āĻāĻā§āϰ, āύāϝāĻŧāϤ⧠āĻāĻŽāύ āĻā§āύ⧠built-in tool-āĻāϰ, āϝā§āĻāĻž "āĻāĻŋāĻā§ āĻĒāĻžāĻāύāĻŋ" āĻŦā§āĻāĻžāϤ⧠āĻāĻāĻž āĻĢā§āϰāϤ āĻĻā§āϝāĻŧāĨ¤ āĻāϰ āĻŽāĻžāύ⧠"āĻĻā§āĻāĻž āĻšāϝāĻŧā§āĻā§, āĻāϰ āĻāĻŋāĻā§ āύā§āĻ"āĨ¤
const form = { name: "Amara", middleName: null };
console.log(form.middleName);
console.log(form.nickname);
console.log(typeof form.middleName);
console.log(typeof form.nickname);
null
undefined
object
undefined
Form-āĻāĻž Amara-āĻā§ āĻŽāĻžāĻā§āϰ āύāĻžāĻŽ āĻāĻŋāĻā§āĻā§āϏ āĻāϰā§āĻāĻŋāϞ, āĻāϰ āĻāϰ āĻā§āύ⧠āĻŽāĻžāĻā§āϰ āύāĻžāĻŽ āύā§āĻ: nullāĨ¤ āĻĄāĻžāĻāύāĻžāĻŽ āĻāĻāύ⧠āĻāĻŋāĻā§āĻā§āϏāĻ āĻāϰā§āύāĻŋ: undefinedāĨ¤ āĻĻā§āĻāĻāĻžāϰ āĻŽāĻžāύā§āĻ "āĻāĻŋāĻā§ āύā§āĻ", āĻāĻŋāύā§āϤ⧠āĻĻā§āĻāĻāĻž āĻāϞāĻžāĻĻāĻž āĻĒā§āϰāĻļā§āύā§āϰ āĻāϤā§āϤāϰāĨ¤ āĻāϰ null-āĻāϰ āĻāύā§āϝ typeof āĻŦāϞ⧠"object", āĻāĻĒāϰā§āϰ āĻ
āĻāĻļā§āϰ āϏā§āĻ bugāĨ¤ āϤāĻžāĻ null āϏāĻŦ āϏāĻŽāϝāĻŧ āĻāĻžāϰāĻ āĻāĻāĻāĻž āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ, āĻāϰ āĻāĻāύā§āϝāĻ āĻāĻāĻž āĻĒāĻĄāĻŧā§ āĻāĻžāĻā§āϰ āĻāĻŦāϰ āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāϝāĻŧāĨ¤
āĻĒā§āϰāϤāĻŋāĻāĻž āĻĢāĻžāĻāĻāĻž āĻāϞāĻžāĻĻāĻž āĻāϰ⧠check āĻāϰāĻž
"āĻāĻāĻž āĻāĻŋ undefined?" āĻŦāĻž "āĻāĻāĻž āĻāĻŋ null?" āĻāĻžāύāϤ⧠āĻāĻžāĻāϞ⧠=== āĻĻāĻŋāϝāĻŧā§ āϤā§āϞāύāĻž āĻāϰā§āĨ¤ Lesson 03 āĻāĻāĻž āĻĻāĻŋāϝāĻŧā§ āĻĻā§āĻāĻāĻž āϏāĻāĻā§āϝāĻž āϤā§āϞāύāĻž āĻāϰā§āĻāĻŋāϞ, āĻāϰ āĻāĻ āĻĻā§āĻāĻāĻž value-āϤā§āĻ āĻāĻāĻž āĻāĻāĻāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§āĨ¤
let phone;
const middleName = null;
console.log(phone === undefined);
console.log(middleName === null);
console.log(typeof middleName === "object");
console.log(typeof phone === "undefined");
true
true
true
true
āϤā§āϤā§āϝāĻŧ āϞāĻžāĻāύāĻāĻž true, āĻāĻŋāύā§āϤ⧠āĻāĻāĻž null-āĻāϰ āĻā§āύ⧠test āύāĻž: āĻĒā§āϰāϤāĻŋāĻāĻž object-āĻ "object" āĻĻā§āϝāĻŧāĨ¤ āϤāĻžāĻ null test āĻāϰ⧠=== null āĻĻāĻŋāϝāĻŧā§, āĻāϰ undefined āĻāϰ⧠=== undefined āĻĻāĻŋāϝāĻŧā§āĨ¤
Program āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāϤā§āϤāϰāĻāĻž āύāĻŋāϝāĻŧā§ āĻāĻŋāĻā§ āĻāĻāĻāĻž āĻāϰāϤ⧠āĻāĻžāϝāĻŧ, āĻļā§āϧ⧠true āĻā§āĻĒā§ āĻŦāϏ⧠āĻĨāĻžāĻāϤ⧠āύāĻžāĨ¤ āĻāĻāĻž if-āĻāϰ āĻāĻžāĻ, āϝā§āĻāĻž āĻļā§āĻāĻžāĻŦā§ Module 4āĨ¤ āĻāĻāĻžāύ⧠āĻļā§āϧ⧠āĻāϰ āĻāĻĄāĻŧāύāĻāĻž āĻĻāĻŋāϞāĻžāĻŽ, āĻāĻāύ āĻĒāĻĄāĻŧā§ āϰāĻžāĻā§, āĻāϰ āϝā§āĻŽāύ āĻāĻā§ āϤā§āĻŽāύāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§: āĻĒā§āϰāĻĨāĻŽ āϝ⧠test true āĻšāϝāĻŧ, āϏā§āĻāĻžāĻ āĻ āĻŋāĻ āĻāϰ⧠āĻā§āύ block āĻāϞāĻŦā§āĨ¤
const value = null;
if (value === undefined) {
console.log("missing");
} else if (value === null) {
console.log("empty");
} else {
console.log("value:", value);
}
empty
āϤāĻžāĻ === undefined āĻāϰ === null āĻšāϞ⧠āĻĻā§āĻāĻāĻž āĻšā§āĻŦāĻšā§ test, āĻāϰ if āĻĻāĻŋāϝāĻŧā§ program āĻ āĻŋāĻ āĻāϰā§, āĻāĻā§āϞā§āϰ āĻāϤā§āϤāϰ āύāĻŋāϝāĻŧā§ āĻā§ āĻāϰāĻŦā§āĨ¤
āϝ⧠āύāĻžāĻŽ āĻāĻāύ⧠declare āĻāϰāĻž āĻšāϝāĻŧāύāĻŋ
āύāĻž āĻĨāĻžāĻāĻžāϰ āĻāϰāĻ āĻāĻāĻāĻž āϰāĻāĻŽ āĻāĻā§: āĻāĻŽāύ āύāĻžāĻŽ, āϝā§āĻāĻž āĻā§āĻ āĻāĻāύ⧠declare āĻāϰā§āύāĻŋāĨ¤ Lesson 02-āĻ āĻĻā§āĻā§āĻ, āĻāĻāĻž āĻĒāĻĄāĻŧāϤ⧠āĻā§āϞ⧠program āĻĨā§āĻŽā§ āϝāĻžāϝāĻŧāĨ¤ āĻāĻŋāύā§āϤ⧠āĻāĻāĻžāϰ āĻŦā§āϝāĻžāĻĒāĻžāϰ⧠typeof-āĻā§ āĻāĻŋāĻā§āĻā§āϏ āĻāϰāϞ⧠āĻĨāĻžāĻŽā§ āύāĻžāĨ¤
console.log(typeof discountCode);
console.log(typeof window);
console.log(typeof process);
undefined
undefined
object
discountCode āĻāĻāύ⧠declare āĻāϰāĻž āĻšāϝāĻŧāύāĻŋ, āĻāϰ typeof error throw āύāĻž āĻāϰ⧠āĻāϤā§āϤāϰ āĻĻā§āϝāĻŧ "undefined"āĨ¤ typeof āϏāϰāĻŋāϝāĻŧā§ āĻĻāĻžāĻ, āϤāĻžāĻšāϞ⧠āĻāĻāĻ āϞāĻžāĻāύ program āĻĨāĻžāĻŽāĻŋāϝāĻŧā§ āĻĻā§āĻŦā§ ReferenceError: discountCode is not defined āĻĻāĻŋāϝāĻŧā§āĨ¤
āĻĒāϰā§āϰ āĻĻā§āĻāĻāĻž āϞāĻžāĻāύ āĻĻā§āĻāĻžāϝāĻŧ, āĻāĻāĻž āĻā§āύ āĻāϰā§āϰāĻŋāĨ¤ window āĻšāϞ⧠browser-āĻāϰ global object, āĻāϰ process āĻšāϞ⧠Node-āĻāϰāĨ¤ āĻāĻ program āĻāϞā§āĻā§ Node 22-āĻ, āϤāĻžāĻ window āύā§āĻ, āĻāϰ process āĻāĻā§āĨ¤ āϝ⧠library-āĻā§ āĻĻā§āĻ āĻāĻžāϝāĻŧāĻāĻžāϤā§āĻ āĻāϞāϤ⧠āĻšāϝāĻŧ, āϏ⧠āĻāĻā§ āĻāĻŋāĻā§āĻā§āϏ āĻāϰ⧠āύā§āϝāĻŧ typeof windowāĨ¤ āϤāĻžāĻ āϝ⧠āύāĻžāĻŽ āĻšāϝāĻŧāϤ⧠āύā§āĻ, āϤāĻžāϰ āĻā§āĻāĻ āύā§āĻāϝāĻŧāĻžāϰ āĻāĻāĻŽāĻžāϤā§āϰ āύāĻŋāϰāĻžāĻĒāĻĻ āĻāĻĒāĻžāϝāĻŧ typeofāĨ¤
āϏāĻŦāĻā§āϝāĻŧā§ āĻā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ: āĻāĻāĻāĻž value āϰāĻžāĻā§, āϤāĻžāϰ type āĻāĻŋāĻā§āĻā§āϏ āĻāϰā§, āĻĻā§āĻāĻāĻžāĻ āĻāĻžāĻĒā§āĨ¤
const temperature = 36.6;
console.log(temperature, "is a", typeof temperature);
36.6 is a number
36.6-āĻā§ quote-āϏāĻš "36.6" āĻāϰ⧠āĻĻāĻžāĻ, āĻāϤā§āϤāϰ āĻšāϝāĻŧā§ āϝāĻžāĻŦā§ stringāĨ¤
David-āĻāϰ program āύāĻžāĻŽāĻāĻž āĻāĻā§āĻāĻžāĻā§ declare āĻāϰā§āĻāĻŋāϞ, āĻā§āĻŦā§āĻāĻŋāϞ āĻĒāϰ⧠āĻāϰāĻŦā§āĨ¤ āϏāĻŽāĻžāϧāĻžāύ āĻšāϞā§, āύāĻžāĻŽāĻāĻž āϝā§āĻāĻžāύ⧠āĻŦāĻžāύāĻžāύ⧠āĻšāϝāĻŧ āϏā§āĻāĻžāύā§āĻ āϤāĻžāĻā§ value āĻĻā§āĻāϝāĻŧāĻž, āĻāϰ āϤāĻžāĻā§ const āĻāϰāĻžāĨ¤
let customerName;
console.log("Before:", typeof customerName);
const fixedName = "Maria";
console.log("Hello,", fixedName);
console.log("After:", typeof fixedName);
Before: undefined
Hello, Maria
After: string
typeof-āĻāϰ āϞāĻžāĻāύāĻā§āϞā§āĻ trace: āĻāĻā§ undefined āĻŽāĻžāύ⧠āύāĻžāĻŽāĻāĻž declare āĻšāϝāĻŧā§āĻāĻŋāϞ, āĻāĻŋāύā§āϤ⧠āĻāĻāύ⧠value āĻĒāĻžāϝāĻŧāύāĻŋāĨ¤ const value āĻāĻžāĻĄāĻŧāĻž declare āĻāϰāĻžāĻ āϝāĻžāϝāĻŧ āύāĻž, āϤāĻžāĻ āĻāĻ āĻā§āĻāĻž bug-āĻāĻž āĻāϰ āĻŦā§āϞāĻžāϝāĻŧ āĻāĻāϤā§āĻ āĻĒāĻžāϰ⧠āύāĻžāĨ¤
Zara āϏāĻŦāĻžāϰ āĻāĻā§ āĻāĻŋāύāĻžāϰāĻžāĻā§āϞ⧠test āĻāϰā§āĨ¤ āĻāϰ profile-āĻ āĻāĻā§ āĻāĻāĻāĻž āύāĻžāĻŽ, āύāĻŋāĻā§ āĻŦā§āĻā§ āύā§āĻāϝāĻŧāĻž āĻāĻāĻāĻž null, āĻāϰ āĻāĻāĻāĻž property, āϝā§āĻāĻž āĻ āĻāĻāύ⧠āϝā§āĻāĻ āĻāϰā§āύāĻŋāĨ¤
const profile = { name: "Zara", school: null };
console.log("name:", profile.name, typeof profile.name);
console.log("school:", profile.school, profile.school === null);
console.log("city:", profile.city, profile.city === undefined);
name: Zara string
school: null true
city: undefined true
āĻĒā§āϰāϤāĻŋāĻāĻž āϞāĻžāĻāύ āĻāĻāĻāĻž value-āϰ āĻĒāĻžāĻļā§ āϤāĻžāϰ āĻ āĻŋāĻ test-āĻāĻž āĻŦāϏāĻžāϝāĻŧāĨ¤ school āĻšāϞ⧠null, āĻāĻžāϰāĻŖ Zara āĻāĻāύ āĻāĻ āϏā§āĻā§āϞ āĻā§āĻĄāĻŧā§ āĻāϰā§āĻ āϏā§āĻā§āϞ⧠āϝāĻžāĻāϝāĻŧāĻžāϰ āĻŽāĻžāĻāĻāĻžāύā§; city āĻšāϞ⧠undefined, āĻāĻžāϰāĻŖ āĻā§āĻ āĻāĻŋāĻā§āĻā§āϏāĻ āĻāϰā§āύāĻŋāĨ¤
Kenji āĻĒā§āϰāϤāĻŋāĻāĻž value-āϰ āĻāύā§āϝ āĻāĻŽāύ āĻāĻāĻāĻž āϞāĻžāĻāύ āĻāĻžāϝāĻŧ, āϝā§āĻāĻž āĻŦāϞāĻŦā§ āĻāϤ⧠āĻā§ āĻāĻā§, āĻāĻāĻāĻž form checker āϝā§āĻāĻžāĻŦā§ āĻŦāϞā§āĨ¤ āϏ⧠āĻāĻĒāϰā§āϰ if-āĻāϰ āĻāĻĄāĻŧāύāĻāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤
const value = undefined;
if (value === undefined) {
console.log("missing");
} else if (value === null) {
console.log("empty");
} else {
console.log(typeof value);
}
missing
āĻĒā§āϰāĻĨāĻŽ āϞāĻžāĻāύāĻāĻž āĻāĻā§ āĻāĻā§ null, 42 āĻāϰ "hi" āĻāϰ⧠āĻĻāĻžāĻ, āĻāϰ āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ run āĻāϰā§āĨ¤ āĻĻā§āĻāĻŦā§ empty, number āĻāϰ stringāĨ¤
āĻāĻāĻž āĻā§āĻĨāĻžāϝāĻŧ āĻāĻžāĻā§ āϞāĻžāĻā§
- lodash. āĻāύāĻĒā§āϰāĻŋāϝāĻŧ āĻāĻ helper library
isString(value)-āĻāϰ āĻāϤā§āϤāϰ āĻĻā§āϝāĻŧ āĻāĻŽāύ āĻāĻāĻāĻž āϞāĻžāĻāύ āĻĻāĻŋāϝāĻŧā§, āϝā§āĻāĻž āĻļā§āϰ⧠āĻšāϝāĻŧtypeof value == 'string'āĻĻāĻŋāϝāĻŧā§āĨ¤ āĻāϰisNilāĻāĻāϏāĻā§āĻā§nullāĻāϰundefinedāĻĻā§āĻāĻāĻžāĻ test āĻāϰā§āĨ¤ - GitHub-āĻāϰ REST API. āĻāĻāĻāĻž user profile āĻĢā§āϰāϤ āĻāϏ⧠āĻĒā§āϰāϤāĻŋāĻāĻž field āϏāĻšāĨ¤ User āϝ⧠field āĻĢāĻžāĻāĻāĻž āϰā§āĻā§āĻā§, āϝā§āĻŽāύ
bio, āϏā§āĻāĻž āĻŦāĻžāĻĻ āĻĒāĻĄāĻŧā§ āύāĻž, āĻāϏā§nullāĻšāĻŋāϏā§āĻŦā§āĨ¤ āĻāĻāĻžāĻ "āĻĻā§āĻāĻž āĻšāϝāĻŧā§āĻā§, āĻāϰ āĻāĻŋāĻā§ āύā§āĻ", data āĻšāĻŋāϏā§āĻŦā§ āĻĒāĻžāĻ āĻžāύ⧠(āĻāĻāĻž āĻĒāĻĄāĻŧāĻž āĻļā§āĻāĻžāĻŦā§ Module 8)āĨ¤ - Next.js. āĻāϰ code server-āĻāĻ āĻāϞāϤ⧠āĻĒāĻžāϰā§, browser-āĻāĻ, āĻāϰ āĻā§āĻĨāĻžāϝāĻŧ āĻāϞāĻā§ āϏā§āĻāĻž āĻāĻžāύāĻžāϰ āĻāϞāϤāĻŋ check āĻšāϞā§
typeof window, "āϝ⧠āύāĻžāĻŽ āĻāĻāύ⧠declare āĻāϰāĻž āĻšāϝāĻŧāύāĻŋ" āĻ āĻāĻļā§āϰ āϏā§āĻ check-āĻāĻžāĻāĨ¤ Next.js-āĻāϰ documentation āĻŦāϞā§, rendering-āĻāϰ logic-āĻāϰ āĻā§āϤāϰ⧠āĻāĻ check hydration error āĻāĻāĻžāϝāĻŧ, āϤāĻžāĻ āĻāĻāĻž āĻŦāϏ⧠āĻ āύā§āϝ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧāĨ¤
āϝ⧠āĻā§āϞāĻā§āϞ⧠āϏāĻŦāĻžāĻ āĻāϰā§
ā§§. typeof āĻĻāĻŋāϝāĻŧā§ null test āĻāϰāĻžāĨ¤
const school = null;
console.log(typeof school === "null");
āĻā§āύ⧠message āύā§āĻ: āĻāĻāĻž āĻāĻžāĻĒā§ false, āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ, āĻĒā§āϰāϤāĻŋāĻāĻž value-āϰ āĻāύā§āϝāĨ¤ typeof āĻāĻāύ⧠"null" āĻāϤā§āϤāϰ āĻĻā§āϝāĻŧ āύāĻžāĨ¤ āϞā§āĻā§ school === nullāĨ¤ āϤā§āĻŽāĻŋ typeof-āĻ āĻā§āώā§āĻāĻž āĻāϰāĻŦā§, āĻāĻžāϰāĻŖ āĻŦāĻžāĻāĻŋ āĻĒā§āϰāϤāĻŋāĻāĻž type-āĻāϰ āĻŦā§āϞāĻžāϝāĻŧ āĻāĻāĻž āĻ āĻŋāĻ āĻāϤā§āϤāϰ āĻĻāĻŋāϝāĻŧā§āĻā§āĨ¤
⧍. undefined-āĻāϰ property āĻĒāĻĄāĻŧāĻžāĨ¤
let user;
console.log(user.name);
TypeError: Cannot read properties of undefined (reading 'name')āĨ¤ user-āĻ null āĻĨāĻžāĻāϞ⧠message-āĻ āĻāϰ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āϞā§āĻāĻž āĻĨāĻžāĻā§ nullāĨ¤ āύāĻž āĻĨāĻžāĻāĻž property āĻĻā§āϝāĻŧ undefined, āĻāĻŋāύā§āϤ⧠āĻā§āĻĻ undefined-āĻāϰ āĻāĻžāĻā§ āĻāĻŋāĻā§ āĻāĻžāĻāϞā§āĻ program āĻĨā§āĻŽā§ āϝāĻžāϝāĻŧāĨ¤ āĻĒā§āϰ⧠JavaScript-āĻ āĻāĻāĻž āϏāĻŦāĻā§āϝāĻŧā§ āĻŦā§āĻļāĻŋ āĻĻā§āĻāĻž error-āĻā§āϞā§āϰ āĻāĻāĻāĻž; āĻāĻāĻž āĻ ā§āĻāĻžāύā§āϰ ?. operator āĻĻā§āĻāĻžāĻŦā§ Module 8āĨ¤ āĻā§āϞāĻāĻž āϤā§āĻŽāĻŋ āĻāϰāĻŦā§, āĻāĻžāϰāĻŖ āύāĻžāĻŽāĻāĻž āĻĻā§āĻā§ āĻŽāύ⧠āĻšāϝāĻŧ āĻāϤ⧠value āĻāĻā§: declare āϤ⧠āĻāϰāĻž āĻšāϝāĻŧā§āĻā§, āĻļā§āϧ⧠āĻā§āύ⧠object āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧāύāĻŋāĨ¤
ā§Š. Type-āĻāϰ āύāĻžāĻŽā§ āĻŦāĻĄāĻŧ āĻšāĻžāϤā§āϰ āĻ āĻā§āώāϰāĨ¤
const price = 450;
console.log(typeof price === "Number");
āĻā§āύ⧠message āύā§āĻ: falseāĨ¤ typeof āĻāϤā§āϤāϰ āĻĻā§āϝāĻŧ āĻā§āĻ āĻšāĻžāϤā§āϰ āĻ
āĻā§āώāϰā§, "number", āĻāϰ string āϤā§āϞāύāĻžāϝāĻŧ āĻŦāĻĄāĻŧ āĻšāĻžāϤā§āϰ āĻ
āĻā§āώāϰāĻ āĻšāĻŋāϏāĻžāĻŦā§ āϧāϰāĻž āĻšāϝāĻŧāĨ¤ āϤā§āĻŽāĻŋ āĻŦāĻĄāĻŧ āĻšāĻžāϤā§āϰ āĻ
āĻā§āώāϰ āϞāĻŋāĻāĻŦā§, āĻāĻžāϰāĻŖ type-āĻāϰ āύāĻžāĻŽ āĻĻā§āĻāϤ⧠āĻŽāĻžāύā§āώā§āϰ āύāĻžāĻŽā§āϰ āĻŽāϤ⧠āϞāĻžāĻā§āĨ¤
ā§Ē. āĻāĻāύ⧠value āύāĻž āĻĒāĻžāĻāϝāĻŧāĻž āύāĻžāĻŽ āĻĻāĻŋāϝāĻŧā§ āĻšāĻŋāϏāĻžāĻŦāĨ¤
let count;
count = count + 1;
console.log(count);
āĻā§āύ⧠message āύā§āĻ: āĻāĻāĻž āĻāĻžāĻĒā§ NaNāĨ¤ undefined + 1-āĻāϰ āĻā§āύ⧠āĻ āĻŋāĻāĻ āĻžāĻ āĻāϤā§āϤāϰ āύā§āĻ, āĻāϰ lesson 03 āĻĻā§āĻāĻŋāϝāĻŧā§āĻā§, NaN āϤāĻžāϰāĻĒāϰ āĻāĻĄāĻŧāĻŋāϝāĻŧā§ āĻĒāĻĄāĻŧā§āĨ¤ āĻā§āύāĻž āĻļā§āϰ⧠āĻāϰ⧠āĻāĻāĻāĻž value āĻĻāĻŋāϝāĻŧā§: let count = 0;āĨ¤ = 0 āϤā§āĻŽāĻŋ āĻā§āϞāĻŦā§, āĻāĻžāϰāĻŖ āĻā§āύāĻž āϝ⧠āĻļā§āύā§āϝ āĻĨā§āĻā§ āĻļā§āϰ⧠āĻšāϝāĻŧ, āϏā§āĻāĻž āϤā§āĻŽāĻžāϰ āĻāĻžāĻā§ āĻĒāϰāĻŋāώā§āĻāĻžāϰ, engine-āĻāϰ āĻāĻžāĻā§ āύāĻžāĨ¤
Amara-āϰ form checker āĻĒāĻžāĻāĻāĻāĻž value āĻĻā§āĻā§āĨ¤ āĻĒā§āϰāϤāĻŋāĻāĻžāϰ āĻāύā§āϝ āĻāĻžāĻĒā§: undefined āĻšāϞ⧠missing, null āĻšāϞ⧠empty, āĻāϰ āĻŦāĻžāĻāĻŋ āϏāĻŦ āĻā§āώā§āϤā§āϰ⧠value-āĻāĻžāĻāĨ¤
Output. āĻšā§āĻŦāĻšā§ āĻāĻ āĻĒāĻžāĻāĻ āϞāĻžāĻāύāĨ¤
missing
empty
0
false
Zara
let nickname;
const school = null;
const siblings = 0;
const subscribed = false;
const name = "Zara";
// Use the if shape from "Checking for each kind of nothing", once per value.
// 0 and false are real values, not nothing: they print as themselves.
Grade āĻšāϝāĻŧ āύāĻžāĨ¤ āĻā§āϝāĻŧāĻžāϞ āĻāϰā§, 0 āĻāϰ false "āĻāĻŋāĻā§ āύā§āĻ" āύāĻžāĨ¤ Module 2 āĻāĻŽāύ āĻāĻāĻāĻž operator āĻĻā§āĻāĻžāĻŦā§, āϝā§āĻāĻž āĻāĻĻā§āϰ āϏāĻā§āĻā§ āĻāĻŽāύ āĻāĻāϰāĻŖ āĻāϰā§, āϝā§āύ āĻāϰāĻž āĻāĻŋāĻā§āĻ āύāĻžāĨ¤
Form-āĻāϰ field āϏāĻŦ āϏāĻŽāϝāĻŧ āĻāϏ⧠āϞā§āĻāĻž āĻšāĻŋāϏā§āĻŦā§āĨ¤ Alice āĻāĻžāύāϤ⧠āĻāĻžāϝāĻŧ, āϤāĻžāϤ⧠āĻāĻāĻāĻž āϏāĻāĻā§āϝāĻž āĻāĻā§ āĻāĻŋ āύāĻžāĨ¤ Input āĻĨā§āĻā§ āĻāĻāĻāĻž āĻļāĻŦā§āĻĻ āĻĒāĻĄāĻŧā§, Number() āĻĻāĻŋāϝāĻŧā§ āϏā§āĻāĻžāĻā§ number āĻŦāĻžāύāĻžāύā§āϰ āĻā§āώā§āĻāĻž āĻāϰā§, āĻāϰ āĻāĻžāĻ āĻšāϞ⧠āĻāĻžāĻĒā§ number, NaN āĻāϞ⧠stringāĨ¤
Input. āĻāĻāĻāĻž āĻļāĻŦā§āĻĻ, āĻā§āύ⧠space āĻāĻžāĻĄāĻŧāĻžāĨ¤
Output. number āĻŦāĻž stringāĨ¤
Sample. Input 42 āĻĻāĻŋāϞ⧠number; input Zara āĻĻāĻŋāϞ⧠stringāĨ¤
const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];
// your code: read with next() and nextInt(), push every line of output to out
const word = next();
const asNumber = Number(word);
// Number.isNaN(asNumber) is true when the word did not convert.
// Push "string" in that case, and typeof asNumber otherwise.
console.log(out.join("\n"));
āĻĒā§āϰāĻĨāĻŽ āĻāϝāĻŧāĻāĻž āϞāĻžāĻāύ āϤā§āĻŽāĻžāϰ āĻšāϝāĻŧā§ input āĻĒāĻĄāĻŧā§ āĻĻā§āϝāĻŧ; āĻĒā§āϰāϤāĻŋāĻāĻž āϞāĻžāĻāύ āĻŦā§āĻāĻŋāϝāĻŧā§ āĻŦāϞāĻŦā§ lesson 05āĨ¤ Input-āĻāĻž Playground-āĻāϰ stdin box-āĻ āĻāĻžāĻāĻĒ āĻāϰā§āĨ¤ āĻāĻāĻž āύāĻŋāĻā§ āĻāϞāĻžāĻĻāĻž āĻāϰ⧠grade āĻšāϝāĻŧ āύāĻž: grade āĻšāĻāϝāĻŧāĻž version-āĻāĻž, type-of-each, true, false, null āĻāϰ undefined-āĻā§āĻ āϤāĻžāĻĻā§āϰ āĻāϏāϞ value-āϤ⧠āĻŦāĻĻāϞāĻžāϝāĻŧāĨ¤
āϏāĻāϰāĻžāĻāϰ āϝ⧠āĻĒā§āϰāĻļā§āύāĻā§āϞ⧠āĻāϏā§
typeof nullāϝāĻĻāĻŋ bug-āĻ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āϏāĻžāϰāĻžāύ⧠āĻšāϝāĻŧ āύāĻž āĻā§āύ?āĻĒā§āϰā§āύ⧠page-āĻā§āϞā§
typeof x === "object"check āĻāϰā§, āĻāϰ āĻāĻļāĻž āĻāϰā§null-āĻ āĻĒāĻžāϰ āĻĒā§āϝāĻŧā§ āϝāĻžāĻŦā§āĨ¤ āĻāϤā§āϤāϰ āĻŦāĻĻāϞāĻžāϞ⧠āĻāĻā§āϞ⧠āĻā§āύ⧠āϏāϤāϰā§āĻāϤāĻž āĻāĻžāĻĄāĻŧāĻžāĻ āĻā§āĻā§ āϝāĻžāĻŦā§āĨ¤ Web āĻĒā§āϰāĻžāϝāĻŧ āϏāĻŦ āϏāĻŽāϝāĻŧ āϤāĻžāϰ āĻĒā§āϰā§āύ⧠āĻāĻāϰāĻŖ āϰā§āĻā§ āĻĻā§āϝāĻŧ, āĻāϰ āĻāĻāĻž āϤāĻžāϰ āϏāĻŦāĻā§āϝāĻŧā§ āĻŦāĻŋāĻā§āϝāĻžāϤ āĻāĻĻāĻžāĻšāϰāĻŖāĨ¤āĻāĻŽāĻŋ āĻāĻŋ āĻāĻāύ⧠āύāĻŋāĻā§
undefinedāϞāĻŋāĻāĻŦ, āϝā§āĻŽāύlet x = undefined;?āĻāϞāĻŦā§, āĻāĻŋāύā§āϤ⧠āϤāĻžāϤ⧠āĻĻā§āĻāĻāĻžāϰ āĻŽāϧā§āϝ⧠āϝ⧠āĻāĻāĻāĻž āĻāĻžāĻā§āϰ āĻĒāĻžāϰā§āĻĨāĻā§āϝ āĻāĻā§, āϏā§āĻāĻž āĻā§āϞāĻž āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧāĨ¤ "āύā§āĻ" āĻŦā§āĻāĻžāϤ⧠āĻāĻžāĻāϞā§
nullāϞā§āĻā§, āϝāĻžāϤā§undefinedāĻŽāĻžāύ⧠āϏāĻŦ āϏāĻŽāϝāĻŧ āĻšāϝāĻŧ "āĻāĻāύ⧠value āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧāύāĻŋ"āĨ¤typeofāĻāϤā§āϤāϰ āĻĻā§āϝāĻŧ string-āĻ, āĻ āύā§āϝ āĻāĻŋāĻā§āϤ⧠āύāĻž āĻā§āύ?String āĻāĻžāĻĒāĻž āϝāĻžāϝāĻŧ,
===āĻĻāĻŋāϝāĻŧā§ āϤā§āϞāύāĻž āĻāϰāĻž āϝāĻžāϝāĻŧ, āϰā§āĻā§ āĻĻā§āĻāϝāĻŧāĻž āϝāĻžāϝāĻŧāĨ¤ āĻāĻāĻāĻž type-āĻāϰ āύāĻžāĻŽ āύāĻŋāϝāĻŧā§ program-āĻāϰ āĻāϰ āĻŦā§āĻļāĻŋ āĻāĻŋāĻā§ āĻāϰāĻžāϰ āĻĻāϰāĻāĻžāϰāĻ āύā§āĻāĨ¤āĻāĻŽāĻŋ āϤā§
typeof(x)āϞāĻŋāĻāϤ⧠āĻĒāĻžāϰāĻŋ, āϤāĻžāĻšāϞā§typeofāĻāĻŋ āĻāĻāĻāĻž function?āύāĻž, āĻāĻāĻž operatorāĨ¤
typeof(x)āĻāĻžāĻ āĻāϰā§, āĻāĻžāϰāĻŖ bracket āĻļā§āϧā§x-āĻā§ āĻāϞāĻžāĻĻāĻž āĻāϰ⧠āĻāĻŋāϰ⧠āϰāĻžāĻā§, āϝā§āĻāĻžāĻŦā§(2 + 3)-āĻā§ āϰāĻžāĻā§āĨ¤ āĻāĻ track āϞā§āĻā§typeof xāĨ¤
āĻŽā§āϞ āĻāĻĨāĻž
typeof valuetype-āĻāϰ āύāĻžāĻŽ āĻĻā§āϝāĻŧ string āĻšāĻŋāϏā§āĻŦā§, āĻā§āĻ āĻšāĻžāϤā§āϰ āĻ āĻā§āώāϰā§āĨ¤- āĻĻā§āĻāĻāĻž āĻāϤā§āϤāϰ āĻāĻŽāĻā§ āĻĻā§āϝāĻŧ:
typeof nullāĻšāϞā§"object", 1995 āĻĨā§āĻā§ āϰā§āĻā§ āĻĻā§āĻāϝāĻŧāĻž āĻāĻāĻāĻž bug, āĻāϰ function āĻĻā§āϝāĻŧ"function"āĨ¤ undefinedāĻāϏ⧠value āĻāĻžāĻĄāĻŧāĻž āύāĻžāĻŽ, āĻŦāĻžāĻĻ āĻĒāĻĄāĻŧāĻž argument āĻŦāĻž āύāĻž āĻĨāĻžāĻāĻž property āĻĨā§āĻā§āĨ¤nullāĻāĻāύ⧠engine-āĻāϰ default āύāĻž; āĻā§āĻ āĻāĻāĻāύ āĻāĻāĻž āĻŦāϏāĻžāϝāĻŧ, āĻāϰ āĻāϰ āĻŽāĻžāύ⧠"āύā§āĻ, āĻāĻā§āĻāĻž āĻāϰā§āĻ"āĨ¤- āĻāĻĻā§āϰ test āĻāϰā§
=== undefinedāĻāϰ=== nullāĻĻāĻŋāϝāĻŧā§; āĻāϤā§āϤāϰ āύāĻŋāϝāĻŧā§ āĻāĻžāĻ āĻāϰā§ifāĨ¤ - Declare āύāĻž āĻšāĻāϝāĻŧāĻž āύāĻžāĻŽā§āϰ
typeofāĻĻā§āϝāĻŧ"undefined"; āύāĻžāĻŽāĻāĻž āϏāϰāĻžāϏāϰāĻŋ āĻĒāĻĄāĻŧāϞ⧠āĻāϏ⧠āĻāĻāĻāĻž ReferenceErrorāĨ¤
āĻāϰāĻĒāϰ lesson 05 input āĻĒāĻĄāĻŧāĻžāϰ āϏā§āĻ āĻāϝāĻŧāĻāĻž āϞāĻžāĻāύ āĻŦā§āĻāĻŋāϝāĻŧā§ āĻŦāϞāĻŦā§, āϝāĻžāϤ⧠āĻāĻ track-āĻāϰ āĻĒā§āϰāϤāĻŋāĻāĻž problem āĻļā§āϰ⧠āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤
lesson ā§Ē āĻļā§āώ
āĻļā§āώ āĻšāϞ⧠āĻāĻŋāĻšā§āύ āĻĻāĻŋāύ, āĻ āĻā§āϰāĻāϤāĻŋ āĻāĻĒāύāĻžāϰ āϏāĻžāĻĨā§ āĻĨāĻžāĻāĻŦā§āĨ¤
āĻĒāϰā§āϰāĻāĻž: input āĻĒāĻĄāĻŧāĻž: āϝ⧠starter āĻĒā§āϰāϤāĻŋāĻāĻž problem-āĻ āĻĨāĻžāĻā§, āĻāĻ āϞāĻžāĻāύ āĻāϰā§