æ¬ç« æè¿°äº JavaScript ç表达å¼åè¿ç®ç¬¦ï¼å æ¬äºèµå¼ãæ¯è¾ãç®æ°ãä½è¿ç®ãé»è¾ãå符串ãä¸å ï¼ççã
ä¸ä¸ªå®æ´è¯¦ç»çè¿ç®ç¬¦å表å表达å¼å¯ä»¥åè§åèã
è¿ç®ç¬¦JavaScript æ¥æå¦ä¸ç±»åçè¿ç®ç¬¦ãæ¬èæè¿°äºè¿ç®ç¬¦åè¿ç®ç¬¦çä¼å 级ã
JavaScript æ¥æäºå åä¸å è¿ç®ç¬¦åä¸ä¸ªç¹æ®çä¸å è¿ç®ç¬¦ï¼æ¡ä»¶è¿ç®ç¬¦ï¼ãä¸ä¸ªäºå è¿ç®ç¬¦éè¦ä¸¤ä¸ªæä½æ°ï¼åå«å¨è¿ç®ç¬¦çåé¢ååé¢ï¼
æä½æ° 1 è¿ç®ç¬¦ æä½æ° 2
ä¾å¦ï¼3+4
æ x*y
ã
ä¸ä¸ªä¸å è¿ç®ç¬¦éè¦ä¸ä¸ªæä½æ°ï¼å¨è¿ç®ç¬¦å颿åé¢ï¼
è¿ç®ç¬¦ æä½æ°
æ
æä½æ° è¿ç®ç¬¦
ä¾å¦ï¼x++
æ ++x
ã
èµå¼è¿ç®ç¬¦å°å®å³è¾¹æä½æ°çå¼èµç»å®å·¦è¾¹çæä½æ°ãæç®åçèµå¼è¿ç®ç¬¦æ¯çäºï¼=
ï¼ï¼å®å°å³è¾¹çæä½æ°å¼èµç»å·¦è¾¹çæä½æ°ãé£ä¹ x = y
å°±æ¯å° y çå¼èµç» xã
è¿æä¸äºå¤åèµå¼æä½ç¬¦ï¼å®ä»¬æ¯ä¸è¡¨ååºçè¿äºæä½çç®åï¼
è§£æå¯¹äºæ´å¤æçèµå¼ï¼è§£æè¯æ³æ¯ä¸ä¸ªè½ä»æ°ç»æå¯¹è±¡å¯¹åºçæ°ç»ç»ææå¯¹è±¡åé¢ééæåæ°æ®ç Javascript 表达å¼ã
var foo = ["one", "two", "three"];
// ä¸ä½¿ç¨è§£æ
var one = foo[0];
var two = foo[1];
var three = foo[2];
// 使ç¨è§£æ
var [one, two, three] = foo;
æ¯è¾è¿ç®ç¬¦
æ¯è¾è¿ç®ç¬¦æ¯è¾å®çæä½æ°å¹¶è¿åä¸ä¸ªåºäºè¡¨è¾¾å¼æ¯å¦ä¸ºççé»è¾å¼ãæä½æ°å¯ä»¥æ¯æ°åï¼å符串ï¼é»è¾ï¼å¯¹è±¡å¼ãå符串æ¯è¾æ¯åºäºæ åçåå
¸é¡ºåºï¼ä½¿ç¨ Unicode å¼ãå¨å¤æ°æ
åµä¸ï¼å¦æä¸¤ä¸ªæä½æ°ä¸æ¯ç¸åçç±»åï¼JavaScript ä¼å°è¯è½¬æ¢å®ä»¬ä¸ºæ°å½çç±»åæ¥æ¯è¾ãè¿ç§è¡ä¸ºé常åç卿°åä½ä¸ºæä½æ°çæ¯è¾ãç±»å转æ¢çä¾å¤æ¯ä½¿ç¨ ===
å !==
æä½ç¬¦ï¼å®ä»¬ä¼æ§è¡ä¸¥æ ¼çç¸çåä¸ç¸çæ¯è¾ãè¿äºè¿ç®ç¬¦ä¸ä¼å¨æ£æ¥ç¸çä¹åè½¬æ¢æä½æ°çç±»åãä¸é¢çè¡¨æ ¼æè¿°äºè¯¥ç¤ºä¾ä»£ç ä¸ç忝è¾è¿ç®ç¬¦
var var1 = 3;
var var2 = 4;
夿³¨ï¼ ï¼=>ï¼ä¸æ¯è¿ç®ç¬¦ï¼èæ¯ç®å¤´å½æ°çæ 记符å·ã
ç®æ¯è¿ç®ç¬¦ç®æ¯è¿ç®ç¬¦ä½¿ç¨æ°å¼ (åé¢éæè
åé) ä½ä¸ºæä½æ°å¹¶è¿åä¸ä¸ªæ°å¼ãæ åçç®æ¯è¿ç®ç¬¦å°±æ¯å åä¹é¤ (+ - * /)ã彿使°æ¯æµ®ç¹æ°æ¶ï¼è¿äºè¿ç®ç¬¦è¡¨ç°å¾è·å®ä»¬å¨å¤§å¤æ°ç¼ç¨è¯è¨ä¸ä¸æ ·ï¼ç¹æ®è¦æ³¨æçæ¯ï¼é¤é¶ä¼äº§çInfinity
ï¼ãä¾å¦ï¼
1 / 2; // 0.5
1 / 2 == 1.0 / 2.0; // true
é¤äºæ åçç®æ¯è¿ç®ç¬¦ï¼+ï¼ - ï¼* /ï¼ï¼JavaScript è¿æä¾äºä¸è¡¨ä¸çç®æ¯è¿ç®ç¬¦ã
è¿ç®ç¬¦ æè¿° ç¤ºä¾ æ±ä½ï¼%
ï¼ äºå
è¿ç®ç¬¦ãè¿åç¸é¤ä¹åç使°ã 12 % 5 è¿å 2ã èªå¢ï¼++
ï¼ ä¸å
è¿ç®ç¬¦ã尿使°çå¼å ä¸ã妿æ¾å¨æä½æ°åé¢ï¼++x
ï¼ï¼åè¿åå ä¸åçå¼ï¼å¦ææ¾å¨æä½æ°åé¢ï¼x++
ï¼ï¼åè¿åæä½æ°åå¼ï¼ç¶åå尿使°å ä¸ã var x=3;
console.log(++x); //4
console.log(x); //4
var y=3;
console.log(y++); //3
console.log(y); //4
èªåï¼--
ï¼ ä¸å
è¿ç®ç¬¦ã尿使°çå¼åä¸ãååç¼ä¸¤ç§ç¨æ³çè¿åå¼ç±»ä¼¼èªå¢è¿ç®ç¬¦ã var x=3; console.log(--x); //è¾å
¥ 2,x=2var y=3;console.log(y--);//è¾åº 3,x=2; ä¸å
è´å¼ç¬¦ï¼-
ï¼ ä¸å
è¿ç®ç¬¦ï¼è¿åæä½æ°çè´å¼ã var x=3; console.log(-x); //è¾å
¥ -3 ä¸å
æ£å¼ç¬¦ï¼+ï¼ ä¸å
è¿ç®ç¬¦ï¼å¦ææä½æ°å¨ä¹å䏿¯æ°å¼ï¼è¯å¾å°å
¶è½¬æ¢ä¸ºæ°å¼ã console.log( +'3' ); // 3
console.log( '3' ); // '3'
console.log(+true); // 1
ææ°è¿ç®ç¬¦ï¼**ï¼ è®¡ç®åºæ°ï¼base
ï¼çææ°ï¼exponent
ï¼æ¬¡æ¹ï¼è¡¨ç¤ºä¸º base^exponent
ã 2 ** 3
è¿å 8
ã10 ** -1
è¿å 0.1
ã ä½è¿ç®ç¬¦
ä½è¿ç®ç¬¦å°å®çæä½æ°è§ä¸º 32 ä½å çäºè¿å¶ä¸²ï¼0 å 1 ç»æï¼èéåè¿å¶å «è¿å¶æåå è¿å¶æ°ãä¾å¦ï¼åè¿å¶æ°å 9 ç¨äºè¿å¶è¡¨ç¤ºä¸º 1001ï¼ä½è¿ç®ç¬¦å°±æ¯å¨è¿ä¸ªäºè¿å¶è¡¨ç¤ºä¸æ§è¡è¿ç®ï¼ä½æ¯è¿åç»ææ¯æ åç JavaScript æ°å¼ã
ä¸è¡¨æ»ç»äº JavaScript çä½è¿ç®ç¬¦ã
Operator Usage Description æä½ä¸ ANDa & b
å¨ a,b çä½è¡¨ç¤ºä¸ï¼æ¯ä¸ä¸ªå¯¹åºçä½é½ä¸º 1 åè¿å 1ï¼å¦åè¿å 0. æä½æ OR a | b
å¨ a,b çä½è¡¨ç¤ºä¸ï¼æ¯ä¸ä¸ªå¯¹åºçä½ï¼åªè¦æä¸ä¸ªä¸º 1 åè¿å 1ï¼å¦åè¿å 0. æä½å¼æ XOR a ^ b
å¨ a,b çä½è¡¨ç¤ºä¸ï¼æ¯ä¸ä¸ªå¯¹åºçä½ï¼ä¸¤ä¸ªä¸ç¸ååè¿å 1ï¼ç¸ååè¿å 0. æä½é NOT ~ a
å转被æä½æ°çä½ã 左移 shift a << b
å° a çäºè¿å¶ä¸²åå·¦ç§»å¨ b ä½ï¼å³è¾¹ç§»å
¥ 0. ç®æ¯å³ç§» a >> b
æ a çäºè¿å¶è¡¨ç¤ºåå³ç§»å¨ b ä½ï¼ä¸¢å¼è¢«ç§»åºçææä½ã(è¯æ³¨ï¼ç®æ¯å³ç§»å·¦è¾¹ç©ºåºç使¯æ ¹æ®æé«ä½æ¯ 0 å 1 æ¥è¿è¡å¡«å
ç) æ 符å·å³ç§» (左边空åºä½ç¨ 0 å¡«å
) a >>> b
æ a çäºè¿å¶è¡¨ç¤ºåå³ç§»å¨ b ä½ï¼ä¸¢å¼è¢«ç§»åºçææä½ï¼å¹¶æå·¦è¾¹ç©ºåºçä½é½å¡«å
为 0 ä½é»è¾è¿ç®ç¬¦
æ¦å¿µä¸æ¥è®²ï¼ä½é»è¾è¿ç®ç¬¦å·¥ä½æµç¨å¦ä¸ï¼
Before: 11100110111110100000000000000110000000000001 After: 10100000000000000110000000000001
ä¾å¦ï¼åè¿å¶æ° 9 çäºè¿å¶è¡¨ç¤ºæ¯ 1001ï¼åè¿å¶æ° 15 çäºè¿å¶è¡¨ç¤ºæ¯ 1111.å æ¤ï¼å½ä½è¿ç®ç¬¦åºç¨å°è¿ä¸¤ä¸ªå¼æ¶ï¼ç»æå¦ä¸ï¼
è¡¨è¾¾å¼ ç»æ äºè¿å¶æè¿°15 & 9
9
1111 & 1001 = 1001
15 | 9
15
1111 | 1001 = 1111
15 ^ 9
6
1111 ^ 1001 = 0110
~15
-16
~ 0000 0000 ⦠0000 1111 = 1111 1111 ⦠1111 0000
~9
-10
~ 0000 0000 ⦠0000 1001 = 1111 1111 ⦠1111 0110
注æä½è¿ç®ç¬¦âéâå°ææç 32 ä½ååï¼èå¼çæé«ä½ (æå·¦è¾¹çä¸ä½) 为 1 åè¡¨ç¤ºè´æ° (2-è¡¥ç 表示æ³)ã
ç§»ä½è¿ç®ç¬¦ç§»ä½è¿ç®ç¬¦å¸¦ä¸¤ä¸ªæä½æ°ï¼ç¬¬ä¸ä¸ªæ¯å¾ ç§»ä½çæ°ï¼ç¬¬äºä¸ªæ¯æå®ç¬¬ä¸ä¸ªæ°è¦è¢«ç§»å¤å°ä½çæ°ãç§»ä½çæ¹åç±è¿ç®ç¬¦æ¥æ§å¶ã
ç§»ä½è¿ç®ç¬¦ææä½æ°è½¬ä¸º 32bit æ´æ°ï¼ç¶åå¾åºä¸ä¸ªä¸å¾ ç§»ä½æ°ç¸åç§ç±»çå¼ã
ç§»ä½è¿ç®ç¬¦å表å¦ä¸ã
è¿ç®ç¬¦ æè¿° 示ä¾<<
ï¼å·¦ç§»ä½ï¼ å°ç¬¬ä¸ä¸ªæä½æ°åå·¦ç§»å¨æå®æ°éçä½ã左边移åºä½è¢«æå¼ã左边移åºçå ä½è¢«ä¸¢å¼ãå³è¾¹å¤åºç空ä½ç± 0 è¡¥é½ã 9<<2
产ç 36ï¼å 为 1001 ç§»ä½ 2 æ¯ç¹åå·¦å为 100100ï¼å®æ¯ 36ã >>
ï¼å¸¦ç¬¦å·å³ç§»ï¼ å°ç¬¬ä¸ä¸ªæä½æ°åå³ç§»å¨æå®æ°éçä½ãå³è¾¹ç§»åºä½è¢«æå¼ã左边å¤åºç空ä½ç±åå¼çæå·¦è¾¹æ°åè¡¥é½ã 9>>2
产ç 2ï¼å 为 1001 ç§»ä½ 2 ä½åå³å为 10ï¼å
¶æ¯ 2ãåæ ·ï¼-9>>2
产ç -3ï¼ç±äºç¬¦å·è¢«ä¿çã >>>
ï¼è¡¥é¶å³ç§»ï¼ å°ç¬¬ä¸ä¸ªæä½æ°åå³ç§»å¨æå®æ°éçä½ãå³è¾¹ç§»åºä½è¢«æå¼ã左边å¤åºç空ä½ç± 0 è¡¥é½ã 19>>>2
产ç 4ï¼å 为 10011 ç§»ä½ 2 ä½åå³å为 100ï¼å®æ¯ 4ã对éè´æ°å¼ï¼è¡¥é¶å³ç§»å带符å·å³ç§»äº§çç¸åç»æã é»è¾è¿ç®ç¬¦
é»è¾è¿ç®ç¬¦å¸¸ç¨äºå¸å°ï¼é»è¾ï¼å¼ä¹é´; 彿使°é½æ¯å¸å°å¼æ¶ï¼è¿åå¼ä¹æ¯å¸å°å¼ãä¸è¿å®é
ä¸&&
å||
è¿åçæ¯ä¸ä¸ªç¹å®çæä½æ°çå¼ï¼æä»¥å½å®ç¨äºéå¸å°å¼çæ¶åï¼è¿åå¼å°±å¯è½æ¯éå¸å°å¼ãé»è¾è¿ç®ç¬¦çæè¿°å¦ä¸ã
(&&
) expr1 && expr2
(é»è¾ä¸) 妿 expr1 è½è¢«è½¬æ¢ä¸º falseï¼é£ä¹è¿å expr1ï¼å¦åï¼è¿åexpr2
ãå æ¤ï¼&&
ç¨äºå¸å°å¼æ¶ï¼å½æä½æ°é½ä¸º true æ¶è¿å trueï¼å¦åè¿å false. é»è¾æ (||
) expr1 || expr2
(é»è¾æ) 妿 expr1 è½è¢«è½¬æ¢ä¸º trueï¼é£ä¹è¿å expr1ï¼å¦åï¼è¿åexpr2
ãå æ¤ï¼|| ç¨äºå¸å°å¼æ¶ï¼å½ä»»ä½ä¸ä¸ªæä½æ°ä¸º true åè¿å trueï¼å¦ææä½æ°é½æ¯ false åè¿å falseã é»è¾é (!)
!expr
(é»è¾é) 妿æä½æ°è½å¤è½¬æ¢ä¸º true åè¿å falseï¼å¦åè¿å trueã
è½è¢«è½¬æ¢ä¸ºfalse
ç弿null
, 0
, NaN
, 空å符串 ("") åundefined
ãï¼è¯è
注ï¼ä¹å¯ä»¥ç§°ä½âfalsyâï¼
ä¸é¢æ¯&&ï¼é»è¾"ä¸"ï¼æä½ç¬¦ç示ä¾ã
var a1 = true && true; // t && t returns true
var a2 = true && false; // t && f returns false
var a3 = false && true; // f && t returns false
var a4 = false && 3 == 4; // f && f returns false
var a5 = "Cat" && "Dog"; // t && t returns Dog
var a6 = false && "Cat"; // f && t returns false
var a7 = "Cat" && false; // t && f returns false
ä¸é¢æ¯ ||ï¼é»è¾"æ"ï¼æä½ç¬¦ç示ä¾ã
var o1 = true || true; // t || t returns true
var o2 = false || true; // f || t returns true
var o3 = true || false; // t || f returns true
var o4 = false || 3 == 4; // f || f returns false
var o5 = "Cat" || "Dog"; // t || t returns Cat
var o6 = false || "Cat"; // f || t returns Cat
var o7 = "Cat" || false; // t || f returns Cat
ä¸é¢æ¯ï¼ï¼é»è¾"é"ï¼æä½ç¬¦ç示ä¾ã
var n1 = !true; // !t returns false
var n2 = !false; // !f returns true
var n3 = !"Cat"; // !t returns false
çè·¯æ±å¼
ä½ä¸ºé»è¾è¡¨è¾¾å¼è¿è¡æ±å¼æ¯ä»å·¦å°å³ï¼å®ä»¬æ¯ä¸ºå¯è½çâçè·¯âçåºç°è使ç¨ä»¥ä¸è§åè¿è¡æµè¯ï¼
false
&& anything // 被çè·¯æ±å¼ä¸º falsetrue
|| anything // 被çè·¯æ±å¼ä¸º trueé»è¾çè§åï¼ä¿è¯è¿äºè¯ä¼°æ¯æ»æ¯æ£ç¡®çã请注æï¼ä¸è¿°è¡¨è¾¾å¼çanything
é¨åä¸ä¼è¢«æ±å¼ï¼æä»¥è¿æ ·åä¸ä¼äº§çä»»ä½å¯ä½ç¨ã
é¤äºæ¯è¾æä½ç¬¦ï¼å®å¯ä»¥å¨å符串å¼ä¸ä½¿ç¨ï¼è¿æ¥æä½ç¬¦ï¼+ï¼è¿æ¥ä¸¤ä¸ªå符串å¼ç¸è¿æ¥ï¼è¿åå¦ä¸ä¸ªå符串ï¼å®æ¯ä¸¤ä¸ªæä½æ°ä¸²çç»åã
ä¾å¦ï¼
console.log("my " + "string"); // console logs the string "my string".
ç®åæä½ç¬¦ +=
ä¹å¯ä»¥ç¨æ¥æ¼æ¥å符串ï¼ä¾å¦ï¼
var myString = "alpha";
myString += "bet"; // è¿å "alphabet"
æ¡ä»¶ï¼ä¸å
ï¼è¿ç®ç¬¦
æ¡ä»¶è¿ç®ç¬¦æ¯ JavaScript ä¸å¯ä¸éè¦ä¸ä¸ªæä½æ°çè¿ç®ç¬¦ãè¿ç®çç»ææ ¹æ®ç»å®æ¡ä»¶å¨ä¸¤ä¸ªå¼ä¸åå ¶ä¸ãè¯æ³ä¸ºï¼
æ¡ä»¶ ? å¼ 1 : å¼ 2
妿æ¡ä»¶
为çï¼åç»æåå¼ 1
ãå¦åä¸ºå¼ 2
ãä½ è½å¤å¨ä»»ä½å
è®¸ä½¿ç¨æ åè¿ç®ç¬¦çå°æ¹ä½¿ç¨æ¡ä»¶è¿ç®ç¬¦ã
ä¾å¦ï¼
var status = age >= 18 ? "adult" : "minor";
å½ age
大äºçäº 18 çæ¶åï¼å°âadultâèµå¼ç» status
ï¼å¦åå°âminorâèµå¼ç» status
ã
éå·æä½ç¬¦ï¼,
ï¼å¯¹ä¸¤ä¸ªæä½æ°è¿è¡æ±å¼å¹¶è¿åæç»æä½æ°çå¼ãå®å¸¸å¸¸ç¨å¨ for
循ç¯ä¸ï¼å¨æ¯æ¬¡å¾ªç¯æ¶å¯¹å¤ä¸ªåéè¿è¡æ´æ°ã
ä¾å¦ï¼åå¦ a
æ¯ä¸ä¸ªäºç»´æ°ç»ï¼æ¯ä¸ªç»´åº¦åæ 10 个å
ç´ ï¼ä»¥ä¸ä»£ç å©ç¨éå·æä½ç¬¦æ¥åæ¶æ¹å两个åéçå¼ãè¿æ®µä»£ç çåè½æ¯æå°åºè¯¥äºç»´æ°ç»ç对è§çº¿å
ç´ çå¼ï¼
var x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
var a = [x, x, x, x, x];
for (var i = 0, j = 9; i <= j; i++, j--)
console.log("a[" + i + "][" + j + "]= " + a[i][j]);
ä¸å
æä½ç¬¦
ä¸å æä½ç¬¦ä» 对åºä¸ä¸ªæä½æ°ã
delete
delete
æä½ç¬¦ï¼å é¤ä¸ä¸ªå¯¹è±¡ç屿§æè
ä¸ä¸ªæ°ç»ä¸æä¸ä¸ªé®å¼ãè¯æ³å¦ä¸ï¼
delete objectName.property;
delete objectName[index];
delete property; // legal only within a with statement
objectName
æ¯ä¸ä¸ªå¯¹è±¡åï¼property
æ¯ä¸ä¸ªå·²ç»åå¨ç屿§ï¼index
æ¯æ°ç»ä¸çä¸ä¸ªå·²ç»åå¨çé®å¼çç´¢å¼å¼ã
第ä¸è¡çå½¢å¼åªå¨with
声æçç¶æä¸æ¯åæ³çï¼ä»å¯¹è±¡ä¸å é¤ä¸ä¸ªå±æ§ã
ä½ è½ä½¿ç¨ delete
å é¤åç§åæ ·çéå¼å£°æï¼ä½æ¯è¢«var
声æçé¤å¤ã
妿 delete
æä½æåï¼å±æ§æè
å
ç´ ä¼åæ undefined
ã妿 delete
å¯è¡ä¼è¿åtrue
ï¼å¦æä¸æåè¿åfalse
ã
x = 42;
var y = 43;
myobj = new Number();
myobj.h = 4; // create property h
delete x; // returns true (can delete if declared implicitly)
delete y; // returns false (cannot delete if declared with var)
delete Math.PI; // returns false (cannot delete predefined properties)
delete myobj.h; // returns true (can delete user-defined properties)
delete myobj; // returns true (can delete if declared implicitly)
å 餿°ç»å
ç´
å 餿°ç»ä¸çå
ç´ æ¶ï¼æ°ç»çé¿åº¦æ¯ä¸åçï¼ä¾å¦å é¤ a[3]
, a[4]
ï¼a[4]
å a[3]
ä»ç¶åå¨åæäº undefined
ã
delete
å 餿°ç»ä¸çä¸ä¸ªå
ç´ ï¼è¿ä¸ªå
ç´ å°±ä¸å¨æ°ç»ä¸äºãä¾å¦ï¼trees[3]
被å é¤ï¼trees[3]
ä»ç¶å¯å¯»åå¹¶è¿å undefined
ã
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
delete trees[3];
if (3 in trees) {
// ä¸ä¼è¢«æ§è¡
}
妿æ³è®©æ°ç»ä¸åå¨ä¸ä¸ªå
ç´ ä½æ¯æ¯undefined
å¼ï¼ä½¿ç¨undefined
å
³é®åè䏿¯delete
æä½ãå¦ä¸ï¼ trees[3] åé
ä¸ä¸ª undefined
,使¯è¿ä¸ªæ°ç»å
ç´ ä»ç¶åå¨ï¼
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
trees[3] = undefined;
if (3 in trees) {
// this gets executedï¼ä¼è¢«æ§è¡ï¼
}
typeof
typeof æä½ç¬¦ å¯éè¿ä¸é¢ 2 ç§æ¹å¼ä½¿ç¨ï¼
typeof operand;
typeof (operand);
typeof æä½ç¬¦è¿åä¸ä¸ªè¡¨ç¤º operand ç±»åçå符串å¼ãoperand å¯ä¸ºå符串ãåéãå ³é®è¯æå¯¹è±¡ï¼å ¶ç±»åå°è¢«è¿åãoperand ä¸¤ä¾§çæ¬å·ä¸ºå¯éã
åè®¾ä½ å®ä¹äºå¦ä¸çåéï¼
var myFun = new Function("5 + 2");
var shape = "round";
var size = 1;
var today = new Date();
typeof æä½ç¬¦å°ä¼è¿åå¦ä¸çç»æï¼
typeof myFun; // returns "function"
typeof shape; // returns "string"
typeof size; // returns "number"
typeof today; // returns "object"
typeof dontExist; // returns "undefined"
对äºå
³é®è¯ true
å null
ï¼ typeof
æä½ç¬¦å°ä¼è¿åå¦ä¸ç»æï¼
typeof true; // returns "boolean"
typeof null; // returns "object"
对äºä¸ä¸ªæ°å¼æåç¬¦ä¸²ï¼ typeof
æä½ç¬¦å°ä¼è¿åå¦ä¸ç»æï¼
typeof 62; // returns "number"
typeof "Hello world"; // returns "string"
对äºå±æ§å¼ï¼typeof æä½ç¬¦å°ä¼è¿å屿§æå å«å¼çç±»åï¼
typeof document.lastModified; // returns "string"
typeof window.length; // returns "number"
typeof Math.LN2; // returns "number"
å¯¹äºæ¹æ³å彿°ï¼typeof æä½ç¬¦å°ä¼è¿åå¦ä¸ç»æï¼
typeof blur; // returns "function"
typeof eval; // returns "function"
typeof parseInt; // returns "function"
typeof shape.split; // returns "function"
对äºé¢å®ä¹ç对象ï¼typeof æä½ç¬¦å°ä¼è¿åå¦ä¸ç»æï¼
typeof Date; // returns "function"
typeof Function; // returns "function"
typeof Math; // returns "object"
typeof Option; // returns "function"
typeof String; // returns "function"
void
void è¿ç®ç¬¦è¿ç¨æ¹æ³å¦ä¸ï¼
void expression;
void (expression);
void è¿ç®ç¬¦ï¼è¡¨æä¸ä¸ªè¿ç®æ²¡æè¿åå¼ãexpression æ¯ javaScript 表达å¼ï¼æ¬å·ä¸çè¡¨è¾¾å¼æ¯ä¸ä¸ªå¯é项ï¼å½ç¶ä½¿ç¨è¯¥æ¹å¼æ¯ä¸ç§å¥½çå½¢å¼ã
ä½ å¯ä»¥ä½¿ç¨ void è¿ç®ç¬¦ææä¸ä¸ªè¶ ææ¬é¾æ¥ãè¯¥è¡¨è¾¾å¼æ¯ææçï¼ä½æ¯å¹¶ä¸ä¼å¨å½åææ¡£ä¸è¿è¡å è½½ã
å¦ä¸å建äºä¸ä¸ªè¶ 龿¥ææ¬ï¼å½ç¨æ·åå»è¯¥ææ¬æ¶ï¼ä¸ä¼æä»»ä½ææã
<a href="javascript:void(0)">Click here to do nothing</a>
ä¸é¢ç代ç å建äºä¸ä¸ªè¶ 龿¥ï¼å½ç¨æ·åå»å®æ¶ï¼æäº¤ä¸ä¸ªè¡¨åã
<a href="javascript:void(document.form.submit())">Click here to submit</a>
å
³ç³»è¿ç®ç¬¦
å ³ç³»è¿ç®ç¬¦å¯¹æä½æ°è¿è¡æ¯è¾ï¼æ ¹æ®æ¯è¾ç»æçæåï¼è¿åç¸åºçå¸å°å¼ã
in
in
æä½ç¬¦ï¼å¦æææå®ç屿§ç¡®å®åå¨äºææå®ç对象ä¸ï¼åä¼è¿åtrue
ï¼è¯æ³å¦ä¸ï¼
propNameOrNumber in objectName;
å¨è¿é propNameOrNumber
å¯ä»¥æ¯ä¸ä¸ªä»£è¡¨ç屿§åçå符串æè
æ¯ä¸ä¸ªä»£è¡¨çæ°ç»ç´¢å¼çæ°å¼è¡¨è¾¾å¼ï¼èobjectName
忝ä¸ä¸ªå¯¹è±¡åã
ä¸é¢çä¾åæ¯ in
æä½ç常è§ç¨æ³ã
// Arrays
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
0 in trees; // returns true
3 in trees; // returns true
6 in trees; // returns false
"bay" in trees; // returns false (you must specify the index number,
// not the value at that index)
"length" in trees; // returns true (length is an Array property)
// Predefined objects
"PI" in Math; // returns true
var myString = new String("coral");
"length" in myString; // returns true
// Custom objects
var mycar = { make: "Honda", model: "Accord", year: 1998 };
"make" in mycar; // returns true
"model" in mycar; // returns true
instanceof
妿æå¤å«çå¯¹è±¡ç¡®å®æ¯ææå®çç±»åï¼åè¿åtrue
ãå
¶è¯æ³å¦ä¸ï¼
objectName instanceof objectType;
objectName
æ¯éè¦åå¤å«ç对象çåç§°ï¼èobjectType
æ¯åå®ç对象çç±»åï¼ä¾å¦Date
æ Array
.
å½ä½ éè¦ç¡®è®¤ä¸ä¸ªå¯¹è±¡å¨è¿è¡æ¶çç±»åæ¶ï¼å¯ä½¿ç¨instanceof
. ä¾å¦ï¼éè¦ catch å¼å¸¸æ¶ï¼ä½ å¯ä»¥é对æåºå¼å¸¸çç±»åï¼æ¥åä¸åçå¼å¸¸å¤çã
ä¾å¦ï¼ä¸é¢ç代ç ä½¿ç¨ instanceof
å»å¤æ theDay
æ¯å¦æ¯ä¸ä¸ª Date
对象ãå 为 theDay
æ¯ä¸ä¸ª Date
å¯¹è±¡ï¼æä»¥ if
ä¸ç代ç 伿§è¡ã
var theDay = new Date(1995, 12, 17);
if (theDay instanceof Date) {
// statements to execute
}
è¿ç®ç¬¦ä¼å
级
è¿ç®ç¬¦çä¼å 级ï¼ç¨äºç¡®å®ä¸ä¸ªè¡¨è¾¾å¼ç计ç®é¡ºåºãå¨ä½ ä¸è½ç¡®å®ä¼å 级æ¶ï¼å¯ä»¥éè¿ä½¿ç¨æ¬å·æ¾å¼å£°æè¿ç®ç¬¦çä¼å 级ã
ä¸è¡¨ååºäºæè¿°ç¬¦çä¼å 级ï¼ä»æé«å°æä½ã
Operator type Individual operators member. []
call / create instance () new
negation/increment ! ~ - + ++ -- typeof void delete
multiply/divide * / %
addition/subtraction + -
bitwise shift << >> >>>
relational < <= > >= in instanceof
equality == != === !==
bitwise-and &
bitwise-xor ^
bitwise-or |
logical-and &&
logical-or ||
conditional ?:
assignment = += -= *= /= %= <<= >>= >>>= &= ^= |=
comma ,
ä¸è¡¨æä¸ä¸ªæ´è¯¦ç»ççæ¬ï¼å®å å«äºåæä½ç¬¦æ´è¯¦ç»ç说æï¼å¯å¨ JavaScript åèæå䏿¾å°ã
表达å¼è¡¨è¾¾å¼æ¯ä¸ç»ä»£ç çéåï¼å®è¿åä¸ä¸ªå¼ãï¼è¯æ³¨ï¼å®ä¹æ¯è¾ä¸å¥½çè§£ï¼çä¸é¢ç举ä¾å°±å¾å¥½æäºãï¼
æ¯ä¸ä¸ªåæ³ç表达å¼é½è½è®¡ç®ææä¸ªå¼ï¼ä½ä»æ¦å¿µä¸è®²ï¼æä¸¤ç§ç±»åç表达å¼ï¼æå¯ä½ç¨çï¼æ¯å¦èµå¼ï¼ååçº¯è®¡ç®æ±å¼çã
è¡¨è¾¾å¼ x=7 æ¯ç¬¬ä¸ç±»åçä¸ä¸ªä¾åã该表达å¼ä½¿ç¨=è¿ç®ç¬¦å°å¼ 7 èµäºåé xãè¿ä¸ªè¡¨è¾¾å¼èªå·±çå¼çäº 7ã
代ç 3 + 4 æ¯ç¬¬äºä¸ªè¡¨è¾¾å¼ç±»åçä¸ä¸ªä¾åã该表达å¼ä½¿ç¨ + è¿ç®ç¬¦æ 3 å 4 å å°ä¸èµ·ä½å¹¶æ²¡ææç»æï¼7ï¼èµå¼ç»ä¸ä¸ªåéã
JavaScript æä»¥ä¸è¡¨è¾¾å¼ç±»åï¼
this
this
å
³é®å被ç¨äºæä»£å½åç对象ï¼é常ï¼this
æä»£çæ¯æ¹æ³ä¸æ£å¨è¢«è°ç¨ç对象ãç¨æ³å¦ä¸ï¼
this["propertyName"];
this.propertyName;
å设ä¸ä¸ªç¨äºéªè¯å¯¹è±¡value
屿§çvalidate
彿°ï¼ä¼ åæå¯¹è±¡ï¼æé«å¼åæä½å¼ã
function validate(obj, lowval, hival) {
if (obj.value < lowval || obj.value > hival) console.log("Invalid Value!");
}
ä½ å¯ä»¥å¨ä»»ä½è¡¨åå
ç´ çonchange
äºä»¶å¤çä¸è°ç¨validat
彿°ï¼ç¨this
æ¥æä»£å½åç表åå
ç´ ï¼ç¨ä¾å¦ä¸ï¼
<p>Enter a number between 18 and 99:</p>
<input type="text" name="age" size="3" onChange="validate(this, 18, 99);" />
åç»æä½ç¬¦
åç»æä½ç¬¦ï¼ï¼æ§å¶äºè¡¨è¾¾å¼ä¸è®¡ç®çä¼å 级ã䏾便¥è¯´ï¼ä½ å¯ä»¥æ¹åå ä¹é¤åå åç顺åºï¼è½¬èå 计ç®å æ³ã
var a = 1;
var b = 2;
var c = 3;
// é»è®¤ä¼å
级
a + b * c; // 7
// é»è®¤æ¯è¿æ ·è®¡ç®ç
a + b * c; // 7
// ç°å¨ä½¿å æ³ä¼å
äºä¹æ³
(a + b) * c; // 9
// è¿çä»·äº
a * c + b * c; // 9
æ°å¼æ¨å¯¼
Comprehensions æ¯ä¸ä¸ªå¸¦æå®éªæ§è´¨ç JavaScript ç¹æ§ï¼è®¡åå°å¨æªæ¥ç ECMAScript çæ¬ä¸å å ¥è¯¥ç¹æ§ãæä¸¤ç§ç±»åç comprehensions:
[for (x of y) x]
æ°åæ°å¼æ¨å¯¼ï¼éæ åç¨æ³ï¼
(for (x of y) y)
çæå¨æ°å¼æ¨å¯¼ï¼è¯è 注ï¼çæå¨æ°å¼æ¨å¯¼æ ååå¯è½ä¸å¤§ï¼æ¨èä½¿ç¨ çæå¨å½æ°ï¼
Comprehensions ç¹æ§è¢«è®¸å¤ç¼ç¨è¯è¨æéç¨ï¼è¯¥ç¹æ§è½å¤ä½¿ä½ å¿«éå°éè¿ä¸ä¸ªå·²æçæ°ç»æ¥å建åºä¸ä¸ªæ°çæ°ç»ï¼æ¯å¦ï¼
[for (i of [ 1, 2, 3 ]) i*i ];
// [ 1, 4, 9 ]
var abc = [ "A", "B", "C" ];
[for (letters of abc) letters.toLowerCase()];
// [ "a", "b", "c" ]
å·¦å¼è¡¨è¾¾å¼
å·¦å¼å¯ä»¥ä½ä¸ºèµå¼çç®æ ã
new
ä½ å¯ä»¥ä½¿ç¨new
è¿ç®ç¬¦å建ä¸ä¸ªèªå®ä¹ç±»åæè
æ¯é¢ç½®ç±»åç对象å®ä¾ãç¨æ³å¦ä¸ï¼
var objectName = new objectType([param1, param2, ..., paramN]);
super
super å ³é®åå¯ä»¥ç¨æ¥è°ç¨ä¸ä¸ªå¯¹è±¡ç¶ç±»ç彿°ï¼å®å¨ç¨æ¥è°ç¨ä¸ä¸ªç±»çç¶ç±»çæé 彿°æ¶é常æç¨ï¼æ¯å¦ï¼
super([arguments]); // calls the parent constructor. super.functionOnParent([arguments]);
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