Baseline Widely available
var
è¯å¥ç¨äºå£°æä¸ä¸ªå½æ°ä½ç¨åæå
¨å±ä½ç¨åçåéï¼å¹¶ä¸å¯ä»¥éæ©å°å
¶åå§å为ä¸ä¸ªå¼ã
var x = 1;
if (x === 1) {
var x = 2;
console.log(x);
// Expected output: 2
}
console.log(x);
// Expected output: 2
è¯æ³
var name1;
var name1 = value1;
var name1 = value1, name2 = value2;
var name1, name2 = value2;
var name1 = value1, name2, /* â¦, */ nameN = valueN;
nameN
è¦å£°æçåéçåç§°ãå¿ é¡»æ¯ææç JavaScript æ è¯ç¬¦æè§£æç»å®æ¨¡å¼ã
valueN
å¯é
åéçåå§å¼ãå¯ä»¥æ¯ä»»ä½åæ³ç表达å¼ãé»è®¤å¼ä¸º undefined
ã
ç¨ var
声æçåéçä½ç¨åæ¯æé è¿å¹¶å
å« var
è¯å¥ç以ä¸è±æ¬å·éåè¯æ³ç»æçä¸ä¸ªï¼
妿䏿¯ä»¥ä¸è¿äºæ åµåæ¯ï¼
function foo() {
var x = 1;
function bar() {
var y = 2;
console.log(x); // 1ï¼`bar` 彿°éå
ä¸å¼ç¨äº `x`ï¼
console.log(y); // 2ï¼`y` å¨ä½ç¨åå
ï¼
}
bar();
console.log(x); // 1ï¼`x` å¨ä½ç¨åå
ï¼
console.log(y); // ReferenceErrorï¼`y` çä½ç¨åéå®å¨ `bar` å
}
foo();
éè¦çæ¯ï¼å
¶ä»åçº§ç»æï¼å
æ¬åè¯å¥ãtry...catch
ãswitch
以åå
¶ä¸ä¸ä¸ª for
è¯å¥ç头é¨ï¼å¯¹äº var
å¹¶ä¸å建ä½ç¨åï¼èå¨è¿æ ·çåå
é¨ä½¿ç¨ var
声æçåéä»ç¶å¯ä»¥å¨åå¤é¨è¢«å¼ç¨ã
for (var a of [1, 2, 3]);
console.log(a); // 3
å¨èæ¬ä¸ï¼ä½¿ç¨ var
声æçåéå°è¢«æ·»å 为å
¨å±å¯¹è±¡çä¸å¯é
ç½®å±æ§ãè¿æå³çå®ç屿§æè¿°ç¬¦æ æ³è¢«ä¿®æ¹ï¼ä¹æ æ³ä½¿ç¨ delete
å é¤ãJavaScript å
·æèªå¨å
åç®¡çæºå¶ï¼å æ¤å¨å
¨å±åéä¸ä½¿ç¨ delete
è¿ç®ç¬¦æ¯æ²¡ææä¹çã
"use strict";
var x = 1;
Object.hasOwn(globalThis, "x"); // true
delete globalThis.x; // å¨ä¸¥æ ¼æ¨¡å¼ä¸ï¼å°æåº TypeErrorï¼å¦åéé»å¤±è´¥ã
delete x; // å¨ä¸¥æ ¼æ¨¡å¼ä¸ï¼å°æåº SyntaxErrorï¼å¦åéé»å¤±è´¥ã
å¨ NodeJS CommonJS 模å以ååç ECMAScript 模åä¸ï¼é¡¶å±åé声æçä½ç¨åä» éäºæ¨¡åä¸ï¼èä¸ä¼ä½ä¸ºå±æ§è¢«æ·»å å°å ¨å±å¯¹è±¡ä¸ã
var
å
³é®ååé¢çå表被称为ç»å®å表ï¼ç¨éå·åéï¼å
¶ä¸éå·ä¸æ¯éå·è¿ç®ç¬¦ï¼=
å·ä¹ä¸æ¯èµå¼è¿ç®ç¬¦ãåç»åéçåå§åå¯ä»¥å¼ç¨åé¢çåéï¼å¹¶è·å¾åå§åçå¼ã
var
声æï¼æ 论å®ä»¬åºç°å¨èæ¬ä¸çä»ä¹ä½ç½®ï¼é½ä¼å¨æ§è¡èæ¬ä¸çä»»ä½ä»£ç ä¹åè¿è¡å¤çãå¨ä»£ç ä¸çä»»ä½ä½ç½®å£°æåéé½ç¸å½äºå¨é¡¶é¨å£°æå®ãè¿ä¹æå³çåéå¯ä»¥å¨å
¶å£°æä¹å被使ç¨ãè¿ç§è¡ä¸ºè¢«ç§°ä¸ºæåï¼å 为åé声æä¼¼ä¹è¢«ç§»å¨å°åç该è¡ä¸ºç彿°ãéæåå§ååæèæ¬æºä»£ç çé¡¶é¨ã
夿³¨ï¼ var
声æä»
æåå°å½åèæ¬çé¡¶é¨ã妿å¨ä¸ä¸ª HTML æä»¶ä¸æä¸¤ä¸ª <script>
å
ç´ ï¼å第ä¸ä¸ªèæ¬æ æ³è®¿é®ç¬¬äºä¸ªèæ¬å£°æçåéï¼ç´å°ç¬¬äºä¸ªèæ¬å·²è¢«å¤çåæ§è¡ã
è¿å¯ä»¥éå¼ç解为ï¼
å æ¤ï¼å»ºè®®å§ç»å¨ä½ç¨åçé¡¶é¨ï¼å ¨å±ä»£ç çé¡¶é¨å彿°ä»£ç çé¡¶é¨ï¼å£°æåéï¼ä»¥ä¾¿æ¸ æ¥å°ç¥éåªäºå鿝ä½ç¨åéå®å¨å½å彿°å é¨çã
åªæåéç声æè¢«æåï¼èåéçåå§ååä¸ä¼è¢«æåãç´å°èµå¼è¯å¥è¢«æ§è¡ï¼åéæä¼è¢«åå§åã卿¤ä¹åï¼åéç弿¯ undefined
ï¼ä½å·²å£°æï¼ï¼
function doSomething() {
console.log(bar); // undefined
var bar = 111;
console.log(bar); // 111
}
è¿å¯ä»¥éå¼ç解为ï¼
function doSomething() {
var bar;
console.log(bar); // undefined
bar = 111;
console.log(bar); // 111
}
鿰声æ
å³ä½¿æ¯å¨ä¸¥æ ¼æ¨¡å¼ä¸ï¼ä½¿ç¨ var
éå¤å£°æåéä¸ä¼è§¦åé误ï¼åéçå¼ä¹ä¸ä¼ä¸¢å¤±ï¼é¤éæ°ç声ææåå§åå¨ã
var a = 1;
var a = 2;
console.log(a); // 2
var a;
console.log(a); // 2; not undefined
var
å¯ä»¥ä¸ function
å¨åä¸ä½ç¨åä¸å£°æåååéãå¨è¿ç§æ
åµä¸ï¼var
声æçåå§å卿»æ¯ä¼è¦ç彿°çå¼ï¼èæ 论å®ä»¬çç¸å¯¹ä½ç½®å¦ä½ãè¿æ¯å ä¸ºå½æ°å£°æä¼æåå°ä½ç¨åçé¡¶é¨ï¼èåå§åå¨ä¼å¨å
¶åæè¢«æ±å¼ï¼å æ¤ä¼è¦ç彿°çå¼ã
var a = 1;
function a() {}
console.log(a); // 1
var
ä¸è½ä¸ let
ãconst
ãclass
æ import
å¨åä¸ä½ç¨åä¸å£°æåååéã
var a = 1;
let a = 2; // SyntaxError: Identifier 'a' has already been declared
å 为 var
声æä½ç¨åä¸éäºåï¼æä»¥è¿ä¹éç¨äºä»¥ä¸æ
åµï¼
let a = 1;
{
var a = 1; // SyntaxError: Identifier 'a' has already been declared
}
å®ä¸éç¨äºä»¥ä¸æ
åµï¼å
¶ä¸ let
ä½äº var
çåä½ç¨åä¸ï¼è䏿¯åä¸ä½ç¨åï¼
var a = 1;
{
let a = 2;
}
彿°ä½å
ç var
声æå¯ä»¥ä¸å½æ°åæ°ååã
function foo(a) {
var a = 1;
console.log(a);
}
foo(2); // è¾åº 1
catch
åå
ç var
声æå¯ä»¥ä¸ catch
ç»å®çæ è¯ç¬¦ååï¼ä½åªæå½ catch
ç»å®çæ¯ä¸ä¸ªç®åæ è¯ç¬¦ï¼è䏿¯è§£ææ¨¡å¼æ¶æå¯ä»¥ãè¿æ¯ä¸ç§å·²å¼ç¨çè¯æ³ï¼ä½ ä¸åºè¯¥ä¾èµå®ãå¨è¿ç§æ
åµä¸ï¼å£°æä¼è¢«æåå° catch
åå¤é¨ï¼ä½å¨ catch
åå
çä»»ä½èµå¼é½ä¸ä¼å¨å¤é¨å¯è§ã
try {
throw 1;
} catch (e) {
var e = 2; // ææ
}
console.log(e); // undefined
ç¤ºä¾ å£°æå¹¶åå§å两个åé ç¨å个å符串å¼ç»ä¸¤ä¸ªåéèµå¼
çæäºï¼
çæå ¶ä¸ç顺åºï¼
var x = y,
y = "A";
console.log(x, y); // undefined A
å¨è¿éï¼x
å y
å¨ä»£ç æ§è¡ä¹åå·²ç»å£°æäºï¼èèµå¼åçå¨å
¶ä¹åã卿§è¡ x = y
æ¶ï¼y
å·²ç»åå¨ï¼å æ¤ä¸ä¼æåº ReferenceError
ï¼å¹¶ä¸å®ç弿¯ undefined
ãæä»¥ï¼x
被èµå¼ä¸º undefined
ãç¶åï¼y
被èµå¼ä¸º "A"
ã
请注æ var x = y = 1
è¯æ³âây
å®é
ä¸å¹¶æ²¡æå£°æä¸ºåéï¼å æ¤ y = 1
æ¯éé宿 è¯ç¬¦èµå¼ï¼å¨éä¸¥æ ¼æ¨¡å¼ä¸ä¼å建å
¨å±åéã
var x = 0;
function f() {
var x = (y = 1); // x å¨å½æ°å
é¨å£°æï¼y åå¨å
¨å±ä½ç¨åä¸å£°æ
}
f();
console.log(x, y); // 0 1
// å¨éä¸¥æ ¼æ¨¡å¼ä¸ï¼
// x æ¯é¢æçå
¨å±åéï¼
// 使¯ y è¢«æ³æ¼å°å½æ°ä¹å¤ï¼
å¨ä¸¥æ ¼æ¨¡å¼ä¸è¿è¡ç¸åç示ä¾ï¼
"use strict";
var x = 0;
function f() {
var x = y = 1; // ReferenceError: y is not defined
}
f();
console.log(x, y);
éå¼å
¨å±åéåå¤é¨å½æ°ä½ç¨å
çèµ·æ¥åæ¯éå¼å ¨å±ä½ç¨åçåé乿å¯è½æ¯å ¶å¤é¨å½æ°åéçå¼ç¨ï¼
var x = 0; // x æ¯å
¨å±åéï¼å¹¶ä¸èµå¼ä¸º 0
console.log(typeof z); // // âundefinedâï¼å 为 z è¿ä¸åå¨
function a() {
var y = 2; // y 被声ææå½æ° a ä½ç¨åçåéï¼å¹¶ä¸èµå¼ä¸º 2
console.log(x, y); // 0 2
function b() {
x = 3; // å
¨å±åé x 被èµå¼ä¸º 3
y = 4; // å·²åå¨çå¤é¨å½æ°ç y åé被èµå¼ä¸º 4
z = 5; // å建æ°çå
¨å±åé zï¼å¹¶ä¸èµå¼ä¸º 5
// ï¼å¨ä¸¥æ ¼æ¨¡å¼ä¸æåº ReferenceErrorï¼
}
b(); // è°ç¨ b æ¶å建äºå
¨å±åé z
console.log(x, y, z); // 3 4 5
}
a(); // ä¹è°ç¨äº bã
console.log(x, z); // 3 5
console.log(typeof y); // âundefinedâï¼å 为 y æ¯ a 彿°çå±é¨åé
è§£æå£°æ
æ¯ä¸ª =
ç左侧ä¹å¯ä»¥æ¯ä¸ä¸ªç»å®æ¨¡å¼ãè¿å
è®¸ä¸æ¬¡å建å¤ä¸ªåéã
const result = /(a+)(b+)(c+)/.exec("aaabcc");
var [, a, b, c] = result;
console.log(a, b, c); // "aaa" "b" "cc"
æå ³æ´å¤ä¿¡æ¯ï¼è¯·åé è§£æã
è§è æµè§å¨å ¼å®¹æ§ åè§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