å·²å¼ç¨: ä¸åæ¨è使ç¨è¯¥ç¹æ§ãè½ç¶ä¸äºæµè§å¨ä»ç¶æ¯æå®ï¼ä½ä¹è®¸å·²ä»ç¸å ³ç web æ åä¸ç§»é¤ï¼ä¹è®¸æ£åå¤ç§»é¤æåºäºå ¼å®¹æ§èä¿çã请尽éä¸è¦ä½¿ç¨è¯¥ç¹æ§ï¼å¹¶æ´æ°ç°æç代ç ï¼åè§æ¬é¡µé¢åºé¨çå ¼å®¹æ§è¡¨æ ¼ä»¥æå¯¼ä½ ä½åºå³å®ã请注æï¼è¯¥ç¹æ§éæ¶å¯è½æ æ³æ£å¸¸å·¥ä½ã
夿³¨ï¼ ä¸å»ºè®®ä½¿ç¨ with
è¯å¥ï¼å 为å®å¯è½æ¯æ··æ·é误åå
¼å®¹æ§é®é¢çæ ¹æºãæå
³è¯¦ç»ä¿¡æ¯ï¼è¯·åé
ä¸é¢âæè¿°âä¸èä¸çâè¯æä¸æçå¼ç«¯âé¨åã
with
è¯å¥æ©å±ä¸ä¸ªè¯å¥çä½ç¨åé¾ã
with (expression)
statement
expression
å°ç»å®çè¡¨è¾¾å¼æ·»å å°å¨è¯ä¼°è¯å¥æ¶ä½¿ç¨çä½ç¨åé¾ä¸ã表达å¼å¨å´çæ¬å·æ¯å¿ éçã
statement
ä»»ä½è¯å¥ãè¦æ§è¡å¤ä¸ªè¯å¥ï¼è¯·ä½¿ç¨ä¸ä¸ªåè¯å¥ ({ ... }
) 对è¿äºè¯å¥è¿è¡åç»ã
JavaScript æ¥æ¾æä¸ªæªä½¿ç¨å½å空é´çåéæ¶ï¼ä¼éè¿ä½ç¨å龿¥æ¥æ¾ï¼ä½ç¨å龿¯è·æ§è¡ä»£ç ç context æè
å
å«è¿ä¸ªåéç彿°æå
³ã'with'è¯å¥å°æä¸ªå¯¹è±¡æ·»å å°ä½ç¨åé¾çé¡¶é¨ï¼å¦æå¨ statement 䏿æä¸ªæªä½¿ç¨å½å空é´çåéï¼è·ä½ç¨åé¾ä¸çæä¸ªå±æ§ååï¼åè¿ä¸ªåéå°æåè¿ä¸ªå±æ§å¼ãå¦ææ²æååç屿§ï¼åå°æåºReferenceError
å¼å¸¸ã
夿³¨ï¼ 䏿¨è使ç¨with
ï¼å¨ ECMAScript 5 ä¸¥æ ¼æ¨¡å¼ä¸è¯¥æ ç¾å·²è¢«ç¦æ¢ãæ¨èçæ¿ä»£æ¹æ¡æ¯å£°æä¸ä¸ªä¸´æ¶å鿥æ¿è½½ä½ æéè¦ç屿§ã
å©ï¼with
è¯å¥å¯ä»¥å¨ä¸é ææ§è½æå¤±çæ
æ³ä¸ï¼åå°åéçé¿åº¦ãå
¶é æçéå 计ç®éå¾å°ãä½¿ç¨ 'with' å¯ä»¥åå°ä¸å¿
è¦çæéè·¯å¾è§£æè¿ç®ãéè¦æ³¨æçæ¯ï¼å¾å¤æ
æ³ä¸ï¼ä¹å¯ä»¥ä¸ä½¿ç¨ with è¯å¥ï¼èæ¯ä½¿ç¨ä¸ä¸ªä¸´æ¶å鿥ä¿åæéï¼æ¥è¾¾å°åæ ·çææã
å¼ï¼with
è¯å¥ä½¿å¾ç¨åºå¨æ¥æ¾åé弿¶ï¼é½æ¯å
卿å®çå¯¹è±¡ä¸æ¥æ¾ãæä»¥é£äºæ¬æ¥ä¸æ¯è¿ä¸ªå¯¹è±¡ç屿§çåéï¼æ¥æ¾èµ·æ¥å°ä¼å¾æ
¢ã妿æ¯å¨å¯¹æ§è½è¦æ±è¾é«çåºåï¼'with' ä¸é¢ç statement è¯å¥ä¸çåéï¼åªåºè¯¥å
å«è¿ä¸ªæå®å¯¹è±¡ç屿§ã
å¼ç«¯ï¼with
è¯å¥ä½¿å¾ä»£ç 䏿é
读ï¼åæ¶ä½¿å¾ JavaScript ç¼è¯å¨é¾ä»¥å¨ä½ç¨åé¾ä¸æ¥æ¾æä¸ªåéï¼é¾ä»¥å³å®åºè¯¥å¨åªä¸ªå¯¹è±¡ä¸æ¥åå¼ã请çä¸é¢çä¾åï¼
function f(x, o) {
with (o) print(x);
}
f
被è°ç¨æ¶ï¼x
æå¯è½è½åå°å¼ï¼ä¹å¯è½æ¯undefined
ï¼å¦æè½åå°ï¼æå¯è½æ¯å¨ o ä¸åçå¼ï¼ä¹å¯è½æ¯å½æ°ç第ä¸ä¸ªåæ°x
çå¼ï¼å¦æ o 䏿²¡æè¿ä¸ªå±æ§çè¯ï¼ãå¦æä½ å¿è®°å¨ä½ä¸ºç¬¬äºä¸ªåæ°ç对象 o ä¸å®ä¹x
è¿ä¸ªå±æ§ï¼ç¨åºå¹¶ä¸ä¼æ¥éï¼åªæ¯åå°å¦ä¸ä¸ªå¼èå·²ã
å¼ç«¯ï¼ä½¿ç¨ with
è¯å¥ç代ç ï¼æ æ³ååå
¼å®¹ï¼ç¹å¥æ¯å¨ä½¿ç¨ä¸äºåçæ°æ®ç±»åçæ¶åãçä¸é¢çä¾åï¼
function f(foo, values) {
with (foo) {
console.log(values);
}
}
妿æ¯å¨ ECMAScript 5 ç¯å¢è°ç¨f([1,2,3], obj)
ï¼åwith
è¯å¥ä¸åévalues
å°æå彿°ç第äºä¸ªåæ°values
ã使¯ï¼ECMAScript 6 æ åç»Array.prototype
æ·»å äºä¸ä¸ªæ°å±æ§values
ï¼æææ°ç»å®ä¾å°ç»§æ¿è¿ä¸ªå±æ§ãæä»¥å¨ ECMAScript 6 ç¯å¢ä¸ï¼with
è¯å¥ä¸åévalues
å°æå[1,2,3].values
ã
ä¸é¢çwith
è¯å¥æå®Math
对象ä½ä¸ºé»è®¤å¯¹è±¡ãwith
è¯å¥éé¢çåéï¼å奿åMath
对象çPI
ãcos
å sin
彿°ï¼ä¸ç¨å¨å颿·»å å½å空é´ãåç»ææå¼ç¨é½æåMath
对象ã
var a, x, y;
var r = 10;
with (Math) {
a = PI * r * r;
x = r * cos(PI);
y = r * sin(PI / 2);
}
è§è æµè§å¨å
¼å®¹æ§ åè§
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