JavaScript æ¯æä¸å¥å°å·§çè¯å¥ï¼ç¹å«æ¯æ§å¶æµè¯å¥ï¼ä½ å¯ä»¥ç¨å®å¨ä½ çåºç¨ç¨åºä¸å®ç°å¤§éçäº¤äºæ§åè½ãæ¬ç« å°å¯¹è¿äºè¯å¥è¿è¡æ¦è§ã
卿¬ç« 䏿¶åçè¯å¥ï¼JavaScript åèå
嫿´ä¸ºè¯¦å°½çç»èãå¨ JavaScript 代ç ä¸ï¼åå·ï¼;
ï¼åç¬¦è¢«ç¨æ¥åå²è¯å¥ã
JavaScript 表达å¼ä¹æ¯è¯å¥ãæ³è¦äºè§£æå ³è¡¨è¾¾å¼ç宿´ä¿¡æ¯ï¼åè§è¡¨è¾¾å¼ä¸è¿ç®ç¬¦ã
åè¯å¥æåºæ¬çè¯å¥æ¯ç¨äºç»åè¯å¥çåè¯å¥ãåç±ä¸å¯¹è±æ¬å·çå®ï¼
{
statement1;
statement2;
// â¦
statementN;
}
示ä¾
åè¯å¥é常ç¨äºæ§å¶æµè¯å¥ï¼if
ãfor
ãwhile
ï¼ã
è¿éï¼{ x++; }
å°±æ¯åè¯å¥ã
夿³¨ï¼ ç¨ var
声æçåé䏿¯å级ä½ç¨åçï¼èæ¯å½æ°ä½ç¨åæèæ¬ä½ç¨åçï¼ä¸è®¾ç½®å®ä»¬çææä¼è¶
è¶å°åæ¬èº«ä¹å¤ãä¾å¦ï¼
var x = 1;
{
var x = 2;
}
console.log(x); // 2
ä¼è¾åº 2
ï¼å 为åä¸ var x
è¯å¥åååé¢ç var x
è¯å¥çä½ç¨åæ¯ä¸æ ·çãï¼å¨ C æ Java ä¸ï¼çæç代ç ä¼è¾åº 1
ãï¼
ä½¿ç¨ let
æ const
伿¶é¤è¿ä¸ªä½ç¨åææã
æ¡ä»¶è¯å¥æ¯ä¸ç»ä¼å¨æå®çæ¡ä»¶ä¸ºçæ¶æ§è¡çæä»¤ãJavaScript æ¯æä¸¤ç§æ¡ä»¶è¯å¥ï¼if...else
å switch
ã
ä½¿ç¨ if
è¯å¥å¨é»è¾æ¡ä»¶ä¸º true
æ¶æ§è¡è¯å¥ã使ç¨å¯éç else
åå¥å¨æ¡ä»¶ä¸º false
æ¶æ§è¡è¯å¥ã
if
è¯å¥çèµ·æ¥åè¿æ ·ï¼
if (condition) {
statement1;
} else {
statement2;
}
è¿éï¼condition
å¯ä»¥æ¯ä»»ä½è½æ±å¼ä¸º true
æ false
ç表达å¼ãï¼æ³è¦äºè§£æ±å¼ä¸º true
å false
çè§£éï¼åè§å¸å°å¼ãï¼
妿 condition
æ±å¼ä¸º true
ï¼æ§è¡ statement1
ãå¦åï¼æ§è¡ statement2
ãstatement1
å statement2
å¯ä»¥æ¯ä»»ä½çè¯å¥ï¼å
æ¬ç»§ç»åµå¥ç if
è¯å¥ã
ä½ ä¹å¯ä»¥ä½¿ç¨ else if
ç»åè¯å¥æé¡ºåºæµè¯å¤ä¸ªæ¡ä»¶ï¼å°±åä¸é¢ä¸æ ·ï¼
if (condition1) {
statement1;
} else if (condition2) {
statement2;
} else if (conditionN) {
statementN;
} else {
statementLast;
}
å¨å¤ä¸ªæ¡ä»¶çæ
åµä¸ï¼åªæç¬¬ä¸ä¸ªæ±å¼ä¸º true
çé»è¾æ¡ä»¶æä¼è¢«æ§è¡ãæ³è¦æ§è¡å¤ä¸ªè¯å¥ï¼å°å
¶ç»åå¨ä¸ä¸ªåè¯å¥ä¸ï¼{ /* ⦠*/ }
ï¼ã
ä¸è¬èè¨ï¼æ»æ¯ä½¿ç¨åè¯å¥æ¯æä½³å®è·µââç¹å«æ¯åµå¥ if
è¯å¥çæ¶åï¼
if (condition) {
// condition ä¸ºçæ¶çè¯å¥
// â¦
} else {
// condition ä¸ºåæ¶çè¯å¥
// â¦
}
ä¸è¬èè¨ï¼æå¥½ä¸è¦å°èµå¼ï¼ä¾å¦ï¼x = y
ï¼ä½ä¸º if...else
çæ¡ä»¶ï¼
if (x = y) {
// å¨è¿éæ·»å è¯å¥
}
ç¶èï¼å¨æå°æ°æ
åµä¸ï¼ä½ ä¼åç°èªå·±æ³è¦è¿ä¹åï¼while
ææ¡£ä¸ç使ç¨èµå¼ä½ä¸ºæ¡ä»¶å°èæ¯ä½ åºè¯¥äºè§£å¹¶éµå¾ªçéç¨çæä½³å®è·µè¯æ³æåã
ä¸é¢è¿äºå¼æ±å¼ä¸º false
ï¼ä¹å«ååå¼ï¼ï¼
false
undefined
null
0
NaN
""
ï¼ææå
¶ä»çå¼ââå
æ¬ææç对象ââå¨è¢«ä¼ éç»æ¡ä»¶è¯å¥æ¶ä¼æ±å¼ä¸º true
ã
夿³¨ï¼ 请ä¸è¦æ··æ·åå§å¸å°å¼ true
å false
ä¸ Boolean
对象ççååï¼
ä¾å¦ï¼
const b = new Boolean(false);
if (b) {
// è¿ä¸ªæ¡ä»¶æ±å¼ä¸º true
}
if (b == true) {
// è¿ä¸ªæ¡ä»¶æ±å¼ä¸º false
}
示ä¾
å¨ä¸å示ä¾ä¸ï¼å¦æ Text
对象ä¸çå符æ°ä¸º 3ï¼å½æ° checkData
å°è¿å true
ï¼å¦åï¼æ¾ç¤ºè¦åå¹¶è¿å false
ã
function checkData() {
if (document.form1.threeChar.value.length === 3) {
return true;
} else {
alert(`请æ£å¥½è¾å
¥ 3 个å符ã${document.form1.threeChar.value}æ¯æ æç`);
return false;
}
}
switch è¯å¥
switch
è¯å¥å
许ç¨åºæ±ä¸ä¸ªè¡¨è¾¾å¼çå¼å¹¶ä¸å°è¯å°è¡¨è¾¾å¼çå¼å case
æ ç¾è¿è¡å¹é
ã妿å¹é
æåï¼ç¨åºä¼æ§è¡ç¸å
³çè¯å¥ã
switch
è¯å¥çèµ·æ¥åè¿æ ·ï¼
switch (expression) {
case label1:
statements1;
break;
case label2:
statements2;
break;
// â¦
default:
statementsDefault;
}
JavaScript æ±å¼ä¸é¢ç switch è¯å¥çè¿ç¨å¦ä¸ï¼
case
å奿 ç¾ï¼ç¶åå°æ§å¶æè½¬ç§»å°è¯¥åå¥ï¼æ§è¡ç¸å
³çè¯å¥ãdefault
åå¥ï¼
default
åå¥ï¼ç¨åºä¼å°æ§å¶æè½¬ç§»å°è¯¥åå¥ï¼æ§è¡ç¸å
³çè¯å¥ãdefault
åå¥ï¼ç¨åºä¼ç»§ç»æ§è¡ switch
è¯å¥åé¢çè¯å¥ãdefault
åå¥éå¸¸æ¯æåä¸ä¸ªåå¥ï¼å½ç¶è¿ä¸æ¯å¿
é¡»çãï¼æ¯ä¸ª case
åå¥ä¼å
³èä¸ä¸ªå¯éç break
è¯å¥ï¼å®è½ä¿è¯å¨å¹é
çè¯å¥è¢«æ§è¡åç¨åºå¯ä»¥è·³åº switch
å¹¶ä¸ç»§ç»æ§è¡ switch
åé¢çè¯å¥ã妿 break
被忽ç¥ï¼ç¨åºä¼å¨ switch
è¯å¥å
ç»§ç»æ§è¡ï¼å°ä¼æ§è¡ä¸ä¸ä¸ª case
çè¯å¥ï¼ä¾æ¤ç±»æ¨ï¼ã
å¨ä¸å示ä¾ä¸ï¼å¦æ fruitType
çäº "Bananas"
ï¼ç¨åºå°è¯¥å¼ä¸ case "Bananas"
å¹é
ï¼å¹¶æ§è¡ç¸å
³è¯å¥ã彿§è¡å° break
æ¶ï¼ç¨åºç»æ switch
å¹¶æ§è¡ switch
åé¢çè¯å¥ã妿ä¸å break
ï¼é£ä¹ç¨åºå°ä¼æ§è¡ case "Cherries"
ä¸çè¯å¥ã
switch (fruitType) {
case "Oranges":
console.log("æ©åæ¯ $0.59 ä¸ç£
");
break;
case "Apples":
console.log("è¹ææ¯ $0.32 ä¸ç£
");
break;
case "Bananas":
console.log("é¦èæ¯ $0.48 ä¸ç£
");
break;
case "Cherries":
console.log("æ¨±æ¡æ¯ $3.00 ä¸ç£
");
break;
case "Mangoes":
console.log("èææ¯ $0.56 ä¸ç£
ã");
break;
case "Papayas":
console.log("æ¨çæ¯ $2.79 ä¸ç£
ã");
break;
default:
console.log(`对ä¸èµ·ï¼${fruitType} åå®äºã`);
}
console.log("è¿æå
¶ä»ä»ä¹æ¯ä½ 忬¢çåï¼");
å¼å¸¸å¤çè¯å¥
ä½ å¯ä»¥ç¨ throw
è¯å¥æåºä¸ä¸ªå¼å¸¸å¹¶ä¸ç¨ try...catch
è¯å¥å¤çå®ã
JavaScript å¯ä»¥æåºä»»æå¯¹è±¡ãç¶èï¼å¹¶éæææåºçå¯¹è±¡é½æ¯çèå¹³ççã尽管æåºæ°åæè å符串ä½ä¸ºé误信æ¯åå常è§ï¼ä½æ¯ç¨ä¸åå ¶ä¸ä¸ç§ä¸é¨ä¸ºè¿ä¸ªç®çèå建çå¼å¸¸ç±»åé常æ´ä¸ºé«æï¼
throw è¯å¥ä½¿ç¨ throw
è¯å¥æåºå¼å¸¸ãthrow
è¯å¥ä¼ææè¦æåºçå¼ï¼
ä½ å¯ä»¥æåºä»»æè¡¨è¾¾å¼è䏿¯ç¹å®ç±»åç表达å¼ãä¸é¢çä»£ç æåºäºå 个ä¸åç±»åçå¼å¸¸ï¼
throw "é误 2"; // å符串类å
throw 42; // æ°åç±»å
throw true; // å¸å°ç±»å
throw {
toString() {
return "ææ¯ä¸ä¸ªå¯¹è±¡";
},
};
try...catch è¯å¥
try...catch
è¯å¥ç¨äºæ è®°ä¸æ®µè¦å°è¯çè¯å¥åï¼å¹¶æå®æåºå¼å¸¸æ¶çä¸ä¸ªæå¤ä¸ªååºã妿æåºäºå¼å¸¸ï¼try...catch
è¯å¥ä¼æè·å®ã
try...catch
è¯å¥ç± try
åï¼å
¶å
å«ä¸ä¸ªæå¤ä¸ªè¯å¥ï¼å catch
åï¼å
¶å
å«å¨ try
å䏿åºå¼å¸¸æ¶è¦æ§è¡çè¯å¥ï¼ç»æã
æ¢å¥è¯è¯´ï¼ä½ 叿 try
åæ§è¡æåââä½å¦æå®æ²¡ææ§è¡æåï¼é£ä¹ä½ 叿尿§å¶è½¬ç§»å° catch
åã妿 try
åä¸çè¯å¥ï¼æè
å¨ try
åä¸è°ç¨ç彿°éï¼æåºäºå¼å¸¸ï¼é£ä¹æ§å¶ç«é©¬è½¬ç§»å° catch
åã妿 try
åæ²¡ææåºå¼å¸¸ï¼catch
åå°±ä¼è¢«è·³è¿ãfinally
åæ»ä¼ç´§è·å¨ try
å catch
åä¹åæ§è¡ï¼ä½ä¼å¨ try...catch
è¯å¥åé¢çè¯å¥ä¹åæ§è¡ã
ä¸å示ä¾ä½¿ç¨äº try...catch
è¯å¥ã示ä¾è°ç¨ç彿°æ¯æ ¹æ®ä¼ éçå¼ä»æ°ç»ä¸è·åä¸ä¸ªæä»½åç§°ãå¦æè¯¥å¼ä¸æä»½æ°å¼ï¼1
-12
ï¼ä¸ç¸ç¬¦ï¼ä¼æåºå¸¦æ "æ æçæä»½æ°å¼"
å¼çå¼å¸¸ï¼ç¶åå¨ catch
åçè¯å¥ä¸è®¾ monthName
åé为 "æªç¥"
ã
function getMonthName(mo) {
mo--; // å°æä»½è°æ´ä¸ºæ°ç»ç´¢å¼ï¼è¿æ ·çè¯ï¼0 = 䏿ï¼11 = åäºæï¼
const months = [
"䏿", "äºæ", "䏿", "åæ", "äºæ", "å
æ",
"䏿", "å
«æ", "乿", "åæ", "å䏿", "åäºæ",
];
if (months[mo]) {
return months[mo];
} else {
throw new Error("æ æçæä»½æ°å¼"); // å¨è¿ä½¿ç¨ throw å
³é®å
}
}
try {
// è¦å°è¯çè¯å¥
monthName = getMonthName(myMonth); // å¯è½æåºå¼å¸¸ç彿°
} catch (e) {
monthName = "æªç¥";
logMyErrors(e); // å°å¼å¸¸å¯¹è±¡ä¼ éç»é误å¤çå¨ï¼ä¾å¦ï¼ä½ åç彿°ï¼
}
catch å
ä½ å¯ä»¥ä½¿ç¨ catch
忥å¤çææå¯è½å¨ try
åä¸äº§ççå¼å¸¸ã
catch (exception) {
statements
}
catch
åæå®çæ è¯ç¬¦ï¼ä¸è¿°è¯å¥ä¸ç exception
ï¼ä¼åå¨ç± throw
è¯å¥æå®çå¼ãä½ å¯ä»¥ç¨è¿ä¸ªæ è¯ç¬¦æ¥è·åæåºçå¼å¸¸çä¿¡æ¯ãå¨è¿å
¥ catch
åæ¶ JavaScript ä¼å建è¿ä¸ªæ è¯ç¬¦ãæ è¯ç¬¦åªåå¨äº catch
åçåç»æé´éãå½ catch
åæ§è¡å®ææ¶ï¼æ è¯ç¬¦ä¸åå¯ç¨ã
举个ä¾åï¼ä¸é¢ä»£ç æåºäºä¸ä¸ªå¼å¸¸ãå½å¼å¸¸åºç°æ¶æ§å¶ä¼è½¬ç§»å° catch
åã
try {
throw "æçå¼å¸¸"; // çæä¸ä¸ªå¼å¸¸
} catch (err) {
// å¤çå¼å¸¸ç表达å¼
logMyErrors(err); // å°å¼å¸¸å¯¹è±¡ä¼ éç»é误å¤çå¨
}
夿³¨ï¼ å¨ catch
åä¸å°é误è¾åºå°æ§å¶å°æ¶ï¼å»ºè®®ä½¿ç¨ console.error()
è䏿¯ console.log()
è¿è¡è°è¯ãå®ä¼å°æ¶æ¯æ ¼å¼å为é误ï¼å¹¶å°å
¶æ·»å å°é¡µé¢çæçéè¯¯æ¶æ¯å表ã
finally
åå
å«çè¯å¥å¨ try
å catch
åæ§è¡ä¹åæ§è¡ãæ¤å¤ï¼finally
åå¨ tryâ¦catchâ¦finally
è¯å¥åé¢ç代ç ä¹åæ§è¡ã
ä¹åºè¯¥æ³¨æï¼finally
åæ è®ºæ¯å¦æåºå¼å¸¸é½ä¼æ§è¡ã妿æåºäºä¸ä¸ªå¼å¸¸ï¼å°±ç®æ²¡æ catch
åå¤çæåºçå¼å¸¸ï¼finally
åéçè¯å¥ä¹ä¼æ§è¡ã
ä½ å¯ä»¥ç¨ finally
åæ¥ä»¤ä½ çèæ¬å¨å¼å¸¸åçæ¶ä¼é
å°éåºã举个ä¾åï¼ä½ å¯è½éè¦éæ¾èæ¬ç»å®çèµæºã
ä¸åçç¤ºä¾æå¼ä¸ä¸ªæä»¶ï¼ç¶åæ§è¡ä½¿ç¨è¿ä¸ªæä»¶çè¯å¥ãï¼æå¡å¨ç«¯ JavaScript å
è®¸ä½ è®¿é®æä»¶ãï¼å¦æå¨æä»¶æå¼æ¶æåºå¼å¸¸ï¼finally
åä¼å¨èæ¬å¤±è´¥ä¹åå
³éæä»¶ãå¨è¿ä½¿ç¨ finally
è½ç¡®ä¿æä»¶æ°¸è¿ä¸ä¼æ¯æå¼ç¶æï¼å³ä½¿åçäºé误ã
openMyFile();
try {
writeMyFile(theData); // è¿å¯è½ä¼æåºé误
} catch (e) {
handleError(e); // 妿é误åºç°äºï¼å¤çå®
} finally {
closeMyFile(); // æ»æ¯å
³éèµæº
}
妿 finally
åè¿åä¸ä¸ªå¼ï¼è¯¥å¼ä¼æ¯æ´ä¸ª tryâ¦catchâ¦finally
æµç¨çè¿åå¼ï¼ä¸ç®¡å¨ try
å catch
åä¸ç return
è¯å¥è¿åäºä»ä¹ï¼
function f() {
try {
console.log(0);
throw "bogus";
} catch (e) {
console.log(1);
// è¿ä¸ª return è¯å¥ä¼è¢«æèµ·ç´å° finally åç»æ
return true;
console.log(2); // ä¸å¯è¾¾
} finally {
console.log(3);
return false; // è¦çåé¢çâreturnâ
console.log(4); // ä¸å¯è¾¾
}
// ç°å¨æ§è¡âreturn falseâ
console.log(5); // ä¸å¯è¾¾
}
console.log(f()); // 0ã1ã3ãfalse
ç¨ finally
åè¦çè¿åå¼ä¹éç¨äºå¨ catch
åå
æåºæéæ°æåºçå¼å¸¸ï¼
function f() {
try {
throw "bogus";
} catch (e) {
console.log("æè·å
é¨çâbogusâ");
// è¿ä¸ª return è¯å¥ä¼è¢«æèµ·ç´å° finally åç»æ
throw e;
} finally {
return false; // è¦çåé¢çâthrowâ
}
// ç°å¨æ§è¡âreturn falseâ
}
try {
console.log(f());
} catch (e) {
// è¿æ°¸è¿ä¸ä¼æµè¾¾ï¼
// f() æ§è¡æ¶ï¼`finally` åè¿å falseï¼èè¿ä¼è¦çä¸é¢ç `catch` ä¸ç `throw`
console.log("æè·å¤é¨çâbogusâ");
}
// æ¥å¿ï¼
// æè·å
é¨çâbogusâ
// false
åµå¥ try...catch è¯å¥
ä½ å¯ä»¥åµå¥ä¸ä¸ªæå¤ä¸ª try ... catch
è¯å¥ã
妿ä¸ä¸ªå
é¨ try
åæ²¡æå¯¹åºç catch
åï¼
finally
åï¼ä»¥åtry...catch
è¯å¥ç catch
åä¼è¢«æ£æ¥æ¯å¦è½å¤ç该å¼å¸¸ãæ³è¦äºè§£æ´å¤ä¿¡æ¯ï¼åè§ try... catch
åè页ä¸çåµå¥ try åã
æ ¹æ®é误类åï¼ä½ ä¹è®¸å¯ä»¥ç¨ name
å message
屿§è·åæ´ç²¾ç¼çä¿¡æ¯ã
name
屿§æä¾äºå¸¸è§ç Error
ç±»ï¼å¦ DOMException
æ Error
ï¼ï¼è message
é常æä¾çä¿¡æ¯æ¯å°éè¯¯å¯¹è±¡è½¬æ¢æå符串å¾å°çä¿¡æ¯æ´ç®æã
卿åºèªå®ä¹å¼å¸¸æ¶ï¼ä¸ºäºå
åå©ç¨é£äºå±æ§ï¼æ¯å¦ catch
åä¸è½å辨æ¯èªå®ä¹å¼å¸¸è¿æ¯ç³»ç»å¼å¸¸æ¶ï¼ï¼ä½ å¯ä»¥ä½¿ç¨ Error
æé 彿°ã
æ¯å¦ï¼
function doSomethingErrorProne() {
if (ourCodeMakesAMistake()) {
throw new Error("æ¶æ¯");
} else {
doSomethingToGetAJavaScriptError();
}
}
try {
doSomethingErrorProne();
} catch (e) {
// ç°å¨ï¼å®é
ä½¿ç¨ `console.error()`
console.error(e.name); // 'Error'
console.error(e.message); // âæ¶æ¯âï¼æè
ä¸ä¸ª JavaScript éè¯¯æ¶æ¯
}
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4