å¨ JavaScript ä¸ï¼å½æ°ä¸æ¯âç¥å¥çè¯è¨ç»æâï¼èæ¯ä¸ç§ç¹æ®çå¼ã
æä»¬å¨åé¢ç« è使ç¨çè¯æ³ç§°ä¸º 彿°å£°æï¼
function sayHi() {
alert( "Hello" );
}
å¦ä¸ç§åå»ºå½æ°çè¯æ³ç§°ä¸º 彿°è¡¨è¾¾å¼ã
å®å 许æä»¬å¨ä»»ä½è¡¨è¾¾å¼çä¸é´å建ä¸ä¸ªæ°å½æ°ã
ä¾å¦ï¼
let sayHi = function() {
alert( "Hello" );
};
å¨è¿éæä»¬å¯ä»¥çå°åé sayHi å¾å°äºä¸ä¸ªå¼ï¼æ°å½æ° function() { alert("Hello"); }ã
ç±äºå½æ°å建åçå¨èµå¼è¡¨è¾¾å¼çä¸ä¸æä¸ï¼å¨ = çå³ä¾§ï¼ï¼å æ¤è¿æ¯ä¸ä¸ª 彿°è¡¨è¾¾å¼ã
请注æï¼function å
³é®åå颿²¡æå½æ°åã彿°è¡¨è¾¾å¼å
许çç¥å½æ°åã
è¿éæä»¬ç«å³å°å®èµå¼ç»åéï¼æä»¥ä¸é¢ç两个代ç 示ä¾çå«ä¹æ¯ä¸æ ·çï¼âå建ä¸ä¸ªå½æ°å¹¶å°å
¶æ¾å
¥åé sayHi ä¸âã
卿´å¤æ´é«é¶çæ åµä¸ï¼ç¨åæä»¬ä¼éå°ï¼å¯ä»¥å建ä¸ä¸ªå½æ°å¹¶ç«å³è°ç¨ï¼æè 宿ç¨åæ§è¡ï¼è䏿¯åå¨å¨ä»»ä½å°æ¹ï¼å æ¤ä¿æå¿åã
彿°æ¯ä¸ä¸ªå¼
éç³ä¸æ¬¡ï¼æ è®ºå½æ°æ¯å¦ä½å建çï¼å½æ°é½æ¯ä¸ä¸ªå¼ãä¸é¢ç两个示ä¾é½å¨ sayHi åéä¸åå¨äºä¸ä¸ªå½æ°ã
æä»¬è¿å¯ä»¥ç¨ alert æ¾ç¤ºè¿ä¸ªåéçå¼ï¼
function sayHi() {
alert( "Hello" );
}
alert( sayHi ); // æ¾ç¤ºå½æ°ä»£ç
注æï¼æåä¸è¡ä»£ç å¹¶ä¸ä¼è¿è¡å½æ°ï¼å 为 sayHi åæ²¡ææ¬å·ã卿äºç¼ç¨è¯è¨ä¸ï¼åªè¦æå°å½æ°çåç§°é½ä¼å¯¼è´å½æ°çè°ç¨æ§è¡ï¼ä½ JavaScript å¯ä¸æ¯è¿æ ·ã
å¨ JavaScript ä¸ï¼å½æ°æ¯ä¸ä¸ªå¼ï¼æä»¥æä»¬å¯ä»¥æå®å½æå¼å¯¹å¾ ãä¸é¢ä»£ç æ¾ç¤ºäºä¸æ®µå符串å¼ï¼å³å½æ°çæºç ã
çç¡®ï¼å¨æç§æä¹ä¸è¯´ä¸ä¸ªå½æ°æ¯ä¸ä¸ªç¹æ®å¼ï¼æä»¬å¯ä»¥å sayHi() è¿æ ·è°ç¨å®ã
ä½å®ä¾ç¶æ¯ä¸ä¸ªå¼ï¼æä»¥æä»¬å¯ä»¥å使ç¨å ¶ä»ç±»åçå¼ä¸æ ·ä½¿ç¨å®ã
æä»¬å¯ä»¥å¤å¶å½æ°å°å ¶ä»åéï¼
function sayHi() { // (1) å建
alert( "Hello" );
}
let func = sayHi; // (2) å¤å¶
func(); // Hello // (3) è¿è¡å¤å¶çå¼ï¼æ£å¸¸è¿è¡ï¼ï¼
sayHi(); // Hello // è¿éä¹è½è¿è¡ï¼ä¸ºä»ä¹ä¸è¡å¢ï¼
è§£éä¸ä¸ä¸æ®µä»£ç åççç»èï¼
(1)è¡å£°æå建äºå½æ°ï¼å¹¶æå®æ¾å ¥å°åésayHiã(2)è¡å°sayHiå¤å¶å°äºåéfuncã请注æï¼sayHiå颿²¡ææ¬å·ãå¦æææ¬å·ï¼func = sayHi()伿sayHi()çè°ç¨ç»æåè¿funcï¼è䏿¯sayHi彿° æ¬èº«ã- ç°å¨å½æ°å¯ä»¥éè¿
sayHi()åfunc()ä¸¤ç§æ¹å¼è¿è¡è°ç¨ã
æä»¬ä¹å¯ä»¥å¨ç¬¬ä¸è¡ä¸ä½¿ç¨å½æ°è¡¨è¾¾å¼æ¥å£°æ sayHiï¼
let sayHi = function() { // (1) å建
alert( "Hello" );
};
let func = sayHi;
// ...
è¿ä¸¤ç§å£°æç彿°æ¯ä¸æ ·çã
ä½ å¯è½æ³ç¥éï¼ä¸ºä»ä¹å½æ°è¡¨è¾¾å¼ç»å°¾æä¸ä¸ªåå· ;ï¼è彿°å£°ææ²¡æï¼
function sayHi() {
// ...
}
let sayHi = function() {
// ...
};
çæ¡å¾ç®åï¼è¿é彿°è¡¨è¾¾å¼æ¯å¨èµå¼è¯å¥ let sayHi = ...; ä¸ä»¥ function(â¦) {â¦} çå½¢å¼å建çã建议å¨è¯å¥æ«å°¾å ä¸åå· ;ï¼å®ä¸æ¯å½æ°è¯æ³çä¸é¨åã
åå·ç¨äºæ´ç®åçèµå¼ï¼ä¾å¦ let sayHi = 5;ï¼å®ä¹ç¨äºå½æ°èµå¼ã
åè°å½æ°
让æä»¬å¤ä¸¾å 个ä¾åï¼ççå¦ä½å°å½æ°ä½ä¸ºå¼æ¥ä¼ é以åå¦ä½ä½¿ç¨å½æ°è¡¨è¾¾å¼ã
æä»¬åä¸ä¸ªå
å«ä¸ä¸ªåæ°ç彿° ask(question, yes, no)ï¼
question- å ³äºé®é¢çææ¬
yes- å½åç为 âYesâ æ¶ï¼è¦è¿è¡çèæ¬
no- å½åç为 âNoâ æ¶ï¼è¦è¿è¡çèæ¬
彿°éè¦æåº questionï¼é®é¢ï¼ï¼å¹¶æ ¹æ®ç¨æ·çåçï¼è°ç¨ yes() æ no()ï¼
function ask(question, yes, no) {
if (confirm(question)) yes()
else no();
}
function showOk() {
alert( "You agreed." );
}
function showCancel() {
alert( "You canceled the execution." );
}
// ç¨æ³ï¼å½æ° showOk å showCancel 被ä½ä¸ºåæ°ä¼ å
¥å° ask
ask("Do you agree?", showOk, showCancel);
å¨å®é
å¼åä¸ï¼è¿æ ·ç彿°æ¯é常æç¨çãå®é
å¼åä¸ä¸è¿°ç¤ºä¾æå¤§çåºå«æ¯ï¼å®é
å¼åä¸ç彿°ä¼éè¿æ´å å¤æçæ¹å¼ä¸ç¨æ·è¿è¡äº¤äºï¼è䏿¯éè¿ç®åç confirmã卿µè§å¨ä¸ï¼è¿æ ·ç彿°é常ä¼ç»å¶ä¸ä¸ªæ¼äº®çæé®çªå£ãä½è¿æ¯å¦å¤ä¸ä»¶äºäºã
ask çä¸¤ä¸ªåæ°å¼ showOk å showCancel å¯ä»¥è¢«ç§°ä¸º åè°å½æ° æç®ç§° åè°ã
ä¸»è¦ææ³æ¯æä»¬ä¼ éä¸ä¸ªå½æ°ï¼å¹¶ææå¨ç¨åå¿
è¦æ¶å°å
¶âåè°âã卿们çä¾åä¸ï¼showOk æ¯åç âyesâ çåè°ï¼showCancel æ¯åç ânoâ çåè°ã
æä»¬å¯ä»¥ä½¿ç¨å½æ°è¡¨è¾¾å¼æ¥ç¼åä¸ä¸ªçä»·çãæ´ç®æ´ç彿°ï¼
function ask(question, yes, no) {
if (confirm(question)) yes()
else no();
}
ask(
"Do you agree?",
function() { alert("You agreed."); },
function() { alert("You canceled the execution."); }
);
è¿éç´æ¥å¨ ask(...) è°ç¨å
è¿è¡å½æ°å£°æãè¿ä¸¤ä¸ªå½æ°æ²¡æååï¼æä»¥å« å¿å彿°ãè¿æ ·ç彿°å¨ ask 夿 æ³è®¿é®ï¼å 为没æå¯¹å®ä»¬åé
åéï¼ï¼ä¸è¿è¿æ£æ¯æä»¬æ³è¦çã
è¿æ ·ç代ç 卿们çèæ¬ä¸é常常è§ï¼è¿æ£ç¬¦å JavaScript è¯è¨çææ³ã
åç¬¦ä¸²ææ°åç常è§å¼ä»£è¡¨ æ°æ®ã
彿°å¯ä»¥è¢«è§ä¸ºä¸ä¸ª è¡ä¸ºï¼actionï¼ã
æä»¬å¯ä»¥å¨åéä¹é´ä¼ éå®ä»¬ï¼å¹¶å¨éè¦æ¶è¿è¡ã
彿°è¡¨è¾¾å¼ vs 彿°å£°æ
让æä»¬æ¥æ»ç»ä¸ä¸å½æ°å£°æå彿°è¡¨è¾¾å¼ä¹é´ç主è¦åºå«ã
é¦å æ¯è¯æ³ï¼å¦ä½éè¿ä»£ç 对å®ä»¬è¿è¡åºåã
-
彿°å£°æï¼å¨ä¸»ä»£ç æµä¸å£°æä¸ºåç¬çè¯å¥ç彿°ï¼
// 彿°å£°æ function sum(a, b) { return a + b; } -
彿°è¡¨è¾¾å¼ï¼å¨ä¸ä¸ªè¡¨è¾¾å¼ä¸æå¦ä¸ä¸ªè¯æ³ç»æä¸å建ç彿°ãä¸é¢è¿ä¸ªå½æ°æ¯å¨èµå¼è¡¨è¾¾å¼
=å³ä¾§å建çï¼// 彿°è¡¨è¾¾å¼ let sum = function(a, b) { return a + b; };
æ´ç»å¾®ç差嫿¯ï¼JavaScript 弿ä¼å¨ ä»ä¹æ¶å åå»ºå½æ°ã
彿°è¡¨è¾¾å¼æ¯å¨ä»£ç æ§è¡å°è¾¾æ¶è¢«å建ï¼å¹¶ä¸ä» ä»é£ä¸å»èµ·å¯ç¨ã
䏿¦ä»£ç æ§è¡å°èµå¼è¡¨è¾¾å¼ let sum = function⦠çå³ä¾§ï¼æ¤æ¶å°±ä¼å¼å§åå»ºè¯¥å½æ°ï¼å¹¶ä¸å¯ä»¥ä»ç°å¨å¼å§ä½¿ç¨ï¼åé
ï¼è°ç¨çï¼ã
彿°å£°æåä¸åã
å¨å½æ°å£°æè¢«å®ä¹ä¹åï¼å®å°±å¯ä»¥è¢«è°ç¨ã
ä¾å¦ï¼ä¸ä¸ªå ¨å±å½æ°å£°æå¯¹æ´ä¸ªèæ¬æ¥è¯´é½æ¯å¯è§çï¼æ 论å®è¢«åå¨è¿ä¸ªèæ¬çåªä¸ªä½ç½®ã
è¿æ¯å é¨ç®æ³çç¼æ ãå½ JavaScript åå¤ è¿è¡èæ¬æ¶ï¼é¦å ä¼å¨èæ¬ä¸å¯»æ¾å ¨å±å½æ°å£°æï¼å¹¶å建è¿äºå½æ°ãæä»¬å¯ä»¥å°å ¶è§ä¸ºâåå§åé¶æ®µâã
å¨å¤ç宿æå½æ°å£°æåï¼ä»£ç æè¢«æ§è¡ãæä»¥è¿è¡æ¶è½å¤ä½¿ç¨è¿äºå½æ°ã
ä¾å¦ä¸é¢ç代ç 伿£å¸¸å·¥ä½ï¼
sayHi("John"); // Hello, John
function sayHi(name) {
alert( `Hello, ${name}` );
}
彿°å£°æ sayHi æ¯å¨ JavaScript åå¤è¿è¡èæ¬æ¶è¢«å建çï¼å¨è¿ä¸ªèæ¬çä»»ä½ä½ç½®é½å¯è§ã
â¦â¦å¦æå®æ¯ä¸ä¸ªå½æ°è¡¨è¾¾å¼ï¼å®å°±ä¸ä¼å·¥ä½ï¼
sayHi("John"); // error!
let sayHi = function(name) { // (*) no magic any more
alert( `Hello, ${name}` );
};
彿°è¡¨è¾¾å¼å¨ä»£ç æ§è¡å°å®æ¶æä¼è¢«å建ãåªä¼åçå¨ (*) è¡ã为æ¶å·²æã
彿°å£°æçå¦å¤ä¸ä¸ªç¹æ®çåè½æ¯å®ä»¬çå级ä½ç¨åã
ä¸¥æ ¼æ¨¡å¼ä¸ï¼å½ä¸ä¸ªå½æ°å£°æå¨ä¸ä¸ªä»£ç åå æ¶ï¼å®å¨è¯¥ä»£ç åå çä»»ä½ä½ç½®é½æ¯å¯è§çãä½å¨ä»£ç åå¤ä¸å¯è§ã
ä¾å¦ï¼æ³è±¡ä¸ä¸æä»¬éè¦ä¾èµäºå¨ä»£ç è¿è¡è¿ç¨ä¸è·å¾çåé age 声æä¸ä¸ªå½æ° welcome()ãå¹¶ä¸æä»¬è®¡åå¨ä¹åçæä¸ªæ¶é´ä½¿ç¨å®ã
妿æä»¬ä½¿ç¨å½æ°å£°æï¼å以ä¸ä»£ç æ æ³å颿飿 ·å·¥ä½ï¼
let age = prompt("What is your age?", 18);
// ææ¡ä»¶å°å£°æä¸ä¸ªå½æ°
if (age < 18) {
function welcome() {
alert("Hello!");
}
} else {
function welcome() {
alert("Greetings!");
}
}
// â¦â¦ç¨å使ç¨
welcome(); // Error: welcome is not defined
è¿æ¯å ä¸ºå½æ°å£°æåªå¨å®æå¨ç代ç åä¸å¯è§ã
ä¸é¢æ¯å¦ä¸ä¸ªä¾åï¼
let age = 16; // æ¿ 16 ä½ä¸ºä¾å
if (age < 18) {
welcome(); // \ (è¿è¡)
// |
function welcome() { // |
alert("Hello!"); // | 彿°å£°æå¨å£°æå®ç代ç åå
ä»»æä½ç½®é½å¯ç¨
} // |
// |
welcome(); // / (è¿è¡)
} else {
function welcome() {
alert("Greetings!");
}
}
// å¨è¿éï¼æä»¬å¨è±æ¬å·å¤é¨è°ç¨å½æ°ï¼æä»¬çä¸å°å®ä»¬å
é¨ç彿°å£°æã
welcome(); // Error: welcome is not defined
æä»¬æä¹æè½è®© welcome å¨ if å¤å¯è§å¢ï¼
æ£ç¡®çåæ³æ¯ä½¿ç¨å½æ°è¡¨è¾¾å¼ï¼å¹¶å° welcome èµå¼ç»å¨ if å¤å£°æçåéï¼å¹¶å
·ææ£ç¡®çå¯è§æ§ã
ä¸é¢ç代ç å¯ä»¥å¦æ¿è¿è¡ï¼
let age = prompt("What is your age?", 18);
let welcome;
if (age < 18) {
welcome = function() {
alert("Hello!");
};
} else {
welcome = function() {
alert("Greetings!");
};
}
welcome(); // ç°å¨å¯ä»¥äº
æè
æä»¬å¯ä»¥ä½¿ç¨é®å·è¿ç®ç¬¦ ? æ¥è¿ä¸æ¥å¯¹ä»£ç è¿è¡ç®åï¼
let age = prompt("What is your age?", 18);
let welcome = (age < 18) ?
function() { alert("Hello!"); } :
function() { alert("Greetings!"); };
welcome(); // ç°å¨å¯ä»¥äº
æ ¹æ®ç»éªï¼å½æä»¬éè¦å£°æä¸ä¸ªå½æ°æ¶ï¼é¦å èè彿°å£°æè¯æ³ãå®è½å¤ä¸ºç»ç»ä»£ç æä¾æ´å¤ççµæ´»æ§ãå 为æä»¬å¯ä»¥å¨å£°æè¿äºå½æ°ä¹åè°ç¨è¿äºå½æ°ã
è¿å¯¹ä»£ç å¯è¯»æ§ä¹æ´å¥½ï¼å 为å¨ä»£ç 䏿¥æ¾ function f(â¦) {â¦} æ¯ let f = function(â¦) {â¦} æ´å®¹æã彿°å£°ææ´âéç®âã
â¦â¦ä½æ¯ï¼å¦æç±äºæç§åå è导è´å½æ°å£°æä¸éåæä»¬ï¼æä»¬ååçè¿ä¸é¢çä¾åï¼ï¼é£ä¹åºè¯¥ä½¿ç¨å½æ°è¡¨è¾¾å¼ã
æ»ç»
- 彿°æ¯å¼ãå®ä»¬å¯ä»¥å¨ä»£ç çä»»ä½å°æ¹è¢«åé ï¼å¤å¶æå£°æã
- 妿彿°å¨ä¸»ä»£ç æµä¸è¢«å£°æä¸ºåç¬çè¯å¥ï¼å称为â彿°å£°æâã
- å¦æè¯¥å½æ°æ¯ä½ä¸ºè¡¨è¾¾å¼çä¸é¨åå建çï¼åç§°å ¶â彿°è¡¨è¾¾å¼âã
- 卿§è¡ä»£ç åä¹åï¼å é¨ç®æ³ä¼å å¤ç彿°å£°æãæä»¥å½æ°å£°æå¨å ¶è¢«å£°æç代ç åå çä»»ä½ä½ç½®é½æ¯å¯è§çã
- 彿°è¡¨è¾¾å¼å¨æ§è¡æµç¨å°è¾¾æ¶å建ã
å¨å¤§å¤æ°æ åµä¸ï¼å½æä»¬éè¦å£°æä¸ä¸ªå½æ°æ¶ï¼æå¥½ä½¿ç¨å½æ°å£°æï¼å ä¸ºå½æ°å¨è¢«å£°æä¹å乿¯å¯è§çãè¿ä½¿æä»¬å¨ä»£ç ç»ç»æ¹é¢æ´å ·çµæ´»æ§ï¼é常ä¹ä¼ä½¿å¾ä»£ç å¯è¯»æ§æ´é«ã
æä»¥ï¼ä» å½å½æ°å£°æä¸éå对åºç任塿¶ï¼æåºä½¿ç¨å½æ°è¡¨è¾¾å¼ã卿¬ç« ä¸ï¼æä»¬å·²ç»çå°äºå 个ä¾åï¼ä»¥åè¿ä¼çå°æ´å¤çä¾åã
è¯è®º
<code>æ ç¾æå ¥åªæå 个è¯ç代ç ï¼æå ¥å¤è¡ä»£ç å¯ä»¥ä½¿ç¨<pre>æ ç¾ï¼å¯¹äºè¶ è¿ 10 è¡ç代ç ï¼å»ºè®®ä½ ä½¿ç¨æ²ç®±ï¼plnkrï¼JSBinï¼codepenâ¦ï¼